From 96f34ac2488e63094c787e8d63dc37a64991d236 Mon Sep 17 00:00:00 2001 From: feewet Date: Sun, 16 Feb 2020 08:14:04 -0700 Subject: [PATCH 1/5] curation market --- curation/registry-starter | 1 + 1 file changed, 1 insertion(+) create mode 160000 curation/registry-starter diff --git a/curation/registry-starter b/curation/registry-starter new file mode 160000 index 0000000..7e81bf1 --- /dev/null +++ b/curation/registry-starter @@ -0,0 +1 @@ +Subproject commit 7e81bf1b28fa6d794697998309db77368fea3762 From 15a7f3c7ffa1e12a643a10f74ba4a5f03352e8cd Mon Sep 17 00:00:00 2001 From: feewet Date: Sun, 16 Feb 2020 08:17:58 -0700 Subject: [PATCH 2/5] curation market --- truffle/build/contracts/ArtistToken1.json | 1466 ++++++ truffle/build/contracts/ArtistToken2.json | 1466 ++++++ truffle/build/contracts/ArtistToken3.json | 1466 ++++++ .../build/contracts/BancorBondingCurve.json | 72 +- truffle/build/contracts/BancorFormula.json | 116 +- truffle/build/contracts/Context.json | 279 +- truffle/build/contracts/ContinuousToken.json | 2637 +++++------ truffle/build/contracts/ERC20.json | 4135 ++++++++--------- .../build/contracts/ERC20ContinuousToken.json | 1789 ++++--- truffle/build/contracts/ERC20Detailed.json | 791 ++-- truffle/build/contracts/ERC20Mintable.json | 599 ++- .../build/contracts/ETHContinuousToken.json | 2622 ++++++----- truffle/build/contracts/IBondingCurve.json | 17 +- truffle/build/contracts/IERC20.json | 717 ++- truffle/build/contracts/Migrations.json | 51 +- truffle/build/contracts/MinterRole.json | 1108 +++-- truffle/build/contracts/Ownable.json | 1172 +++-- truffle/build/contracts/Power.json | 72 +- truffle/build/contracts/Roles.json | 883 ++-- truffle/build/contracts/SafeMath.json | 1959 ++++---- truffle/build/contracts/TestERC20Token.json | 321 +- truffle/build/contracts/ValidGasPrice.json | 138 +- truffle/contracts/token/ArtistToken1.sol | 13 + truffle/contracts/token/ArtistToken2.sol | 13 + truffle/contracts/token/ArtistToken3.sol | 13 + .../contracts/token/ETHContinuousToken.sol | 12 +- truffle/migrations/2_deploy_contracts.js | 18 +- truffle/migrations/3_deploy_contracts.js | 9 + truffle/migrations/4_deploy_contracts.js | 9 + truffle/package-lock.json | 18 +- truffle/truffle-config.js | 2 +- 31 files changed, 14195 insertions(+), 9788 deletions(-) create mode 100644 truffle/build/contracts/ArtistToken1.json create mode 100644 truffle/build/contracts/ArtistToken2.json create mode 100644 truffle/build/contracts/ArtistToken3.json create mode 100644 truffle/contracts/token/ArtistToken1.sol create mode 100644 truffle/contracts/token/ArtistToken2.sol create mode 100644 truffle/contracts/token/ArtistToken3.sol create mode 100644 truffle/migrations/3_deploy_contracts.js create mode 100644 truffle/migrations/4_deploy_contracts.js diff --git a/truffle/build/contracts/ArtistToken1.json b/truffle/build/contracts/ArtistToken1.json new file mode 100644 index 0000000..d74421d --- /dev/null +++ b/truffle/build/contracts/ArtistToken1.json @@ -0,0 +1,1466 @@ +{ + "contractName": "ArtistToken1", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x06fdde03" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x095ea7b3" + }, + { + "constant": true, + "inputs": [], + "name": "reserveRatio", + "outputs": [ + { + "name": "", + "type": "uint32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x0c7d5cd8" + }, + { + "constant": true, + "inputs": [ + { + "name": "_reserveTokenAmount", + "type": "uint256" + } + ], + "name": "getContinuousMintReward", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x0d8f9f7f" + }, + { + "constant": false, + "inputs": [], + "name": "mint", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function", + "signature": "0x1249c58b" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x18160ddd" + }, + { + "constant": false, + "inputs": [ + { + "name": "sender", + "type": "address" + }, + { + "name": "recipient", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x23b872dd" + }, + { + "constant": true, + "inputs": [ + { + "name": "_supply", + "type": "uint256" + }, + { + "name": "_reserveBalance", + "type": "uint256" + }, + { + "name": "_reserveRatio", + "type": "uint32" + }, + { + "name": "_depositAmount", + "type": "uint256" + } + ], + "name": "calculatePurchaseReturn", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x29a00e7c" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x313ce567" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x39509351" + }, + { + "constant": true, + "inputs": [], + "name": "maxGasPrice", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x3de39c11" + }, + { + "constant": false, + "inputs": [ + { + "name": "_amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x42966c68" + }, + { + "constant": true, + "inputs": [ + { + "name": "_supply", + "type": "uint256" + }, + { + "name": "_reserveBalance", + "type": "uint256" + }, + { + "name": "_reserveRatio", + "type": "uint32" + }, + { + "name": "_sellAmount", + "type": "uint256" + } + ], + "name": "calculateSaleReturn", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x49f9b0f7" + }, + { + "constant": true, + "inputs": [], + "name": "version", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x54fd4d50" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x70a08231" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x715018a6" + }, + { + "constant": true, + "inputs": [ + { + "name": "_continuousTokenAmount", + "type": "uint256" + } + ], + "name": "getContinuousBurnRefund", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x7cbed3e0" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x8da5cb5b" + }, + { + "constant": true, + "inputs": [], + "name": "isOwner", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x8f32d59b" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x95d89b41" + }, + { + "constant": false, + "inputs": [ + { + "name": "_amount", + "type": "uint256" + } + ], + "name": "sponsoredBurn", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x96343886" + }, + { + "constant": true, + "inputs": [], + "name": "reserveBalance", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xa10954fe" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa457c2d7" + }, + { + "constant": false, + "inputs": [ + { + "name": "recipient", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa9059cbb" + }, + { + "constant": false, + "inputs": [ + { + "name": "_from", + "type": "address" + }, + { + "name": "_amount", + "type": "uint256" + } + ], + "name": "sponsoredBurnFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xb265c702" + }, + { + "constant": false, + "inputs": [ + { + "name": "newPrice", + "type": "uint256" + } + ], + "name": "setMaxGasPrice", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xd2fa635e" + }, + { + "constant": true, + "inputs": [], + "name": "continuousSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xda12457a" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xdd62ed3e" + }, + { + "constant": false, + "inputs": [ + { + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xf2fde38b" + }, + { + "inputs": [ + { + "name": "_name", + "type": "string" + }, + { + "name": "_symbol", + "type": "string" + }, + { + "name": "_decimals", + "type": "uint8" + }, + { + "name": "_initialSupply", + "type": "uint256" + }, + { + "name": "_reserveRatio", + "type": "uint32" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor", + "signature": "constructor" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "name": "deposit", + "type": "uint256" + } + ], + "name": "Minted", + "type": "event", + "signature": "0x25b428dfde728ccfaddad7e29e4ac23c24ed7fd1a6e3e3f91894a9a073f5dfff" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "name": "refund", + "type": "uint256" + } + ], + "name": "Burned", + "type": "event", + "signature": "0x23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event", + "signature": "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event", + "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event", + "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" + } + ], + "bytecode": "0x60c0604052600360808190527f302e33000000000000000000000000000000000000000000000000000000000060a090815262000040916007919062000b7b565b50670de0b6b3a76400006089553480156200005a57600080fd5b5060405162003dbd38038062003dbd833981018060405260a08110156200008057600080fd5b8101908080516401000000008111156200009957600080fd5b82016020810184811115620000ad57600080fd5b8151640100000000811182820187101715620000c857600080fd5b50509291906020018051640100000000811115620000e557600080fd5b82016020810184811115620000f957600080fd5b81516401000000008111828201871017156200011457600080fd5b5050602082015160408301516060909301519194509250848484848484848484848085858560006200014e640100000000620009d7810204565b60008054600160a060020a031916600160a060020a0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508251620001ad90600490602086019062000b7b565b508151620001c390600590602085019062000b7b565b506006805460ff191660ff9290921691909117905550506001606060020a641c35fedd1502036028556001605e60020a646c3390ecc902036029556001606160020a640cf80147610203602a556001605f60020a6431bdb23e1d0203602b556001605b60020a6502fb1d8fe0830203602c556001605a60020a6505b771955b370203602d556001605960020a650af67a93bb510203602e556001605860020a6515060c256cb30203602f556001605860020a651428a2f98d7302036030556001605660020a654d515663970902036031556001605560020a65944620b0e70f02036032557011c592761c666fffffffffffffffffffff60335570110a688680a757ffffffffffffffffffff603455701056f1b5bedf77ffffffffffffffffffff603555700faadceceeff8bffffffffffffffffffff603655700f05dc6b27edadffffffffffffffffffff603755700e67a5a25da4107fffffffffffffffffff603855700dcff115b14eedffffffffffffffffffff603955700d3e7a392431239fffffffffffffffffff603a55700cb2ff529eb71e4fffffffffffffffffff603b55700c2d415c3db974afffffffffffffffffff603c55700bad03e7d883f69bffffffffffffffffff603d55700b320d03b2c343d5ffffffffffffffffff603e55700abc25204e02828dffffffffffffffffff603f55700a4b16f74ee4bb207fffffffffffffffff6040557009deaf736ac1f569ffffffffffffffffff604155700976bd9952c7aa957fffffffffffffffff6042557009131271922eaa606fffffffffffffffff6043557008b380f3558668c46fffffffffffffffff604455700857ddf0117efa215bffffffffffffffff6045556001608360020a036046557007abbf6f6abb9d087fffffffffffffffff60475570075af62cbac95f7dfa7fffffffffffffff60485570070d7fb7452e187ac13fffffffffffffff6049557006c3390ecc8af379295fffffffffffffff604a5570067c00a3b07ffc01fd6fffffffffffffff604b55700637b647c39cbb9d3d27ffffffffffffff604c557005f63b1fc104dbd39587ffffffffffffff604d557005b771955b36e12f7235ffffffffffffff604e5570057b3d49dda84556d6f6ffffffffffffff604f5570054183095b2c8ececf30ffffffffffffff60505570050a28be635ca2b888f77fffffffffffff6051557004d5156639708c9db33c3fffffffffffff6052557004a23105873875bd52dfdfffffffffffff605355700471649d87199aa990756fffffffffffff6054557004429a21a029d4c1457cfbffffffffffff605555700415bc6d6fb7dd71af2cb3ffffffffffff6056557003eab73b3bbfe282243ce1ffffffffffff6057557003c1771ac9fb6b4c18e229ffffffffffff605855700399e96897690418f785257fffffffffff605955700373fc456c53bb779bf0ea9fffffffffff605a5570034f9e8e490c48e67e6ab8bfffffffffff605b5570032cbfd4a7adc790560b3337ffffffffff605c5570030b50570f6e5d2acca94613ffffffffff605d557002eb40f9f620fda6b56c2861ffffffffff605e557002cc8340ecb0d0f520a6af58ffffffffff605f557002af09481380a0a35cf1ba02ffffffffff606055700292c5bdd3b92ec810287b1b3fffffffff606155700277abdcdab07d5a77ac6d6b9fffffffff60625570025daf6654b1eaa55fd64df5efffffffff606355700244c49c648baa98192dce88b7ffffffff60645570022ce03cd5619a311b2471268bffffffff606555700215f77c045fbe885654a44a0fffffffff6066556001608160020a036067557001eaefdbdaaee7421fc4d3ede5ffffffff6068557001d6bd8b2eb257df7e8ca57b09bfffffff6069557001c35fedd14b861eb0443f7f133fffffff606a557001b0ce43b322bcde4a56e8ada5afffffff606b5570019f0028ec1fff007f5a195a39dfffffff606c5570018ded91f0e72ee74f49b15ba527ffffff606d5570017d8ec7f04136f4e5615fd41a63ffffff606e5570016ddc6556cdb84bdc8d12d22e6fffffff606f5570015ecf52776a1155b5bd8395814f7fffff60705570015060c256cb23b3b3cc3754cf40ffffff6071557001428a2f98d728ae223ddab715be3fffff60725570013545598e5c23276ccf0ede68034fffff6073557001288c4161ce1d6f54b7f61081194fffff60745570011c592761c666aa641d5a01a40f17ffff607555700110a688680a7530515f3e6e6cfdcdffff6076557001056f1b5bedf75c6bcb2ce8aed428ffff6077556ffaadceceeff8a0890f3875f008277fff6078556ff05dc6b27edad306388a600f6ba0bfff6079556fe67a5a25da41063de1495d5b18cdbfff607a556fdcff115b14eedde6fc3aa5353f2e4fff607b556fd3e7a3924312399f9aae2e0f868f8fff607c556fcb2ff529eb71e41582cccd5a1ee26fff607d556fc2d415c3db974ab32a51840c0b67edff607e556fbad03e7d883f69ad5b0a186184e06bff607f556fb320d03b2c343d4829abd6075f0cc5ff6080556fabc25204e02828d73c6e80bcdb1a95bf6081556fa4b16f74ee4bb2040a1ec6c15fbbf2df6082556f9deaf736ac1f569deb1b5ae3f36c130f6083556f976bd9952c7aa957f5937d790ef650376084556f9131271922eaa6064b73a22d0bd4f2bf6085556f8b380f3558668c46c91c49a2f8e967b96086556f857ddf0117efa215952912839f6473e66087556088805463ffffffff191663ffffffff92909216919091179055620009ab3383640100000000620009dc810204565b505034608a555050608b8054600160a060020a031916331790555062000c1d9950505050505050505050565b335b90565b600160a060020a038216151562000a5457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60035462000a719082640100000000620012cc62000aff82021704565b600355600160a060020a03821660009081526001602052604090205462000aa79082640100000000620012cc62000aff82021704565b600160a060020a03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008282018381101562000b7457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000bbe57805160ff191683800117855562000bee565b8280016001018555821562000bee579182015b8281111562000bee57825182559160200191906001019062000bd1565b5062000bfc92915062000c00565b5090565b620009d991905b8082111562000bfc576000815560010162000c07565b6131908062000c2d6000396000f3fe6080604052600436106101df576000357c01000000000000000000000000000000000000000000000000000000009004806370a0823111610114578063a10954fe116100b2578063d2fa635e11610081578063d2fa635e146106dd578063da12457a14610707578063dd62ed3e1461071c578063f2fde38b14610764576101df565b8063a10954fe146105f6578063a457c2d71461060b578063a9059cbb14610651578063b265c70214610697576101df565b80638da5cb5b116100ee5780638da5cb5b146105645780638f32d59b146105a257806395d89b41146105b757806396343886146105cc576101df565b806370a08231146104e5578063715018a6146105255780637cbed3e01461053a576101df565b806329a00e7c116101815780633de39c111161015b5780633de39c111461044f57806342966c681461046457806349f9b0f71461048e57806354fd4d50146104d0576101df565b806329a00e7c1461039c578063313ce567146103de5780633950935114610409576101df565b80630d8f9f7f116101bd5780630d8f9f7f146102fb5780631249c58b146101df57806318160ddd1461033757806323b872dd1461034c576101df565b806306fdde03146101e9578063095ea7b3146102735780630c7d5cd8146102cd575b6101e76107a4565b005b3480156101f557600080fd5b506101fe610822565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610238578181015183820152602001610220565b50505050905090810190601f1680156102655780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027f57600080fd5b506102b96004803603604081101561029657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356108b8565b604080519115158252519081900360200190f35b3480156102d957600080fd5b506102e26108d6565b6040805163ffffffff9092168252519081900360200190f35b34801561030757600080fd5b506103256004803603602081101561031e57600080fd5b50356108e2565b60408051918252519081900360200190f35b34801561034357600080fd5b5061032561090e565b34801561035857600080fd5b506102b96004803603606081101561036f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610914565b3480156103a857600080fd5b50610325600480360360808110156103bf57600080fd5b5080359060208101359063ffffffff60408201351690606001356109bc565b3480156103ea57600080fd5b506103f3610aff565b6040805160ff9092168252519081900360200190f35b34801561041557600080fd5b506102b96004803603604081101561042c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610b08565b34801561045b57600080fd5b50610325610b69565b34801561047057600080fd5b506101e76004803603602081101561048757600080fd5b5035610b6f565b34801561049a57600080fd5b50610325600480360360808110156104b157600080fd5b5080359060208101359063ffffffff6040820135169060600135610bc5565b3480156104dc57600080fd5b506101fe610d10565b3480156104f157600080fd5b506103256004803603602081101561050857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610d9e565b34801561053157600080fd5b506101e7610dc6565b34801561054657600080fd5b506103256004803603602081101561055d57600080fd5b5035610e98565b34801561057057600080fd5b50610579610ebc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156105ae57600080fd5b506102b9610ed8565b3480156105c357600080fd5b506101fe610f16565b3480156105d857600080fd5b506101e7600480360360208110156105ef57600080fd5b5035610f77565b34801561060257600080fd5b50610325610fc4565b34801561061757600080fd5b506102b96004803603604081101561062e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610fca565b34801561065d57600080fd5b506102b96004803603604081101561067457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611046565b3480156106a357600080fd5b506101e7600480360360408110156106ba57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561105a565b3480156106e957600080fd5b506101e76004803603602081101561070057600080fd5b50356110a8565b34801561071357600080fd5b50610325611110565b34801561072857600080fd5b506103256004803603604081101561073f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661111f565b34801561077057600080fd5b506101e76004803603602081101561078757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611157565b608b546040516127103460c881029190910492908390039173ffffffffffffffffffffffffffffffffffffffff909116906108fc8315029083906000818181858888f193505050501580156107fd573d6000803e3d6000fd5b50610807816111c6565b50608a5461081b908263ffffffff6112cc16565b608a555050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108ae5780601f10610883576101008083540402835291602001916108ae565b820191906000526020600020905b81548152906001019060200180831161089157829003601f168201915b5050505050905090565b60006108cc6108c5611335565b8484611339565b5060015b92915050565b60885463ffffffff1681565b60006109066108ef611110565b6108f7610fc4565b60885463ffffffff16856109bc565b90505b919050565b60035490565b6000610921848484611460565b6109b28461092d611335565b6109ad856060604051908101604052806028815260200161308a6028913973ffffffffffffffffffffffffffffffffffffffff8a16600090815260026020526040812090610979611335565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002054919063ffffffff61161416565b611339565b5060019392505050565b600080851180156109cd5750600084115b80156109df575060008363ffffffff16115b80156109f45750620f424063ffffffff841611155b1515610a4f5760408051600080516020613049833981519152815260206004820152600f60248201527f496e76616c696420696e707574732e0000000000000000000000000000000000604482015290519081900360640190fd5b811515610a5e57506000610af7565b63ffffffff8316620f42401415610a9657610a8f84610a83878563ffffffff6116b316565b9063ffffffff61171816565b9050610af7565b60008080610aaa858863ffffffff6112cc16565b9050610abb818888620f424061175a565b9093509150600060ff8316610ad68a8663ffffffff6116b316565b60029190910a90049050610af0818a63ffffffff61190616565b9450505050505b949350505050565b60065460ff1690565b60006108cc610b15611335565b846109ad8560026000610b26611335565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6112cc16565b60895481565b6000610b7a82611948565b608a54909150610b90908263ffffffff61190616565b608a55604051339082156108fc029083906000818181858888f19350505050158015610bc0573d6000803e3d6000fd5b505050565b60008085118015610bd65750600084115b8015610be8575060008363ffffffff16115b8015610bfd5750620f424063ffffffff841611155b8015610c095750848211155b1515610c645760408051600080516020613049833981519152815260206004820152600f60248201527f496e76616c696420696e707574732e0000000000000000000000000000000000604482015290519081900360640190fd5b811515610c7357506000610af7565b84821415610c82575082610af7565b63ffffffff8316620f42401415610ca757610a8f85610a83868563ffffffff6116b316565b60008080610cbb888663ffffffff61190616565b9050610ccc8882620f42408961175a565b90935091506000610ce3888563ffffffff6116b316565b905060ff831660020a8802610d0285610a83848463ffffffff61190616565b9a9950505050505050505050565b6007805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d965780601f10610d6b57610100808354040283529160200191610d96565b820191906000526020600020905b815481529060010190602001808311610d7957829003601f168201915b505050505081565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b610dce610ed8565b1515610e295760408051600080516020613049833981519152815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000610906610ea5611110565b610ead610fc4565b60885463ffffffff1685610bc5565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6000805473ffffffffffffffffffffffffffffffffffffffff16610efa611335565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108ae5780601f10610883576101008083540402835291602001916108ae565b610f813382611ab3565b604080513381526020810183905260008183015290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a150565b608a5490565b60006108cc610fd7611335565b846109ad85606060405190810160405280602581526020016131406025913960026000611002611335565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61161416565b60006108cc611053611335565b8484611460565b6110648282611bee565b604080513381526020810183905260008183015290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a15050565b6110b0610ed8565b151561110b5760408051600080516020613049833981519152815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b608955565b600061111a61090e565b905090565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b61115f610ed8565b15156111ba5760408051600080516020613049833981519152815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6111c381611c54565b50565b6089546000903a1115611212576040516000805160206130498339815191528152600401808060200182810382526048815260200180612fdb6048913960600191505060405180910390fd5b6000821161126f5760408051600080516020613049833981519152815260206004820152601960248201527f4465706f736974206d757374206265206e6f6e2d7a65726f2e00000000000000604482015290519081900360640190fd5b600061127a836108e2565b90506112863382611d3d565b604080513381526020810183905280820185905290517f25b428dfde728ccfaddad7e29e4ac23c24ed7fd1a6e3e3f91894a9a073f5dfff9181900360600190a192915050565b60008282018381101561132e5760408051600080516020613049833981519152815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316151561139557604051600080516020613049833981519152815260040180806020018281038252602481526020018061311c6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821615156113f1576040516000805160206130498339815191528152600401808060200182810382526022815260200180612fb96022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff831615156114bc5760405160008051602061304983398151915281526004018080602001828103825260258152602001806130f76025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161515611518576040516000805160206130498339815191528152600401808060200182810382526023815260200180612f4e6023913960400191505060405180910390fd5b61156981606060405190810160405280602681526020016130236026913973ffffffffffffffffffffffffffffffffffffffff8616600090815260016020526040902054919063ffffffff61161416565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546115ab908263ffffffff6112cc16565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156116ab5760405160008051602061304983398151915281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611670578181015183820152602001611658565b50505050905090810190601f16801561169d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008215156116c4575060006108d0565b8282028284828115156116d357fe5b041461132e5760405160008051602061304983398151915281526004018080602001828103825260218152602001806130696021913960400191505060405180910390fd5b600061132e83836040805190810160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e60565b60008070020000000000000000000000000000000086106117ca5760408051600080516020613049833981519152815260206004820152601860248201527f626173654e2065786365656473206d61782076616c75652e0000000000000000604482015290519081900360640190fd5b848610156118275760408051600080516020613049833981519152815260206004820152601c60248201527f4261736573203c203120617265206e6f7420737570706f727465642e00000000604482015290519081900360640190fd5b600080866f80000000000000000000000000000000890281151561184757fe5b04905070015bf0a8b1457695355fb8ac404e7a79e38110156118735761186c81611ed2565b915061187f565b61187c816123c6565b91505b60008563ffffffff168763ffffffff16840281151561189a57fe5b0490507008000000000000000000000000000000008110156118cd576118bf816124c5565b607f945094505050506118fd565b60006118d8826129aa565b90506118f060ff607f8390031660020a830482612a3c565b955093506118fd92505050565b94509492505050565b600061132e83836040805190810160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611614565b6089546000903a1115611994576040516000805160206130498339815191528152600401808060200182810382526048815260200180612fdb6048913960600191505060405180910390fd5b600082116119f15760408051600080516020613049833981519152815260206004820152601860248201527f416d6f756e74206d757374206265206e6f6e2d7a65726f2e0000000000000000604482015290519081900360640190fd5b816119fb33610d9e565b1015611a565760408051600080516020613049833981519152815260206004820152601c60248201527f496e73756666696369656e7420746f6b656e7320746f206275726e2e00000000604482015290519081900360640190fd5b6000611a6183610e98565b9050611a6d3384611ab3565b604080513381526020810185905280820183905290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a192915050565b73ffffffffffffffffffffffffffffffffffffffff82161515611b0f5760405160008051602061304983398151915281526004018080602001828103825260218152602001806130d66021913960400191505060405180910390fd5b611b608160606040519081016040528060228152602001612f716022913973ffffffffffffffffffffffffffffffffffffffff8516600090815260016020526040902054919063ffffffff61161416565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902055600354611b99908263ffffffff61190616565b60035560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b611bf88282611ab3565b611c5082611c04611335565b6109ad84606060405190810160405280602481526020016130b26024913973ffffffffffffffffffffffffffffffffffffffff8816600090815260026020526040812090610979611335565b5050565b73ffffffffffffffffffffffffffffffffffffffff81161515611cb0576040516000805160206130498339815191528152600401808060200182810382526026815260200180612f936026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff82161515611daf5760408051600080516020613049833981519152815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600354611dc2908263ffffffff6112cc16565b60035573ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054611dfb908263ffffffff6112cc16565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600081818411611eba57604051600080516020613049833981519152815260040180806020018281038252838181518152602001915080519060200190808383600083811015611670578181015183820152602001611658565b5060008385811515611ec857fe5b0495945050505050565b6000808080806fd3094c70f034de4b96ff7d5b6f99fcd88610611f2d576f4000000000000000000000000000000093909301926fd3094c70f034de4b96ff7d5b6f99fcd86f8000000000000000000000000000000087020495505b6fa45af1e1f40c333b3de1db4dd55f29a78610611f82576f2000000000000000000000000000000093909301926fa45af1e1f40c333b3de1db4dd55f29a76f8000000000000000000000000000000087020495505b6f910b022db7ae67ce76b441c27035c6a18610611fd7576f1000000000000000000000000000000093909301926f910b022db7ae67ce76b441c27035c6a16f8000000000000000000000000000000087020495505b6f88415abbe9a76bead8d00cf112e4d4a8861061202c576f0800000000000000000000000000000093909301926f88415abbe9a76bead8d00cf112e4d4a86f8000000000000000000000000000000087020495505b6f84102b00893f64c705e841d5d4064bd38610612081576f0400000000000000000000000000000093909301926f84102b00893f64c705e841d5d4064bd36f8000000000000000000000000000000087020495505b6f8204055aaef1c8bd5c3259f4822735a286106120d6576f0200000000000000000000000000000093909301926f8204055aaef1c8bd5c3259f4822735a26f8000000000000000000000000000000087020495505b6f810100ab00222d861931c15e39b44e99861061212b576f0100000000000000000000000000000093909301926f810100ab00222d861931c15e39b44e996f8000000000000000000000000000000087020495505b6f808040155aabbbe9451521693554f733861061217f576e80000000000000000000000000000093909301926f808040155aabbbe9451521693554f7336f8000000000000000000000000000000087020495505b7fffffffffffffffffffffffffffffffff80000000000000000000000000000000860192508291506f8000000000000000000000000000000082800204905070010000000000000000000000000000000083810383020493909301926f800000000000000000000000000000008282020491507002000000000000000000000000000000006faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa84900383020493909301926f800000000000000000000000000000008282020491507003000000000000000000000000000000006f9999999999999999999999999999999984900383020493909301926f800000000000000000000000000000008282020491507004000000000000000000000000000000006f9249249249249249249249249249249284900383020493909301926f800000000000000000000000000000008282020491507005000000000000000000000000000000006f8e38e38e38e38e38e38e38e38e38e38e84900383020493909301926f800000000000000000000000000000008282020491507006000000000000000000000000000000006f8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8b84900383020493909301926f800000000000000000000000000000008282020491507007000000000000000000000000000000006f89d89d89d89d89d89d89d89d89d89d8984900383020493909301926f800000000000000000000000000000008282020491507008000000000000000000000000000000006f888888888888888888888888888888888490038302049390930195945050505050565b6000808270010000000000000000000000000000000081106124205760006123ff6f800000000000000000000000000000008304612ede565b60ff166f800000000000000000000000000000008102935060020a90910490505b6f8000000000000000000000000000000081111561249857607f5b60008160ff161115612496576f80000000000000000000000000000000828002049150700100000000000000000000000000000000821061248d5760ff600019820116600290810a9390930192909104905b6000190161243b565b505b6f05b9de1d10bf4103d647b0955897ba806f03f80fe03f80fe03f80fe03f80fe03f8830204949350505050565b6000670168244fdac780006f800000000000000000000000000000006f0fffffffffffffffffffffffffffffff84168080028290048082028390048083028490049485026710e1b3be415a00009092026705a0913f6b1e000091909102010192909181830204905080664807432bc1800002830192506f8000000000000000000000000000000082820281151561255857fe5b04905080660c0135dca0400002830192506f8000000000000000000000000000000082820281151561258657fe5b049050806601b707b1cdc00002830192506f800000000000000000000000000000008282028115156125b457fe5b049050806536e0f639b80002830192506f800000000000000000000000000000008282028115156125e157fe5b04905080650618fee9f80002830192506f8000000000000000000000000000000082820281151561260e57fe5b04905080649c197dcc0002830192506f8000000000000000000000000000000082820281151561263a57fe5b04905080640e30dce40002830192506f8000000000000000000000000000000082820281151561266657fe5b0490508064012ebd130002830192506f8000000000000000000000000000000082820281151561269257fe5b049050806317499f0002830192506f800000000000000000000000000000008282028115156126bd57fe5b049050806301a9d48002830192506f800000000000000000000000000000008282028115156126e857fe5b04905080621c638002830192506f8000000000000000000000000000000082820281151561271257fe5b049050806201c63802830192506f8000000000000000000000000000000082820281151561273c57fe5b04905080611ab802830192506f8000000000000000000000000000000082820281151561276557fe5b0490508061017c02830192506f8000000000000000000000000000000082820281151561278e57fe5b04905080601402830192506f800000000000000000000000000000008282028115156127b657fe5b6721c3677c82b400009190049384010482016f80000000000000000000000000000000019290506f1000000000000000000000000000000085161561281f5770018ebef9eac820ae8682b9793ac6d1e7767001c3d6a24ed82218787d624d3e5eba95f984020492505b6f20000000000000000000000000000000851615612861577001368b2fc6f9609fe7aceb46aa619baed470018ebef9eac820ae8682b9793ac6d1e77884020492505b6f400000000000000000000000000000008516156128a2576fbc5ab1b16779be3575bd8f0520a9f21f7001368b2fc6f9609fe7aceb46aa619baed584020492505b6f800000000000000000000000000000008516156128e2576f454aaa8efe072e7f6ddbab84b40a55c96fbc5ab1b16779be3575bd8f0520a9f21e84020492505b700100000000000000000000000000000000851615612923576f0960aadc109e7a3bf4578099615711ea6f454aaa8efe072e7f6ddbab84b40a55c584020492505b700200000000000000000000000000000000851615612963576e2bf84208204f5977f9a8cf01fdce3d6f0960aadc109e7a3bf4578099615711d784020492505b7004000000000000000000000000000000008516156129a1576d03c6ab775dd0b95b4cbee7e65d116e2bf84208204f5977f9a8cf01fdc30784020492505b50909392505050565b60006020607f5b8060ff168260010160ff1610156129f9576000600260ff8484011604905084600860ff8316608081106129e057fe5b0154106129ef578092506129f3565b8091505b506129b1565b83600860ff831660808110612a0a57fe5b015410612a1a5791506109099050565b83600860ff841660808110612a2b57fe5b015410612a3a57509050610909565bfe5b60008083905060008090508360ff16858302908060020a82049150509150816f03442c4e6074a82f1797f72ac000000002810190508360ff16858302908060020a82049150509150816f0116b96f757c380fb287fd0e4000000002810190508360ff16858302908060020a82049150509150816e45ae5bdd5f0e03eca1ff439000000002810190508360ff16858302908060020a82049150509150816e0defabf91302cd95b9ffda5000000002810190508360ff16858302908060020a82049150509150816e02529ca9832b22439efff9b800000002810190508360ff16858302908060020a82049150509150816d54f1cf12bd04e516b6da8800000002810190508360ff16858302908060020a82049150509150816d0a9e39e257a09ca2d6db5100000002810190508360ff16858302908060020a82049150509150816d012e066e7b839fa050c30900000002810190508360ff16858302908060020a82049150509150816c1e33d7d926c329a1ad1a80000002810190508360ff16858302908060020a82049150509150816c02bee513bdb4a6b19b5f80000002810190508360ff16858302908060020a82049150509150816b3a9316fa79b88eccf2a0000002810190508360ff16858302908060020a82049150509150816b048177ebe1fa81237520000002810190508360ff16858302908060020a82049150509150816a5263fe90242dcbacf0000002810190508360ff16858302908060020a82049150509150816a057e22099c030d9410000002810190508360ff16858302908060020a82049150509150816957e22099c030d941000002810190508360ff16858302908060020a820491505091508169052b6b5456997631000002810190508360ff16858302908060020a8204915050915081684985f67696bf74800002810190508360ff16858302908060020a82049150509150816803dea12ea99e49800002810190508360ff16858302908060020a82049150509150816731880f2214b6e00002810190508360ff16858302908060020a820491505091508167025bcff56eb3600002810190508360ff16858302908060020a8204915050915081661b722e10ab100002810190508360ff16858302908060020a82049150509150816601317c7007700002810190508360ff16858302908060020a8204915050915081650cba84aafa0002810190508360ff16858302908060020a82049150509150816482573a0a0002810190508360ff16858302908060020a82049150509150816405035ad90002810190508360ff16858302908060020a8204915050915081632f881b0002810190508360ff16858302908060020a82049150509150816301b2934002810190508360ff16858302908060020a8204915050915081620efc4002810190508360ff16858302908060020a8204915050915081617fe002810190508360ff16858302908060020a820491505091508161042002810190508360ff16858302908060020a8204915050915081602102810190508360ff16858302908060020a8204915050915081600102810190508360ff1660019060020a02856f0688589cc0e9505e2f2fee558000000083811515612ed257fe5b04010195945050505050565b60008082610100811015612f0b575b6001811115612f06576001919091019060029004612eed565b612f46565b60805b60008160ff161115612f445760ff811660020a8210612f37579182179160ff811660020a909104905b600260ff90911604612f0e565b505b509291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373476173207072696365206d757374206265203c3d206d6178696d756d2067617320707269636520746f2070726576656e742066726f6e742072756e6e696e672061747461636b732e45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636508c379a000000000000000000000000000000000000000000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa165627a7a723058202f271ee5d4a0571871b1b1c7c3c9b51370a26dc0a5f68d2d04e802ab110d7b650029", + "deployedBytecode": "0x6080604052600436106101df576000357c01000000000000000000000000000000000000000000000000000000009004806370a0823111610114578063a10954fe116100b2578063d2fa635e11610081578063d2fa635e146106dd578063da12457a14610707578063dd62ed3e1461071c578063f2fde38b14610764576101df565b8063a10954fe146105f6578063a457c2d71461060b578063a9059cbb14610651578063b265c70214610697576101df565b80638da5cb5b116100ee5780638da5cb5b146105645780638f32d59b146105a257806395d89b41146105b757806396343886146105cc576101df565b806370a08231146104e5578063715018a6146105255780637cbed3e01461053a576101df565b806329a00e7c116101815780633de39c111161015b5780633de39c111461044f57806342966c681461046457806349f9b0f71461048e57806354fd4d50146104d0576101df565b806329a00e7c1461039c578063313ce567146103de5780633950935114610409576101df565b80630d8f9f7f116101bd5780630d8f9f7f146102fb5780631249c58b146101df57806318160ddd1461033757806323b872dd1461034c576101df565b806306fdde03146101e9578063095ea7b3146102735780630c7d5cd8146102cd575b6101e76107a4565b005b3480156101f557600080fd5b506101fe610822565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610238578181015183820152602001610220565b50505050905090810190601f1680156102655780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027f57600080fd5b506102b96004803603604081101561029657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356108b8565b604080519115158252519081900360200190f35b3480156102d957600080fd5b506102e26108d6565b6040805163ffffffff9092168252519081900360200190f35b34801561030757600080fd5b506103256004803603602081101561031e57600080fd5b50356108e2565b60408051918252519081900360200190f35b34801561034357600080fd5b5061032561090e565b34801561035857600080fd5b506102b96004803603606081101561036f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610914565b3480156103a857600080fd5b50610325600480360360808110156103bf57600080fd5b5080359060208101359063ffffffff60408201351690606001356109bc565b3480156103ea57600080fd5b506103f3610aff565b6040805160ff9092168252519081900360200190f35b34801561041557600080fd5b506102b96004803603604081101561042c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610b08565b34801561045b57600080fd5b50610325610b69565b34801561047057600080fd5b506101e76004803603602081101561048757600080fd5b5035610b6f565b34801561049a57600080fd5b50610325600480360360808110156104b157600080fd5b5080359060208101359063ffffffff6040820135169060600135610bc5565b3480156104dc57600080fd5b506101fe610d10565b3480156104f157600080fd5b506103256004803603602081101561050857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610d9e565b34801561053157600080fd5b506101e7610dc6565b34801561054657600080fd5b506103256004803603602081101561055d57600080fd5b5035610e98565b34801561057057600080fd5b50610579610ebc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156105ae57600080fd5b506102b9610ed8565b3480156105c357600080fd5b506101fe610f16565b3480156105d857600080fd5b506101e7600480360360208110156105ef57600080fd5b5035610f77565b34801561060257600080fd5b50610325610fc4565b34801561061757600080fd5b506102b96004803603604081101561062e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610fca565b34801561065d57600080fd5b506102b96004803603604081101561067457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611046565b3480156106a357600080fd5b506101e7600480360360408110156106ba57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561105a565b3480156106e957600080fd5b506101e76004803603602081101561070057600080fd5b50356110a8565b34801561071357600080fd5b50610325611110565b34801561072857600080fd5b506103256004803603604081101561073f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661111f565b34801561077057600080fd5b506101e76004803603602081101561078757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611157565b608b546040516127103460c881029190910492908390039173ffffffffffffffffffffffffffffffffffffffff909116906108fc8315029083906000818181858888f193505050501580156107fd573d6000803e3d6000fd5b50610807816111c6565b50608a5461081b908263ffffffff6112cc16565b608a555050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108ae5780601f10610883576101008083540402835291602001916108ae565b820191906000526020600020905b81548152906001019060200180831161089157829003601f168201915b5050505050905090565b60006108cc6108c5611335565b8484611339565b5060015b92915050565b60885463ffffffff1681565b60006109066108ef611110565b6108f7610fc4565b60885463ffffffff16856109bc565b90505b919050565b60035490565b6000610921848484611460565b6109b28461092d611335565b6109ad856060604051908101604052806028815260200161308a6028913973ffffffffffffffffffffffffffffffffffffffff8a16600090815260026020526040812090610979611335565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002054919063ffffffff61161416565b611339565b5060019392505050565b600080851180156109cd5750600084115b80156109df575060008363ffffffff16115b80156109f45750620f424063ffffffff841611155b1515610a4f5760408051600080516020613049833981519152815260206004820152600f60248201527f496e76616c696420696e707574732e0000000000000000000000000000000000604482015290519081900360640190fd5b811515610a5e57506000610af7565b63ffffffff8316620f42401415610a9657610a8f84610a83878563ffffffff6116b316565b9063ffffffff61171816565b9050610af7565b60008080610aaa858863ffffffff6112cc16565b9050610abb818888620f424061175a565b9093509150600060ff8316610ad68a8663ffffffff6116b316565b60029190910a90049050610af0818a63ffffffff61190616565b9450505050505b949350505050565b60065460ff1690565b60006108cc610b15611335565b846109ad8560026000610b26611335565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6112cc16565b60895481565b6000610b7a82611948565b608a54909150610b90908263ffffffff61190616565b608a55604051339082156108fc029083906000818181858888f19350505050158015610bc0573d6000803e3d6000fd5b505050565b60008085118015610bd65750600084115b8015610be8575060008363ffffffff16115b8015610bfd5750620f424063ffffffff841611155b8015610c095750848211155b1515610c645760408051600080516020613049833981519152815260206004820152600f60248201527f496e76616c696420696e707574732e0000000000000000000000000000000000604482015290519081900360640190fd5b811515610c7357506000610af7565b84821415610c82575082610af7565b63ffffffff8316620f42401415610ca757610a8f85610a83868563ffffffff6116b316565b60008080610cbb888663ffffffff61190616565b9050610ccc8882620f42408961175a565b90935091506000610ce3888563ffffffff6116b316565b905060ff831660020a8802610d0285610a83848463ffffffff61190616565b9a9950505050505050505050565b6007805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d965780601f10610d6b57610100808354040283529160200191610d96565b820191906000526020600020905b815481529060010190602001808311610d7957829003601f168201915b505050505081565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b610dce610ed8565b1515610e295760408051600080516020613049833981519152815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000610906610ea5611110565b610ead610fc4565b60885463ffffffff1685610bc5565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6000805473ffffffffffffffffffffffffffffffffffffffff16610efa611335565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108ae5780601f10610883576101008083540402835291602001916108ae565b610f813382611ab3565b604080513381526020810183905260008183015290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a150565b608a5490565b60006108cc610fd7611335565b846109ad85606060405190810160405280602581526020016131406025913960026000611002611335565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61161416565b60006108cc611053611335565b8484611460565b6110648282611bee565b604080513381526020810183905260008183015290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a15050565b6110b0610ed8565b151561110b5760408051600080516020613049833981519152815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b608955565b600061111a61090e565b905090565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b61115f610ed8565b15156111ba5760408051600080516020613049833981519152815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6111c381611c54565b50565b6089546000903a1115611212576040516000805160206130498339815191528152600401808060200182810382526048815260200180612fdb6048913960600191505060405180910390fd5b6000821161126f5760408051600080516020613049833981519152815260206004820152601960248201527f4465706f736974206d757374206265206e6f6e2d7a65726f2e00000000000000604482015290519081900360640190fd5b600061127a836108e2565b90506112863382611d3d565b604080513381526020810183905280820185905290517f25b428dfde728ccfaddad7e29e4ac23c24ed7fd1a6e3e3f91894a9a073f5dfff9181900360600190a192915050565b60008282018381101561132e5760408051600080516020613049833981519152815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316151561139557604051600080516020613049833981519152815260040180806020018281038252602481526020018061311c6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821615156113f1576040516000805160206130498339815191528152600401808060200182810382526022815260200180612fb96022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff831615156114bc5760405160008051602061304983398151915281526004018080602001828103825260258152602001806130f76025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161515611518576040516000805160206130498339815191528152600401808060200182810382526023815260200180612f4e6023913960400191505060405180910390fd5b61156981606060405190810160405280602681526020016130236026913973ffffffffffffffffffffffffffffffffffffffff8616600090815260016020526040902054919063ffffffff61161416565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546115ab908263ffffffff6112cc16565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156116ab5760405160008051602061304983398151915281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611670578181015183820152602001611658565b50505050905090810190601f16801561169d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008215156116c4575060006108d0565b8282028284828115156116d357fe5b041461132e5760405160008051602061304983398151915281526004018080602001828103825260218152602001806130696021913960400191505060405180910390fd5b600061132e83836040805190810160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e60565b60008070020000000000000000000000000000000086106117ca5760408051600080516020613049833981519152815260206004820152601860248201527f626173654e2065786365656473206d61782076616c75652e0000000000000000604482015290519081900360640190fd5b848610156118275760408051600080516020613049833981519152815260206004820152601c60248201527f4261736573203c203120617265206e6f7420737570706f727465642e00000000604482015290519081900360640190fd5b600080866f80000000000000000000000000000000890281151561184757fe5b04905070015bf0a8b1457695355fb8ac404e7a79e38110156118735761186c81611ed2565b915061187f565b61187c816123c6565b91505b60008563ffffffff168763ffffffff16840281151561189a57fe5b0490507008000000000000000000000000000000008110156118cd576118bf816124c5565b607f945094505050506118fd565b60006118d8826129aa565b90506118f060ff607f8390031660020a830482612a3c565b955093506118fd92505050565b94509492505050565b600061132e83836040805190810160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611614565b6089546000903a1115611994576040516000805160206130498339815191528152600401808060200182810382526048815260200180612fdb6048913960600191505060405180910390fd5b600082116119f15760408051600080516020613049833981519152815260206004820152601860248201527f416d6f756e74206d757374206265206e6f6e2d7a65726f2e0000000000000000604482015290519081900360640190fd5b816119fb33610d9e565b1015611a565760408051600080516020613049833981519152815260206004820152601c60248201527f496e73756666696369656e7420746f6b656e7320746f206275726e2e00000000604482015290519081900360640190fd5b6000611a6183610e98565b9050611a6d3384611ab3565b604080513381526020810185905280820183905290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a192915050565b73ffffffffffffffffffffffffffffffffffffffff82161515611b0f5760405160008051602061304983398151915281526004018080602001828103825260218152602001806130d66021913960400191505060405180910390fd5b611b608160606040519081016040528060228152602001612f716022913973ffffffffffffffffffffffffffffffffffffffff8516600090815260016020526040902054919063ffffffff61161416565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902055600354611b99908263ffffffff61190616565b60035560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b611bf88282611ab3565b611c5082611c04611335565b6109ad84606060405190810160405280602481526020016130b26024913973ffffffffffffffffffffffffffffffffffffffff8816600090815260026020526040812090610979611335565b5050565b73ffffffffffffffffffffffffffffffffffffffff81161515611cb0576040516000805160206130498339815191528152600401808060200182810382526026815260200180612f936026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff82161515611daf5760408051600080516020613049833981519152815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600354611dc2908263ffffffff6112cc16565b60035573ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054611dfb908263ffffffff6112cc16565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600081818411611eba57604051600080516020613049833981519152815260040180806020018281038252838181518152602001915080519060200190808383600083811015611670578181015183820152602001611658565b5060008385811515611ec857fe5b0495945050505050565b6000808080806fd3094c70f034de4b96ff7d5b6f99fcd88610611f2d576f4000000000000000000000000000000093909301926fd3094c70f034de4b96ff7d5b6f99fcd86f8000000000000000000000000000000087020495505b6fa45af1e1f40c333b3de1db4dd55f29a78610611f82576f2000000000000000000000000000000093909301926fa45af1e1f40c333b3de1db4dd55f29a76f8000000000000000000000000000000087020495505b6f910b022db7ae67ce76b441c27035c6a18610611fd7576f1000000000000000000000000000000093909301926f910b022db7ae67ce76b441c27035c6a16f8000000000000000000000000000000087020495505b6f88415abbe9a76bead8d00cf112e4d4a8861061202c576f0800000000000000000000000000000093909301926f88415abbe9a76bead8d00cf112e4d4a86f8000000000000000000000000000000087020495505b6f84102b00893f64c705e841d5d4064bd38610612081576f0400000000000000000000000000000093909301926f84102b00893f64c705e841d5d4064bd36f8000000000000000000000000000000087020495505b6f8204055aaef1c8bd5c3259f4822735a286106120d6576f0200000000000000000000000000000093909301926f8204055aaef1c8bd5c3259f4822735a26f8000000000000000000000000000000087020495505b6f810100ab00222d861931c15e39b44e99861061212b576f0100000000000000000000000000000093909301926f810100ab00222d861931c15e39b44e996f8000000000000000000000000000000087020495505b6f808040155aabbbe9451521693554f733861061217f576e80000000000000000000000000000093909301926f808040155aabbbe9451521693554f7336f8000000000000000000000000000000087020495505b7fffffffffffffffffffffffffffffffff80000000000000000000000000000000860192508291506f8000000000000000000000000000000082800204905070010000000000000000000000000000000083810383020493909301926f800000000000000000000000000000008282020491507002000000000000000000000000000000006faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa84900383020493909301926f800000000000000000000000000000008282020491507003000000000000000000000000000000006f9999999999999999999999999999999984900383020493909301926f800000000000000000000000000000008282020491507004000000000000000000000000000000006f9249249249249249249249249249249284900383020493909301926f800000000000000000000000000000008282020491507005000000000000000000000000000000006f8e38e38e38e38e38e38e38e38e38e38e84900383020493909301926f800000000000000000000000000000008282020491507006000000000000000000000000000000006f8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8b84900383020493909301926f800000000000000000000000000000008282020491507007000000000000000000000000000000006f89d89d89d89d89d89d89d89d89d89d8984900383020493909301926f800000000000000000000000000000008282020491507008000000000000000000000000000000006f888888888888888888888888888888888490038302049390930195945050505050565b6000808270010000000000000000000000000000000081106124205760006123ff6f800000000000000000000000000000008304612ede565b60ff166f800000000000000000000000000000008102935060020a90910490505b6f8000000000000000000000000000000081111561249857607f5b60008160ff161115612496576f80000000000000000000000000000000828002049150700100000000000000000000000000000000821061248d5760ff600019820116600290810a9390930192909104905b6000190161243b565b505b6f05b9de1d10bf4103d647b0955897ba806f03f80fe03f80fe03f80fe03f80fe03f8830204949350505050565b6000670168244fdac780006f800000000000000000000000000000006f0fffffffffffffffffffffffffffffff84168080028290048082028390048083028490049485026710e1b3be415a00009092026705a0913f6b1e000091909102010192909181830204905080664807432bc1800002830192506f8000000000000000000000000000000082820281151561255857fe5b04905080660c0135dca0400002830192506f8000000000000000000000000000000082820281151561258657fe5b049050806601b707b1cdc00002830192506f800000000000000000000000000000008282028115156125b457fe5b049050806536e0f639b80002830192506f800000000000000000000000000000008282028115156125e157fe5b04905080650618fee9f80002830192506f8000000000000000000000000000000082820281151561260e57fe5b04905080649c197dcc0002830192506f8000000000000000000000000000000082820281151561263a57fe5b04905080640e30dce40002830192506f8000000000000000000000000000000082820281151561266657fe5b0490508064012ebd130002830192506f8000000000000000000000000000000082820281151561269257fe5b049050806317499f0002830192506f800000000000000000000000000000008282028115156126bd57fe5b049050806301a9d48002830192506f800000000000000000000000000000008282028115156126e857fe5b04905080621c638002830192506f8000000000000000000000000000000082820281151561271257fe5b049050806201c63802830192506f8000000000000000000000000000000082820281151561273c57fe5b04905080611ab802830192506f8000000000000000000000000000000082820281151561276557fe5b0490508061017c02830192506f8000000000000000000000000000000082820281151561278e57fe5b04905080601402830192506f800000000000000000000000000000008282028115156127b657fe5b6721c3677c82b400009190049384010482016f80000000000000000000000000000000019290506f1000000000000000000000000000000085161561281f5770018ebef9eac820ae8682b9793ac6d1e7767001c3d6a24ed82218787d624d3e5eba95f984020492505b6f20000000000000000000000000000000851615612861577001368b2fc6f9609fe7aceb46aa619baed470018ebef9eac820ae8682b9793ac6d1e77884020492505b6f400000000000000000000000000000008516156128a2576fbc5ab1b16779be3575bd8f0520a9f21f7001368b2fc6f9609fe7aceb46aa619baed584020492505b6f800000000000000000000000000000008516156128e2576f454aaa8efe072e7f6ddbab84b40a55c96fbc5ab1b16779be3575bd8f0520a9f21e84020492505b700100000000000000000000000000000000851615612923576f0960aadc109e7a3bf4578099615711ea6f454aaa8efe072e7f6ddbab84b40a55c584020492505b700200000000000000000000000000000000851615612963576e2bf84208204f5977f9a8cf01fdce3d6f0960aadc109e7a3bf4578099615711d784020492505b7004000000000000000000000000000000008516156129a1576d03c6ab775dd0b95b4cbee7e65d116e2bf84208204f5977f9a8cf01fdc30784020492505b50909392505050565b60006020607f5b8060ff168260010160ff1610156129f9576000600260ff8484011604905084600860ff8316608081106129e057fe5b0154106129ef578092506129f3565b8091505b506129b1565b83600860ff831660808110612a0a57fe5b015410612a1a5791506109099050565b83600860ff841660808110612a2b57fe5b015410612a3a57509050610909565bfe5b60008083905060008090508360ff16858302908060020a82049150509150816f03442c4e6074a82f1797f72ac000000002810190508360ff16858302908060020a82049150509150816f0116b96f757c380fb287fd0e4000000002810190508360ff16858302908060020a82049150509150816e45ae5bdd5f0e03eca1ff439000000002810190508360ff16858302908060020a82049150509150816e0defabf91302cd95b9ffda5000000002810190508360ff16858302908060020a82049150509150816e02529ca9832b22439efff9b800000002810190508360ff16858302908060020a82049150509150816d54f1cf12bd04e516b6da8800000002810190508360ff16858302908060020a82049150509150816d0a9e39e257a09ca2d6db5100000002810190508360ff16858302908060020a82049150509150816d012e066e7b839fa050c30900000002810190508360ff16858302908060020a82049150509150816c1e33d7d926c329a1ad1a80000002810190508360ff16858302908060020a82049150509150816c02bee513bdb4a6b19b5f80000002810190508360ff16858302908060020a82049150509150816b3a9316fa79b88eccf2a0000002810190508360ff16858302908060020a82049150509150816b048177ebe1fa81237520000002810190508360ff16858302908060020a82049150509150816a5263fe90242dcbacf0000002810190508360ff16858302908060020a82049150509150816a057e22099c030d9410000002810190508360ff16858302908060020a82049150509150816957e22099c030d941000002810190508360ff16858302908060020a820491505091508169052b6b5456997631000002810190508360ff16858302908060020a8204915050915081684985f67696bf74800002810190508360ff16858302908060020a82049150509150816803dea12ea99e49800002810190508360ff16858302908060020a82049150509150816731880f2214b6e00002810190508360ff16858302908060020a820491505091508167025bcff56eb3600002810190508360ff16858302908060020a8204915050915081661b722e10ab100002810190508360ff16858302908060020a82049150509150816601317c7007700002810190508360ff16858302908060020a8204915050915081650cba84aafa0002810190508360ff16858302908060020a82049150509150816482573a0a0002810190508360ff16858302908060020a82049150509150816405035ad90002810190508360ff16858302908060020a8204915050915081632f881b0002810190508360ff16858302908060020a82049150509150816301b2934002810190508360ff16858302908060020a8204915050915081620efc4002810190508360ff16858302908060020a8204915050915081617fe002810190508360ff16858302908060020a820491505091508161042002810190508360ff16858302908060020a8204915050915081602102810190508360ff16858302908060020a8204915050915081600102810190508360ff1660019060020a02856f0688589cc0e9505e2f2fee558000000083811515612ed257fe5b04010195945050505050565b60008082610100811015612f0b575b6001811115612f06576001919091019060029004612eed565b612f46565b60805b60008160ff161115612f445760ff811660020a8210612f37579182179160ff811660020a909104905b600260ff90911604612f0e565b505b509291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373476173207072696365206d757374206265203c3d206d6178696d756d2067617320707269636520746f2070726576656e742066726f6e742072756e6e696e672061747461636b732e45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636508c379a000000000000000000000000000000000000000000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa165627a7a723058202f271ee5d4a0571871b1b1c7c3c9b51370a26dc0a5f68d2d04e802ab110d7b650029", + "sourceMap": "562:29:5:-;61:300:7;562:29:5;;61:300:7;562:29:5;;;;;;;;;;;;;;:::i;:::-;;160:10:3;131:39;;111:248:7;8:9:-1;5:2;;;30:1;27;20:12;5:2;111:248:7;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;111:248:7;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;0:372;;111:248:7;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;-1:-1;;111:248:7;;;;;;;;;;;;;;;-1:-1:-1;111:248:7;-1:-1:-1;299:5:7;111:248;;;;299:5;111:248;;;;;299:5;111:248;;698:17:17;718:12;:10;;;;:12;:::i;:::-;740:6;:18;;-1:-1:-1;;;;;;740:18:17;-1:-1:-1;;;;;740:18:17;;;;;;;773:43;;740:18;;-1:-1:-1;740:18:17;773:43;;740:6;;773:43;-1:-1:-1;504:12:19;;;;:5;;:12;;;;;:::i;:::-;-1:-1:-1;526:16:19;;;;:7;;:16;;;;;:::i;:::-;-1:-1:-1;552:9:19;:20;;-1:-1:-1;;552:20:19;;;;;;;;;;;;-1:-1:-1;;;;;;;;;4049:15:5;:54;-1:-1:-1;;;;;;;4113:15:5;:54;-1:-1:-1;;;;;;;4177:15:5;:54;-1:-1:-1;;;;;;;4241:15:5;:54;-1:-1:-1;;;;;;;4305:15:5;:54;-1:-1:-1;;;;;;;4369:15:5;:54;-1:-1:-1;;;;;;;4433:15:5;:54;-1:-1:-1;;;;;;;4497:15:5;:54;-1:-1:-1;;;;;;;4561:15:5;:54;-1:-1:-1;;;;;;;4625:15:5;:54;-1:-1:-1;;;;;;;4689:15:5;:54;4771:36;4753:15;:54;4835:36;4817:15;:54;4899:36;4881:15;:54;4963:36;4945:15;:54;5027:36;5009:15;:54;5091:36;5073:15;:54;5155:36;5137:15;:54;5219:36;5201:15;:54;5283:36;5265:15;:54;5347:36;5329:15;:54;5411:36;5393:15;:54;5475:36;5457:15;:54;5539:36;5521:15;:54;5603:36;5585:15;:54;5667:36;5649:15;:54;5731:36;5713:15;:54;5795:36;5777:15;:54;5859:36;5841:15;:54;5923:36;5905:15;:54;-1:-1:-1;;;;;5969:15:5;:54;6051:36;6033:15;:54;6115:36;6097:15;:54;6179:36;6161:15;:54;6243:36;6225:15;:54;6307:36;6289:15;:54;6371:36;6353:15;:54;6435:36;6417:15;:54;6499:36;6481:15;:54;6563:36;6545:15;:54;6627:36;6609:15;:54;6691:36;6673:15;:54;6755:36;6737:15;:54;6819:36;6801:15;:54;6883:36;6865:15;:54;6947:36;6929:15;:54;7011:36;6993:15;:54;7075:36;7057:15;:54;7139:36;7121:15;:54;7203:36;7185:15;:54;7267:36;7249:15;:54;7331:36;7313:15;:54;7395:36;7377:15;:54;7459:36;7441:15;:54;7523:36;7505:15;:54;7587:36;7569:15;:54;7651:36;7633:15;:54;7715:36;7697:15;:54;7779:36;7761:15;:54;7843:36;7825:15;:54;7907:36;7889:15;:54;7971:36;7953:15;:54;8035:36;8017:15;:54;-1:-1:-1;;;;;8081:15:5;:54;8163:36;8145:15;:54;8227:36;8209:15;:54;8291:36;8273:15;:54;8355:36;8337:15;:54;8420:36;8401:16;:55;8485:36;8466:16;:55;8550:36;8531:16;:55;8615:36;8596:16;:55;8680:36;8661:16;:55;8745:36;8726:16;:55;8810:36;8791:16;:55;8875:36;8856:16;:55;8940:36;8921:16;:55;9005:36;8986:16;:55;9070:36;9051:16;:55;9135:36;9116:16;:55;9200:36;9181:16;:55;9265:36;9246:16;:55;9330:36;9311:16;:55;9395:36;9376:16;:55;9460:36;9441:16;:55;9525:36;9506:16;:55;9590:36;9571:16;:55;9655:36;9636:16;:55;9720:36;9701:16;:55;9785:36;9766:16;:55;9850:36;9831:16;:55;9915:36;9896:16;:55;9980:36;9961:16;:55;10045:36;10026:16;:55;10110:36;10091:16;:55;10175:36;10156:16;:55;492:12:1;:28;;-1:-1:-1;;492:28:1;;;;;;;;;;;;871:33:10;877:10;889:14;871:5;;;;:33;:::i;:::-;-1:-1:-1;;475:9:12;465:7;:19;-1:-1:-1;;494:13:12;:26;;-1:-1:-1;;;;;;494:26:12;510:10;494:26;;;-1:-1:-1;61:300:7;;-1:-1:-1;;;;;;;;;;61:300:7;788:96:13;867:10;788:96;;:::o;5962:302:18:-;-1:-1:-1;;;;;6037:21:18;;;;6029:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6120:12;;:24;;6137:6;6120:16;;;;;;:24;:::i;:::-;6105:12;:39;-1:-1:-1;;;;;6175:18:18;;;;;;:9;:18;;;;;;:30;;6198:6;6175:22;;;;;;:30;:::i;:::-;-1:-1:-1;;;;;6154:18:18;;;;;;:9;:18;;;;;;;;:51;;;;6220:37;;;;;;;6154:18;;;;6220:37;;;;;;;;;;5962:302;;:::o;834:176:16:-;892:7;923:5;;;946:6;;;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:16:o;61:300:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;61:300:7;;;-1:-1:-1;61:300:7;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "61:300:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;564:6:12;:4;:6::i;:::-;61:300:7;644:81:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;644:81:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;644:81:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2500:149:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2500:149:18;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2500:149:18;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;408:26:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;408:26:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;533:206;;8:9:-1;5:2;;;30:1;27;20:12;5:2;533:206:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;533:206:1;;:::i;:::-;;;;;;;;;;;;;;;;1559:89:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1559:89:18;;;:::i;3107:300::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3107:300:18;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3107:300:18;;;;;;;;;;;;;;;;;;:::i;1129:975:4:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1129:975:4;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;1129:975:4;;;;;;;;;;;;;;;;;;;:::i;1472:81:19:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1472:81:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3802:207:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3802:207:18;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3802:207:18;;;;;;;;;:::i;131:39:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;131:39:3;;;:::i;969:184:12:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;969:184:12;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;969:184:12;;:::i;2789:1165:4:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2789:1165:4;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;2789:1165:4;;;;;;;;;;;;;;;;;;;:::i;562:29:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;562:29:5;;;:::i;1706:108:18:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1706:108:18;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1706:108:18;;;;:::i;1684:137:17:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1684:137:17;;;:::i;745:208:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;745:208:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;745:208:1;;:::i;899:77:17:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;899:77:17;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1250:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1250:92:17;;;:::i;838:85:19:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;838:85:19;;;:::i;1805:132:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1805:132:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1805:132:10;;:::i;1159:84:12:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1159:84:12;;;:::i;4496:258:18:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4496:258:18;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4496:258:18;;;;;;;;;:::i;2017:155::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2017:155:18;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2017:155:18;;;;;;;;;:::i;1943:150:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1943:150:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1943:150:10;;;;;;;;;:::i;347:98:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;347:98:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;347:98:3;;:::i;917:125:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;917:125:10;;;:::i;2230:132:18:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2230:132:18;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2230:132:18;;;;;;;;;;;:::i;1970:107:17:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1970:107:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1970:107:17;;;;:::i;662:301:12:-;830:13;;:38;;741:5;723:9;735:3;723:15;;:23;;;;;796:24;;;;;830:13;;;;;:38;;;;;796:24;;703:17;830:38;703:17;830:38;796:24;830:13;:38;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;830:38:12;878:31;894:14;878:15;:31::i;:::-;-1:-1:-1;929:7:12;;:27;;941:14;929:27;:11;:27;:::i;:::-;919:7;:37;-1:-1:-1;;662:301:12:o;644:81:19:-;713:5;706:12;;;;;;;;-1:-1:-1;;706:12:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;681:13;;706:12;;713:5;;706:12;;713:5;706:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:81;:::o;2500:149:18:-;2566:4;2582:39;2591:12;:10;:12::i;:::-;2605:7;2614:6;2582:8;:39::i;:::-;-1:-1:-1;2638:4:18;2500:149;;;;;:::o;408:26:1:-;;;;;;:::o;533:206::-;613:4;636:96;660:18;:16;:18::i;:::-;680:16;:14;:16::i;:::-;698:12;;;;712:19;636:23;:96::i;:::-;629:103;;533:206;;;;:::o;1559:89:18:-;1629:12;;1559:89;:::o;3107:300::-;3196:4;3212:36;3222:6;3230:9;3241:6;3212:9;:36::i;:::-;3258:121;3267:6;3275:12;:10;:12::i;:::-;3289:89;3327:6;3289:89;;;;;;;;;;;;;;;;;;:19;;;;;;;:11;:19;;;;;;3309:12;:10;:12::i;:::-;3289:33;;;;;;;;;;;;;-1:-1:-1;3289:33:18;;;:89;;:37;:89;:::i;:::-;3258:8;:121::i;:::-;-1:-1:-1;3396:4:18;3107:300;;;;;:::o;1129:975:4:-;1304:7;1371:1;1361:7;:11;:34;;;;;1394:1;1376:15;:19;1361:34;:55;;;;;1415:1;1399:13;:17;;;1361:55;:93;;;;-1:-1:-1;450:7:4;1420:34;;;;;1361:93;1353:121;;;;;;;-1:-1:-1;;;;;;;;;;;1353:121:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;1533:19;;1529:58;;;-1:-1:-1;1575:1:4;1568:8;;1529:58;1644:34;;;450:7;1644:34;1640:120;;;1701:48;1733:15;1701:27;:7;1713:14;1701:27;:11;:27;:::i;:::-;:31;:48;:31;:48;:::i;:::-;1694:55;;;;1640:120;1769:14;;;1834:35;:14;1853:15;1834:35;:18;:35;:::i;:::-;1818:51;;1901:85;1920:5;1927:15;1944:13;450:7;1901:5;:85::i;:::-;1879:107;;-1:-1:-1;1879:107:4;-1:-1:-1;1996:22:4;2021:32;;;:19;:7;1879:107;2021:19;:11;:19;:::i;:::-;49:1:-1;45:20;;;;25:41;;;-1:-1;2070:27:4;25:41:-1;2089:7:4;2070:27;:18;:27;:::i;:::-;2063:34;;;;;;1129:975;;;;;;;:::o;1472:81:19:-;1537:9;;;;1472:81;:::o;3802:207:18:-;3882:4;3898:83;3907:12;:10;:12::i;:::-;3921:7;3930:50;3969:10;3930:11;:25;3942:12;:10;:12::i;:::-;3930:25;;;;;;;;;;;;;;;;;;-1:-1:-1;3930:25:18;;;:34;;;;;;;;;;;:50;:38;:50;:::i;131:39:3:-;;;;:::o;969:184:12:-;1014:17;1034:24;1050:7;1034:15;:24::i;:::-;1078:7;;1014:44;;-1:-1:-1;1078:25:12;;1014:44;1078:25;:11;:25;:::i;:::-;1068:7;:35;1113:33;;:10;;:33;;;;;1133:12;;1113:33;;;;1133:12;1113:10;:33;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1113:33:12;969:184;;:::o;2789:1165:4:-;2957:7;3024:1;3014:7;:11;:34;;;;;3047:1;3029:15;:19;3014:34;:55;;;;;3068:1;3052:13;:17;;;3014:55;:93;;;;-1:-1:-1;450:7:4;3073:34;;;;;3014:93;:119;;;;;3126:7;3111:11;:22;;3014:119;3006:147;;;;;;;-1:-1:-1;;;;;;;;;;;3006:147:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;3209:16;;3205:55;;;-1:-1:-1;3248:1:4;3241:8;;3205:55;3342:7;3327:11;:22;3323:75;;;-1:-1:-1;3372:15:4;3365:22;;3323:75;3455:34;;;450:7;3455:34;3451:117;;;3512:45;3549:7;3512:32;:15;3532:11;3512:32;:19;:32;:::i;3451:117::-;3577:14;;;3642:24;:7;3654:11;3642:24;:11;:24;:::i;:::-;3626:40;;3698:77;3717:7;3726:5;450:7;3752:13;3698:5;:77::i;:::-;3676:99;;-1:-1:-1;3676:99:4;-1:-1:-1;3785:18:4;3806:27;:15;3676:99;3806:27;:19;:27;:::i;:::-;3785:48;-1:-1:-1;3864:28:4;;;;;;;3909:38;3940:6;3909:26;3785:48;3864:28;3909:26;:14;:26;:::i;:38::-;3902:45;2789:1165;-1:-1:-1;;;;;;;;;;2789:1165:4:o;562:29:5:-;;;;;;;;;;;;;;;-1:-1:-1;;562:29:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1706:108:18:-;1789:18;;1763:7;1789:18;;;:9;:18;;;;;;;1706:108::o;1684:137:17:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;-1:-1:-1;;;;;;;;;;;1095:54:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1782:1;1766:6;;1745:40;;;1766:6;;;;1745:40;;1782:1;;1745:40;1812:1;1795:19;;;;;;1684:137::o;745:208:1:-;828:4;851:95;871:18;:16;:18::i;:::-;891:16;:14;:16::i;:::-;909:12;;;;923:22;851:19;:95::i;899:77:17:-;937:7;963:6;;;899:77;:::o;1250:92::-;1290:4;1329:6;;;;1313:12;:10;:12::i;:::-;:22;;;1306:29;;1250:92;:::o;838:85:19:-;909:7;902:14;;;;;;;;-1:-1:-1;;902:14:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;877:13;;902:14;;909:7;;902:14;;909:7;902:14;;;;;;;;;;;;;;;;;;;;;;;;1805:132:10;1859:26;1865:10;1877:7;1859:5;:26::i;:::-;1900:30;;;1907:10;1900:30;;;;;;;;1928:1;1900:30;;;;;;;;;;;;;;;1805:132;:::o;1159:84:12:-;1229:7;;1159:84;:::o;4496:258:18:-;4581:4;4597:129;4606:12;:10;:12::i;:::-;4620:7;4629:96;4668:15;4629:96;;;;;;;;;;;;;;;;;;:11;:25;4641:12;:10;:12::i;:::-;4629:25;;;;;;;;;;;;;;;;;;-1:-1:-1;4629:25:18;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;2017:155::-;2086:4;2102:42;2112:12;:10;:12::i;:::-;2126:9;2137:6;2102:9;:42::i;1943:150:10:-;2016:25;2026:5;2033:7;2016:9;:25::i;:::-;2056:30;;;2063:10;2056:30;;;;;;;;2084:1;2056:30;;;;;;;;;;;;;;;1943:150;;:::o;347:98:3:-;1103:9:17;:7;:9::i;:::-;1095:54;;;;;;;-1:-1:-1;;;;;;;;;;;1095:54:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;416:11:3;:22;347:98::o;917:125:10:-;966:4;989:13;:11;:13::i;:::-;982:20;;917:125;:::o;2230:132:18:-;2328:18;;;;2302:7;2328:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2230:132::o;1970:107:17:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;-1:-1:-1;;;;;;;;;;;1095:54:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2042:28;2061:8;2042:18;:28::i;:::-;1970:107;:::o;1048:336:10:-;235:11:3;;1120:4:10;;220:11:3;:26;;212:111;;;;-1:-1:-1;;;;;;;;;;;212:111:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1155:1:10;1144:12;;1136:50;;;;;-1:-1:-1;;;;;;;;;;;1136:50:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;1197:17;1217:33;1241:8;1217:23;:33::i;:::-;1197:53;;1260:31;1266:10;1278:12;1260:5;:31::i;:::-;1306:42;;;1313:10;1306:42;;;;;;;;;;;;;;;;;;;;;;;;;1365:12;1048:336;-1:-1:-1;;1048:336:10:o;834:176:16:-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;;;;;;;;;938:46:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:16:o;788:96:13:-;867:10;788:96;:::o;7350:332:18:-;7443:19;;;;;7435:68;;;;-1:-1:-1;;;;;;;;;;;7435:68:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7521:21;;;;;7513:68;;;;-1:-1:-1;;;;;;;;;;;7513:68:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7592:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7643:32;;;;;;;;;;;;;;;;;7350:332;;;:::o;5228:464::-;5325:20;;;;;5317:70;;;;-1:-1:-1;;;;;;;;;;;5317:70:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5405:23;;;;;5397:71;;;;-1:-1:-1;;;;;;;;;;;5397:71:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5499;5521:6;5499:71;;;;;;;;;;;;;;;;;;:17;;;;;;;:9;:17;;;;;;;:71;;:21;:71;:::i;:::-;5479:17;;;;;;;;:9;:17;;;;;;:91;;;;5603:20;;;;;;;:32;;5628:6;5603:32;:24;:32;:::i;:::-;5580:20;;;;;;;;:9;:20;;;;;;;;;:55;;;;5650:35;;;;;;;5580:20;;5650:35;;;;;;;;;;;;;5228:464;;;:::o;1732:187:16:-;1818:7;1853:12;1845:6;;;;1837:29;;;;-1:-1:-1;;;;;;;;;;;1837:29:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1837:29:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1888:5:16;;;1732:187::o;2159:459::-;2217:7;2458:6;;2454:45;;;-1:-1:-1;2487:1:16;2480:8;;2454:45;2521:5;;;2525:1;2521;:5;2544;;;;;;;;:10;2536:56;;;;-1:-1:-1;;;;;;;;;;;2536:56:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3073:130;3131:7;3157:39;3161:1;3164;3157:39;;;;;;;;;;;;;;;;;;:3;:39::i;11604:892:5:-;11740:7;;1161:35;11778:16;;11770:53;;;;;-1:-1:-1;;;;;;;;;;;11770:53:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;11841:16;;;;11833:57;;;;;-1:-1:-1;;;;;;;;;;;11833:57:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;11901:15;11926:12;11960:6;1009:35;11941:6;:16;:25;;;;;;;;11926:40;;1585:35;11980:4;:22;11976:136;;;12028:16;12039:4;12028:10;:16::i;:::-;12018:26;;11976:136;;;12085:16;12096:4;12085:10;:16::i;:::-;12075:26;;11976:136;12122:23;12166:5;12148:23;;12158:5;12148:15;;:7;:15;:23;;;;;;;;12122:49;;1669:35;12185:15;:33;12181:309;;;12242:27;12253:15;12242:10;:27::i;:::-;772:3;12234:51;;;;;;;;;12181:309;12316:15;12334:42;12360:15;12334:25;:42::i;:::-;12316:60;-1:-1:-1;12398:69:5;12409:46;772:3;12429:25;;;12409:46;49:1:-1;45:20;25:41;;12316:60:5;12398:10;:69::i;:::-;12390:89;-1:-1:-1;12469:9:5;-1:-1:-1;12390:89:5;;-1:-1:-1;;;12390:89:5;11604:892;;;;;;;;:::o;1274:134:16:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;;:3;:43::i;1390:409:10:-;235:11:3;;1461:4:10;;220:11:3;:26;;212:111;;;;-1:-1:-1;;;;;;;;;;;212:111:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1495:1:10;1485:11;;1477:48;;;;;-1:-1:-1;;;;;;;;;;;1477:48:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;1568:7;1543:21;1553:10;1543:9;:21::i;:::-;:32;;1535:73;;;;;-1:-1:-1;;;;;;;;;;;1535:73:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;1619:17;1639:32;1663:7;1639:23;:32::i;:::-;1619:52;;1681:26;1687:10;1699:7;1681:5;:26::i;:::-;1722:41;;;1729:10;1722:41;;;;;;;;;;;;;;;;;;;;;;;;;1780:12;1390:409;-1:-1:-1;;1390:409:10:o;6583:342:18:-;6658:21;;;;;6650:67;;;;-1:-1:-1;;;;;;;;;;;6650:67:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6749:68;6772:6;6749:68;;;;;;;;;;;;;;;;;;:18;;;;;;;:9;:18;;;;;;;:68;;:22;:68;:::i;:::-;6728:18;;;;;;;:9;:18;;;;;:89;6842:12;;:24;;6859:6;6842:24;:16;:24;:::i;:::-;6827:12;:39;6881:37;;;;;;;;6907:1;;6881:37;;;;;;;;;;;;;6583:342;;:::o;7860:229::-;7931:22;7937:7;7946:6;7931:5;:22::i;:::-;7963:119;7972:7;7981:12;:10;:12::i;:::-;7995:86;8034:6;7995:86;;;;;;;;;;;;;;;;;;:20;;;;;;;:11;:20;;;;;;8016:12;:10;:12::i;7963:119::-;7860:229;;:::o;2178:225:17:-;2251:22;;;;;2243:73;;;;-1:-1:-1;;;;;;;;;;;2243:73:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2352:6;;;2331:38;;;;;;;2352:6;;;2331:38;;;2379:6;:17;;;;;;;;;;;;;;;2178:225::o;5962:302:18:-;6037:21;;;;;6029:65;;;;;-1:-1:-1;;;;;;;;;;;6029:65:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;6120:12;;:24;;6137:6;6120:24;:16;:24;:::i;:::-;6105:12;:39;6175:18;;;;;;;:9;:18;;;;;;:30;;6198:6;6175:30;:22;:30;:::i;:::-;6154:18;;;;;;;:9;:18;;;;;;;;:51;;;;6220:37;;;;;;;6154:18;;;;6220:37;;;;;;;;;;5962:302;;:::o;3718:338:16:-;3804:7;3904:12;3897:5;;;3889:28;;;;-1:-1:-1;;;;;;;;;;;3889:28:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3889:28:16;;3927:9;3943:1;3939;:5;;;;;;;;;3718:338;-1:-1:-1;;;;;3718:338:16:o;19589:2397:5:-;19643:7;;;;;19755:34;19750:39;;19746:143;;19799:34;19792:41;;;;;19853:34;1009:35;19839:11;;:48;19835:52;;19746:143;19907:34;19902:39;;19898:143;;19951:34;19944:41;;;;;20005:34;1009:35;19991:11;;:48;19987:52;;19898:143;20059:34;20054:39;;20050:143;;20103:34;20096:41;;;;;20157:34;1009:35;20143:11;;:48;20139:52;;20050:143;20211:34;20206:39;;20202:143;;20255:34;20248:41;;;;;20309:34;1009:35;20295:11;;:48;20291:52;;20202:143;20363:34;20358:39;;20354:143;;20407:34;20400:41;;;;;20461:34;1009:35;20447:11;;:48;20443:52;;20354:143;20515:34;20510:39;;20506:143;;20559:34;20552:41;;;;;20613:34;1009:35;20599:11;;:48;20595:52;;20506:143;20667:34;20662:39;;20658:143;;20711:34;20704:41;;;;;20765:34;1009:35;20751:11;;:48;20747:52;;20658:143;20819:34;20814:39;;20810:143;;20863:34;20856:41;;;;;20917:34;1009:35;20903:11;;:48;20899:52;;20810:143;20971:11;;;;-1:-1:-1;20971:11:5;;-1:-1:-1;1009:35:5;20996:5;;;:15;;-1:-1:-1;21076:35:5;21033:39;;;21028:45;;:83;21021:90;;;;;1009:35;21117:5;;;:15;;-1:-1:-1;21197:35:5;21154;:39;;;21149:45;;:83;21142:90;;;;;1009:35;21238:5;;;:15;;-1:-1:-1;21318:35:5;21275;:39;;;21270:45;;:83;21263:90;;;;;1009:35;21359:5;;;:15;;-1:-1:-1;21439:35:5;21396;:39;;;21391:45;;:83;21384:90;;;;;1009:35;21480:5;;;:15;;-1:-1:-1;21560:35:5;21517;:39;;;21512:45;;:83;21505:90;;;;;1009:35;21601:5;;;:15;;-1:-1:-1;21681:35:5;21638;:39;;;21633:45;;:83;21626:90;;;;;1009:35;21722:5;;;:15;;-1:-1:-1;21802:35:5;21759;:39;;;21754:45;;:83;21747:90;;;;;1009:35;21843:5;;;:15;;-1:-1:-1;21923:35:5;21880;:39;;;21875:45;;:83;21868:90;;;;;19589:2397;-1:-1:-1;;;;;19589:2397:5:o;12661:826::-;12716:7;;12772:2;1085:35;12880:12;;12876:152;;12908:11;12922:22;1009:35;12932:1;:11;12922:9;:22::i;:::-;12958:11;;1009:35;13002:15;;;-1:-1:-1;49:1;45:20;25:41;;;;-1:-1;12876:152:5;1009:35;13133:1;:11;13129:297;;;772:3;13160:256;13194:1;13190;:5;;;13160:256;;;1009:35;13225:5;;;13224:17;;-1:-1:-1;1085:35:5;13280:12;;13276:126;;13369:14;-1:-1:-1;;13377:5:5;;13369:14;49:1:-1;13369:14:5;;;13362:21;;;;;25:41:-1;;;;13276:126:5;-1:-1:-1;;13197:3:5;13160:256;;;;13129:297;1398:33;1316;13443:19;;:37;;12661:826;-1:-1:-1;;;;12661:826:5:o;22157:2980::-;22211:7;22555:18;1009:35;22303:38;;;22355:5;;;:15;;;22441:5;;;:15;;;22527:5;;;:15;;;22551:22;;;22383:18;22379:22;;;22469:18;22465:22;;;;22458:29;22544;;22303:38;;22613:5;;;:15;22609:19;;22637:1;22641:18;22637:22;22630:29;;;;1009:35;22703:1;22699;:5;:15;;;;;;;;22695:19;;22723:1;22727:18;22723:22;22716:29;;;;1009:35;22789:1;22785;:5;:15;;;;;;;;22781:19;;22809:1;22813:18;22809:22;22802:29;;;;1009:35;22875:1;22871;:5;:15;;;;;;;;22867:19;;22895:1;22899:18;22895:22;22888:29;;;;1009:35;22961:1;22957;:5;:15;;;;;;;;22953:19;;22981:1;22985:18;22981:22;22974:29;;;;1009:35;23047:1;23043;:5;:15;;;;;;;;23039:19;;23067:1;23071:18;23067:22;23060:29;;;;1009:35;23133:1;23129;:5;:15;;;;;;;;23125:19;;23153:1;23157:18;23153:22;23146:29;;;;1009:35;23219:1;23215;:5;:15;;;;;;;;23211:19;;23239:1;23243:18;23239:22;23232:29;;;;1009:35;23305:1;23301;:5;:15;;;;;;;;23297:19;;23325:1;23329:18;23325:22;23318:29;;;;1009:35;23391:1;23387;:5;:15;;;;;;;;23383:19;;23411:1;23415:18;23411:22;23404:29;;;;1009:35;23477:1;23473;:5;:15;;;;;;;;23469:19;;23497:1;23501:18;23497:22;23490:29;;;;1009:35;23563:1;23559;:5;:15;;;;;;;;23555:19;;23583:1;23587:18;23583:22;23576:29;;;;1009:35;23649:1;23645;:5;:15;;;;;;;;23641:19;;23669:1;23673:18;23669:22;23662:29;;;;1009:35;23735:1;23731;:5;:15;;;;;;;;23727:19;;23755:1;23759:18;23755:22;23748:29;;;;1009:35;23821:1;23817;:5;:15;;;;;;;;23813:19;;23841:1;23845:18;23841:22;23834:29;;;;1009:35;23907:1;23903;:5;:15;;;;;;;23997:18;23903:15;;;23920:29;;;23991:24;:28;;1009:35;23991:38;;23903:15;-1:-1:-1;24099:35:5;24095:39;;24094:46;24090:137;;24192:35;24154;24148:41;;:79;24142:85;;24090:137;24246:35;24242:39;;24241:46;24237:137;;24339:35;24301;24295:41;;:79;24289:85;;24237:137;24393:35;24389:39;;24388:46;24384:137;;24486:35;24448;24442:41;;:79;24436:85;;24384:137;24540:35;24536:39;;24535:46;24531:137;;24633:35;24595;24589:41;;:79;24583:85;;24531:137;24687:35;24683:39;;24682:46;24678:137;;24780:35;24742;24736:41;;:79;24730:85;;24678:137;24834:35;24830:39;;24829:46;24825:137;;24927:35;24889;24883:41;;:79;24877:85;;24825:137;24981:35;24977:39;;24976:46;24972:137;;25074:35;25036;25030:41;;:79;25024:85;;24972:137;-1:-1:-1;25127:3:5;;22157:2980;-1:-1:-1;;;22157:2980:5:o;14495:508::-;14569:5;725:2;772:3;14659:179;14675:2;14666:11;;:2;14671:1;14666:6;:11;;;14659:179;;;14693:9;14717:1;14705:13;14706:7;;;14705:13;;;-1:-1:-1;14756:2:5;14736:11;:16;;;;;;;;;;;;:22;14732:95;;14781:3;14776:8;;14732:95;;;14824:3;14819:8;;14732:95;14659:179;;;;14871:2;14852:11;:15;;;;;;;;;;;;:21;14848:48;;14894:2;-1:-1:-1;14887:9:5;;-1:-1:-1;14887:9:5;14848:48;14929:2;14910:11;:15;;;;;;;;;;;;:21;14906:48;;-1:-1:-1;14952:2:5;-1:-1:-1;14945:9:5;;14906:48;14965:13;15587:3826;15660:7;15679:10;15692:2;15679:15;;15704:11;15718:1;15704:15;;15748:10;15735:23;;15741:2;15736;:7;15735:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;15735:23:5;15730:28;;15767:2;15772:33;15767:38;15760:45;;;;15859:10;15846:23;;15852:2;15847;:7;15846:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;15846:23:5;15841:28;;15878:2;15883:33;15878:38;15871:45;;;;15970:10;15957:23;;15963:2;15958;:7;15957:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;15957:23:5;15952:28;;15989:2;15994:33;15989:38;15982:45;;;;16081:10;16068:23;;16074:2;16069;:7;16068:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16068:23:5;16063:28;;16100:2;16105:33;16100:38;16093:45;;;;16192:10;16179:23;;16185:2;16180;:7;16179:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16179:23:5;16174:28;;16211:2;16216:33;16211:38;16204:45;;;;16303:10;16290:23;;16296:2;16291;:7;16290:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16290:23:5;16285:28;;16322:2;16327:33;16322:38;16315:45;;;;16414:10;16401:23;;16407:2;16402;:7;16401:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16401:23:5;16396:28;;16433:2;16438:33;16433:38;16426:45;;;;16525:10;16512:23;;16518:2;16513;:7;16512:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16512:23:5;16507:28;;16544:2;16549:33;16544:38;16537:45;;;;16636:10;16623:23;;16629:2;16624;:7;16623:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16623:23:5;16618:28;;16655:2;16660:33;16655:38;16648:45;;;;16747:10;16734:23;;16740:2;16735;:7;16734:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16734:23:5;16729:28;;16766:2;16771:33;16766:38;16759:45;;;;16858:10;16845:23;;16851:2;16846;:7;16845:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16845:23:5;16840:28;;16877:2;16882:33;16877:38;16870:45;;;;16969:10;16956:23;;16962:2;16957;:7;16956:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16956:23:5;16951:28;;16988:2;16993:33;16988:38;16981:45;;;;17080:10;17067:23;;17073:2;17068;:7;17067:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17067:23:5;17062:28;;17099:2;17104:33;17099:38;17092:45;;;;17191:10;17178:23;;17184:2;17179;:7;17178:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17178:23:5;17173:28;;17210:2;17215:33;17210:38;17203:45;;;;17302:10;17289:23;;17295:2;17290;:7;17289:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17289:23:5;17284:28;;17321:2;17326:33;17321:38;17314:45;;;;17413:10;17400:23;;17406:2;17401;:7;17400:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17400:23:5;17395:28;;17432:2;17437:33;17432:38;17425:45;;;;17524:10;17511:23;;17517:2;17512;:7;17511:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17511:23:5;17506:28;;17543:2;17548:33;17543:38;17536:45;;;;17635:10;17622:23;;17628:2;17623;:7;17622:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17622:23:5;17617:28;;17654:2;17659:33;17654:38;17647:45;;;;17746:10;17733:23;;17739:2;17734;:7;17733:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17733:23:5;17728:28;;17765:2;17770:33;17765:38;17758:45;;;;17857:10;17844:23;;17850:2;17845;:7;17844:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17844:23:5;17839:28;;17876:2;17881:33;17876:38;17869:45;;;;17968:10;17955:23;;17961:2;17956;:7;17955:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17955:23:5;17950:28;;17987:2;17992:33;17987:38;17980:45;;;;18079:10;18066:23;;18072:2;18067;:7;18066:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18066:23:5;18061:28;;18098:2;18103:33;18098:38;18091:45;;;;18190:10;18177:23;;18183:2;18178;:7;18177:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18177:23:5;18172:28;;18209:2;18214:33;18209:38;18202:45;;;;18301:10;18288:23;;18294:2;18289;:7;18288:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18288:23:5;18283:28;;18320:2;18325:33;18320:38;18313:45;;;;18412:10;18399:23;;18405:2;18400;:7;18399:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18399:23:5;18394:28;;18431:2;18436:33;18431:38;18424:45;;;;18523:10;18510:23;;18516:2;18511;:7;18510:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18510:23:5;18505:28;;18542:2;18547:33;18542:38;18535:45;;;;18634:10;18621:23;;18627:2;18622;:7;18621:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18621:23:5;18616:28;;18653:2;18658:33;18653:38;18646:45;;;;18745:10;18732:23;;18738:2;18733;:7;18732:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18732:23:5;18727:28;;18764:2;18769:33;18764:38;18757:45;;;;18856:10;18843:23;;18849:2;18844;:7;18843:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18843:23:5;18838:28;;18875:2;18880:33;18875:38;18868:45;;;;18967:10;18954:23;;18960:2;18955;:7;18954:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18954:23:5;18949:28;;18986:2;18991:33;18986:38;18979:45;;;;19078:10;19065:23;;19071:2;19066;:7;19065:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;19065:23:5;19060:28;;19097:2;19102:33;19097:38;19090:45;;;;19189:10;19176:23;;19182:2;19177;:7;19176:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;19176:23:5;19171:28;;19208:2;19213:33;19208:38;19201:45;;;;19345:10;19338:17;;629:1;19338:17;;;;19332:2;19296:33;19290:3;:39;;;;;;;;:44;:66;;15587:3826;-1:-1:-1;;;;;15587:3826:5:o;13602:532::-;13656:5;;13708:2;13729:3;13725:7;;13721:386;;;13784:80;13795:1;13791;:5;13784:80;;;13822:1;13841:8;;;;;49:1:-1;25:41;;13784:80:5;;;13721:386;;;13945:3;13930:167;13954:1;13950;:5;;;13930:167;;;13994:8;;;;;13988:15;;13984:99;;14056:8;;;;14027:7;;;49:1:-1;45:20;25:41;;;;13984:99:5;49:1:-1;13957:7:5;;;;25:41:-1;13930:167:5;;;;13721:386;-1:-1:-1;14124:3:5;13602:532;-1:-1:-1;;13602:532:5:o", + "source": "pragma solidity ^0.5.2;\n\nimport \"./ETHContinuousToken.sol\";\n\ncontract ArtistToken1 is ETHContinuousToken {\n constructor(\n string memory _name,\n string memory _symbol,\n uint8 _decimals,\n uint _initialSupply,\n uint32 _reserveRatio\n ) public ETHContinuousToken(_name, _symbol, _decimals, _initialSupply, _reserveRatio) {}\n}", + "sourcePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/token/ArtistToken1.sol", + "ast": { + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/token/ArtistToken1.sol", + "exportedSymbols": { + "ArtistToken1": [ + 2602 + ] + }, + "id": 2603, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2577, + "literals": [ + "solidity", + "^", + "0.5", + ".2" + ], + "nodeType": "PragmaDirective", + "src": "0:23:7" + }, + { + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/token/ETHContinuousToken.sol", + "file": "./ETHContinuousToken.sol", + "id": 2578, + "nodeType": "ImportDirective", + "scope": 2603, + "sourceUnit": 3078, + "src": "25:34:7", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2579, + "name": "ETHContinuousToken", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3077, + "src": "86:18:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ETHContinuousToken_$3077", + "typeString": "contract ETHContinuousToken" + } + }, + "id": 2580, + "nodeType": "InheritanceSpecifier", + "src": "86:18:7" + } + ], + "contractDependencies": [ + 122, + 139, + 176, + 389, + 2569, + 2856, + 3077, + 3104, + 3597, + 4002, + 4060, + 4157 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 2602, + "linearizedBaseContracts": [ + 2602, + 3077, + 2856, + 176, + 122, + 389, + 2569, + 139, + 4060, + 4002, + 3597, + 4157, + 3104 + ], + "name": "ArtistToken1", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 2600, + "nodeType": "Block", + "src": "357:2:7", + "statements": [] + }, + "documentation": null, + "id": 2601, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 2593, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2582, + "src": "299:5:7", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 2594, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2584, + "src": "306:7:7", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 2595, + "name": "_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2586, + "src": "315:9:7", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 2596, + "name": "_initialSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2588, + "src": "326:14:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2597, + "name": "_reserveRatio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2590, + "src": "342:13:7", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "id": 2598, + "modifierName": { + "argumentTypes": null, + "id": 2592, + "name": "ETHContinuousToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3077, + "src": "280:18:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ETHContinuousToken_$3077_$", + "typeString": "type(contract ETHContinuousToken)" + } + }, + "nodeType": "ModifierInvocation", + "src": "280:76:7" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2591, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2582, + "name": "_name", + "nodeType": "VariableDeclaration", + "scope": 2601, + "src": "132:19:7", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2581, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "132:6:7", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2584, + "name": "_symbol", + "nodeType": "VariableDeclaration", + "scope": 2601, + "src": "161:21:7", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2583, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "161:6:7", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2586, + "name": "_decimals", + "nodeType": "VariableDeclaration", + "scope": 2601, + "src": "192:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2585, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "192:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2588, + "name": "_initialSupply", + "nodeType": "VariableDeclaration", + "scope": 2601, + "src": "217:19:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2587, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "217:4:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2590, + "name": "_reserveRatio", + "nodeType": "VariableDeclaration", + "scope": 2601, + "src": "246:20:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 2589, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "246:6:7", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "122:150:7" + }, + "returnParameters": { + "id": 2599, + "nodeType": "ParameterList", + "parameters": [], + "src": "357:0:7" + }, + "scope": 2602, + "src": "111:248:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 2603, + "src": "61:300:7" + } + ], + "src": "0:361:7" + }, + "legacyAST": { + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/token/ArtistToken1.sol", + "exportedSymbols": { + "ArtistToken1": [ + 2602 + ] + }, + "id": 2603, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2577, + "literals": [ + "solidity", + "^", + "0.5", + ".2" + ], + "nodeType": "PragmaDirective", + "src": "0:23:7" + }, + { + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/token/ETHContinuousToken.sol", + "file": "./ETHContinuousToken.sol", + "id": 2578, + "nodeType": "ImportDirective", + "scope": 2603, + "sourceUnit": 3078, + "src": "25:34:7", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2579, + "name": "ETHContinuousToken", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3077, + "src": "86:18:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ETHContinuousToken_$3077", + "typeString": "contract ETHContinuousToken" + } + }, + "id": 2580, + "nodeType": "InheritanceSpecifier", + "src": "86:18:7" + } + ], + "contractDependencies": [ + 122, + 139, + 176, + 389, + 2569, + 2856, + 3077, + 3104, + 3597, + 4002, + 4060, + 4157 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 2602, + "linearizedBaseContracts": [ + 2602, + 3077, + 2856, + 176, + 122, + 389, + 2569, + 139, + 4060, + 4002, + 3597, + 4157, + 3104 + ], + "name": "ArtistToken1", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 2600, + "nodeType": "Block", + "src": "357:2:7", + "statements": [] + }, + "documentation": null, + "id": 2601, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 2593, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2582, + "src": "299:5:7", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 2594, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2584, + "src": "306:7:7", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 2595, + "name": "_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2586, + "src": "315:9:7", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 2596, + "name": "_initialSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2588, + "src": "326:14:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2597, + "name": "_reserveRatio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2590, + "src": "342:13:7", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "id": 2598, + "modifierName": { + "argumentTypes": null, + "id": 2592, + "name": "ETHContinuousToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3077, + "src": "280:18:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ETHContinuousToken_$3077_$", + "typeString": "type(contract ETHContinuousToken)" + } + }, + "nodeType": "ModifierInvocation", + "src": "280:76:7" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2591, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2582, + "name": "_name", + "nodeType": "VariableDeclaration", + "scope": 2601, + "src": "132:19:7", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2581, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "132:6:7", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2584, + "name": "_symbol", + "nodeType": "VariableDeclaration", + "scope": 2601, + "src": "161:21:7", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2583, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "161:6:7", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2586, + "name": "_decimals", + "nodeType": "VariableDeclaration", + "scope": 2601, + "src": "192:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2585, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "192:5:7", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2588, + "name": "_initialSupply", + "nodeType": "VariableDeclaration", + "scope": 2601, + "src": "217:19:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2587, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "217:4:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2590, + "name": "_reserveRatio", + "nodeType": "VariableDeclaration", + "scope": 2601, + "src": "246:20:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 2589, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "246:6:7", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "122:150:7" + }, + "returnParameters": { + "id": 2599, + "nodeType": "ParameterList", + "parameters": [], + "src": "357:0:7" + }, + "scope": 2602, + "src": "111:248:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 2603, + "src": "61:300:7" + } + ], + "src": "0:361:7" + }, + "compiler": { + "name": "solc", + "version": "0.5.2+commit.1df8f40c.Emscripten.clang" + }, + "networks": { + "9545": { + "events": {}, + "links": {}, + "address": "0x2D8BE6BF0baA74e0A907016679CaE9190e80dD0A", + "transactionHash": "0xae6ed7e98c2be3cce1ace8b81f5047643d8a05fed1d6942d5c8b05388643b4a9" + } + }, + "schemaVersion": "3.0.1", + "updatedAt": "2020-02-16T15:02:57.834Z", + "devdoc": { + "methods": { + "allowance(address,address)": { + "details": "See {IERC20-allowance}." + }, + "approve(address,uint256)": { + "details": "See {IERC20-approve}. * Requirements: * - `spender` cannot be the zero address." + }, + "balanceOf(address)": { + "details": "See {IERC20-balanceOf}." + }, + "calculatePurchaseReturn(uint256,uint256,uint32,uint256)": { + "details": "given a continuous token supply, reserve token balance, reserve ratio, and a deposit amount (in the reserve token), calculates the return for a given conversion (in the continuous token) * Formula: Return = _supply * ((1 + _depositAmount / _reserveBalance) ^ (_reserveRatio / MAX_RESERVE_RATIO) - 1)", + "params": { + "_depositAmount": "deposit amount, in reserve token", + "_reserveBalance": "total reserve token balance", + "_reserveRatio": "reserve ratio, represented in ppm, 1-1000000", + "_supply": "continuous token total supply" + }, + "return": "purchase return amount" + }, + "calculateSaleReturn(uint256,uint256,uint32,uint256)": { + "details": "given a continuous token supply, reserve token balance, reserve ratio and a sell amount (in the continuous token), calculates the return for a given conversion (in the reserve token) * Formula: Return = _reserveBalance * (1 - (1 - _sellAmount / _supply) ^ (1 / (_reserveRatio / MAX_RESERVE_RATIO)))", + "params": { + "_reserveBalance": "total reserve token balance", + "_reserveRatio": "constant reserve ratio, represented in ppm, 1-1000000", + "_sellAmount": "sell amount, in the continuous token itself", + "_supply": "continuous token total supply" + }, + "return": "sale return amount" + }, + "decimals()": { + "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). * Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. * NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}." + }, + "decreaseAllowance(address,uint256)": { + "details": "Atomically decreases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`." + }, + "increaseAllowance(address,uint256)": { + "details": "Atomically increases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address." + }, + "isOwner()": { + "details": "Returns true if the caller is the current owner." + }, + "name()": { + "details": "Returns the name of the token." + }, + "owner()": { + "details": "Returns the address of the current owner." + }, + "renounceOwnership()": { + "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner." + }, + "symbol()": { + "details": "Returns the symbol of the token, usually a shorter version of the name." + }, + "totalSupply()": { + "details": "See {IERC20-totalSupply}." + }, + "transfer(address,uint256)": { + "details": "See {IERC20-transfer}. * Requirements: * - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`." + }, + "transferFrom(address,address,uint256)": { + "details": "See {IERC20-transferFrom}. * Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; * Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for `sender`'s tokens of at least `amount`." + }, + "transferOwnership(address)": { + "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." + } + } + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/truffle/build/contracts/ArtistToken2.json b/truffle/build/contracts/ArtistToken2.json new file mode 100644 index 0000000..943b73e --- /dev/null +++ b/truffle/build/contracts/ArtistToken2.json @@ -0,0 +1,1466 @@ +{ + "contractName": "ArtistToken2", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x06fdde03" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x095ea7b3" + }, + { + "constant": true, + "inputs": [], + "name": "reserveRatio", + "outputs": [ + { + "name": "", + "type": "uint32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x0c7d5cd8" + }, + { + "constant": true, + "inputs": [ + { + "name": "_reserveTokenAmount", + "type": "uint256" + } + ], + "name": "getContinuousMintReward", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x0d8f9f7f" + }, + { + "constant": false, + "inputs": [], + "name": "mint", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function", + "signature": "0x1249c58b" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x18160ddd" + }, + { + "constant": false, + "inputs": [ + { + "name": "sender", + "type": "address" + }, + { + "name": "recipient", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x23b872dd" + }, + { + "constant": true, + "inputs": [ + { + "name": "_supply", + "type": "uint256" + }, + { + "name": "_reserveBalance", + "type": "uint256" + }, + { + "name": "_reserveRatio", + "type": "uint32" + }, + { + "name": "_depositAmount", + "type": "uint256" + } + ], + "name": "calculatePurchaseReturn", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x29a00e7c" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x313ce567" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x39509351" + }, + { + "constant": true, + "inputs": [], + "name": "maxGasPrice", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x3de39c11" + }, + { + "constant": false, + "inputs": [ + { + "name": "_amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x42966c68" + }, + { + "constant": true, + "inputs": [ + { + "name": "_supply", + "type": "uint256" + }, + { + "name": "_reserveBalance", + "type": "uint256" + }, + { + "name": "_reserveRatio", + "type": "uint32" + }, + { + "name": "_sellAmount", + "type": "uint256" + } + ], + "name": "calculateSaleReturn", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x49f9b0f7" + }, + { + "constant": true, + "inputs": [], + "name": "version", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x54fd4d50" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x70a08231" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x715018a6" + }, + { + "constant": true, + "inputs": [ + { + "name": "_continuousTokenAmount", + "type": "uint256" + } + ], + "name": "getContinuousBurnRefund", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x7cbed3e0" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x8da5cb5b" + }, + { + "constant": true, + "inputs": [], + "name": "isOwner", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x8f32d59b" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x95d89b41" + }, + { + "constant": false, + "inputs": [ + { + "name": "_amount", + "type": "uint256" + } + ], + "name": "sponsoredBurn", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x96343886" + }, + { + "constant": true, + "inputs": [], + "name": "reserveBalance", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xa10954fe" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa457c2d7" + }, + { + "constant": false, + "inputs": [ + { + "name": "recipient", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa9059cbb" + }, + { + "constant": false, + "inputs": [ + { + "name": "_from", + "type": "address" + }, + { + "name": "_amount", + "type": "uint256" + } + ], + "name": "sponsoredBurnFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xb265c702" + }, + { + "constant": false, + "inputs": [ + { + "name": "newPrice", + "type": "uint256" + } + ], + "name": "setMaxGasPrice", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xd2fa635e" + }, + { + "constant": true, + "inputs": [], + "name": "continuousSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xda12457a" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xdd62ed3e" + }, + { + "constant": false, + "inputs": [ + { + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xf2fde38b" + }, + { + "inputs": [ + { + "name": "_name", + "type": "string" + }, + { + "name": "_symbol", + "type": "string" + }, + { + "name": "_decimals", + "type": "uint8" + }, + { + "name": "_initialSupply", + "type": "uint256" + }, + { + "name": "_reserveRatio", + "type": "uint32" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor", + "signature": "constructor" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "name": "deposit", + "type": "uint256" + } + ], + "name": "Minted", + "type": "event", + "signature": "0x25b428dfde728ccfaddad7e29e4ac23c24ed7fd1a6e3e3f91894a9a073f5dfff" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "name": "refund", + "type": "uint256" + } + ], + "name": "Burned", + "type": "event", + "signature": "0x23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event", + "signature": "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event", + "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event", + "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" + } + ], + "bytecode": "0x60c0604052600360808190527f302e33000000000000000000000000000000000000000000000000000000000060a090815262000040916007919062000b7b565b50670de0b6b3a76400006089553480156200005a57600080fd5b5060405162003dbd38038062003dbd833981018060405260a08110156200008057600080fd5b8101908080516401000000008111156200009957600080fd5b82016020810184811115620000ad57600080fd5b8151640100000000811182820187101715620000c857600080fd5b50509291906020018051640100000000811115620000e557600080fd5b82016020810184811115620000f957600080fd5b81516401000000008111828201871017156200011457600080fd5b5050602082015160408301516060909301519194509250848484848484848484848085858560006200014e640100000000620009d7810204565b60008054600160a060020a031916600160a060020a0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508251620001ad90600490602086019062000b7b565b508151620001c390600590602085019062000b7b565b506006805460ff191660ff9290921691909117905550506001606060020a641c35fedd1502036028556001605e60020a646c3390ecc902036029556001606160020a640cf80147610203602a556001605f60020a6431bdb23e1d0203602b556001605b60020a6502fb1d8fe0830203602c556001605a60020a6505b771955b370203602d556001605960020a650af67a93bb510203602e556001605860020a6515060c256cb30203602f556001605860020a651428a2f98d7302036030556001605660020a654d515663970902036031556001605560020a65944620b0e70f02036032557011c592761c666fffffffffffffffffffff60335570110a688680a757ffffffffffffffffffff603455701056f1b5bedf77ffffffffffffffffffff603555700faadceceeff8bffffffffffffffffffff603655700f05dc6b27edadffffffffffffffffffff603755700e67a5a25da4107fffffffffffffffffff603855700dcff115b14eedffffffffffffffffffff603955700d3e7a392431239fffffffffffffffffff603a55700cb2ff529eb71e4fffffffffffffffffff603b55700c2d415c3db974afffffffffffffffffff603c55700bad03e7d883f69bffffffffffffffffff603d55700b320d03b2c343d5ffffffffffffffffff603e55700abc25204e02828dffffffffffffffffff603f55700a4b16f74ee4bb207fffffffffffffffff6040557009deaf736ac1f569ffffffffffffffffff604155700976bd9952c7aa957fffffffffffffffff6042557009131271922eaa606fffffffffffffffff6043557008b380f3558668c46fffffffffffffffff604455700857ddf0117efa215bffffffffffffffff6045556001608360020a036046557007abbf6f6abb9d087fffffffffffffffff60475570075af62cbac95f7dfa7fffffffffffffff60485570070d7fb7452e187ac13fffffffffffffff6049557006c3390ecc8af379295fffffffffffffff604a5570067c00a3b07ffc01fd6fffffffffffffff604b55700637b647c39cbb9d3d27ffffffffffffff604c557005f63b1fc104dbd39587ffffffffffffff604d557005b771955b36e12f7235ffffffffffffff604e5570057b3d49dda84556d6f6ffffffffffffff604f5570054183095b2c8ececf30ffffffffffffff60505570050a28be635ca2b888f77fffffffffffff6051557004d5156639708c9db33c3fffffffffffff6052557004a23105873875bd52dfdfffffffffffff605355700471649d87199aa990756fffffffffffff6054557004429a21a029d4c1457cfbffffffffffff605555700415bc6d6fb7dd71af2cb3ffffffffffff6056557003eab73b3bbfe282243ce1ffffffffffff6057557003c1771ac9fb6b4c18e229ffffffffffff605855700399e96897690418f785257fffffffffff605955700373fc456c53bb779bf0ea9fffffffffff605a5570034f9e8e490c48e67e6ab8bfffffffffff605b5570032cbfd4a7adc790560b3337ffffffffff605c5570030b50570f6e5d2acca94613ffffffffff605d557002eb40f9f620fda6b56c2861ffffffffff605e557002cc8340ecb0d0f520a6af58ffffffffff605f557002af09481380a0a35cf1ba02ffffffffff606055700292c5bdd3b92ec810287b1b3fffffffff606155700277abdcdab07d5a77ac6d6b9fffffffff60625570025daf6654b1eaa55fd64df5efffffffff606355700244c49c648baa98192dce88b7ffffffff60645570022ce03cd5619a311b2471268bffffffff606555700215f77c045fbe885654a44a0fffffffff6066556001608160020a036067557001eaefdbdaaee7421fc4d3ede5ffffffff6068557001d6bd8b2eb257df7e8ca57b09bfffffff6069557001c35fedd14b861eb0443f7f133fffffff606a557001b0ce43b322bcde4a56e8ada5afffffff606b5570019f0028ec1fff007f5a195a39dfffffff606c5570018ded91f0e72ee74f49b15ba527ffffff606d5570017d8ec7f04136f4e5615fd41a63ffffff606e5570016ddc6556cdb84bdc8d12d22e6fffffff606f5570015ecf52776a1155b5bd8395814f7fffff60705570015060c256cb23b3b3cc3754cf40ffffff6071557001428a2f98d728ae223ddab715be3fffff60725570013545598e5c23276ccf0ede68034fffff6073557001288c4161ce1d6f54b7f61081194fffff60745570011c592761c666aa641d5a01a40f17ffff607555700110a688680a7530515f3e6e6cfdcdffff6076557001056f1b5bedf75c6bcb2ce8aed428ffff6077556ffaadceceeff8a0890f3875f008277fff6078556ff05dc6b27edad306388a600f6ba0bfff6079556fe67a5a25da41063de1495d5b18cdbfff607a556fdcff115b14eedde6fc3aa5353f2e4fff607b556fd3e7a3924312399f9aae2e0f868f8fff607c556fcb2ff529eb71e41582cccd5a1ee26fff607d556fc2d415c3db974ab32a51840c0b67edff607e556fbad03e7d883f69ad5b0a186184e06bff607f556fb320d03b2c343d4829abd6075f0cc5ff6080556fabc25204e02828d73c6e80bcdb1a95bf6081556fa4b16f74ee4bb2040a1ec6c15fbbf2df6082556f9deaf736ac1f569deb1b5ae3f36c130f6083556f976bd9952c7aa957f5937d790ef650376084556f9131271922eaa6064b73a22d0bd4f2bf6085556f8b380f3558668c46c91c49a2f8e967b96086556f857ddf0117efa215952912839f6473e66087556088805463ffffffff191663ffffffff92909216919091179055620009ab3383640100000000620009dc810204565b505034608a555050608b8054600160a060020a031916331790555062000c1d9950505050505050505050565b335b90565b600160a060020a038216151562000a5457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60035462000a719082640100000000620012cc62000aff82021704565b600355600160a060020a03821660009081526001602052604090205462000aa79082640100000000620012cc62000aff82021704565b600160a060020a03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008282018381101562000b7457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000bbe57805160ff191683800117855562000bee565b8280016001018555821562000bee579182015b8281111562000bee57825182559160200191906001019062000bd1565b5062000bfc92915062000c00565b5090565b620009d991905b8082111562000bfc576000815560010162000c07565b6131908062000c2d6000396000f3fe6080604052600436106101df576000357c01000000000000000000000000000000000000000000000000000000009004806370a0823111610114578063a10954fe116100b2578063d2fa635e11610081578063d2fa635e146106dd578063da12457a14610707578063dd62ed3e1461071c578063f2fde38b14610764576101df565b8063a10954fe146105f6578063a457c2d71461060b578063a9059cbb14610651578063b265c70214610697576101df565b80638da5cb5b116100ee5780638da5cb5b146105645780638f32d59b146105a257806395d89b41146105b757806396343886146105cc576101df565b806370a08231146104e5578063715018a6146105255780637cbed3e01461053a576101df565b806329a00e7c116101815780633de39c111161015b5780633de39c111461044f57806342966c681461046457806349f9b0f71461048e57806354fd4d50146104d0576101df565b806329a00e7c1461039c578063313ce567146103de5780633950935114610409576101df565b80630d8f9f7f116101bd5780630d8f9f7f146102fb5780631249c58b146101df57806318160ddd1461033757806323b872dd1461034c576101df565b806306fdde03146101e9578063095ea7b3146102735780630c7d5cd8146102cd575b6101e76107a4565b005b3480156101f557600080fd5b506101fe610822565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610238578181015183820152602001610220565b50505050905090810190601f1680156102655780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027f57600080fd5b506102b96004803603604081101561029657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356108b8565b604080519115158252519081900360200190f35b3480156102d957600080fd5b506102e26108d6565b6040805163ffffffff9092168252519081900360200190f35b34801561030757600080fd5b506103256004803603602081101561031e57600080fd5b50356108e2565b60408051918252519081900360200190f35b34801561034357600080fd5b5061032561090e565b34801561035857600080fd5b506102b96004803603606081101561036f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610914565b3480156103a857600080fd5b50610325600480360360808110156103bf57600080fd5b5080359060208101359063ffffffff60408201351690606001356109bc565b3480156103ea57600080fd5b506103f3610aff565b6040805160ff9092168252519081900360200190f35b34801561041557600080fd5b506102b96004803603604081101561042c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610b08565b34801561045b57600080fd5b50610325610b69565b34801561047057600080fd5b506101e76004803603602081101561048757600080fd5b5035610b6f565b34801561049a57600080fd5b50610325600480360360808110156104b157600080fd5b5080359060208101359063ffffffff6040820135169060600135610bc5565b3480156104dc57600080fd5b506101fe610d10565b3480156104f157600080fd5b506103256004803603602081101561050857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610d9e565b34801561053157600080fd5b506101e7610dc6565b34801561054657600080fd5b506103256004803603602081101561055d57600080fd5b5035610e98565b34801561057057600080fd5b50610579610ebc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156105ae57600080fd5b506102b9610ed8565b3480156105c357600080fd5b506101fe610f16565b3480156105d857600080fd5b506101e7600480360360208110156105ef57600080fd5b5035610f77565b34801561060257600080fd5b50610325610fc4565b34801561061757600080fd5b506102b96004803603604081101561062e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610fca565b34801561065d57600080fd5b506102b96004803603604081101561067457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611046565b3480156106a357600080fd5b506101e7600480360360408110156106ba57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561105a565b3480156106e957600080fd5b506101e76004803603602081101561070057600080fd5b50356110a8565b34801561071357600080fd5b50610325611110565b34801561072857600080fd5b506103256004803603604081101561073f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661111f565b34801561077057600080fd5b506101e76004803603602081101561078757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611157565b608b546040516127103460c881029190910492908390039173ffffffffffffffffffffffffffffffffffffffff909116906108fc8315029083906000818181858888f193505050501580156107fd573d6000803e3d6000fd5b50610807816111c6565b50608a5461081b908263ffffffff6112cc16565b608a555050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108ae5780601f10610883576101008083540402835291602001916108ae565b820191906000526020600020905b81548152906001019060200180831161089157829003601f168201915b5050505050905090565b60006108cc6108c5611335565b8484611339565b5060015b92915050565b60885463ffffffff1681565b60006109066108ef611110565b6108f7610fc4565b60885463ffffffff16856109bc565b90505b919050565b60035490565b6000610921848484611460565b6109b28461092d611335565b6109ad856060604051908101604052806028815260200161308a6028913973ffffffffffffffffffffffffffffffffffffffff8a16600090815260026020526040812090610979611335565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002054919063ffffffff61161416565b611339565b5060019392505050565b600080851180156109cd5750600084115b80156109df575060008363ffffffff16115b80156109f45750620f424063ffffffff841611155b1515610a4f5760408051600080516020613049833981519152815260206004820152600f60248201527f496e76616c696420696e707574732e0000000000000000000000000000000000604482015290519081900360640190fd5b811515610a5e57506000610af7565b63ffffffff8316620f42401415610a9657610a8f84610a83878563ffffffff6116b316565b9063ffffffff61171816565b9050610af7565b60008080610aaa858863ffffffff6112cc16565b9050610abb818888620f424061175a565b9093509150600060ff8316610ad68a8663ffffffff6116b316565b60029190910a90049050610af0818a63ffffffff61190616565b9450505050505b949350505050565b60065460ff1690565b60006108cc610b15611335565b846109ad8560026000610b26611335565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6112cc16565b60895481565b6000610b7a82611948565b608a54909150610b90908263ffffffff61190616565b608a55604051339082156108fc029083906000818181858888f19350505050158015610bc0573d6000803e3d6000fd5b505050565b60008085118015610bd65750600084115b8015610be8575060008363ffffffff16115b8015610bfd5750620f424063ffffffff841611155b8015610c095750848211155b1515610c645760408051600080516020613049833981519152815260206004820152600f60248201527f496e76616c696420696e707574732e0000000000000000000000000000000000604482015290519081900360640190fd5b811515610c7357506000610af7565b84821415610c82575082610af7565b63ffffffff8316620f42401415610ca757610a8f85610a83868563ffffffff6116b316565b60008080610cbb888663ffffffff61190616565b9050610ccc8882620f42408961175a565b90935091506000610ce3888563ffffffff6116b316565b905060ff831660020a8802610d0285610a83848463ffffffff61190616565b9a9950505050505050505050565b6007805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d965780601f10610d6b57610100808354040283529160200191610d96565b820191906000526020600020905b815481529060010190602001808311610d7957829003601f168201915b505050505081565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b610dce610ed8565b1515610e295760408051600080516020613049833981519152815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000610906610ea5611110565b610ead610fc4565b60885463ffffffff1685610bc5565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6000805473ffffffffffffffffffffffffffffffffffffffff16610efa611335565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108ae5780601f10610883576101008083540402835291602001916108ae565b610f813382611ab3565b604080513381526020810183905260008183015290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a150565b608a5490565b60006108cc610fd7611335565b846109ad85606060405190810160405280602581526020016131406025913960026000611002611335565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61161416565b60006108cc611053611335565b8484611460565b6110648282611bee565b604080513381526020810183905260008183015290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a15050565b6110b0610ed8565b151561110b5760408051600080516020613049833981519152815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b608955565b600061111a61090e565b905090565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b61115f610ed8565b15156111ba5760408051600080516020613049833981519152815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6111c381611c54565b50565b6089546000903a1115611212576040516000805160206130498339815191528152600401808060200182810382526048815260200180612fdb6048913960600191505060405180910390fd5b6000821161126f5760408051600080516020613049833981519152815260206004820152601960248201527f4465706f736974206d757374206265206e6f6e2d7a65726f2e00000000000000604482015290519081900360640190fd5b600061127a836108e2565b90506112863382611d3d565b604080513381526020810183905280820185905290517f25b428dfde728ccfaddad7e29e4ac23c24ed7fd1a6e3e3f91894a9a073f5dfff9181900360600190a192915050565b60008282018381101561132e5760408051600080516020613049833981519152815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316151561139557604051600080516020613049833981519152815260040180806020018281038252602481526020018061311c6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821615156113f1576040516000805160206130498339815191528152600401808060200182810382526022815260200180612fb96022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff831615156114bc5760405160008051602061304983398151915281526004018080602001828103825260258152602001806130f76025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161515611518576040516000805160206130498339815191528152600401808060200182810382526023815260200180612f4e6023913960400191505060405180910390fd5b61156981606060405190810160405280602681526020016130236026913973ffffffffffffffffffffffffffffffffffffffff8616600090815260016020526040902054919063ffffffff61161416565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546115ab908263ffffffff6112cc16565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156116ab5760405160008051602061304983398151915281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611670578181015183820152602001611658565b50505050905090810190601f16801561169d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008215156116c4575060006108d0565b8282028284828115156116d357fe5b041461132e5760405160008051602061304983398151915281526004018080602001828103825260218152602001806130696021913960400191505060405180910390fd5b600061132e83836040805190810160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e60565b60008070020000000000000000000000000000000086106117ca5760408051600080516020613049833981519152815260206004820152601860248201527f626173654e2065786365656473206d61782076616c75652e0000000000000000604482015290519081900360640190fd5b848610156118275760408051600080516020613049833981519152815260206004820152601c60248201527f4261736573203c203120617265206e6f7420737570706f727465642e00000000604482015290519081900360640190fd5b600080866f80000000000000000000000000000000890281151561184757fe5b04905070015bf0a8b1457695355fb8ac404e7a79e38110156118735761186c81611ed2565b915061187f565b61187c816123c6565b91505b60008563ffffffff168763ffffffff16840281151561189a57fe5b0490507008000000000000000000000000000000008110156118cd576118bf816124c5565b607f945094505050506118fd565b60006118d8826129aa565b90506118f060ff607f8390031660020a830482612a3c565b955093506118fd92505050565b94509492505050565b600061132e83836040805190810160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611614565b6089546000903a1115611994576040516000805160206130498339815191528152600401808060200182810382526048815260200180612fdb6048913960600191505060405180910390fd5b600082116119f15760408051600080516020613049833981519152815260206004820152601860248201527f416d6f756e74206d757374206265206e6f6e2d7a65726f2e0000000000000000604482015290519081900360640190fd5b816119fb33610d9e565b1015611a565760408051600080516020613049833981519152815260206004820152601c60248201527f496e73756666696369656e7420746f6b656e7320746f206275726e2e00000000604482015290519081900360640190fd5b6000611a6183610e98565b9050611a6d3384611ab3565b604080513381526020810185905280820183905290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a192915050565b73ffffffffffffffffffffffffffffffffffffffff82161515611b0f5760405160008051602061304983398151915281526004018080602001828103825260218152602001806130d66021913960400191505060405180910390fd5b611b608160606040519081016040528060228152602001612f716022913973ffffffffffffffffffffffffffffffffffffffff8516600090815260016020526040902054919063ffffffff61161416565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902055600354611b99908263ffffffff61190616565b60035560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b611bf88282611ab3565b611c5082611c04611335565b6109ad84606060405190810160405280602481526020016130b26024913973ffffffffffffffffffffffffffffffffffffffff8816600090815260026020526040812090610979611335565b5050565b73ffffffffffffffffffffffffffffffffffffffff81161515611cb0576040516000805160206130498339815191528152600401808060200182810382526026815260200180612f936026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff82161515611daf5760408051600080516020613049833981519152815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600354611dc2908263ffffffff6112cc16565b60035573ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054611dfb908263ffffffff6112cc16565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600081818411611eba57604051600080516020613049833981519152815260040180806020018281038252838181518152602001915080519060200190808383600083811015611670578181015183820152602001611658565b5060008385811515611ec857fe5b0495945050505050565b6000808080806fd3094c70f034de4b96ff7d5b6f99fcd88610611f2d576f4000000000000000000000000000000093909301926fd3094c70f034de4b96ff7d5b6f99fcd86f8000000000000000000000000000000087020495505b6fa45af1e1f40c333b3de1db4dd55f29a78610611f82576f2000000000000000000000000000000093909301926fa45af1e1f40c333b3de1db4dd55f29a76f8000000000000000000000000000000087020495505b6f910b022db7ae67ce76b441c27035c6a18610611fd7576f1000000000000000000000000000000093909301926f910b022db7ae67ce76b441c27035c6a16f8000000000000000000000000000000087020495505b6f88415abbe9a76bead8d00cf112e4d4a8861061202c576f0800000000000000000000000000000093909301926f88415abbe9a76bead8d00cf112e4d4a86f8000000000000000000000000000000087020495505b6f84102b00893f64c705e841d5d4064bd38610612081576f0400000000000000000000000000000093909301926f84102b00893f64c705e841d5d4064bd36f8000000000000000000000000000000087020495505b6f8204055aaef1c8bd5c3259f4822735a286106120d6576f0200000000000000000000000000000093909301926f8204055aaef1c8bd5c3259f4822735a26f8000000000000000000000000000000087020495505b6f810100ab00222d861931c15e39b44e99861061212b576f0100000000000000000000000000000093909301926f810100ab00222d861931c15e39b44e996f8000000000000000000000000000000087020495505b6f808040155aabbbe9451521693554f733861061217f576e80000000000000000000000000000093909301926f808040155aabbbe9451521693554f7336f8000000000000000000000000000000087020495505b7fffffffffffffffffffffffffffffffff80000000000000000000000000000000860192508291506f8000000000000000000000000000000082800204905070010000000000000000000000000000000083810383020493909301926f800000000000000000000000000000008282020491507002000000000000000000000000000000006faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa84900383020493909301926f800000000000000000000000000000008282020491507003000000000000000000000000000000006f9999999999999999999999999999999984900383020493909301926f800000000000000000000000000000008282020491507004000000000000000000000000000000006f9249249249249249249249249249249284900383020493909301926f800000000000000000000000000000008282020491507005000000000000000000000000000000006f8e38e38e38e38e38e38e38e38e38e38e84900383020493909301926f800000000000000000000000000000008282020491507006000000000000000000000000000000006f8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8b84900383020493909301926f800000000000000000000000000000008282020491507007000000000000000000000000000000006f89d89d89d89d89d89d89d89d89d89d8984900383020493909301926f800000000000000000000000000000008282020491507008000000000000000000000000000000006f888888888888888888888888888888888490038302049390930195945050505050565b6000808270010000000000000000000000000000000081106124205760006123ff6f800000000000000000000000000000008304612ede565b60ff166f800000000000000000000000000000008102935060020a90910490505b6f8000000000000000000000000000000081111561249857607f5b60008160ff161115612496576f80000000000000000000000000000000828002049150700100000000000000000000000000000000821061248d5760ff600019820116600290810a9390930192909104905b6000190161243b565b505b6f05b9de1d10bf4103d647b0955897ba806f03f80fe03f80fe03f80fe03f80fe03f8830204949350505050565b6000670168244fdac780006f800000000000000000000000000000006f0fffffffffffffffffffffffffffffff84168080028290048082028390048083028490049485026710e1b3be415a00009092026705a0913f6b1e000091909102010192909181830204905080664807432bc1800002830192506f8000000000000000000000000000000082820281151561255857fe5b04905080660c0135dca0400002830192506f8000000000000000000000000000000082820281151561258657fe5b049050806601b707b1cdc00002830192506f800000000000000000000000000000008282028115156125b457fe5b049050806536e0f639b80002830192506f800000000000000000000000000000008282028115156125e157fe5b04905080650618fee9f80002830192506f8000000000000000000000000000000082820281151561260e57fe5b04905080649c197dcc0002830192506f8000000000000000000000000000000082820281151561263a57fe5b04905080640e30dce40002830192506f8000000000000000000000000000000082820281151561266657fe5b0490508064012ebd130002830192506f8000000000000000000000000000000082820281151561269257fe5b049050806317499f0002830192506f800000000000000000000000000000008282028115156126bd57fe5b049050806301a9d48002830192506f800000000000000000000000000000008282028115156126e857fe5b04905080621c638002830192506f8000000000000000000000000000000082820281151561271257fe5b049050806201c63802830192506f8000000000000000000000000000000082820281151561273c57fe5b04905080611ab802830192506f8000000000000000000000000000000082820281151561276557fe5b0490508061017c02830192506f8000000000000000000000000000000082820281151561278e57fe5b04905080601402830192506f800000000000000000000000000000008282028115156127b657fe5b6721c3677c82b400009190049384010482016f80000000000000000000000000000000019290506f1000000000000000000000000000000085161561281f5770018ebef9eac820ae8682b9793ac6d1e7767001c3d6a24ed82218787d624d3e5eba95f984020492505b6f20000000000000000000000000000000851615612861577001368b2fc6f9609fe7aceb46aa619baed470018ebef9eac820ae8682b9793ac6d1e77884020492505b6f400000000000000000000000000000008516156128a2576fbc5ab1b16779be3575bd8f0520a9f21f7001368b2fc6f9609fe7aceb46aa619baed584020492505b6f800000000000000000000000000000008516156128e2576f454aaa8efe072e7f6ddbab84b40a55c96fbc5ab1b16779be3575bd8f0520a9f21e84020492505b700100000000000000000000000000000000851615612923576f0960aadc109e7a3bf4578099615711ea6f454aaa8efe072e7f6ddbab84b40a55c584020492505b700200000000000000000000000000000000851615612963576e2bf84208204f5977f9a8cf01fdce3d6f0960aadc109e7a3bf4578099615711d784020492505b7004000000000000000000000000000000008516156129a1576d03c6ab775dd0b95b4cbee7e65d116e2bf84208204f5977f9a8cf01fdc30784020492505b50909392505050565b60006020607f5b8060ff168260010160ff1610156129f9576000600260ff8484011604905084600860ff8316608081106129e057fe5b0154106129ef578092506129f3565b8091505b506129b1565b83600860ff831660808110612a0a57fe5b015410612a1a5791506109099050565b83600860ff841660808110612a2b57fe5b015410612a3a57509050610909565bfe5b60008083905060008090508360ff16858302908060020a82049150509150816f03442c4e6074a82f1797f72ac000000002810190508360ff16858302908060020a82049150509150816f0116b96f757c380fb287fd0e4000000002810190508360ff16858302908060020a82049150509150816e45ae5bdd5f0e03eca1ff439000000002810190508360ff16858302908060020a82049150509150816e0defabf91302cd95b9ffda5000000002810190508360ff16858302908060020a82049150509150816e02529ca9832b22439efff9b800000002810190508360ff16858302908060020a82049150509150816d54f1cf12bd04e516b6da8800000002810190508360ff16858302908060020a82049150509150816d0a9e39e257a09ca2d6db5100000002810190508360ff16858302908060020a82049150509150816d012e066e7b839fa050c30900000002810190508360ff16858302908060020a82049150509150816c1e33d7d926c329a1ad1a80000002810190508360ff16858302908060020a82049150509150816c02bee513bdb4a6b19b5f80000002810190508360ff16858302908060020a82049150509150816b3a9316fa79b88eccf2a0000002810190508360ff16858302908060020a82049150509150816b048177ebe1fa81237520000002810190508360ff16858302908060020a82049150509150816a5263fe90242dcbacf0000002810190508360ff16858302908060020a82049150509150816a057e22099c030d9410000002810190508360ff16858302908060020a82049150509150816957e22099c030d941000002810190508360ff16858302908060020a820491505091508169052b6b5456997631000002810190508360ff16858302908060020a8204915050915081684985f67696bf74800002810190508360ff16858302908060020a82049150509150816803dea12ea99e49800002810190508360ff16858302908060020a82049150509150816731880f2214b6e00002810190508360ff16858302908060020a820491505091508167025bcff56eb3600002810190508360ff16858302908060020a8204915050915081661b722e10ab100002810190508360ff16858302908060020a82049150509150816601317c7007700002810190508360ff16858302908060020a8204915050915081650cba84aafa0002810190508360ff16858302908060020a82049150509150816482573a0a0002810190508360ff16858302908060020a82049150509150816405035ad90002810190508360ff16858302908060020a8204915050915081632f881b0002810190508360ff16858302908060020a82049150509150816301b2934002810190508360ff16858302908060020a8204915050915081620efc4002810190508360ff16858302908060020a8204915050915081617fe002810190508360ff16858302908060020a820491505091508161042002810190508360ff16858302908060020a8204915050915081602102810190508360ff16858302908060020a8204915050915081600102810190508360ff1660019060020a02856f0688589cc0e9505e2f2fee558000000083811515612ed257fe5b04010195945050505050565b60008082610100811015612f0b575b6001811115612f06576001919091019060029004612eed565b612f46565b60805b60008160ff161115612f445760ff811660020a8210612f37579182179160ff811660020a909104905b600260ff90911604612f0e565b505b509291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373476173207072696365206d757374206265203c3d206d6178696d756d2067617320707269636520746f2070726576656e742066726f6e742072756e6e696e672061747461636b732e45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636508c379a000000000000000000000000000000000000000000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa165627a7a723058203f27e94ebb2a2ab91fef1e8ddb56d8b6d8d8f3dd396e13471b8f7f3e2112332f0029", + "deployedBytecode": "0x6080604052600436106101df576000357c01000000000000000000000000000000000000000000000000000000009004806370a0823111610114578063a10954fe116100b2578063d2fa635e11610081578063d2fa635e146106dd578063da12457a14610707578063dd62ed3e1461071c578063f2fde38b14610764576101df565b8063a10954fe146105f6578063a457c2d71461060b578063a9059cbb14610651578063b265c70214610697576101df565b80638da5cb5b116100ee5780638da5cb5b146105645780638f32d59b146105a257806395d89b41146105b757806396343886146105cc576101df565b806370a08231146104e5578063715018a6146105255780637cbed3e01461053a576101df565b806329a00e7c116101815780633de39c111161015b5780633de39c111461044f57806342966c681461046457806349f9b0f71461048e57806354fd4d50146104d0576101df565b806329a00e7c1461039c578063313ce567146103de5780633950935114610409576101df565b80630d8f9f7f116101bd5780630d8f9f7f146102fb5780631249c58b146101df57806318160ddd1461033757806323b872dd1461034c576101df565b806306fdde03146101e9578063095ea7b3146102735780630c7d5cd8146102cd575b6101e76107a4565b005b3480156101f557600080fd5b506101fe610822565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610238578181015183820152602001610220565b50505050905090810190601f1680156102655780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027f57600080fd5b506102b96004803603604081101561029657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356108b8565b604080519115158252519081900360200190f35b3480156102d957600080fd5b506102e26108d6565b6040805163ffffffff9092168252519081900360200190f35b34801561030757600080fd5b506103256004803603602081101561031e57600080fd5b50356108e2565b60408051918252519081900360200190f35b34801561034357600080fd5b5061032561090e565b34801561035857600080fd5b506102b96004803603606081101561036f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610914565b3480156103a857600080fd5b50610325600480360360808110156103bf57600080fd5b5080359060208101359063ffffffff60408201351690606001356109bc565b3480156103ea57600080fd5b506103f3610aff565b6040805160ff9092168252519081900360200190f35b34801561041557600080fd5b506102b96004803603604081101561042c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610b08565b34801561045b57600080fd5b50610325610b69565b34801561047057600080fd5b506101e76004803603602081101561048757600080fd5b5035610b6f565b34801561049a57600080fd5b50610325600480360360808110156104b157600080fd5b5080359060208101359063ffffffff6040820135169060600135610bc5565b3480156104dc57600080fd5b506101fe610d10565b3480156104f157600080fd5b506103256004803603602081101561050857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610d9e565b34801561053157600080fd5b506101e7610dc6565b34801561054657600080fd5b506103256004803603602081101561055d57600080fd5b5035610e98565b34801561057057600080fd5b50610579610ebc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156105ae57600080fd5b506102b9610ed8565b3480156105c357600080fd5b506101fe610f16565b3480156105d857600080fd5b506101e7600480360360208110156105ef57600080fd5b5035610f77565b34801561060257600080fd5b50610325610fc4565b34801561061757600080fd5b506102b96004803603604081101561062e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610fca565b34801561065d57600080fd5b506102b96004803603604081101561067457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611046565b3480156106a357600080fd5b506101e7600480360360408110156106ba57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561105a565b3480156106e957600080fd5b506101e76004803603602081101561070057600080fd5b50356110a8565b34801561071357600080fd5b50610325611110565b34801561072857600080fd5b506103256004803603604081101561073f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661111f565b34801561077057600080fd5b506101e76004803603602081101561078757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611157565b608b546040516127103460c881029190910492908390039173ffffffffffffffffffffffffffffffffffffffff909116906108fc8315029083906000818181858888f193505050501580156107fd573d6000803e3d6000fd5b50610807816111c6565b50608a5461081b908263ffffffff6112cc16565b608a555050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108ae5780601f10610883576101008083540402835291602001916108ae565b820191906000526020600020905b81548152906001019060200180831161089157829003601f168201915b5050505050905090565b60006108cc6108c5611335565b8484611339565b5060015b92915050565b60885463ffffffff1681565b60006109066108ef611110565b6108f7610fc4565b60885463ffffffff16856109bc565b90505b919050565b60035490565b6000610921848484611460565b6109b28461092d611335565b6109ad856060604051908101604052806028815260200161308a6028913973ffffffffffffffffffffffffffffffffffffffff8a16600090815260026020526040812090610979611335565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002054919063ffffffff61161416565b611339565b5060019392505050565b600080851180156109cd5750600084115b80156109df575060008363ffffffff16115b80156109f45750620f424063ffffffff841611155b1515610a4f5760408051600080516020613049833981519152815260206004820152600f60248201527f496e76616c696420696e707574732e0000000000000000000000000000000000604482015290519081900360640190fd5b811515610a5e57506000610af7565b63ffffffff8316620f42401415610a9657610a8f84610a83878563ffffffff6116b316565b9063ffffffff61171816565b9050610af7565b60008080610aaa858863ffffffff6112cc16565b9050610abb818888620f424061175a565b9093509150600060ff8316610ad68a8663ffffffff6116b316565b60029190910a90049050610af0818a63ffffffff61190616565b9450505050505b949350505050565b60065460ff1690565b60006108cc610b15611335565b846109ad8560026000610b26611335565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6112cc16565b60895481565b6000610b7a82611948565b608a54909150610b90908263ffffffff61190616565b608a55604051339082156108fc029083906000818181858888f19350505050158015610bc0573d6000803e3d6000fd5b505050565b60008085118015610bd65750600084115b8015610be8575060008363ffffffff16115b8015610bfd5750620f424063ffffffff841611155b8015610c095750848211155b1515610c645760408051600080516020613049833981519152815260206004820152600f60248201527f496e76616c696420696e707574732e0000000000000000000000000000000000604482015290519081900360640190fd5b811515610c7357506000610af7565b84821415610c82575082610af7565b63ffffffff8316620f42401415610ca757610a8f85610a83868563ffffffff6116b316565b60008080610cbb888663ffffffff61190616565b9050610ccc8882620f42408961175a565b90935091506000610ce3888563ffffffff6116b316565b905060ff831660020a8802610d0285610a83848463ffffffff61190616565b9a9950505050505050505050565b6007805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d965780601f10610d6b57610100808354040283529160200191610d96565b820191906000526020600020905b815481529060010190602001808311610d7957829003601f168201915b505050505081565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b610dce610ed8565b1515610e295760408051600080516020613049833981519152815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000610906610ea5611110565b610ead610fc4565b60885463ffffffff1685610bc5565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6000805473ffffffffffffffffffffffffffffffffffffffff16610efa611335565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108ae5780601f10610883576101008083540402835291602001916108ae565b610f813382611ab3565b604080513381526020810183905260008183015290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a150565b608a5490565b60006108cc610fd7611335565b846109ad85606060405190810160405280602581526020016131406025913960026000611002611335565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61161416565b60006108cc611053611335565b8484611460565b6110648282611bee565b604080513381526020810183905260008183015290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a15050565b6110b0610ed8565b151561110b5760408051600080516020613049833981519152815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b608955565b600061111a61090e565b905090565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b61115f610ed8565b15156111ba5760408051600080516020613049833981519152815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6111c381611c54565b50565b6089546000903a1115611212576040516000805160206130498339815191528152600401808060200182810382526048815260200180612fdb6048913960600191505060405180910390fd5b6000821161126f5760408051600080516020613049833981519152815260206004820152601960248201527f4465706f736974206d757374206265206e6f6e2d7a65726f2e00000000000000604482015290519081900360640190fd5b600061127a836108e2565b90506112863382611d3d565b604080513381526020810183905280820185905290517f25b428dfde728ccfaddad7e29e4ac23c24ed7fd1a6e3e3f91894a9a073f5dfff9181900360600190a192915050565b60008282018381101561132e5760408051600080516020613049833981519152815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316151561139557604051600080516020613049833981519152815260040180806020018281038252602481526020018061311c6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821615156113f1576040516000805160206130498339815191528152600401808060200182810382526022815260200180612fb96022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff831615156114bc5760405160008051602061304983398151915281526004018080602001828103825260258152602001806130f76025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161515611518576040516000805160206130498339815191528152600401808060200182810382526023815260200180612f4e6023913960400191505060405180910390fd5b61156981606060405190810160405280602681526020016130236026913973ffffffffffffffffffffffffffffffffffffffff8616600090815260016020526040902054919063ffffffff61161416565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546115ab908263ffffffff6112cc16565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156116ab5760405160008051602061304983398151915281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611670578181015183820152602001611658565b50505050905090810190601f16801561169d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008215156116c4575060006108d0565b8282028284828115156116d357fe5b041461132e5760405160008051602061304983398151915281526004018080602001828103825260218152602001806130696021913960400191505060405180910390fd5b600061132e83836040805190810160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e60565b60008070020000000000000000000000000000000086106117ca5760408051600080516020613049833981519152815260206004820152601860248201527f626173654e2065786365656473206d61782076616c75652e0000000000000000604482015290519081900360640190fd5b848610156118275760408051600080516020613049833981519152815260206004820152601c60248201527f4261736573203c203120617265206e6f7420737570706f727465642e00000000604482015290519081900360640190fd5b600080866f80000000000000000000000000000000890281151561184757fe5b04905070015bf0a8b1457695355fb8ac404e7a79e38110156118735761186c81611ed2565b915061187f565b61187c816123c6565b91505b60008563ffffffff168763ffffffff16840281151561189a57fe5b0490507008000000000000000000000000000000008110156118cd576118bf816124c5565b607f945094505050506118fd565b60006118d8826129aa565b90506118f060ff607f8390031660020a830482612a3c565b955093506118fd92505050565b94509492505050565b600061132e83836040805190810160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611614565b6089546000903a1115611994576040516000805160206130498339815191528152600401808060200182810382526048815260200180612fdb6048913960600191505060405180910390fd5b600082116119f15760408051600080516020613049833981519152815260206004820152601860248201527f416d6f756e74206d757374206265206e6f6e2d7a65726f2e0000000000000000604482015290519081900360640190fd5b816119fb33610d9e565b1015611a565760408051600080516020613049833981519152815260206004820152601c60248201527f496e73756666696369656e7420746f6b656e7320746f206275726e2e00000000604482015290519081900360640190fd5b6000611a6183610e98565b9050611a6d3384611ab3565b604080513381526020810185905280820183905290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a192915050565b73ffffffffffffffffffffffffffffffffffffffff82161515611b0f5760405160008051602061304983398151915281526004018080602001828103825260218152602001806130d66021913960400191505060405180910390fd5b611b608160606040519081016040528060228152602001612f716022913973ffffffffffffffffffffffffffffffffffffffff8516600090815260016020526040902054919063ffffffff61161416565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902055600354611b99908263ffffffff61190616565b60035560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b611bf88282611ab3565b611c5082611c04611335565b6109ad84606060405190810160405280602481526020016130b26024913973ffffffffffffffffffffffffffffffffffffffff8816600090815260026020526040812090610979611335565b5050565b73ffffffffffffffffffffffffffffffffffffffff81161515611cb0576040516000805160206130498339815191528152600401808060200182810382526026815260200180612f936026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff82161515611daf5760408051600080516020613049833981519152815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600354611dc2908263ffffffff6112cc16565b60035573ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054611dfb908263ffffffff6112cc16565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600081818411611eba57604051600080516020613049833981519152815260040180806020018281038252838181518152602001915080519060200190808383600083811015611670578181015183820152602001611658565b5060008385811515611ec857fe5b0495945050505050565b6000808080806fd3094c70f034de4b96ff7d5b6f99fcd88610611f2d576f4000000000000000000000000000000093909301926fd3094c70f034de4b96ff7d5b6f99fcd86f8000000000000000000000000000000087020495505b6fa45af1e1f40c333b3de1db4dd55f29a78610611f82576f2000000000000000000000000000000093909301926fa45af1e1f40c333b3de1db4dd55f29a76f8000000000000000000000000000000087020495505b6f910b022db7ae67ce76b441c27035c6a18610611fd7576f1000000000000000000000000000000093909301926f910b022db7ae67ce76b441c27035c6a16f8000000000000000000000000000000087020495505b6f88415abbe9a76bead8d00cf112e4d4a8861061202c576f0800000000000000000000000000000093909301926f88415abbe9a76bead8d00cf112e4d4a86f8000000000000000000000000000000087020495505b6f84102b00893f64c705e841d5d4064bd38610612081576f0400000000000000000000000000000093909301926f84102b00893f64c705e841d5d4064bd36f8000000000000000000000000000000087020495505b6f8204055aaef1c8bd5c3259f4822735a286106120d6576f0200000000000000000000000000000093909301926f8204055aaef1c8bd5c3259f4822735a26f8000000000000000000000000000000087020495505b6f810100ab00222d861931c15e39b44e99861061212b576f0100000000000000000000000000000093909301926f810100ab00222d861931c15e39b44e996f8000000000000000000000000000000087020495505b6f808040155aabbbe9451521693554f733861061217f576e80000000000000000000000000000093909301926f808040155aabbbe9451521693554f7336f8000000000000000000000000000000087020495505b7fffffffffffffffffffffffffffffffff80000000000000000000000000000000860192508291506f8000000000000000000000000000000082800204905070010000000000000000000000000000000083810383020493909301926f800000000000000000000000000000008282020491507002000000000000000000000000000000006faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa84900383020493909301926f800000000000000000000000000000008282020491507003000000000000000000000000000000006f9999999999999999999999999999999984900383020493909301926f800000000000000000000000000000008282020491507004000000000000000000000000000000006f9249249249249249249249249249249284900383020493909301926f800000000000000000000000000000008282020491507005000000000000000000000000000000006f8e38e38e38e38e38e38e38e38e38e38e84900383020493909301926f800000000000000000000000000000008282020491507006000000000000000000000000000000006f8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8b84900383020493909301926f800000000000000000000000000000008282020491507007000000000000000000000000000000006f89d89d89d89d89d89d89d89d89d89d8984900383020493909301926f800000000000000000000000000000008282020491507008000000000000000000000000000000006f888888888888888888888888888888888490038302049390930195945050505050565b6000808270010000000000000000000000000000000081106124205760006123ff6f800000000000000000000000000000008304612ede565b60ff166f800000000000000000000000000000008102935060020a90910490505b6f8000000000000000000000000000000081111561249857607f5b60008160ff161115612496576f80000000000000000000000000000000828002049150700100000000000000000000000000000000821061248d5760ff600019820116600290810a9390930192909104905b6000190161243b565b505b6f05b9de1d10bf4103d647b0955897ba806f03f80fe03f80fe03f80fe03f80fe03f8830204949350505050565b6000670168244fdac780006f800000000000000000000000000000006f0fffffffffffffffffffffffffffffff84168080028290048082028390048083028490049485026710e1b3be415a00009092026705a0913f6b1e000091909102010192909181830204905080664807432bc1800002830192506f8000000000000000000000000000000082820281151561255857fe5b04905080660c0135dca0400002830192506f8000000000000000000000000000000082820281151561258657fe5b049050806601b707b1cdc00002830192506f800000000000000000000000000000008282028115156125b457fe5b049050806536e0f639b80002830192506f800000000000000000000000000000008282028115156125e157fe5b04905080650618fee9f80002830192506f8000000000000000000000000000000082820281151561260e57fe5b04905080649c197dcc0002830192506f8000000000000000000000000000000082820281151561263a57fe5b04905080640e30dce40002830192506f8000000000000000000000000000000082820281151561266657fe5b0490508064012ebd130002830192506f8000000000000000000000000000000082820281151561269257fe5b049050806317499f0002830192506f800000000000000000000000000000008282028115156126bd57fe5b049050806301a9d48002830192506f800000000000000000000000000000008282028115156126e857fe5b04905080621c638002830192506f8000000000000000000000000000000082820281151561271257fe5b049050806201c63802830192506f8000000000000000000000000000000082820281151561273c57fe5b04905080611ab802830192506f8000000000000000000000000000000082820281151561276557fe5b0490508061017c02830192506f8000000000000000000000000000000082820281151561278e57fe5b04905080601402830192506f800000000000000000000000000000008282028115156127b657fe5b6721c3677c82b400009190049384010482016f80000000000000000000000000000000019290506f1000000000000000000000000000000085161561281f5770018ebef9eac820ae8682b9793ac6d1e7767001c3d6a24ed82218787d624d3e5eba95f984020492505b6f20000000000000000000000000000000851615612861577001368b2fc6f9609fe7aceb46aa619baed470018ebef9eac820ae8682b9793ac6d1e77884020492505b6f400000000000000000000000000000008516156128a2576fbc5ab1b16779be3575bd8f0520a9f21f7001368b2fc6f9609fe7aceb46aa619baed584020492505b6f800000000000000000000000000000008516156128e2576f454aaa8efe072e7f6ddbab84b40a55c96fbc5ab1b16779be3575bd8f0520a9f21e84020492505b700100000000000000000000000000000000851615612923576f0960aadc109e7a3bf4578099615711ea6f454aaa8efe072e7f6ddbab84b40a55c584020492505b700200000000000000000000000000000000851615612963576e2bf84208204f5977f9a8cf01fdce3d6f0960aadc109e7a3bf4578099615711d784020492505b7004000000000000000000000000000000008516156129a1576d03c6ab775dd0b95b4cbee7e65d116e2bf84208204f5977f9a8cf01fdc30784020492505b50909392505050565b60006020607f5b8060ff168260010160ff1610156129f9576000600260ff8484011604905084600860ff8316608081106129e057fe5b0154106129ef578092506129f3565b8091505b506129b1565b83600860ff831660808110612a0a57fe5b015410612a1a5791506109099050565b83600860ff841660808110612a2b57fe5b015410612a3a57509050610909565bfe5b60008083905060008090508360ff16858302908060020a82049150509150816f03442c4e6074a82f1797f72ac000000002810190508360ff16858302908060020a82049150509150816f0116b96f757c380fb287fd0e4000000002810190508360ff16858302908060020a82049150509150816e45ae5bdd5f0e03eca1ff439000000002810190508360ff16858302908060020a82049150509150816e0defabf91302cd95b9ffda5000000002810190508360ff16858302908060020a82049150509150816e02529ca9832b22439efff9b800000002810190508360ff16858302908060020a82049150509150816d54f1cf12bd04e516b6da8800000002810190508360ff16858302908060020a82049150509150816d0a9e39e257a09ca2d6db5100000002810190508360ff16858302908060020a82049150509150816d012e066e7b839fa050c30900000002810190508360ff16858302908060020a82049150509150816c1e33d7d926c329a1ad1a80000002810190508360ff16858302908060020a82049150509150816c02bee513bdb4a6b19b5f80000002810190508360ff16858302908060020a82049150509150816b3a9316fa79b88eccf2a0000002810190508360ff16858302908060020a82049150509150816b048177ebe1fa81237520000002810190508360ff16858302908060020a82049150509150816a5263fe90242dcbacf0000002810190508360ff16858302908060020a82049150509150816a057e22099c030d9410000002810190508360ff16858302908060020a82049150509150816957e22099c030d941000002810190508360ff16858302908060020a820491505091508169052b6b5456997631000002810190508360ff16858302908060020a8204915050915081684985f67696bf74800002810190508360ff16858302908060020a82049150509150816803dea12ea99e49800002810190508360ff16858302908060020a82049150509150816731880f2214b6e00002810190508360ff16858302908060020a820491505091508167025bcff56eb3600002810190508360ff16858302908060020a8204915050915081661b722e10ab100002810190508360ff16858302908060020a82049150509150816601317c7007700002810190508360ff16858302908060020a8204915050915081650cba84aafa0002810190508360ff16858302908060020a82049150509150816482573a0a0002810190508360ff16858302908060020a82049150509150816405035ad90002810190508360ff16858302908060020a8204915050915081632f881b0002810190508360ff16858302908060020a82049150509150816301b2934002810190508360ff16858302908060020a8204915050915081620efc4002810190508360ff16858302908060020a8204915050915081617fe002810190508360ff16858302908060020a820491505091508161042002810190508360ff16858302908060020a8204915050915081602102810190508360ff16858302908060020a8204915050915081600102810190508360ff1660019060020a02856f0688589cc0e9505e2f2fee558000000083811515612ed257fe5b04010195945050505050565b60008082610100811015612f0b575b6001811115612f06576001919091019060029004612eed565b612f46565b60805b60008160ff161115612f445760ff811660020a8210612f37579182179160ff811660020a909104905b600260ff90911604612f0e565b505b509291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373476173207072696365206d757374206265203c3d206d6178696d756d2067617320707269636520746f2070726576656e742066726f6e742072756e6e696e672061747461636b732e45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636508c379a000000000000000000000000000000000000000000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa165627a7a723058203f27e94ebb2a2ab91fef1e8ddb56d8b6d8d8f3dd396e13471b8f7f3e2112332f0029", + "sourceMap": "562:29:5:-;61:297:8;562:29:5;;61:297:8;562:29:5;;;;;;;;;;;;;;:::i;:::-;;160:10:3;131:39;;108:248:8;8:9:-1;5:2;;;30:1;27;20:12;5:2;108:248:8;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;108:248:8;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;0:372;;108:248:8;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;-1:-1;;108:248:8;;;;;;;;;;;;;;;-1:-1:-1;108:248:8;-1:-1:-1;296:5:8;108:248;;;;296:5;108:248;;;;;296:5;108:248;;698:17:17;718:12;:10;;;;:12;:::i;:::-;740:6;:18;;-1:-1:-1;;;;;;740:18:17;-1:-1:-1;;;;;740:18:17;;;;;;;773:43;;740:18;;-1:-1:-1;740:18:17;773:43;;740:6;;773:43;-1:-1:-1;504:12:19;;;;:5;;:12;;;;;:::i;:::-;-1:-1:-1;526:16:19;;;;:7;;:16;;;;;:::i;:::-;-1:-1:-1;552:9:19;:20;;-1:-1:-1;;552:20:19;;;;;;;;;;;;-1:-1:-1;;;;;;;;;4049:15:5;:54;-1:-1:-1;;;;;;;4113:15:5;:54;-1:-1:-1;;;;;;;4177:15:5;:54;-1:-1:-1;;;;;;;4241:15:5;:54;-1:-1:-1;;;;;;;4305:15:5;:54;-1:-1:-1;;;;;;;4369:15:5;:54;-1:-1:-1;;;;;;;4433:15:5;:54;-1:-1:-1;;;;;;;4497:15:5;:54;-1:-1:-1;;;;;;;4561:15:5;:54;-1:-1:-1;;;;;;;4625:15:5;:54;-1:-1:-1;;;;;;;4689:15:5;:54;4771:36;4753:15;:54;4835:36;4817:15;:54;4899:36;4881:15;:54;4963:36;4945:15;:54;5027:36;5009:15;:54;5091:36;5073:15;:54;5155:36;5137:15;:54;5219:36;5201:15;:54;5283:36;5265:15;:54;5347:36;5329:15;:54;5411:36;5393:15;:54;5475:36;5457:15;:54;5539:36;5521:15;:54;5603:36;5585:15;:54;5667:36;5649:15;:54;5731:36;5713:15;:54;5795:36;5777:15;:54;5859:36;5841:15;:54;5923:36;5905:15;:54;-1:-1:-1;;;;;5969:15:5;:54;6051:36;6033:15;:54;6115:36;6097:15;:54;6179:36;6161:15;:54;6243:36;6225:15;:54;6307:36;6289:15;:54;6371:36;6353:15;:54;6435:36;6417:15;:54;6499:36;6481:15;:54;6563:36;6545:15;:54;6627:36;6609:15;:54;6691:36;6673:15;:54;6755:36;6737:15;:54;6819:36;6801:15;:54;6883:36;6865:15;:54;6947:36;6929:15;:54;7011:36;6993:15;:54;7075:36;7057:15;:54;7139:36;7121:15;:54;7203:36;7185:15;:54;7267:36;7249:15;:54;7331:36;7313:15;:54;7395:36;7377:15;:54;7459:36;7441:15;:54;7523:36;7505:15;:54;7587:36;7569:15;:54;7651:36;7633:15;:54;7715:36;7697:15;:54;7779:36;7761:15;:54;7843:36;7825:15;:54;7907:36;7889:15;:54;7971:36;7953:15;:54;8035:36;8017:15;:54;-1:-1:-1;;;;;8081:15:5;:54;8163:36;8145:15;:54;8227:36;8209:15;:54;8291:36;8273:15;:54;8355:36;8337:15;:54;8420:36;8401:16;:55;8485:36;8466:16;:55;8550:36;8531:16;:55;8615:36;8596:16;:55;8680:36;8661:16;:55;8745:36;8726:16;:55;8810:36;8791:16;:55;8875:36;8856:16;:55;8940:36;8921:16;:55;9005:36;8986:16;:55;9070:36;9051:16;:55;9135:36;9116:16;:55;9200:36;9181:16;:55;9265:36;9246:16;:55;9330:36;9311:16;:55;9395:36;9376:16;:55;9460:36;9441:16;:55;9525:36;9506:16;:55;9590:36;9571:16;:55;9655:36;9636:16;:55;9720:36;9701:16;:55;9785:36;9766:16;:55;9850:36;9831:16;:55;9915:36;9896:16;:55;9980:36;9961:16;:55;10045:36;10026:16;:55;10110:36;10091:16;:55;10175:36;10156:16;:55;492:12:1;:28;;-1:-1:-1;;492:28:1;;;;;;;;;;;;871:33:10;877:10;889:14;871:5;;;;:33;:::i;:::-;-1:-1:-1;;475:9:12;465:7;:19;-1:-1:-1;;494:13:12;:26;;-1:-1:-1;;;;;;494:26:12;510:10;494:26;;;-1:-1:-1;61:297:8;;-1:-1:-1;;;;;;;;;;61:297:8;788:96:13;867:10;788:96;;:::o;5962:302:18:-;-1:-1:-1;;;;;6037:21:18;;;;6029:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6120:12;;:24;;6137:6;6120:16;;;;;;:24;:::i;:::-;6105:12;:39;-1:-1:-1;;;;;6175:18:18;;;;;;:9;:18;;;;;;:30;;6198:6;6175:22;;;;;;:30;:::i;:::-;-1:-1:-1;;;;;6154:18:18;;;;;;:9;:18;;;;;;;;:51;;;;6220:37;;;;;;;6154:18;;;;6220:37;;;;;;;;;;5962:302;;:::o;834:176:16:-;892:7;923:5;;;946:6;;;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:16:o;61:297:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;61:297:8;;;-1:-1:-1;61:297:8;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "61:297:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;564:6:12;:4;:6::i;:::-;61:297:8;644:81:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;644:81:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;644:81:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2500:149:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2500:149:18;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2500:149:18;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;408:26:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;408:26:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;533:206;;8:9:-1;5:2;;;30:1;27;20:12;5:2;533:206:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;533:206:1;;:::i;:::-;;;;;;;;;;;;;;;;1559:89:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1559:89:18;;;:::i;3107:300::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3107:300:18;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3107:300:18;;;;;;;;;;;;;;;;;;:::i;1129:975:4:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1129:975:4;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;1129:975:4;;;;;;;;;;;;;;;;;;;:::i;1472:81:19:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1472:81:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3802:207:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3802:207:18;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3802:207:18;;;;;;;;;:::i;131:39:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;131:39:3;;;:::i;969:184:12:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;969:184:12;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;969:184:12;;:::i;2789:1165:4:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2789:1165:4;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;2789:1165:4;;;;;;;;;;;;;;;;;;;:::i;562:29:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;562:29:5;;;:::i;1706:108:18:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1706:108:18;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1706:108:18;;;;:::i;1684:137:17:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1684:137:17;;;:::i;745:208:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;745:208:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;745:208:1;;:::i;899:77:17:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;899:77:17;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1250:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1250:92:17;;;:::i;838:85:19:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;838:85:19;;;:::i;1805:132:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1805:132:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1805:132:10;;:::i;1159:84:12:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1159:84:12;;;:::i;4496:258:18:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4496:258:18;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4496:258:18;;;;;;;;;:::i;2017:155::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2017:155:18;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2017:155:18;;;;;;;;;:::i;1943:150:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1943:150:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1943:150:10;;;;;;;;;:::i;347:98:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;347:98:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;347:98:3;;:::i;917:125:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;917:125:10;;;:::i;2230:132:18:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2230:132:18;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2230:132:18;;;;;;;;;;;:::i;1970:107:17:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1970:107:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1970:107:17;;;;:::i;662:301:12:-;830:13;;:38;;741:5;723:9;735:3;723:15;;:23;;;;;796:24;;;;;830:13;;;;;:38;;;;;796:24;;703:17;830:38;703:17;830:38;796:24;830:13;:38;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;830:38:12;878:31;894:14;878:15;:31::i;:::-;-1:-1:-1;929:7:12;;:27;;941:14;929:27;:11;:27;:::i;:::-;919:7;:37;-1:-1:-1;;662:301:12:o;644:81:19:-;713:5;706:12;;;;;;;;-1:-1:-1;;706:12:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;681:13;;706:12;;713:5;;706:12;;713:5;706:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:81;:::o;2500:149:18:-;2566:4;2582:39;2591:12;:10;:12::i;:::-;2605:7;2614:6;2582:8;:39::i;:::-;-1:-1:-1;2638:4:18;2500:149;;;;;:::o;408:26:1:-;;;;;;:::o;533:206::-;613:4;636:96;660:18;:16;:18::i;:::-;680:16;:14;:16::i;:::-;698:12;;;;712:19;636:23;:96::i;:::-;629:103;;533:206;;;;:::o;1559:89:18:-;1629:12;;1559:89;:::o;3107:300::-;3196:4;3212:36;3222:6;3230:9;3241:6;3212:9;:36::i;:::-;3258:121;3267:6;3275:12;:10;:12::i;:::-;3289:89;3327:6;3289:89;;;;;;;;;;;;;;;;;;:19;;;;;;;:11;:19;;;;;;3309:12;:10;:12::i;:::-;3289:33;;;;;;;;;;;;;-1:-1:-1;3289:33:18;;;:89;;:37;:89;:::i;:::-;3258:8;:121::i;:::-;-1:-1:-1;3396:4:18;3107:300;;;;;:::o;1129:975:4:-;1304:7;1371:1;1361:7;:11;:34;;;;;1394:1;1376:15;:19;1361:34;:55;;;;;1415:1;1399:13;:17;;;1361:55;:93;;;;-1:-1:-1;450:7:4;1420:34;;;;;1361:93;1353:121;;;;;;;-1:-1:-1;;;;;;;;;;;1353:121:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;1533:19;;1529:58;;;-1:-1:-1;1575:1:4;1568:8;;1529:58;1644:34;;;450:7;1644:34;1640:120;;;1701:48;1733:15;1701:27;:7;1713:14;1701:27;:11;:27;:::i;:::-;:31;:48;:31;:48;:::i;:::-;1694:55;;;;1640:120;1769:14;;;1834:35;:14;1853:15;1834:35;:18;:35;:::i;:::-;1818:51;;1901:85;1920:5;1927:15;1944:13;450:7;1901:5;:85::i;:::-;1879:107;;-1:-1:-1;1879:107:4;-1:-1:-1;1996:22:4;2021:32;;;:19;:7;1879:107;2021:19;:11;:19;:::i;:::-;49:1:-1;45:20;;;;25:41;;;-1:-1;2070:27:4;25:41:-1;2089:7:4;2070:27;:18;:27;:::i;:::-;2063:34;;;;;;1129:975;;;;;;;:::o;1472:81:19:-;1537:9;;;;1472:81;:::o;3802:207:18:-;3882:4;3898:83;3907:12;:10;:12::i;:::-;3921:7;3930:50;3969:10;3930:11;:25;3942:12;:10;:12::i;:::-;3930:25;;;;;;;;;;;;;;;;;;-1:-1:-1;3930:25:18;;;:34;;;;;;;;;;;:50;:38;:50;:::i;131:39:3:-;;;;:::o;969:184:12:-;1014:17;1034:24;1050:7;1034:15;:24::i;:::-;1078:7;;1014:44;;-1:-1:-1;1078:25:12;;1014:44;1078:25;:11;:25;:::i;:::-;1068:7;:35;1113:33;;:10;;:33;;;;;1133:12;;1113:33;;;;1133:12;1113:10;:33;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1113:33:12;969:184;;:::o;2789:1165:4:-;2957:7;3024:1;3014:7;:11;:34;;;;;3047:1;3029:15;:19;3014:34;:55;;;;;3068:1;3052:13;:17;;;3014:55;:93;;;;-1:-1:-1;450:7:4;3073:34;;;;;3014:93;:119;;;;;3126:7;3111:11;:22;;3014:119;3006:147;;;;;;;-1:-1:-1;;;;;;;;;;;3006:147:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;3209:16;;3205:55;;;-1:-1:-1;3248:1:4;3241:8;;3205:55;3342:7;3327:11;:22;3323:75;;;-1:-1:-1;3372:15:4;3365:22;;3323:75;3455:34;;;450:7;3455:34;3451:117;;;3512:45;3549:7;3512:32;:15;3532:11;3512:32;:19;:32;:::i;3451:117::-;3577:14;;;3642:24;:7;3654:11;3642:24;:11;:24;:::i;:::-;3626:40;;3698:77;3717:7;3726:5;450:7;3752:13;3698:5;:77::i;:::-;3676:99;;-1:-1:-1;3676:99:4;-1:-1:-1;3785:18:4;3806:27;:15;3676:99;3806:27;:19;:27;:::i;:::-;3785:48;-1:-1:-1;3864:28:4;;;;;;;3909:38;3940:6;3909:26;3785:48;3864:28;3909:26;:14;:26;:::i;:38::-;3902:45;2789:1165;-1:-1:-1;;;;;;;;;;2789:1165:4:o;562:29:5:-;;;;;;;;;;;;;;;-1:-1:-1;;562:29:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1706:108:18:-;1789:18;;1763:7;1789:18;;;:9;:18;;;;;;;1706:108::o;1684:137:17:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;-1:-1:-1;;;;;;;;;;;1095:54:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1782:1;1766:6;;1745:40;;;1766:6;;;;1745:40;;1782:1;;1745:40;1812:1;1795:19;;;;;;1684:137::o;745:208:1:-;828:4;851:95;871:18;:16;:18::i;:::-;891:16;:14;:16::i;:::-;909:12;;;;923:22;851:19;:95::i;899:77:17:-;937:7;963:6;;;899:77;:::o;1250:92::-;1290:4;1329:6;;;;1313:12;:10;:12::i;:::-;:22;;;1306:29;;1250:92;:::o;838:85:19:-;909:7;902:14;;;;;;;;-1:-1:-1;;902:14:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;877:13;;902:14;;909:7;;902:14;;909:7;902:14;;;;;;;;;;;;;;;;;;;;;;;;1805:132:10;1859:26;1865:10;1877:7;1859:5;:26::i;:::-;1900:30;;;1907:10;1900:30;;;;;;;;1928:1;1900:30;;;;;;;;;;;;;;;1805:132;:::o;1159:84:12:-;1229:7;;1159:84;:::o;4496:258:18:-;4581:4;4597:129;4606:12;:10;:12::i;:::-;4620:7;4629:96;4668:15;4629:96;;;;;;;;;;;;;;;;;;:11;:25;4641:12;:10;:12::i;:::-;4629:25;;;;;;;;;;;;;;;;;;-1:-1:-1;4629:25:18;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;2017:155::-;2086:4;2102:42;2112:12;:10;:12::i;:::-;2126:9;2137:6;2102:9;:42::i;1943:150:10:-;2016:25;2026:5;2033:7;2016:9;:25::i;:::-;2056:30;;;2063:10;2056:30;;;;;;;;2084:1;2056:30;;;;;;;;;;;;;;;1943:150;;:::o;347:98:3:-;1103:9:17;:7;:9::i;:::-;1095:54;;;;;;;-1:-1:-1;;;;;;;;;;;1095:54:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;416:11:3;:22;347:98::o;917:125:10:-;966:4;989:13;:11;:13::i;:::-;982:20;;917:125;:::o;2230:132:18:-;2328:18;;;;2302:7;2328:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2230:132::o;1970:107:17:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;-1:-1:-1;;;;;;;;;;;1095:54:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2042:28;2061:8;2042:18;:28::i;:::-;1970:107;:::o;1048:336:10:-;235:11:3;;1120:4:10;;220:11:3;:26;;212:111;;;;-1:-1:-1;;;;;;;;;;;212:111:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1155:1:10;1144:12;;1136:50;;;;;-1:-1:-1;;;;;;;;;;;1136:50:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;1197:17;1217:33;1241:8;1217:23;:33::i;:::-;1197:53;;1260:31;1266:10;1278:12;1260:5;:31::i;:::-;1306:42;;;1313:10;1306:42;;;;;;;;;;;;;;;;;;;;;;;;;1365:12;1048:336;-1:-1:-1;;1048:336:10:o;834:176:16:-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;;;;;;;;;938:46:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:16:o;788:96:13:-;867:10;788:96;:::o;7350:332:18:-;7443:19;;;;;7435:68;;;;-1:-1:-1;;;;;;;;;;;7435:68:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7521:21;;;;;7513:68;;;;-1:-1:-1;;;;;;;;;;;7513:68:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7592:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7643:32;;;;;;;;;;;;;;;;;7350:332;;;:::o;5228:464::-;5325:20;;;;;5317:70;;;;-1:-1:-1;;;;;;;;;;;5317:70:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5405:23;;;;;5397:71;;;;-1:-1:-1;;;;;;;;;;;5397:71:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5499;5521:6;5499:71;;;;;;;;;;;;;;;;;;:17;;;;;;;:9;:17;;;;;;;:71;;:21;:71;:::i;:::-;5479:17;;;;;;;;:9;:17;;;;;;:91;;;;5603:20;;;;;;;:32;;5628:6;5603:32;:24;:32;:::i;:::-;5580:20;;;;;;;;:9;:20;;;;;;;;;:55;;;;5650:35;;;;;;;5580:20;;5650:35;;;;;;;;;;;;;5228:464;;;:::o;1732:187:16:-;1818:7;1853:12;1845:6;;;;1837:29;;;;-1:-1:-1;;;;;;;;;;;1837:29:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1837:29:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1888:5:16;;;1732:187::o;2159:459::-;2217:7;2458:6;;2454:45;;;-1:-1:-1;2487:1:16;2480:8;;2454:45;2521:5;;;2525:1;2521;:5;2544;;;;;;;;:10;2536:56;;;;-1:-1:-1;;;;;;;;;;;2536:56:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3073:130;3131:7;3157:39;3161:1;3164;3157:39;;;;;;;;;;;;;;;;;;:3;:39::i;11604:892:5:-;11740:7;;1161:35;11778:16;;11770:53;;;;;-1:-1:-1;;;;;;;;;;;11770:53:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;11841:16;;;;11833:57;;;;;-1:-1:-1;;;;;;;;;;;11833:57:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;11901:15;11926:12;11960:6;1009:35;11941:6;:16;:25;;;;;;;;11926:40;;1585:35;11980:4;:22;11976:136;;;12028:16;12039:4;12028:10;:16::i;:::-;12018:26;;11976:136;;;12085:16;12096:4;12085:10;:16::i;:::-;12075:26;;11976:136;12122:23;12166:5;12148:23;;12158:5;12148:15;;:7;:15;:23;;;;;;;;12122:49;;1669:35;12185:15;:33;12181:309;;;12242:27;12253:15;12242:10;:27::i;:::-;772:3;12234:51;;;;;;;;;12181:309;12316:15;12334:42;12360:15;12334:25;:42::i;:::-;12316:60;-1:-1:-1;12398:69:5;12409:46;772:3;12429:25;;;12409:46;49:1:-1;45:20;25:41;;12316:60:5;12398:10;:69::i;:::-;12390:89;-1:-1:-1;12469:9:5;-1:-1:-1;12390:89:5;;-1:-1:-1;;;12390:89:5;11604:892;;;;;;;;:::o;1274:134:16:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;;:3;:43::i;1390:409:10:-;235:11:3;;1461:4:10;;220:11:3;:26;;212:111;;;;-1:-1:-1;;;;;;;;;;;212:111:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1495:1:10;1485:11;;1477:48;;;;;-1:-1:-1;;;;;;;;;;;1477:48:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;1568:7;1543:21;1553:10;1543:9;:21::i;:::-;:32;;1535:73;;;;;-1:-1:-1;;;;;;;;;;;1535:73:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;1619:17;1639:32;1663:7;1639:23;:32::i;:::-;1619:52;;1681:26;1687:10;1699:7;1681:5;:26::i;:::-;1722:41;;;1729:10;1722:41;;;;;;;;;;;;;;;;;;;;;;;;;1780:12;1390:409;-1:-1:-1;;1390:409:10:o;6583:342:18:-;6658:21;;;;;6650:67;;;;-1:-1:-1;;;;;;;;;;;6650:67:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6749:68;6772:6;6749:68;;;;;;;;;;;;;;;;;;:18;;;;;;;:9;:18;;;;;;;:68;;:22;:68;:::i;:::-;6728:18;;;;;;;:9;:18;;;;;:89;6842:12;;:24;;6859:6;6842:24;:16;:24;:::i;:::-;6827:12;:39;6881:37;;;;;;;;6907:1;;6881:37;;;;;;;;;;;;;6583:342;;:::o;7860:229::-;7931:22;7937:7;7946:6;7931:5;:22::i;:::-;7963:119;7972:7;7981:12;:10;:12::i;:::-;7995:86;8034:6;7995:86;;;;;;;;;;;;;;;;;;:20;;;;;;;:11;:20;;;;;;8016:12;:10;:12::i;7963:119::-;7860:229;;:::o;2178:225:17:-;2251:22;;;;;2243:73;;;;-1:-1:-1;;;;;;;;;;;2243:73:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2352:6;;;2331:38;;;;;;;2352:6;;;2331:38;;;2379:6;:17;;;;;;;;;;;;;;;2178:225::o;5962:302:18:-;6037:21;;;;;6029:65;;;;;-1:-1:-1;;;;;;;;;;;6029:65:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;6120:12;;:24;;6137:6;6120:24;:16;:24;:::i;:::-;6105:12;:39;6175:18;;;;;;;:9;:18;;;;;;:30;;6198:6;6175:30;:22;:30;:::i;:::-;6154:18;;;;;;;:9;:18;;;;;;;;:51;;;;6220:37;;;;;;;6154:18;;;;6220:37;;;;;;;;;;5962:302;;:::o;3718:338:16:-;3804:7;3904:12;3897:5;;;3889:28;;;;-1:-1:-1;;;;;;;;;;;3889:28:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3889:28:16;;3927:9;3943:1;3939;:5;;;;;;;;;3718:338;-1:-1:-1;;;;;3718:338:16:o;19589:2397:5:-;19643:7;;;;;19755:34;19750:39;;19746:143;;19799:34;19792:41;;;;;19853:34;1009:35;19839:11;;:48;19835:52;;19746:143;19907:34;19902:39;;19898:143;;19951:34;19944:41;;;;;20005:34;1009:35;19991:11;;:48;19987:52;;19898:143;20059:34;20054:39;;20050:143;;20103:34;20096:41;;;;;20157:34;1009:35;20143:11;;:48;20139:52;;20050:143;20211:34;20206:39;;20202:143;;20255:34;20248:41;;;;;20309:34;1009:35;20295:11;;:48;20291:52;;20202:143;20363:34;20358:39;;20354:143;;20407:34;20400:41;;;;;20461:34;1009:35;20447:11;;:48;20443:52;;20354:143;20515:34;20510:39;;20506:143;;20559:34;20552:41;;;;;20613:34;1009:35;20599:11;;:48;20595:52;;20506:143;20667:34;20662:39;;20658:143;;20711:34;20704:41;;;;;20765:34;1009:35;20751:11;;:48;20747:52;;20658:143;20819:34;20814:39;;20810:143;;20863:34;20856:41;;;;;20917:34;1009:35;20903:11;;:48;20899:52;;20810:143;20971:11;;;;-1:-1:-1;20971:11:5;;-1:-1:-1;1009:35:5;20996:5;;;:15;;-1:-1:-1;21076:35:5;21033:39;;;21028:45;;:83;21021:90;;;;;1009:35;21117:5;;;:15;;-1:-1:-1;21197:35:5;21154;:39;;;21149:45;;:83;21142:90;;;;;1009:35;21238:5;;;:15;;-1:-1:-1;21318:35:5;21275;:39;;;21270:45;;:83;21263:90;;;;;1009:35;21359:5;;;:15;;-1:-1:-1;21439:35:5;21396;:39;;;21391:45;;:83;21384:90;;;;;1009:35;21480:5;;;:15;;-1:-1:-1;21560:35:5;21517;:39;;;21512:45;;:83;21505:90;;;;;1009:35;21601:5;;;:15;;-1:-1:-1;21681:35:5;21638;:39;;;21633:45;;:83;21626:90;;;;;1009:35;21722:5;;;:15;;-1:-1:-1;21802:35:5;21759;:39;;;21754:45;;:83;21747:90;;;;;1009:35;21843:5;;;:15;;-1:-1:-1;21923:35:5;21880;:39;;;21875:45;;:83;21868:90;;;;;19589:2397;-1:-1:-1;;;;;19589:2397:5:o;12661:826::-;12716:7;;12772:2;1085:35;12880:12;;12876:152;;12908:11;12922:22;1009:35;12932:1;:11;12922:9;:22::i;:::-;12958:11;;1009:35;13002:15;;;-1:-1:-1;49:1;45:20;25:41;;;;-1:-1;12876:152:5;1009:35;13133:1;:11;13129:297;;;772:3;13160:256;13194:1;13190;:5;;;13160:256;;;1009:35;13225:5;;;13224:17;;-1:-1:-1;1085:35:5;13280:12;;13276:126;;13369:14;-1:-1:-1;;13377:5:5;;13369:14;49:1:-1;13369:14:5;;;13362:21;;;;;25:41:-1;;;;13276:126:5;-1:-1:-1;;13197:3:5;13160:256;;;;13129:297;1398:33;1316;13443:19;;:37;;12661:826;-1:-1:-1;;;;12661:826:5:o;22157:2980::-;22211:7;22555:18;1009:35;22303:38;;;22355:5;;;:15;;;22441:5;;;:15;;;22527:5;;;:15;;;22551:22;;;22383:18;22379:22;;;22469:18;22465:22;;;;22458:29;22544;;22303:38;;22613:5;;;:15;22609:19;;22637:1;22641:18;22637:22;22630:29;;;;1009:35;22703:1;22699;:5;:15;;;;;;;;22695:19;;22723:1;22727:18;22723:22;22716:29;;;;1009:35;22789:1;22785;:5;:15;;;;;;;;22781:19;;22809:1;22813:18;22809:22;22802:29;;;;1009:35;22875:1;22871;:5;:15;;;;;;;;22867:19;;22895:1;22899:18;22895:22;22888:29;;;;1009:35;22961:1;22957;:5;:15;;;;;;;;22953:19;;22981:1;22985:18;22981:22;22974:29;;;;1009:35;23047:1;23043;:5;:15;;;;;;;;23039:19;;23067:1;23071:18;23067:22;23060:29;;;;1009:35;23133:1;23129;:5;:15;;;;;;;;23125:19;;23153:1;23157:18;23153:22;23146:29;;;;1009:35;23219:1;23215;:5;:15;;;;;;;;23211:19;;23239:1;23243:18;23239:22;23232:29;;;;1009:35;23305:1;23301;:5;:15;;;;;;;;23297:19;;23325:1;23329:18;23325:22;23318:29;;;;1009:35;23391:1;23387;:5;:15;;;;;;;;23383:19;;23411:1;23415:18;23411:22;23404:29;;;;1009:35;23477:1;23473;:5;:15;;;;;;;;23469:19;;23497:1;23501:18;23497:22;23490:29;;;;1009:35;23563:1;23559;:5;:15;;;;;;;;23555:19;;23583:1;23587:18;23583:22;23576:29;;;;1009:35;23649:1;23645;:5;:15;;;;;;;;23641:19;;23669:1;23673:18;23669:22;23662:29;;;;1009:35;23735:1;23731;:5;:15;;;;;;;;23727:19;;23755:1;23759:18;23755:22;23748:29;;;;1009:35;23821:1;23817;:5;:15;;;;;;;;23813:19;;23841:1;23845:18;23841:22;23834:29;;;;1009:35;23907:1;23903;:5;:15;;;;;;;23997:18;23903:15;;;23920:29;;;23991:24;:28;;1009:35;23991:38;;23903:15;-1:-1:-1;24099:35:5;24095:39;;24094:46;24090:137;;24192:35;24154;24148:41;;:79;24142:85;;24090:137;24246:35;24242:39;;24241:46;24237:137;;24339:35;24301;24295:41;;:79;24289:85;;24237:137;24393:35;24389:39;;24388:46;24384:137;;24486:35;24448;24442:41;;:79;24436:85;;24384:137;24540:35;24536:39;;24535:46;24531:137;;24633:35;24595;24589:41;;:79;24583:85;;24531:137;24687:35;24683:39;;24682:46;24678:137;;24780:35;24742;24736:41;;:79;24730:85;;24678:137;24834:35;24830:39;;24829:46;24825:137;;24927:35;24889;24883:41;;:79;24877:85;;24825:137;24981:35;24977:39;;24976:46;24972:137;;25074:35;25036;25030:41;;:79;25024:85;;24972:137;-1:-1:-1;25127:3:5;;22157:2980;-1:-1:-1;;;22157:2980:5:o;14495:508::-;14569:5;725:2;772:3;14659:179;14675:2;14666:11;;:2;14671:1;14666:6;:11;;;14659:179;;;14693:9;14717:1;14705:13;14706:7;;;14705:13;;;-1:-1:-1;14756:2:5;14736:11;:16;;;;;;;;;;;;:22;14732:95;;14781:3;14776:8;;14732:95;;;14824:3;14819:8;;14732:95;14659:179;;;;14871:2;14852:11;:15;;;;;;;;;;;;:21;14848:48;;14894:2;-1:-1:-1;14887:9:5;;-1:-1:-1;14887:9:5;14848:48;14929:2;14910:11;:15;;;;;;;;;;;;:21;14906:48;;-1:-1:-1;14952:2:5;-1:-1:-1;14945:9:5;;14906:48;14965:13;15587:3826;15660:7;15679:10;15692:2;15679:15;;15704:11;15718:1;15704:15;;15748:10;15735:23;;15741:2;15736;:7;15735:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;15735:23:5;15730:28;;15767:2;15772:33;15767:38;15760:45;;;;15859:10;15846:23;;15852:2;15847;:7;15846:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;15846:23:5;15841:28;;15878:2;15883:33;15878:38;15871:45;;;;15970:10;15957:23;;15963:2;15958;:7;15957:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;15957:23:5;15952:28;;15989:2;15994:33;15989:38;15982:45;;;;16081:10;16068:23;;16074:2;16069;:7;16068:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16068:23:5;16063:28;;16100:2;16105:33;16100:38;16093:45;;;;16192:10;16179:23;;16185:2;16180;:7;16179:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16179:23:5;16174:28;;16211:2;16216:33;16211:38;16204:45;;;;16303:10;16290:23;;16296:2;16291;:7;16290:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16290:23:5;16285:28;;16322:2;16327:33;16322:38;16315:45;;;;16414:10;16401:23;;16407:2;16402;:7;16401:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16401:23:5;16396:28;;16433:2;16438:33;16433:38;16426:45;;;;16525:10;16512:23;;16518:2;16513;:7;16512:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16512:23:5;16507:28;;16544:2;16549:33;16544:38;16537:45;;;;16636:10;16623:23;;16629:2;16624;:7;16623:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16623:23:5;16618:28;;16655:2;16660:33;16655:38;16648:45;;;;16747:10;16734:23;;16740:2;16735;:7;16734:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16734:23:5;16729:28;;16766:2;16771:33;16766:38;16759:45;;;;16858:10;16845:23;;16851:2;16846;:7;16845:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16845:23:5;16840:28;;16877:2;16882:33;16877:38;16870:45;;;;16969:10;16956:23;;16962:2;16957;:7;16956:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16956:23:5;16951:28;;16988:2;16993:33;16988:38;16981:45;;;;17080:10;17067:23;;17073:2;17068;:7;17067:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17067:23:5;17062:28;;17099:2;17104:33;17099:38;17092:45;;;;17191:10;17178:23;;17184:2;17179;:7;17178:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17178:23:5;17173:28;;17210:2;17215:33;17210:38;17203:45;;;;17302:10;17289:23;;17295:2;17290;:7;17289:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17289:23:5;17284:28;;17321:2;17326:33;17321:38;17314:45;;;;17413:10;17400:23;;17406:2;17401;:7;17400:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17400:23:5;17395:28;;17432:2;17437:33;17432:38;17425:45;;;;17524:10;17511:23;;17517:2;17512;:7;17511:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17511:23:5;17506:28;;17543:2;17548:33;17543:38;17536:45;;;;17635:10;17622:23;;17628:2;17623;:7;17622:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17622:23:5;17617:28;;17654:2;17659:33;17654:38;17647:45;;;;17746:10;17733:23;;17739:2;17734;:7;17733:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17733:23:5;17728:28;;17765:2;17770:33;17765:38;17758:45;;;;17857:10;17844:23;;17850:2;17845;:7;17844:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17844:23:5;17839:28;;17876:2;17881:33;17876:38;17869:45;;;;17968:10;17955:23;;17961:2;17956;:7;17955:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17955:23:5;17950:28;;17987:2;17992:33;17987:38;17980:45;;;;18079:10;18066:23;;18072:2;18067;:7;18066:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18066:23:5;18061:28;;18098:2;18103:33;18098:38;18091:45;;;;18190:10;18177:23;;18183:2;18178;:7;18177:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18177:23:5;18172:28;;18209:2;18214:33;18209:38;18202:45;;;;18301:10;18288:23;;18294:2;18289;:7;18288:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18288:23:5;18283:28;;18320:2;18325:33;18320:38;18313:45;;;;18412:10;18399:23;;18405:2;18400;:7;18399:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18399:23:5;18394:28;;18431:2;18436:33;18431:38;18424:45;;;;18523:10;18510:23;;18516:2;18511;:7;18510:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18510:23:5;18505:28;;18542:2;18547:33;18542:38;18535:45;;;;18634:10;18621:23;;18627:2;18622;:7;18621:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18621:23:5;18616:28;;18653:2;18658:33;18653:38;18646:45;;;;18745:10;18732:23;;18738:2;18733;:7;18732:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18732:23:5;18727:28;;18764:2;18769:33;18764:38;18757:45;;;;18856:10;18843:23;;18849:2;18844;:7;18843:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18843:23:5;18838:28;;18875:2;18880:33;18875:38;18868:45;;;;18967:10;18954:23;;18960:2;18955;:7;18954:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18954:23:5;18949:28;;18986:2;18991:33;18986:38;18979:45;;;;19078:10;19065:23;;19071:2;19066;:7;19065:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;19065:23:5;19060:28;;19097:2;19102:33;19097:38;19090:45;;;;19189:10;19176:23;;19182:2;19177;:7;19176:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;19176:23:5;19171:28;;19208:2;19213:33;19208:38;19201:45;;;;19345:10;19338:17;;629:1;19338:17;;;;19332:2;19296:33;19290:3;:39;;;;;;;;:44;:66;;15587:3826;-1:-1:-1;;;;;15587:3826:5:o;13602:532::-;13656:5;;13708:2;13729:3;13725:7;;13721:386;;;13784:80;13795:1;13791;:5;13784:80;;;13822:1;13841:8;;;;;49:1:-1;25:41;;13784:80:5;;;13721:386;;;13945:3;13930:167;13954:1;13950;:5;;;13930:167;;;13994:8;;;;;13988:15;;13984:99;;14056:8;;;;14027:7;;;49:1:-1;45:20;25:41;;;;13984:99:5;49:1:-1;13957:7:5;;;;25:41:-1;13930:167:5;;;;13721:386;-1:-1:-1;14124:3:5;13602:532;-1:-1:-1;;13602:532:5:o", + "source": "pragma solidity ^0.5.2;\n\nimport \"./ETHContinuousToken.sol\";\n\ncontract ArtistToken2 is ETHContinuousToken {\n\tconstructor(\n string memory _name,\n string memory _symbol,\n uint8 _decimals,\n uint _initialSupply,\n uint32 _reserveRatio\n ) public ETHContinuousToken(_name, _symbol, _decimals, _initialSupply, _reserveRatio) {}\n}", + "sourcePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/token/ArtistToken2.sol", + "ast": { + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/token/ArtistToken2.sol", + "exportedSymbols": { + "ArtistToken2": [ + 2629 + ] + }, + "id": 2630, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2604, + "literals": [ + "solidity", + "^", + "0.5", + ".2" + ], + "nodeType": "PragmaDirective", + "src": "0:23:8" + }, + { + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/token/ETHContinuousToken.sol", + "file": "./ETHContinuousToken.sol", + "id": 2605, + "nodeType": "ImportDirective", + "scope": 2630, + "sourceUnit": 3078, + "src": "25:34:8", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2606, + "name": "ETHContinuousToken", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3077, + "src": "86:18:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ETHContinuousToken_$3077", + "typeString": "contract ETHContinuousToken" + } + }, + "id": 2607, + "nodeType": "InheritanceSpecifier", + "src": "86:18:8" + } + ], + "contractDependencies": [ + 122, + 139, + 176, + 389, + 2569, + 2856, + 3077, + 3104, + 3597, + 4002, + 4060, + 4157 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 2629, + "linearizedBaseContracts": [ + 2629, + 3077, + 2856, + 176, + 122, + 389, + 2569, + 139, + 4060, + 4002, + 3597, + 4157, + 3104 + ], + "name": "ArtistToken2", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 2627, + "nodeType": "Block", + "src": "354:2:8", + "statements": [] + }, + "documentation": null, + "id": 2628, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 2620, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2609, + "src": "296:5:8", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 2621, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2611, + "src": "303:7:8", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 2622, + "name": "_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2613, + "src": "312:9:8", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 2623, + "name": "_initialSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2615, + "src": "323:14:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2624, + "name": "_reserveRatio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2617, + "src": "339:13:8", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "id": 2625, + "modifierName": { + "argumentTypes": null, + "id": 2619, + "name": "ETHContinuousToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3077, + "src": "277:18:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ETHContinuousToken_$3077_$", + "typeString": "type(contract ETHContinuousToken)" + } + }, + "nodeType": "ModifierInvocation", + "src": "277:76:8" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2618, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2609, + "name": "_name", + "nodeType": "VariableDeclaration", + "scope": 2628, + "src": "129:19:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2608, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "129:6:8", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2611, + "name": "_symbol", + "nodeType": "VariableDeclaration", + "scope": 2628, + "src": "158:21:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2610, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "158:6:8", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2613, + "name": "_decimals", + "nodeType": "VariableDeclaration", + "scope": 2628, + "src": "189:15:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2612, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "189:5:8", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2615, + "name": "_initialSupply", + "nodeType": "VariableDeclaration", + "scope": 2628, + "src": "214:19:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2614, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "214:4:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2617, + "name": "_reserveRatio", + "nodeType": "VariableDeclaration", + "scope": 2628, + "src": "243:20:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 2616, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "243:6:8", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "119:150:8" + }, + "returnParameters": { + "id": 2626, + "nodeType": "ParameterList", + "parameters": [], + "src": "354:0:8" + }, + "scope": 2629, + "src": "108:248:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 2630, + "src": "61:297:8" + } + ], + "src": "0:358:8" + }, + "legacyAST": { + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/token/ArtistToken2.sol", + "exportedSymbols": { + "ArtistToken2": [ + 2629 + ] + }, + "id": 2630, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2604, + "literals": [ + "solidity", + "^", + "0.5", + ".2" + ], + "nodeType": "PragmaDirective", + "src": "0:23:8" + }, + { + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/token/ETHContinuousToken.sol", + "file": "./ETHContinuousToken.sol", + "id": 2605, + "nodeType": "ImportDirective", + "scope": 2630, + "sourceUnit": 3078, + "src": "25:34:8", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2606, + "name": "ETHContinuousToken", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3077, + "src": "86:18:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ETHContinuousToken_$3077", + "typeString": "contract ETHContinuousToken" + } + }, + "id": 2607, + "nodeType": "InheritanceSpecifier", + "src": "86:18:8" + } + ], + "contractDependencies": [ + 122, + 139, + 176, + 389, + 2569, + 2856, + 3077, + 3104, + 3597, + 4002, + 4060, + 4157 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 2629, + "linearizedBaseContracts": [ + 2629, + 3077, + 2856, + 176, + 122, + 389, + 2569, + 139, + 4060, + 4002, + 3597, + 4157, + 3104 + ], + "name": "ArtistToken2", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 2627, + "nodeType": "Block", + "src": "354:2:8", + "statements": [] + }, + "documentation": null, + "id": 2628, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 2620, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2609, + "src": "296:5:8", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 2621, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2611, + "src": "303:7:8", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 2622, + "name": "_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2613, + "src": "312:9:8", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 2623, + "name": "_initialSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2615, + "src": "323:14:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2624, + "name": "_reserveRatio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2617, + "src": "339:13:8", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "id": 2625, + "modifierName": { + "argumentTypes": null, + "id": 2619, + "name": "ETHContinuousToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3077, + "src": "277:18:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ETHContinuousToken_$3077_$", + "typeString": "type(contract ETHContinuousToken)" + } + }, + "nodeType": "ModifierInvocation", + "src": "277:76:8" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2618, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2609, + "name": "_name", + "nodeType": "VariableDeclaration", + "scope": 2628, + "src": "129:19:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2608, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "129:6:8", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2611, + "name": "_symbol", + "nodeType": "VariableDeclaration", + "scope": 2628, + "src": "158:21:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2610, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "158:6:8", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2613, + "name": "_decimals", + "nodeType": "VariableDeclaration", + "scope": 2628, + "src": "189:15:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2612, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "189:5:8", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2615, + "name": "_initialSupply", + "nodeType": "VariableDeclaration", + "scope": 2628, + "src": "214:19:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2614, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "214:4:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2617, + "name": "_reserveRatio", + "nodeType": "VariableDeclaration", + "scope": 2628, + "src": "243:20:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 2616, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "243:6:8", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "119:150:8" + }, + "returnParameters": { + "id": 2626, + "nodeType": "ParameterList", + "parameters": [], + "src": "354:0:8" + }, + "scope": 2629, + "src": "108:248:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 2630, + "src": "61:297:8" + } + ], + "src": "0:358:8" + }, + "compiler": { + "name": "solc", + "version": "0.5.2+commit.1df8f40c.Emscripten.clang" + }, + "networks": { + "9545": { + "events": {}, + "links": {}, + "address": "0x970e8f18ebfEa0B08810f33a5A40438b9530FBCF", + "transactionHash": "0xa459f8d0bb58ad62cc709c027dcf40885d1754cf2467182ea6c8f59efc1349fd" + } + }, + "schemaVersion": "3.0.1", + "updatedAt": "2020-02-16T15:02:59.952Z", + "devdoc": { + "methods": { + "allowance(address,address)": { + "details": "See {IERC20-allowance}." + }, + "approve(address,uint256)": { + "details": "See {IERC20-approve}. * Requirements: * - `spender` cannot be the zero address." + }, + "balanceOf(address)": { + "details": "See {IERC20-balanceOf}." + }, + "calculatePurchaseReturn(uint256,uint256,uint32,uint256)": { + "details": "given a continuous token supply, reserve token balance, reserve ratio, and a deposit amount (in the reserve token), calculates the return for a given conversion (in the continuous token) * Formula: Return = _supply * ((1 + _depositAmount / _reserveBalance) ^ (_reserveRatio / MAX_RESERVE_RATIO) - 1)", + "params": { + "_depositAmount": "deposit amount, in reserve token", + "_reserveBalance": "total reserve token balance", + "_reserveRatio": "reserve ratio, represented in ppm, 1-1000000", + "_supply": "continuous token total supply" + }, + "return": "purchase return amount" + }, + "calculateSaleReturn(uint256,uint256,uint32,uint256)": { + "details": "given a continuous token supply, reserve token balance, reserve ratio and a sell amount (in the continuous token), calculates the return for a given conversion (in the reserve token) * Formula: Return = _reserveBalance * (1 - (1 - _sellAmount / _supply) ^ (1 / (_reserveRatio / MAX_RESERVE_RATIO)))", + "params": { + "_reserveBalance": "total reserve token balance", + "_reserveRatio": "constant reserve ratio, represented in ppm, 1-1000000", + "_sellAmount": "sell amount, in the continuous token itself", + "_supply": "continuous token total supply" + }, + "return": "sale return amount" + }, + "decimals()": { + "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). * Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. * NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}." + }, + "decreaseAllowance(address,uint256)": { + "details": "Atomically decreases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`." + }, + "increaseAllowance(address,uint256)": { + "details": "Atomically increases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address." + }, + "isOwner()": { + "details": "Returns true if the caller is the current owner." + }, + "name()": { + "details": "Returns the name of the token." + }, + "owner()": { + "details": "Returns the address of the current owner." + }, + "renounceOwnership()": { + "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner." + }, + "symbol()": { + "details": "Returns the symbol of the token, usually a shorter version of the name." + }, + "totalSupply()": { + "details": "See {IERC20-totalSupply}." + }, + "transfer(address,uint256)": { + "details": "See {IERC20-transfer}. * Requirements: * - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`." + }, + "transferFrom(address,address,uint256)": { + "details": "See {IERC20-transferFrom}. * Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; * Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for `sender`'s tokens of at least `amount`." + }, + "transferOwnership(address)": { + "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." + } + } + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/truffle/build/contracts/ArtistToken3.json b/truffle/build/contracts/ArtistToken3.json new file mode 100644 index 0000000..4907ec6 --- /dev/null +++ b/truffle/build/contracts/ArtistToken3.json @@ -0,0 +1,1466 @@ +{ + "contractName": "ArtistToken3", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x06fdde03" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x095ea7b3" + }, + { + "constant": true, + "inputs": [], + "name": "reserveRatio", + "outputs": [ + { + "name": "", + "type": "uint32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x0c7d5cd8" + }, + { + "constant": true, + "inputs": [ + { + "name": "_reserveTokenAmount", + "type": "uint256" + } + ], + "name": "getContinuousMintReward", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x0d8f9f7f" + }, + { + "constant": false, + "inputs": [], + "name": "mint", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function", + "signature": "0x1249c58b" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x18160ddd" + }, + { + "constant": false, + "inputs": [ + { + "name": "sender", + "type": "address" + }, + { + "name": "recipient", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x23b872dd" + }, + { + "constant": true, + "inputs": [ + { + "name": "_supply", + "type": "uint256" + }, + { + "name": "_reserveBalance", + "type": "uint256" + }, + { + "name": "_reserveRatio", + "type": "uint32" + }, + { + "name": "_depositAmount", + "type": "uint256" + } + ], + "name": "calculatePurchaseReturn", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x29a00e7c" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x313ce567" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x39509351" + }, + { + "constant": true, + "inputs": [], + "name": "maxGasPrice", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x3de39c11" + }, + { + "constant": false, + "inputs": [ + { + "name": "_amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x42966c68" + }, + { + "constant": true, + "inputs": [ + { + "name": "_supply", + "type": "uint256" + }, + { + "name": "_reserveBalance", + "type": "uint256" + }, + { + "name": "_reserveRatio", + "type": "uint32" + }, + { + "name": "_sellAmount", + "type": "uint256" + } + ], + "name": "calculateSaleReturn", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x49f9b0f7" + }, + { + "constant": true, + "inputs": [], + "name": "version", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x54fd4d50" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x70a08231" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x715018a6" + }, + { + "constant": true, + "inputs": [ + { + "name": "_continuousTokenAmount", + "type": "uint256" + } + ], + "name": "getContinuousBurnRefund", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x7cbed3e0" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x8da5cb5b" + }, + { + "constant": true, + "inputs": [], + "name": "isOwner", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x8f32d59b" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x95d89b41" + }, + { + "constant": false, + "inputs": [ + { + "name": "_amount", + "type": "uint256" + } + ], + "name": "sponsoredBurn", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x96343886" + }, + { + "constant": true, + "inputs": [], + "name": "reserveBalance", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xa10954fe" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa457c2d7" + }, + { + "constant": false, + "inputs": [ + { + "name": "recipient", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa9059cbb" + }, + { + "constant": false, + "inputs": [ + { + "name": "_from", + "type": "address" + }, + { + "name": "_amount", + "type": "uint256" + } + ], + "name": "sponsoredBurnFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xb265c702" + }, + { + "constant": false, + "inputs": [ + { + "name": "newPrice", + "type": "uint256" + } + ], + "name": "setMaxGasPrice", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xd2fa635e" + }, + { + "constant": true, + "inputs": [], + "name": "continuousSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xda12457a" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xdd62ed3e" + }, + { + "constant": false, + "inputs": [ + { + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xf2fde38b" + }, + { + "inputs": [ + { + "name": "_name", + "type": "string" + }, + { + "name": "_symbol", + "type": "string" + }, + { + "name": "_decimals", + "type": "uint8" + }, + { + "name": "_initialSupply", + "type": "uint256" + }, + { + "name": "_reserveRatio", + "type": "uint32" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor", + "signature": "constructor" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "name": "deposit", + "type": "uint256" + } + ], + "name": "Minted", + "type": "event", + "signature": "0x25b428dfde728ccfaddad7e29e4ac23c24ed7fd1a6e3e3f91894a9a073f5dfff" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "name": "refund", + "type": "uint256" + } + ], + "name": "Burned", + "type": "event", + "signature": "0x23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event", + "signature": "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event", + "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event", + "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" + } + ], + "bytecode": "0x60c0604052600360808190527f302e33000000000000000000000000000000000000000000000000000000000060a090815262000040916007919062000b7b565b50670de0b6b3a76400006089553480156200005a57600080fd5b5060405162003dbd38038062003dbd833981018060405260a08110156200008057600080fd5b8101908080516401000000008111156200009957600080fd5b82016020810184811115620000ad57600080fd5b8151640100000000811182820187101715620000c857600080fd5b50509291906020018051640100000000811115620000e557600080fd5b82016020810184811115620000f957600080fd5b81516401000000008111828201871017156200011457600080fd5b5050602082015160408301516060909301519194509250848484848484848484848085858560006200014e640100000000620009d7810204565b60008054600160a060020a031916600160a060020a0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508251620001ad90600490602086019062000b7b565b508151620001c390600590602085019062000b7b565b506006805460ff191660ff9290921691909117905550506001606060020a641c35fedd1502036028556001605e60020a646c3390ecc902036029556001606160020a640cf80147610203602a556001605f60020a6431bdb23e1d0203602b556001605b60020a6502fb1d8fe0830203602c556001605a60020a6505b771955b370203602d556001605960020a650af67a93bb510203602e556001605860020a6515060c256cb30203602f556001605860020a651428a2f98d7302036030556001605660020a654d515663970902036031556001605560020a65944620b0e70f02036032557011c592761c666fffffffffffffffffffff60335570110a688680a757ffffffffffffffffffff603455701056f1b5bedf77ffffffffffffffffffff603555700faadceceeff8bffffffffffffffffffff603655700f05dc6b27edadffffffffffffffffffff603755700e67a5a25da4107fffffffffffffffffff603855700dcff115b14eedffffffffffffffffffff603955700d3e7a392431239fffffffffffffffffff603a55700cb2ff529eb71e4fffffffffffffffffff603b55700c2d415c3db974afffffffffffffffffff603c55700bad03e7d883f69bffffffffffffffffff603d55700b320d03b2c343d5ffffffffffffffffff603e55700abc25204e02828dffffffffffffffffff603f55700a4b16f74ee4bb207fffffffffffffffff6040557009deaf736ac1f569ffffffffffffffffff604155700976bd9952c7aa957fffffffffffffffff6042557009131271922eaa606fffffffffffffffff6043557008b380f3558668c46fffffffffffffffff604455700857ddf0117efa215bffffffffffffffff6045556001608360020a036046557007abbf6f6abb9d087fffffffffffffffff60475570075af62cbac95f7dfa7fffffffffffffff60485570070d7fb7452e187ac13fffffffffffffff6049557006c3390ecc8af379295fffffffffffffff604a5570067c00a3b07ffc01fd6fffffffffffffff604b55700637b647c39cbb9d3d27ffffffffffffff604c557005f63b1fc104dbd39587ffffffffffffff604d557005b771955b36e12f7235ffffffffffffff604e5570057b3d49dda84556d6f6ffffffffffffff604f5570054183095b2c8ececf30ffffffffffffff60505570050a28be635ca2b888f77fffffffffffff6051557004d5156639708c9db33c3fffffffffffff6052557004a23105873875bd52dfdfffffffffffff605355700471649d87199aa990756fffffffffffff6054557004429a21a029d4c1457cfbffffffffffff605555700415bc6d6fb7dd71af2cb3ffffffffffff6056557003eab73b3bbfe282243ce1ffffffffffff6057557003c1771ac9fb6b4c18e229ffffffffffff605855700399e96897690418f785257fffffffffff605955700373fc456c53bb779bf0ea9fffffffffff605a5570034f9e8e490c48e67e6ab8bfffffffffff605b5570032cbfd4a7adc790560b3337ffffffffff605c5570030b50570f6e5d2acca94613ffffffffff605d557002eb40f9f620fda6b56c2861ffffffffff605e557002cc8340ecb0d0f520a6af58ffffffffff605f557002af09481380a0a35cf1ba02ffffffffff606055700292c5bdd3b92ec810287b1b3fffffffff606155700277abdcdab07d5a77ac6d6b9fffffffff60625570025daf6654b1eaa55fd64df5efffffffff606355700244c49c648baa98192dce88b7ffffffff60645570022ce03cd5619a311b2471268bffffffff606555700215f77c045fbe885654a44a0fffffffff6066556001608160020a036067557001eaefdbdaaee7421fc4d3ede5ffffffff6068557001d6bd8b2eb257df7e8ca57b09bfffffff6069557001c35fedd14b861eb0443f7f133fffffff606a557001b0ce43b322bcde4a56e8ada5afffffff606b5570019f0028ec1fff007f5a195a39dfffffff606c5570018ded91f0e72ee74f49b15ba527ffffff606d5570017d8ec7f04136f4e5615fd41a63ffffff606e5570016ddc6556cdb84bdc8d12d22e6fffffff606f5570015ecf52776a1155b5bd8395814f7fffff60705570015060c256cb23b3b3cc3754cf40ffffff6071557001428a2f98d728ae223ddab715be3fffff60725570013545598e5c23276ccf0ede68034fffff6073557001288c4161ce1d6f54b7f61081194fffff60745570011c592761c666aa641d5a01a40f17ffff607555700110a688680a7530515f3e6e6cfdcdffff6076557001056f1b5bedf75c6bcb2ce8aed428ffff6077556ffaadceceeff8a0890f3875f008277fff6078556ff05dc6b27edad306388a600f6ba0bfff6079556fe67a5a25da41063de1495d5b18cdbfff607a556fdcff115b14eedde6fc3aa5353f2e4fff607b556fd3e7a3924312399f9aae2e0f868f8fff607c556fcb2ff529eb71e41582cccd5a1ee26fff607d556fc2d415c3db974ab32a51840c0b67edff607e556fbad03e7d883f69ad5b0a186184e06bff607f556fb320d03b2c343d4829abd6075f0cc5ff6080556fabc25204e02828d73c6e80bcdb1a95bf6081556fa4b16f74ee4bb2040a1ec6c15fbbf2df6082556f9deaf736ac1f569deb1b5ae3f36c130f6083556f976bd9952c7aa957f5937d790ef650376084556f9131271922eaa6064b73a22d0bd4f2bf6085556f8b380f3558668c46c91c49a2f8e967b96086556f857ddf0117efa215952912839f6473e66087556088805463ffffffff191663ffffffff92909216919091179055620009ab3383640100000000620009dc810204565b505034608a555050608b8054600160a060020a031916331790555062000c1d9950505050505050505050565b335b90565b600160a060020a038216151562000a5457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60035462000a719082640100000000620012cc62000aff82021704565b600355600160a060020a03821660009081526001602052604090205462000aa79082640100000000620012cc62000aff82021704565b600160a060020a03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008282018381101562000b7457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000bbe57805160ff191683800117855562000bee565b8280016001018555821562000bee579182015b8281111562000bee57825182559160200191906001019062000bd1565b5062000bfc92915062000c00565b5090565b620009d991905b8082111562000bfc576000815560010162000c07565b6131908062000c2d6000396000f3fe6080604052600436106101df576000357c01000000000000000000000000000000000000000000000000000000009004806370a0823111610114578063a10954fe116100b2578063d2fa635e11610081578063d2fa635e146106dd578063da12457a14610707578063dd62ed3e1461071c578063f2fde38b14610764576101df565b8063a10954fe146105f6578063a457c2d71461060b578063a9059cbb14610651578063b265c70214610697576101df565b80638da5cb5b116100ee5780638da5cb5b146105645780638f32d59b146105a257806395d89b41146105b757806396343886146105cc576101df565b806370a08231146104e5578063715018a6146105255780637cbed3e01461053a576101df565b806329a00e7c116101815780633de39c111161015b5780633de39c111461044f57806342966c681461046457806349f9b0f71461048e57806354fd4d50146104d0576101df565b806329a00e7c1461039c578063313ce567146103de5780633950935114610409576101df565b80630d8f9f7f116101bd5780630d8f9f7f146102fb5780631249c58b146101df57806318160ddd1461033757806323b872dd1461034c576101df565b806306fdde03146101e9578063095ea7b3146102735780630c7d5cd8146102cd575b6101e76107a4565b005b3480156101f557600080fd5b506101fe610822565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610238578181015183820152602001610220565b50505050905090810190601f1680156102655780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027f57600080fd5b506102b96004803603604081101561029657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356108b8565b604080519115158252519081900360200190f35b3480156102d957600080fd5b506102e26108d6565b6040805163ffffffff9092168252519081900360200190f35b34801561030757600080fd5b506103256004803603602081101561031e57600080fd5b50356108e2565b60408051918252519081900360200190f35b34801561034357600080fd5b5061032561090e565b34801561035857600080fd5b506102b96004803603606081101561036f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610914565b3480156103a857600080fd5b50610325600480360360808110156103bf57600080fd5b5080359060208101359063ffffffff60408201351690606001356109bc565b3480156103ea57600080fd5b506103f3610aff565b6040805160ff9092168252519081900360200190f35b34801561041557600080fd5b506102b96004803603604081101561042c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610b08565b34801561045b57600080fd5b50610325610b69565b34801561047057600080fd5b506101e76004803603602081101561048757600080fd5b5035610b6f565b34801561049a57600080fd5b50610325600480360360808110156104b157600080fd5b5080359060208101359063ffffffff6040820135169060600135610bc5565b3480156104dc57600080fd5b506101fe610d10565b3480156104f157600080fd5b506103256004803603602081101561050857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610d9e565b34801561053157600080fd5b506101e7610dc6565b34801561054657600080fd5b506103256004803603602081101561055d57600080fd5b5035610e98565b34801561057057600080fd5b50610579610ebc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156105ae57600080fd5b506102b9610ed8565b3480156105c357600080fd5b506101fe610f16565b3480156105d857600080fd5b506101e7600480360360208110156105ef57600080fd5b5035610f77565b34801561060257600080fd5b50610325610fc4565b34801561061757600080fd5b506102b96004803603604081101561062e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610fca565b34801561065d57600080fd5b506102b96004803603604081101561067457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611046565b3480156106a357600080fd5b506101e7600480360360408110156106ba57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561105a565b3480156106e957600080fd5b506101e76004803603602081101561070057600080fd5b50356110a8565b34801561071357600080fd5b50610325611110565b34801561072857600080fd5b506103256004803603604081101561073f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661111f565b34801561077057600080fd5b506101e76004803603602081101561078757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611157565b608b546040516127103460c881029190910492908390039173ffffffffffffffffffffffffffffffffffffffff909116906108fc8315029083906000818181858888f193505050501580156107fd573d6000803e3d6000fd5b50610807816111c6565b50608a5461081b908263ffffffff6112cc16565b608a555050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108ae5780601f10610883576101008083540402835291602001916108ae565b820191906000526020600020905b81548152906001019060200180831161089157829003601f168201915b5050505050905090565b60006108cc6108c5611335565b8484611339565b5060015b92915050565b60885463ffffffff1681565b60006109066108ef611110565b6108f7610fc4565b60885463ffffffff16856109bc565b90505b919050565b60035490565b6000610921848484611460565b6109b28461092d611335565b6109ad856060604051908101604052806028815260200161308a6028913973ffffffffffffffffffffffffffffffffffffffff8a16600090815260026020526040812090610979611335565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002054919063ffffffff61161416565b611339565b5060019392505050565b600080851180156109cd5750600084115b80156109df575060008363ffffffff16115b80156109f45750620f424063ffffffff841611155b1515610a4f5760408051600080516020613049833981519152815260206004820152600f60248201527f496e76616c696420696e707574732e0000000000000000000000000000000000604482015290519081900360640190fd5b811515610a5e57506000610af7565b63ffffffff8316620f42401415610a9657610a8f84610a83878563ffffffff6116b316565b9063ffffffff61171816565b9050610af7565b60008080610aaa858863ffffffff6112cc16565b9050610abb818888620f424061175a565b9093509150600060ff8316610ad68a8663ffffffff6116b316565b60029190910a90049050610af0818a63ffffffff61190616565b9450505050505b949350505050565b60065460ff1690565b60006108cc610b15611335565b846109ad8560026000610b26611335565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6112cc16565b60895481565b6000610b7a82611948565b608a54909150610b90908263ffffffff61190616565b608a55604051339082156108fc029083906000818181858888f19350505050158015610bc0573d6000803e3d6000fd5b505050565b60008085118015610bd65750600084115b8015610be8575060008363ffffffff16115b8015610bfd5750620f424063ffffffff841611155b8015610c095750848211155b1515610c645760408051600080516020613049833981519152815260206004820152600f60248201527f496e76616c696420696e707574732e0000000000000000000000000000000000604482015290519081900360640190fd5b811515610c7357506000610af7565b84821415610c82575082610af7565b63ffffffff8316620f42401415610ca757610a8f85610a83868563ffffffff6116b316565b60008080610cbb888663ffffffff61190616565b9050610ccc8882620f42408961175a565b90935091506000610ce3888563ffffffff6116b316565b905060ff831660020a8802610d0285610a83848463ffffffff61190616565b9a9950505050505050505050565b6007805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d965780601f10610d6b57610100808354040283529160200191610d96565b820191906000526020600020905b815481529060010190602001808311610d7957829003601f168201915b505050505081565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b610dce610ed8565b1515610e295760408051600080516020613049833981519152815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000610906610ea5611110565b610ead610fc4565b60885463ffffffff1685610bc5565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6000805473ffffffffffffffffffffffffffffffffffffffff16610efa611335565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108ae5780601f10610883576101008083540402835291602001916108ae565b610f813382611ab3565b604080513381526020810183905260008183015290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a150565b608a5490565b60006108cc610fd7611335565b846109ad85606060405190810160405280602581526020016131406025913960026000611002611335565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61161416565b60006108cc611053611335565b8484611460565b6110648282611bee565b604080513381526020810183905260008183015290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a15050565b6110b0610ed8565b151561110b5760408051600080516020613049833981519152815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b608955565b600061111a61090e565b905090565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b61115f610ed8565b15156111ba5760408051600080516020613049833981519152815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6111c381611c54565b50565b6089546000903a1115611212576040516000805160206130498339815191528152600401808060200182810382526048815260200180612fdb6048913960600191505060405180910390fd5b6000821161126f5760408051600080516020613049833981519152815260206004820152601960248201527f4465706f736974206d757374206265206e6f6e2d7a65726f2e00000000000000604482015290519081900360640190fd5b600061127a836108e2565b90506112863382611d3d565b604080513381526020810183905280820185905290517f25b428dfde728ccfaddad7e29e4ac23c24ed7fd1a6e3e3f91894a9a073f5dfff9181900360600190a192915050565b60008282018381101561132e5760408051600080516020613049833981519152815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316151561139557604051600080516020613049833981519152815260040180806020018281038252602481526020018061311c6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821615156113f1576040516000805160206130498339815191528152600401808060200182810382526022815260200180612fb96022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff831615156114bc5760405160008051602061304983398151915281526004018080602001828103825260258152602001806130f76025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161515611518576040516000805160206130498339815191528152600401808060200182810382526023815260200180612f4e6023913960400191505060405180910390fd5b61156981606060405190810160405280602681526020016130236026913973ffffffffffffffffffffffffffffffffffffffff8616600090815260016020526040902054919063ffffffff61161416565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546115ab908263ffffffff6112cc16565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156116ab5760405160008051602061304983398151915281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611670578181015183820152602001611658565b50505050905090810190601f16801561169d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008215156116c4575060006108d0565b8282028284828115156116d357fe5b041461132e5760405160008051602061304983398151915281526004018080602001828103825260218152602001806130696021913960400191505060405180910390fd5b600061132e83836040805190810160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e60565b60008070020000000000000000000000000000000086106117ca5760408051600080516020613049833981519152815260206004820152601860248201527f626173654e2065786365656473206d61782076616c75652e0000000000000000604482015290519081900360640190fd5b848610156118275760408051600080516020613049833981519152815260206004820152601c60248201527f4261736573203c203120617265206e6f7420737570706f727465642e00000000604482015290519081900360640190fd5b600080866f80000000000000000000000000000000890281151561184757fe5b04905070015bf0a8b1457695355fb8ac404e7a79e38110156118735761186c81611ed2565b915061187f565b61187c816123c6565b91505b60008563ffffffff168763ffffffff16840281151561189a57fe5b0490507008000000000000000000000000000000008110156118cd576118bf816124c5565b607f945094505050506118fd565b60006118d8826129aa565b90506118f060ff607f8390031660020a830482612a3c565b955093506118fd92505050565b94509492505050565b600061132e83836040805190810160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611614565b6089546000903a1115611994576040516000805160206130498339815191528152600401808060200182810382526048815260200180612fdb6048913960600191505060405180910390fd5b600082116119f15760408051600080516020613049833981519152815260206004820152601860248201527f416d6f756e74206d757374206265206e6f6e2d7a65726f2e0000000000000000604482015290519081900360640190fd5b816119fb33610d9e565b1015611a565760408051600080516020613049833981519152815260206004820152601c60248201527f496e73756666696369656e7420746f6b656e7320746f206275726e2e00000000604482015290519081900360640190fd5b6000611a6183610e98565b9050611a6d3384611ab3565b604080513381526020810185905280820183905290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a192915050565b73ffffffffffffffffffffffffffffffffffffffff82161515611b0f5760405160008051602061304983398151915281526004018080602001828103825260218152602001806130d66021913960400191505060405180910390fd5b611b608160606040519081016040528060228152602001612f716022913973ffffffffffffffffffffffffffffffffffffffff8516600090815260016020526040902054919063ffffffff61161416565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902055600354611b99908263ffffffff61190616565b60035560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b611bf88282611ab3565b611c5082611c04611335565b6109ad84606060405190810160405280602481526020016130b26024913973ffffffffffffffffffffffffffffffffffffffff8816600090815260026020526040812090610979611335565b5050565b73ffffffffffffffffffffffffffffffffffffffff81161515611cb0576040516000805160206130498339815191528152600401808060200182810382526026815260200180612f936026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff82161515611daf5760408051600080516020613049833981519152815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600354611dc2908263ffffffff6112cc16565b60035573ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054611dfb908263ffffffff6112cc16565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600081818411611eba57604051600080516020613049833981519152815260040180806020018281038252838181518152602001915080519060200190808383600083811015611670578181015183820152602001611658565b5060008385811515611ec857fe5b0495945050505050565b6000808080806fd3094c70f034de4b96ff7d5b6f99fcd88610611f2d576f4000000000000000000000000000000093909301926fd3094c70f034de4b96ff7d5b6f99fcd86f8000000000000000000000000000000087020495505b6fa45af1e1f40c333b3de1db4dd55f29a78610611f82576f2000000000000000000000000000000093909301926fa45af1e1f40c333b3de1db4dd55f29a76f8000000000000000000000000000000087020495505b6f910b022db7ae67ce76b441c27035c6a18610611fd7576f1000000000000000000000000000000093909301926f910b022db7ae67ce76b441c27035c6a16f8000000000000000000000000000000087020495505b6f88415abbe9a76bead8d00cf112e4d4a8861061202c576f0800000000000000000000000000000093909301926f88415abbe9a76bead8d00cf112e4d4a86f8000000000000000000000000000000087020495505b6f84102b00893f64c705e841d5d4064bd38610612081576f0400000000000000000000000000000093909301926f84102b00893f64c705e841d5d4064bd36f8000000000000000000000000000000087020495505b6f8204055aaef1c8bd5c3259f4822735a286106120d6576f0200000000000000000000000000000093909301926f8204055aaef1c8bd5c3259f4822735a26f8000000000000000000000000000000087020495505b6f810100ab00222d861931c15e39b44e99861061212b576f0100000000000000000000000000000093909301926f810100ab00222d861931c15e39b44e996f8000000000000000000000000000000087020495505b6f808040155aabbbe9451521693554f733861061217f576e80000000000000000000000000000093909301926f808040155aabbbe9451521693554f7336f8000000000000000000000000000000087020495505b7fffffffffffffffffffffffffffffffff80000000000000000000000000000000860192508291506f8000000000000000000000000000000082800204905070010000000000000000000000000000000083810383020493909301926f800000000000000000000000000000008282020491507002000000000000000000000000000000006faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa84900383020493909301926f800000000000000000000000000000008282020491507003000000000000000000000000000000006f9999999999999999999999999999999984900383020493909301926f800000000000000000000000000000008282020491507004000000000000000000000000000000006f9249249249249249249249249249249284900383020493909301926f800000000000000000000000000000008282020491507005000000000000000000000000000000006f8e38e38e38e38e38e38e38e38e38e38e84900383020493909301926f800000000000000000000000000000008282020491507006000000000000000000000000000000006f8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8b84900383020493909301926f800000000000000000000000000000008282020491507007000000000000000000000000000000006f89d89d89d89d89d89d89d89d89d89d8984900383020493909301926f800000000000000000000000000000008282020491507008000000000000000000000000000000006f888888888888888888888888888888888490038302049390930195945050505050565b6000808270010000000000000000000000000000000081106124205760006123ff6f800000000000000000000000000000008304612ede565b60ff166f800000000000000000000000000000008102935060020a90910490505b6f8000000000000000000000000000000081111561249857607f5b60008160ff161115612496576f80000000000000000000000000000000828002049150700100000000000000000000000000000000821061248d5760ff600019820116600290810a9390930192909104905b6000190161243b565b505b6f05b9de1d10bf4103d647b0955897ba806f03f80fe03f80fe03f80fe03f80fe03f8830204949350505050565b6000670168244fdac780006f800000000000000000000000000000006f0fffffffffffffffffffffffffffffff84168080028290048082028390048083028490049485026710e1b3be415a00009092026705a0913f6b1e000091909102010192909181830204905080664807432bc1800002830192506f8000000000000000000000000000000082820281151561255857fe5b04905080660c0135dca0400002830192506f8000000000000000000000000000000082820281151561258657fe5b049050806601b707b1cdc00002830192506f800000000000000000000000000000008282028115156125b457fe5b049050806536e0f639b80002830192506f800000000000000000000000000000008282028115156125e157fe5b04905080650618fee9f80002830192506f8000000000000000000000000000000082820281151561260e57fe5b04905080649c197dcc0002830192506f8000000000000000000000000000000082820281151561263a57fe5b04905080640e30dce40002830192506f8000000000000000000000000000000082820281151561266657fe5b0490508064012ebd130002830192506f8000000000000000000000000000000082820281151561269257fe5b049050806317499f0002830192506f800000000000000000000000000000008282028115156126bd57fe5b049050806301a9d48002830192506f800000000000000000000000000000008282028115156126e857fe5b04905080621c638002830192506f8000000000000000000000000000000082820281151561271257fe5b049050806201c63802830192506f8000000000000000000000000000000082820281151561273c57fe5b04905080611ab802830192506f8000000000000000000000000000000082820281151561276557fe5b0490508061017c02830192506f8000000000000000000000000000000082820281151561278e57fe5b04905080601402830192506f800000000000000000000000000000008282028115156127b657fe5b6721c3677c82b400009190049384010482016f80000000000000000000000000000000019290506f1000000000000000000000000000000085161561281f5770018ebef9eac820ae8682b9793ac6d1e7767001c3d6a24ed82218787d624d3e5eba95f984020492505b6f20000000000000000000000000000000851615612861577001368b2fc6f9609fe7aceb46aa619baed470018ebef9eac820ae8682b9793ac6d1e77884020492505b6f400000000000000000000000000000008516156128a2576fbc5ab1b16779be3575bd8f0520a9f21f7001368b2fc6f9609fe7aceb46aa619baed584020492505b6f800000000000000000000000000000008516156128e2576f454aaa8efe072e7f6ddbab84b40a55c96fbc5ab1b16779be3575bd8f0520a9f21e84020492505b700100000000000000000000000000000000851615612923576f0960aadc109e7a3bf4578099615711ea6f454aaa8efe072e7f6ddbab84b40a55c584020492505b700200000000000000000000000000000000851615612963576e2bf84208204f5977f9a8cf01fdce3d6f0960aadc109e7a3bf4578099615711d784020492505b7004000000000000000000000000000000008516156129a1576d03c6ab775dd0b95b4cbee7e65d116e2bf84208204f5977f9a8cf01fdc30784020492505b50909392505050565b60006020607f5b8060ff168260010160ff1610156129f9576000600260ff8484011604905084600860ff8316608081106129e057fe5b0154106129ef578092506129f3565b8091505b506129b1565b83600860ff831660808110612a0a57fe5b015410612a1a5791506109099050565b83600860ff841660808110612a2b57fe5b015410612a3a57509050610909565bfe5b60008083905060008090508360ff16858302908060020a82049150509150816f03442c4e6074a82f1797f72ac000000002810190508360ff16858302908060020a82049150509150816f0116b96f757c380fb287fd0e4000000002810190508360ff16858302908060020a82049150509150816e45ae5bdd5f0e03eca1ff439000000002810190508360ff16858302908060020a82049150509150816e0defabf91302cd95b9ffda5000000002810190508360ff16858302908060020a82049150509150816e02529ca9832b22439efff9b800000002810190508360ff16858302908060020a82049150509150816d54f1cf12bd04e516b6da8800000002810190508360ff16858302908060020a82049150509150816d0a9e39e257a09ca2d6db5100000002810190508360ff16858302908060020a82049150509150816d012e066e7b839fa050c30900000002810190508360ff16858302908060020a82049150509150816c1e33d7d926c329a1ad1a80000002810190508360ff16858302908060020a82049150509150816c02bee513bdb4a6b19b5f80000002810190508360ff16858302908060020a82049150509150816b3a9316fa79b88eccf2a0000002810190508360ff16858302908060020a82049150509150816b048177ebe1fa81237520000002810190508360ff16858302908060020a82049150509150816a5263fe90242dcbacf0000002810190508360ff16858302908060020a82049150509150816a057e22099c030d9410000002810190508360ff16858302908060020a82049150509150816957e22099c030d941000002810190508360ff16858302908060020a820491505091508169052b6b5456997631000002810190508360ff16858302908060020a8204915050915081684985f67696bf74800002810190508360ff16858302908060020a82049150509150816803dea12ea99e49800002810190508360ff16858302908060020a82049150509150816731880f2214b6e00002810190508360ff16858302908060020a820491505091508167025bcff56eb3600002810190508360ff16858302908060020a8204915050915081661b722e10ab100002810190508360ff16858302908060020a82049150509150816601317c7007700002810190508360ff16858302908060020a8204915050915081650cba84aafa0002810190508360ff16858302908060020a82049150509150816482573a0a0002810190508360ff16858302908060020a82049150509150816405035ad90002810190508360ff16858302908060020a8204915050915081632f881b0002810190508360ff16858302908060020a82049150509150816301b2934002810190508360ff16858302908060020a8204915050915081620efc4002810190508360ff16858302908060020a8204915050915081617fe002810190508360ff16858302908060020a820491505091508161042002810190508360ff16858302908060020a8204915050915081602102810190508360ff16858302908060020a8204915050915081600102810190508360ff1660019060020a02856f0688589cc0e9505e2f2fee558000000083811515612ed257fe5b04010195945050505050565b60008082610100811015612f0b575b6001811115612f06576001919091019060029004612eed565b612f46565b60805b60008160ff161115612f445760ff811660020a8210612f37579182179160ff811660020a909104905b600260ff90911604612f0e565b505b509291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373476173207072696365206d757374206265203c3d206d6178696d756d2067617320707269636520746f2070726576656e742066726f6e742072756e6e696e672061747461636b732e45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636508c379a000000000000000000000000000000000000000000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa165627a7a723058200e4c1a9ae71844c963009caf563c4d035c8361f00d8d4e3af0fd1fd0fd8610170029", + "deployedBytecode": "0x6080604052600436106101df576000357c01000000000000000000000000000000000000000000000000000000009004806370a0823111610114578063a10954fe116100b2578063d2fa635e11610081578063d2fa635e146106dd578063da12457a14610707578063dd62ed3e1461071c578063f2fde38b14610764576101df565b8063a10954fe146105f6578063a457c2d71461060b578063a9059cbb14610651578063b265c70214610697576101df565b80638da5cb5b116100ee5780638da5cb5b146105645780638f32d59b146105a257806395d89b41146105b757806396343886146105cc576101df565b806370a08231146104e5578063715018a6146105255780637cbed3e01461053a576101df565b806329a00e7c116101815780633de39c111161015b5780633de39c111461044f57806342966c681461046457806349f9b0f71461048e57806354fd4d50146104d0576101df565b806329a00e7c1461039c578063313ce567146103de5780633950935114610409576101df565b80630d8f9f7f116101bd5780630d8f9f7f146102fb5780631249c58b146101df57806318160ddd1461033757806323b872dd1461034c576101df565b806306fdde03146101e9578063095ea7b3146102735780630c7d5cd8146102cd575b6101e76107a4565b005b3480156101f557600080fd5b506101fe610822565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610238578181015183820152602001610220565b50505050905090810190601f1680156102655780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027f57600080fd5b506102b96004803603604081101561029657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356108b8565b604080519115158252519081900360200190f35b3480156102d957600080fd5b506102e26108d6565b6040805163ffffffff9092168252519081900360200190f35b34801561030757600080fd5b506103256004803603602081101561031e57600080fd5b50356108e2565b60408051918252519081900360200190f35b34801561034357600080fd5b5061032561090e565b34801561035857600080fd5b506102b96004803603606081101561036f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610914565b3480156103a857600080fd5b50610325600480360360808110156103bf57600080fd5b5080359060208101359063ffffffff60408201351690606001356109bc565b3480156103ea57600080fd5b506103f3610aff565b6040805160ff9092168252519081900360200190f35b34801561041557600080fd5b506102b96004803603604081101561042c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610b08565b34801561045b57600080fd5b50610325610b69565b34801561047057600080fd5b506101e76004803603602081101561048757600080fd5b5035610b6f565b34801561049a57600080fd5b50610325600480360360808110156104b157600080fd5b5080359060208101359063ffffffff6040820135169060600135610bc5565b3480156104dc57600080fd5b506101fe610d10565b3480156104f157600080fd5b506103256004803603602081101561050857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610d9e565b34801561053157600080fd5b506101e7610dc6565b34801561054657600080fd5b506103256004803603602081101561055d57600080fd5b5035610e98565b34801561057057600080fd5b50610579610ebc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156105ae57600080fd5b506102b9610ed8565b3480156105c357600080fd5b506101fe610f16565b3480156105d857600080fd5b506101e7600480360360208110156105ef57600080fd5b5035610f77565b34801561060257600080fd5b50610325610fc4565b34801561061757600080fd5b506102b96004803603604081101561062e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610fca565b34801561065d57600080fd5b506102b96004803603604081101561067457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611046565b3480156106a357600080fd5b506101e7600480360360408110156106ba57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561105a565b3480156106e957600080fd5b506101e76004803603602081101561070057600080fd5b50356110a8565b34801561071357600080fd5b50610325611110565b34801561072857600080fd5b506103256004803603604081101561073f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661111f565b34801561077057600080fd5b506101e76004803603602081101561078757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611157565b608b546040516127103460c881029190910492908390039173ffffffffffffffffffffffffffffffffffffffff909116906108fc8315029083906000818181858888f193505050501580156107fd573d6000803e3d6000fd5b50610807816111c6565b50608a5461081b908263ffffffff6112cc16565b608a555050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108ae5780601f10610883576101008083540402835291602001916108ae565b820191906000526020600020905b81548152906001019060200180831161089157829003601f168201915b5050505050905090565b60006108cc6108c5611335565b8484611339565b5060015b92915050565b60885463ffffffff1681565b60006109066108ef611110565b6108f7610fc4565b60885463ffffffff16856109bc565b90505b919050565b60035490565b6000610921848484611460565b6109b28461092d611335565b6109ad856060604051908101604052806028815260200161308a6028913973ffffffffffffffffffffffffffffffffffffffff8a16600090815260026020526040812090610979611335565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002054919063ffffffff61161416565b611339565b5060019392505050565b600080851180156109cd5750600084115b80156109df575060008363ffffffff16115b80156109f45750620f424063ffffffff841611155b1515610a4f5760408051600080516020613049833981519152815260206004820152600f60248201527f496e76616c696420696e707574732e0000000000000000000000000000000000604482015290519081900360640190fd5b811515610a5e57506000610af7565b63ffffffff8316620f42401415610a9657610a8f84610a83878563ffffffff6116b316565b9063ffffffff61171816565b9050610af7565b60008080610aaa858863ffffffff6112cc16565b9050610abb818888620f424061175a565b9093509150600060ff8316610ad68a8663ffffffff6116b316565b60029190910a90049050610af0818a63ffffffff61190616565b9450505050505b949350505050565b60065460ff1690565b60006108cc610b15611335565b846109ad8560026000610b26611335565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6112cc16565b60895481565b6000610b7a82611948565b608a54909150610b90908263ffffffff61190616565b608a55604051339082156108fc029083906000818181858888f19350505050158015610bc0573d6000803e3d6000fd5b505050565b60008085118015610bd65750600084115b8015610be8575060008363ffffffff16115b8015610bfd5750620f424063ffffffff841611155b8015610c095750848211155b1515610c645760408051600080516020613049833981519152815260206004820152600f60248201527f496e76616c696420696e707574732e0000000000000000000000000000000000604482015290519081900360640190fd5b811515610c7357506000610af7565b84821415610c82575082610af7565b63ffffffff8316620f42401415610ca757610a8f85610a83868563ffffffff6116b316565b60008080610cbb888663ffffffff61190616565b9050610ccc8882620f42408961175a565b90935091506000610ce3888563ffffffff6116b316565b905060ff831660020a8802610d0285610a83848463ffffffff61190616565b9a9950505050505050505050565b6007805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d965780601f10610d6b57610100808354040283529160200191610d96565b820191906000526020600020905b815481529060010190602001808311610d7957829003601f168201915b505050505081565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b610dce610ed8565b1515610e295760408051600080516020613049833981519152815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000610906610ea5611110565b610ead610fc4565b60885463ffffffff1685610bc5565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6000805473ffffffffffffffffffffffffffffffffffffffff16610efa611335565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108ae5780601f10610883576101008083540402835291602001916108ae565b610f813382611ab3565b604080513381526020810183905260008183015290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a150565b608a5490565b60006108cc610fd7611335565b846109ad85606060405190810160405280602581526020016131406025913960026000611002611335565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61161416565b60006108cc611053611335565b8484611460565b6110648282611bee565b604080513381526020810183905260008183015290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a15050565b6110b0610ed8565b151561110b5760408051600080516020613049833981519152815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b608955565b600061111a61090e565b905090565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b61115f610ed8565b15156111ba5760408051600080516020613049833981519152815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6111c381611c54565b50565b6089546000903a1115611212576040516000805160206130498339815191528152600401808060200182810382526048815260200180612fdb6048913960600191505060405180910390fd5b6000821161126f5760408051600080516020613049833981519152815260206004820152601960248201527f4465706f736974206d757374206265206e6f6e2d7a65726f2e00000000000000604482015290519081900360640190fd5b600061127a836108e2565b90506112863382611d3d565b604080513381526020810183905280820185905290517f25b428dfde728ccfaddad7e29e4ac23c24ed7fd1a6e3e3f91894a9a073f5dfff9181900360600190a192915050565b60008282018381101561132e5760408051600080516020613049833981519152815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316151561139557604051600080516020613049833981519152815260040180806020018281038252602481526020018061311c6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821615156113f1576040516000805160206130498339815191528152600401808060200182810382526022815260200180612fb96022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff831615156114bc5760405160008051602061304983398151915281526004018080602001828103825260258152602001806130f76025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161515611518576040516000805160206130498339815191528152600401808060200182810382526023815260200180612f4e6023913960400191505060405180910390fd5b61156981606060405190810160405280602681526020016130236026913973ffffffffffffffffffffffffffffffffffffffff8616600090815260016020526040902054919063ffffffff61161416565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546115ab908263ffffffff6112cc16565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156116ab5760405160008051602061304983398151915281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611670578181015183820152602001611658565b50505050905090810190601f16801561169d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008215156116c4575060006108d0565b8282028284828115156116d357fe5b041461132e5760405160008051602061304983398151915281526004018080602001828103825260218152602001806130696021913960400191505060405180910390fd5b600061132e83836040805190810160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e60565b60008070020000000000000000000000000000000086106117ca5760408051600080516020613049833981519152815260206004820152601860248201527f626173654e2065786365656473206d61782076616c75652e0000000000000000604482015290519081900360640190fd5b848610156118275760408051600080516020613049833981519152815260206004820152601c60248201527f4261736573203c203120617265206e6f7420737570706f727465642e00000000604482015290519081900360640190fd5b600080866f80000000000000000000000000000000890281151561184757fe5b04905070015bf0a8b1457695355fb8ac404e7a79e38110156118735761186c81611ed2565b915061187f565b61187c816123c6565b91505b60008563ffffffff168763ffffffff16840281151561189a57fe5b0490507008000000000000000000000000000000008110156118cd576118bf816124c5565b607f945094505050506118fd565b60006118d8826129aa565b90506118f060ff607f8390031660020a830482612a3c565b955093506118fd92505050565b94509492505050565b600061132e83836040805190810160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611614565b6089546000903a1115611994576040516000805160206130498339815191528152600401808060200182810382526048815260200180612fdb6048913960600191505060405180910390fd5b600082116119f15760408051600080516020613049833981519152815260206004820152601860248201527f416d6f756e74206d757374206265206e6f6e2d7a65726f2e0000000000000000604482015290519081900360640190fd5b816119fb33610d9e565b1015611a565760408051600080516020613049833981519152815260206004820152601c60248201527f496e73756666696369656e7420746f6b656e7320746f206275726e2e00000000604482015290519081900360640190fd5b6000611a6183610e98565b9050611a6d3384611ab3565b604080513381526020810185905280820183905290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a192915050565b73ffffffffffffffffffffffffffffffffffffffff82161515611b0f5760405160008051602061304983398151915281526004018080602001828103825260218152602001806130d66021913960400191505060405180910390fd5b611b608160606040519081016040528060228152602001612f716022913973ffffffffffffffffffffffffffffffffffffffff8516600090815260016020526040902054919063ffffffff61161416565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902055600354611b99908263ffffffff61190616565b60035560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b611bf88282611ab3565b611c5082611c04611335565b6109ad84606060405190810160405280602481526020016130b26024913973ffffffffffffffffffffffffffffffffffffffff8816600090815260026020526040812090610979611335565b5050565b73ffffffffffffffffffffffffffffffffffffffff81161515611cb0576040516000805160206130498339815191528152600401808060200182810382526026815260200180612f936026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff82161515611daf5760408051600080516020613049833981519152815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600354611dc2908263ffffffff6112cc16565b60035573ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054611dfb908263ffffffff6112cc16565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600081818411611eba57604051600080516020613049833981519152815260040180806020018281038252838181518152602001915080519060200190808383600083811015611670578181015183820152602001611658565b5060008385811515611ec857fe5b0495945050505050565b6000808080806fd3094c70f034de4b96ff7d5b6f99fcd88610611f2d576f4000000000000000000000000000000093909301926fd3094c70f034de4b96ff7d5b6f99fcd86f8000000000000000000000000000000087020495505b6fa45af1e1f40c333b3de1db4dd55f29a78610611f82576f2000000000000000000000000000000093909301926fa45af1e1f40c333b3de1db4dd55f29a76f8000000000000000000000000000000087020495505b6f910b022db7ae67ce76b441c27035c6a18610611fd7576f1000000000000000000000000000000093909301926f910b022db7ae67ce76b441c27035c6a16f8000000000000000000000000000000087020495505b6f88415abbe9a76bead8d00cf112e4d4a8861061202c576f0800000000000000000000000000000093909301926f88415abbe9a76bead8d00cf112e4d4a86f8000000000000000000000000000000087020495505b6f84102b00893f64c705e841d5d4064bd38610612081576f0400000000000000000000000000000093909301926f84102b00893f64c705e841d5d4064bd36f8000000000000000000000000000000087020495505b6f8204055aaef1c8bd5c3259f4822735a286106120d6576f0200000000000000000000000000000093909301926f8204055aaef1c8bd5c3259f4822735a26f8000000000000000000000000000000087020495505b6f810100ab00222d861931c15e39b44e99861061212b576f0100000000000000000000000000000093909301926f810100ab00222d861931c15e39b44e996f8000000000000000000000000000000087020495505b6f808040155aabbbe9451521693554f733861061217f576e80000000000000000000000000000093909301926f808040155aabbbe9451521693554f7336f8000000000000000000000000000000087020495505b7fffffffffffffffffffffffffffffffff80000000000000000000000000000000860192508291506f8000000000000000000000000000000082800204905070010000000000000000000000000000000083810383020493909301926f800000000000000000000000000000008282020491507002000000000000000000000000000000006faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa84900383020493909301926f800000000000000000000000000000008282020491507003000000000000000000000000000000006f9999999999999999999999999999999984900383020493909301926f800000000000000000000000000000008282020491507004000000000000000000000000000000006f9249249249249249249249249249249284900383020493909301926f800000000000000000000000000000008282020491507005000000000000000000000000000000006f8e38e38e38e38e38e38e38e38e38e38e84900383020493909301926f800000000000000000000000000000008282020491507006000000000000000000000000000000006f8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8b84900383020493909301926f800000000000000000000000000000008282020491507007000000000000000000000000000000006f89d89d89d89d89d89d89d89d89d89d8984900383020493909301926f800000000000000000000000000000008282020491507008000000000000000000000000000000006f888888888888888888888888888888888490038302049390930195945050505050565b6000808270010000000000000000000000000000000081106124205760006123ff6f800000000000000000000000000000008304612ede565b60ff166f800000000000000000000000000000008102935060020a90910490505b6f8000000000000000000000000000000081111561249857607f5b60008160ff161115612496576f80000000000000000000000000000000828002049150700100000000000000000000000000000000821061248d5760ff600019820116600290810a9390930192909104905b6000190161243b565b505b6f05b9de1d10bf4103d647b0955897ba806f03f80fe03f80fe03f80fe03f80fe03f8830204949350505050565b6000670168244fdac780006f800000000000000000000000000000006f0fffffffffffffffffffffffffffffff84168080028290048082028390048083028490049485026710e1b3be415a00009092026705a0913f6b1e000091909102010192909181830204905080664807432bc1800002830192506f8000000000000000000000000000000082820281151561255857fe5b04905080660c0135dca0400002830192506f8000000000000000000000000000000082820281151561258657fe5b049050806601b707b1cdc00002830192506f800000000000000000000000000000008282028115156125b457fe5b049050806536e0f639b80002830192506f800000000000000000000000000000008282028115156125e157fe5b04905080650618fee9f80002830192506f8000000000000000000000000000000082820281151561260e57fe5b04905080649c197dcc0002830192506f8000000000000000000000000000000082820281151561263a57fe5b04905080640e30dce40002830192506f8000000000000000000000000000000082820281151561266657fe5b0490508064012ebd130002830192506f8000000000000000000000000000000082820281151561269257fe5b049050806317499f0002830192506f800000000000000000000000000000008282028115156126bd57fe5b049050806301a9d48002830192506f800000000000000000000000000000008282028115156126e857fe5b04905080621c638002830192506f8000000000000000000000000000000082820281151561271257fe5b049050806201c63802830192506f8000000000000000000000000000000082820281151561273c57fe5b04905080611ab802830192506f8000000000000000000000000000000082820281151561276557fe5b0490508061017c02830192506f8000000000000000000000000000000082820281151561278e57fe5b04905080601402830192506f800000000000000000000000000000008282028115156127b657fe5b6721c3677c82b400009190049384010482016f80000000000000000000000000000000019290506f1000000000000000000000000000000085161561281f5770018ebef9eac820ae8682b9793ac6d1e7767001c3d6a24ed82218787d624d3e5eba95f984020492505b6f20000000000000000000000000000000851615612861577001368b2fc6f9609fe7aceb46aa619baed470018ebef9eac820ae8682b9793ac6d1e77884020492505b6f400000000000000000000000000000008516156128a2576fbc5ab1b16779be3575bd8f0520a9f21f7001368b2fc6f9609fe7aceb46aa619baed584020492505b6f800000000000000000000000000000008516156128e2576f454aaa8efe072e7f6ddbab84b40a55c96fbc5ab1b16779be3575bd8f0520a9f21e84020492505b700100000000000000000000000000000000851615612923576f0960aadc109e7a3bf4578099615711ea6f454aaa8efe072e7f6ddbab84b40a55c584020492505b700200000000000000000000000000000000851615612963576e2bf84208204f5977f9a8cf01fdce3d6f0960aadc109e7a3bf4578099615711d784020492505b7004000000000000000000000000000000008516156129a1576d03c6ab775dd0b95b4cbee7e65d116e2bf84208204f5977f9a8cf01fdc30784020492505b50909392505050565b60006020607f5b8060ff168260010160ff1610156129f9576000600260ff8484011604905084600860ff8316608081106129e057fe5b0154106129ef578092506129f3565b8091505b506129b1565b83600860ff831660808110612a0a57fe5b015410612a1a5791506109099050565b83600860ff841660808110612a2b57fe5b015410612a3a57509050610909565bfe5b60008083905060008090508360ff16858302908060020a82049150509150816f03442c4e6074a82f1797f72ac000000002810190508360ff16858302908060020a82049150509150816f0116b96f757c380fb287fd0e4000000002810190508360ff16858302908060020a82049150509150816e45ae5bdd5f0e03eca1ff439000000002810190508360ff16858302908060020a82049150509150816e0defabf91302cd95b9ffda5000000002810190508360ff16858302908060020a82049150509150816e02529ca9832b22439efff9b800000002810190508360ff16858302908060020a82049150509150816d54f1cf12bd04e516b6da8800000002810190508360ff16858302908060020a82049150509150816d0a9e39e257a09ca2d6db5100000002810190508360ff16858302908060020a82049150509150816d012e066e7b839fa050c30900000002810190508360ff16858302908060020a82049150509150816c1e33d7d926c329a1ad1a80000002810190508360ff16858302908060020a82049150509150816c02bee513bdb4a6b19b5f80000002810190508360ff16858302908060020a82049150509150816b3a9316fa79b88eccf2a0000002810190508360ff16858302908060020a82049150509150816b048177ebe1fa81237520000002810190508360ff16858302908060020a82049150509150816a5263fe90242dcbacf0000002810190508360ff16858302908060020a82049150509150816a057e22099c030d9410000002810190508360ff16858302908060020a82049150509150816957e22099c030d941000002810190508360ff16858302908060020a820491505091508169052b6b5456997631000002810190508360ff16858302908060020a8204915050915081684985f67696bf74800002810190508360ff16858302908060020a82049150509150816803dea12ea99e49800002810190508360ff16858302908060020a82049150509150816731880f2214b6e00002810190508360ff16858302908060020a820491505091508167025bcff56eb3600002810190508360ff16858302908060020a8204915050915081661b722e10ab100002810190508360ff16858302908060020a82049150509150816601317c7007700002810190508360ff16858302908060020a8204915050915081650cba84aafa0002810190508360ff16858302908060020a82049150509150816482573a0a0002810190508360ff16858302908060020a82049150509150816405035ad90002810190508360ff16858302908060020a8204915050915081632f881b0002810190508360ff16858302908060020a82049150509150816301b2934002810190508360ff16858302908060020a8204915050915081620efc4002810190508360ff16858302908060020a8204915050915081617fe002810190508360ff16858302908060020a820491505091508161042002810190508360ff16858302908060020a8204915050915081602102810190508360ff16858302908060020a8204915050915081600102810190508360ff1660019060020a02856f0688589cc0e9505e2f2fee558000000083811515612ed257fe5b04010195945050505050565b60008082610100811015612f0b575b6001811115612f06576001919091019060029004612eed565b612f46565b60805b60008160ff161115612f445760ff811660020a8210612f37579182179160ff811660020a909104905b600260ff90911604612f0e565b505b509291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373476173207072696365206d757374206265203c3d206d6178696d756d2067617320707269636520746f2070726576656e742066726f6e742072756e6e696e672061747461636b732e45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636508c379a000000000000000000000000000000000000000000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa165627a7a723058200e4c1a9ae71844c963009caf563c4d035c8361f00d8d4e3af0fd1fd0fd8610170029", + "sourceMap": "562:29:5:-;61:297:9;562:29:5;;61:297:9;562:29:5;;;;;;;;;;;;;;:::i;:::-;;160:10:3;131:39;;108:248:9;8:9:-1;5:2;;;30:1;27;20:12;5:2;108:248:9;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;108:248:9;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;0:372;;108:248:9;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;-1:-1;;108:248:9;;;;;;;;;;;;;;;-1:-1:-1;108:248:9;-1:-1:-1;296:5:9;108:248;;;;296:5;108:248;;;;;296:5;108:248;;698:17:17;718:12;:10;;;;:12;:::i;:::-;740:6;:18;;-1:-1:-1;;;;;;740:18:17;-1:-1:-1;;;;;740:18:17;;;;;;;773:43;;740:18;;-1:-1:-1;740:18:17;773:43;;740:6;;773:43;-1:-1:-1;504:12:19;;;;:5;;:12;;;;;:::i;:::-;-1:-1:-1;526:16:19;;;;:7;;:16;;;;;:::i;:::-;-1:-1:-1;552:9:19;:20;;-1:-1:-1;;552:20:19;;;;;;;;;;;;-1:-1:-1;;;;;;;;;4049:15:5;:54;-1:-1:-1;;;;;;;4113:15:5;:54;-1:-1:-1;;;;;;;4177:15:5;:54;-1:-1:-1;;;;;;;4241:15:5;:54;-1:-1:-1;;;;;;;4305:15:5;:54;-1:-1:-1;;;;;;;4369:15:5;:54;-1:-1:-1;;;;;;;4433:15:5;:54;-1:-1:-1;;;;;;;4497:15:5;:54;-1:-1:-1;;;;;;;4561:15:5;:54;-1:-1:-1;;;;;;;4625:15:5;:54;-1:-1:-1;;;;;;;4689:15:5;:54;4771:36;4753:15;:54;4835:36;4817:15;:54;4899:36;4881:15;:54;4963:36;4945:15;:54;5027:36;5009:15;:54;5091:36;5073:15;:54;5155:36;5137:15;:54;5219:36;5201:15;:54;5283:36;5265:15;:54;5347:36;5329:15;:54;5411:36;5393:15;:54;5475:36;5457:15;:54;5539:36;5521:15;:54;5603:36;5585:15;:54;5667:36;5649:15;:54;5731:36;5713:15;:54;5795:36;5777:15;:54;5859:36;5841:15;:54;5923:36;5905:15;:54;-1:-1:-1;;;;;5969:15:5;:54;6051:36;6033:15;:54;6115:36;6097:15;:54;6179:36;6161:15;:54;6243:36;6225:15;:54;6307:36;6289:15;:54;6371:36;6353:15;:54;6435:36;6417:15;:54;6499:36;6481:15;:54;6563:36;6545:15;:54;6627:36;6609:15;:54;6691:36;6673:15;:54;6755:36;6737:15;:54;6819:36;6801:15;:54;6883:36;6865:15;:54;6947:36;6929:15;:54;7011:36;6993:15;:54;7075:36;7057:15;:54;7139:36;7121:15;:54;7203:36;7185:15;:54;7267:36;7249:15;:54;7331:36;7313:15;:54;7395:36;7377:15;:54;7459:36;7441:15;:54;7523:36;7505:15;:54;7587:36;7569:15;:54;7651:36;7633:15;:54;7715:36;7697:15;:54;7779:36;7761:15;:54;7843:36;7825:15;:54;7907:36;7889:15;:54;7971:36;7953:15;:54;8035:36;8017:15;:54;-1:-1:-1;;;;;8081:15:5;:54;8163:36;8145:15;:54;8227:36;8209:15;:54;8291:36;8273:15;:54;8355:36;8337:15;:54;8420:36;8401:16;:55;8485:36;8466:16;:55;8550:36;8531:16;:55;8615:36;8596:16;:55;8680:36;8661:16;:55;8745:36;8726:16;:55;8810:36;8791:16;:55;8875:36;8856:16;:55;8940:36;8921:16;:55;9005:36;8986:16;:55;9070:36;9051:16;:55;9135:36;9116:16;:55;9200:36;9181:16;:55;9265:36;9246:16;:55;9330:36;9311:16;:55;9395:36;9376:16;:55;9460:36;9441:16;:55;9525:36;9506:16;:55;9590:36;9571:16;:55;9655:36;9636:16;:55;9720:36;9701:16;:55;9785:36;9766:16;:55;9850:36;9831:16;:55;9915:36;9896:16;:55;9980:36;9961:16;:55;10045:36;10026:16;:55;10110:36;10091:16;:55;10175:36;10156:16;:55;492:12:1;:28;;-1:-1:-1;;492:28:1;;;;;;;;;;;;871:33:10;877:10;889:14;871:5;;;;:33;:::i;:::-;-1:-1:-1;;475:9:12;465:7;:19;-1:-1:-1;;494:13:12;:26;;-1:-1:-1;;;;;;494:26:12;510:10;494:26;;;-1:-1:-1;61:297:9;;-1:-1:-1;;;;;;;;;;61:297:9;788:96:13;867:10;788:96;;:::o;5962:302:18:-;-1:-1:-1;;;;;6037:21:18;;;;6029:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6120:12;;:24;;6137:6;6120:16;;;;;;:24;:::i;:::-;6105:12;:39;-1:-1:-1;;;;;6175:18:18;;;;;;:9;:18;;;;;;:30;;6198:6;6175:22;;;;;;:30;:::i;:::-;-1:-1:-1;;;;;6154:18:18;;;;;;:9;:18;;;;;;;;:51;;;;6220:37;;;;;;;6154:18;;;;6220:37;;;;;;;;;;5962:302;;:::o;834:176:16:-;892:7;923:5;;;946:6;;;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:16:o;61:297:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;61:297:9;;;-1:-1:-1;61:297:9;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "61:297:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;564:6:12;:4;:6::i;:::-;61:297:9;644:81:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;644:81:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;644:81:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2500:149:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2500:149:18;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2500:149:18;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;408:26:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;408:26:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;533:206;;8:9:-1;5:2;;;30:1;27;20:12;5:2;533:206:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;533:206:1;;:::i;:::-;;;;;;;;;;;;;;;;1559:89:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1559:89:18;;;:::i;3107:300::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3107:300:18;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3107:300:18;;;;;;;;;;;;;;;;;;:::i;1129:975:4:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1129:975:4;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;1129:975:4;;;;;;;;;;;;;;;;;;;:::i;1472:81:19:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1472:81:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3802:207:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3802:207:18;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3802:207:18;;;;;;;;;:::i;131:39:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;131:39:3;;;:::i;969:184:12:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;969:184:12;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;969:184:12;;:::i;2789:1165:4:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2789:1165:4;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;2789:1165:4;;;;;;;;;;;;;;;;;;;:::i;562:29:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;562:29:5;;;:::i;1706:108:18:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1706:108:18;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1706:108:18;;;;:::i;1684:137:17:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1684:137:17;;;:::i;745:208:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;745:208:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;745:208:1;;:::i;899:77:17:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;899:77:17;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1250:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1250:92:17;;;:::i;838:85:19:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;838:85:19;;;:::i;1805:132:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1805:132:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1805:132:10;;:::i;1159:84:12:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1159:84:12;;;:::i;4496:258:18:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4496:258:18;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4496:258:18;;;;;;;;;:::i;2017:155::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2017:155:18;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2017:155:18;;;;;;;;;:::i;1943:150:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1943:150:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1943:150:10;;;;;;;;;:::i;347:98:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;347:98:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;347:98:3;;:::i;917:125:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;917:125:10;;;:::i;2230:132:18:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2230:132:18;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2230:132:18;;;;;;;;;;;:::i;1970:107:17:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1970:107:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1970:107:17;;;;:::i;662:301:12:-;830:13;;:38;;741:5;723:9;735:3;723:15;;:23;;;;;796:24;;;;;830:13;;;;;:38;;;;;796:24;;703:17;830:38;703:17;830:38;796:24;830:13;:38;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;830:38:12;878:31;894:14;878:15;:31::i;:::-;-1:-1:-1;929:7:12;;:27;;941:14;929:27;:11;:27;:::i;:::-;919:7;:37;-1:-1:-1;;662:301:12:o;644:81:19:-;713:5;706:12;;;;;;;;-1:-1:-1;;706:12:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;681:13;;706:12;;713:5;;706:12;;713:5;706:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:81;:::o;2500:149:18:-;2566:4;2582:39;2591:12;:10;:12::i;:::-;2605:7;2614:6;2582:8;:39::i;:::-;-1:-1:-1;2638:4:18;2500:149;;;;;:::o;408:26:1:-;;;;;;:::o;533:206::-;613:4;636:96;660:18;:16;:18::i;:::-;680:16;:14;:16::i;:::-;698:12;;;;712:19;636:23;:96::i;:::-;629:103;;533:206;;;;:::o;1559:89:18:-;1629:12;;1559:89;:::o;3107:300::-;3196:4;3212:36;3222:6;3230:9;3241:6;3212:9;:36::i;:::-;3258:121;3267:6;3275:12;:10;:12::i;:::-;3289:89;3327:6;3289:89;;;;;;;;;;;;;;;;;;:19;;;;;;;:11;:19;;;;;;3309:12;:10;:12::i;:::-;3289:33;;;;;;;;;;;;;-1:-1:-1;3289:33:18;;;:89;;:37;:89;:::i;:::-;3258:8;:121::i;:::-;-1:-1:-1;3396:4:18;3107:300;;;;;:::o;1129:975:4:-;1304:7;1371:1;1361:7;:11;:34;;;;;1394:1;1376:15;:19;1361:34;:55;;;;;1415:1;1399:13;:17;;;1361:55;:93;;;;-1:-1:-1;450:7:4;1420:34;;;;;1361:93;1353:121;;;;;;;-1:-1:-1;;;;;;;;;;;1353:121:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;1533:19;;1529:58;;;-1:-1:-1;1575:1:4;1568:8;;1529:58;1644:34;;;450:7;1644:34;1640:120;;;1701:48;1733:15;1701:27;:7;1713:14;1701:27;:11;:27;:::i;:::-;:31;:48;:31;:48;:::i;:::-;1694:55;;;;1640:120;1769:14;;;1834:35;:14;1853:15;1834:35;:18;:35;:::i;:::-;1818:51;;1901:85;1920:5;1927:15;1944:13;450:7;1901:5;:85::i;:::-;1879:107;;-1:-1:-1;1879:107:4;-1:-1:-1;1996:22:4;2021:32;;;:19;:7;1879:107;2021:19;:11;:19;:::i;:::-;49:1:-1;45:20;;;;25:41;;;-1:-1;2070:27:4;25:41:-1;2089:7:4;2070:27;:18;:27;:::i;:::-;2063:34;;;;;;1129:975;;;;;;;:::o;1472:81:19:-;1537:9;;;;1472:81;:::o;3802:207:18:-;3882:4;3898:83;3907:12;:10;:12::i;:::-;3921:7;3930:50;3969:10;3930:11;:25;3942:12;:10;:12::i;:::-;3930:25;;;;;;;;;;;;;;;;;;-1:-1:-1;3930:25:18;;;:34;;;;;;;;;;;:50;:38;:50;:::i;131:39:3:-;;;;:::o;969:184:12:-;1014:17;1034:24;1050:7;1034:15;:24::i;:::-;1078:7;;1014:44;;-1:-1:-1;1078:25:12;;1014:44;1078:25;:11;:25;:::i;:::-;1068:7;:35;1113:33;;:10;;:33;;;;;1133:12;;1113:33;;;;1133:12;1113:10;:33;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1113:33:12;969:184;;:::o;2789:1165:4:-;2957:7;3024:1;3014:7;:11;:34;;;;;3047:1;3029:15;:19;3014:34;:55;;;;;3068:1;3052:13;:17;;;3014:55;:93;;;;-1:-1:-1;450:7:4;3073:34;;;;;3014:93;:119;;;;;3126:7;3111:11;:22;;3014:119;3006:147;;;;;;;-1:-1:-1;;;;;;;;;;;3006:147:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;3209:16;;3205:55;;;-1:-1:-1;3248:1:4;3241:8;;3205:55;3342:7;3327:11;:22;3323:75;;;-1:-1:-1;3372:15:4;3365:22;;3323:75;3455:34;;;450:7;3455:34;3451:117;;;3512:45;3549:7;3512:32;:15;3532:11;3512:32;:19;:32;:::i;3451:117::-;3577:14;;;3642:24;:7;3654:11;3642:24;:11;:24;:::i;:::-;3626:40;;3698:77;3717:7;3726:5;450:7;3752:13;3698:5;:77::i;:::-;3676:99;;-1:-1:-1;3676:99:4;-1:-1:-1;3785:18:4;3806:27;:15;3676:99;3806:27;:19;:27;:::i;:::-;3785:48;-1:-1:-1;3864:28:4;;;;;;;3909:38;3940:6;3909:26;3785:48;3864:28;3909:26;:14;:26;:::i;:38::-;3902:45;2789:1165;-1:-1:-1;;;;;;;;;;2789:1165:4:o;562:29:5:-;;;;;;;;;;;;;;;-1:-1:-1;;562:29:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1706:108:18:-;1789:18;;1763:7;1789:18;;;:9;:18;;;;;;;1706:108::o;1684:137:17:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;-1:-1:-1;;;;;;;;;;;1095:54:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1782:1;1766:6;;1745:40;;;1766:6;;;;1745:40;;1782:1;;1745:40;1812:1;1795:19;;;;;;1684:137::o;745:208:1:-;828:4;851:95;871:18;:16;:18::i;:::-;891:16;:14;:16::i;:::-;909:12;;;;923:22;851:19;:95::i;899:77:17:-;937:7;963:6;;;899:77;:::o;1250:92::-;1290:4;1329:6;;;;1313:12;:10;:12::i;:::-;:22;;;1306:29;;1250:92;:::o;838:85:19:-;909:7;902:14;;;;;;;;-1:-1:-1;;902:14:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;877:13;;902:14;;909:7;;902:14;;909:7;902:14;;;;;;;;;;;;;;;;;;;;;;;;1805:132:10;1859:26;1865:10;1877:7;1859:5;:26::i;:::-;1900:30;;;1907:10;1900:30;;;;;;;;1928:1;1900:30;;;;;;;;;;;;;;;1805:132;:::o;1159:84:12:-;1229:7;;1159:84;:::o;4496:258:18:-;4581:4;4597:129;4606:12;:10;:12::i;:::-;4620:7;4629:96;4668:15;4629:96;;;;;;;;;;;;;;;;;;:11;:25;4641:12;:10;:12::i;:::-;4629:25;;;;;;;;;;;;;;;;;;-1:-1:-1;4629:25:18;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;2017:155::-;2086:4;2102:42;2112:12;:10;:12::i;:::-;2126:9;2137:6;2102:9;:42::i;1943:150:10:-;2016:25;2026:5;2033:7;2016:9;:25::i;:::-;2056:30;;;2063:10;2056:30;;;;;;;;2084:1;2056:30;;;;;;;;;;;;;;;1943:150;;:::o;347:98:3:-;1103:9:17;:7;:9::i;:::-;1095:54;;;;;;;-1:-1:-1;;;;;;;;;;;1095:54:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;416:11:3;:22;347:98::o;917:125:10:-;966:4;989:13;:11;:13::i;:::-;982:20;;917:125;:::o;2230:132:18:-;2328:18;;;;2302:7;2328:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2230:132::o;1970:107:17:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;-1:-1:-1;;;;;;;;;;;1095:54:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2042:28;2061:8;2042:18;:28::i;:::-;1970:107;:::o;1048:336:10:-;235:11:3;;1120:4:10;;220:11:3;:26;;212:111;;;;-1:-1:-1;;;;;;;;;;;212:111:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1155:1:10;1144:12;;1136:50;;;;;-1:-1:-1;;;;;;;;;;;1136:50:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;1197:17;1217:33;1241:8;1217:23;:33::i;:::-;1197:53;;1260:31;1266:10;1278:12;1260:5;:31::i;:::-;1306:42;;;1313:10;1306:42;;;;;;;;;;;;;;;;;;;;;;;;;1365:12;1048:336;-1:-1:-1;;1048:336:10:o;834:176:16:-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;;;;;;;;;938:46:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:16:o;788:96:13:-;867:10;788:96;:::o;7350:332:18:-;7443:19;;;;;7435:68;;;;-1:-1:-1;;;;;;;;;;;7435:68:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7521:21;;;;;7513:68;;;;-1:-1:-1;;;;;;;;;;;7513:68:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7592:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7643:32;;;;;;;;;;;;;;;;;7350:332;;;:::o;5228:464::-;5325:20;;;;;5317:70;;;;-1:-1:-1;;;;;;;;;;;5317:70:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5405:23;;;;;5397:71;;;;-1:-1:-1;;;;;;;;;;;5397:71:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5499;5521:6;5499:71;;;;;;;;;;;;;;;;;;:17;;;;;;;:9;:17;;;;;;;:71;;:21;:71;:::i;:::-;5479:17;;;;;;;;:9;:17;;;;;;:91;;;;5603:20;;;;;;;:32;;5628:6;5603:32;:24;:32;:::i;:::-;5580:20;;;;;;;;:9;:20;;;;;;;;;:55;;;;5650:35;;;;;;;5580:20;;5650:35;;;;;;;;;;;;;5228:464;;;:::o;1732:187:16:-;1818:7;1853:12;1845:6;;;;1837:29;;;;-1:-1:-1;;;;;;;;;;;1837:29:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1837:29:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1888:5:16;;;1732:187::o;2159:459::-;2217:7;2458:6;;2454:45;;;-1:-1:-1;2487:1:16;2480:8;;2454:45;2521:5;;;2525:1;2521;:5;2544;;;;;;;;:10;2536:56;;;;-1:-1:-1;;;;;;;;;;;2536:56:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3073:130;3131:7;3157:39;3161:1;3164;3157:39;;;;;;;;;;;;;;;;;;:3;:39::i;11604:892:5:-;11740:7;;1161:35;11778:16;;11770:53;;;;;-1:-1:-1;;;;;;;;;;;11770:53:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;11841:16;;;;11833:57;;;;;-1:-1:-1;;;;;;;;;;;11833:57:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;11901:15;11926:12;11960:6;1009:35;11941:6;:16;:25;;;;;;;;11926:40;;1585:35;11980:4;:22;11976:136;;;12028:16;12039:4;12028:10;:16::i;:::-;12018:26;;11976:136;;;12085:16;12096:4;12085:10;:16::i;:::-;12075:26;;11976:136;12122:23;12166:5;12148:23;;12158:5;12148:15;;:7;:15;:23;;;;;;;;12122:49;;1669:35;12185:15;:33;12181:309;;;12242:27;12253:15;12242:10;:27::i;:::-;772:3;12234:51;;;;;;;;;12181:309;12316:15;12334:42;12360:15;12334:25;:42::i;:::-;12316:60;-1:-1:-1;12398:69:5;12409:46;772:3;12429:25;;;12409:46;49:1:-1;45:20;25:41;;12316:60:5;12398:10;:69::i;:::-;12390:89;-1:-1:-1;12469:9:5;-1:-1:-1;12390:89:5;;-1:-1:-1;;;12390:89:5;11604:892;;;;;;;;:::o;1274:134:16:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;;:3;:43::i;1390:409:10:-;235:11:3;;1461:4:10;;220:11:3;:26;;212:111;;;;-1:-1:-1;;;;;;;;;;;212:111:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1495:1:10;1485:11;;1477:48;;;;;-1:-1:-1;;;;;;;;;;;1477:48:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;1568:7;1543:21;1553:10;1543:9;:21::i;:::-;:32;;1535:73;;;;;-1:-1:-1;;;;;;;;;;;1535:73:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;1619:17;1639:32;1663:7;1639:23;:32::i;:::-;1619:52;;1681:26;1687:10;1699:7;1681:5;:26::i;:::-;1722:41;;;1729:10;1722:41;;;;;;;;;;;;;;;;;;;;;;;;;1780:12;1390:409;-1:-1:-1;;1390:409:10:o;6583:342:18:-;6658:21;;;;;6650:67;;;;-1:-1:-1;;;;;;;;;;;6650:67:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6749:68;6772:6;6749:68;;;;;;;;;;;;;;;;;;:18;;;;;;;:9;:18;;;;;;;:68;;:22;:68;:::i;:::-;6728:18;;;;;;;:9;:18;;;;;:89;6842:12;;:24;;6859:6;6842:24;:16;:24;:::i;:::-;6827:12;:39;6881:37;;;;;;;;6907:1;;6881:37;;;;;;;;;;;;;6583:342;;:::o;7860:229::-;7931:22;7937:7;7946:6;7931:5;:22::i;:::-;7963:119;7972:7;7981:12;:10;:12::i;:::-;7995:86;8034:6;7995:86;;;;;;;;;;;;;;;;;;:20;;;;;;;:11;:20;;;;;;8016:12;:10;:12::i;7963:119::-;7860:229;;:::o;2178:225:17:-;2251:22;;;;;2243:73;;;;-1:-1:-1;;;;;;;;;;;2243:73:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2352:6;;;2331:38;;;;;;;2352:6;;;2331:38;;;2379:6;:17;;;;;;;;;;;;;;;2178:225::o;5962:302:18:-;6037:21;;;;;6029:65;;;;;-1:-1:-1;;;;;;;;;;;6029:65:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;6120:12;;:24;;6137:6;6120:24;:16;:24;:::i;:::-;6105:12;:39;6175:18;;;;;;;:9;:18;;;;;;:30;;6198:6;6175:30;:22;:30;:::i;:::-;6154:18;;;;;;;:9;:18;;;;;;;;:51;;;;6220:37;;;;;;;6154:18;;;;6220:37;;;;;;;;;;5962:302;;:::o;3718:338:16:-;3804:7;3904:12;3897:5;;;3889:28;;;;-1:-1:-1;;;;;;;;;;;3889:28:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3889:28:16;;3927:9;3943:1;3939;:5;;;;;;;;;3718:338;-1:-1:-1;;;;;3718:338:16:o;19589:2397:5:-;19643:7;;;;;19755:34;19750:39;;19746:143;;19799:34;19792:41;;;;;19853:34;1009:35;19839:11;;:48;19835:52;;19746:143;19907:34;19902:39;;19898:143;;19951:34;19944:41;;;;;20005:34;1009:35;19991:11;;:48;19987:52;;19898:143;20059:34;20054:39;;20050:143;;20103:34;20096:41;;;;;20157:34;1009:35;20143:11;;:48;20139:52;;20050:143;20211:34;20206:39;;20202:143;;20255:34;20248:41;;;;;20309:34;1009:35;20295:11;;:48;20291:52;;20202:143;20363:34;20358:39;;20354:143;;20407:34;20400:41;;;;;20461:34;1009:35;20447:11;;:48;20443:52;;20354:143;20515:34;20510:39;;20506:143;;20559:34;20552:41;;;;;20613:34;1009:35;20599:11;;:48;20595:52;;20506:143;20667:34;20662:39;;20658:143;;20711:34;20704:41;;;;;20765:34;1009:35;20751:11;;:48;20747:52;;20658:143;20819:34;20814:39;;20810:143;;20863:34;20856:41;;;;;20917:34;1009:35;20903:11;;:48;20899:52;;20810:143;20971:11;;;;-1:-1:-1;20971:11:5;;-1:-1:-1;1009:35:5;20996:5;;;:15;;-1:-1:-1;21076:35:5;21033:39;;;21028:45;;:83;21021:90;;;;;1009:35;21117:5;;;:15;;-1:-1:-1;21197:35:5;21154;:39;;;21149:45;;:83;21142:90;;;;;1009:35;21238:5;;;:15;;-1:-1:-1;21318:35:5;21275;:39;;;21270:45;;:83;21263:90;;;;;1009:35;21359:5;;;:15;;-1:-1:-1;21439:35:5;21396;:39;;;21391:45;;:83;21384:90;;;;;1009:35;21480:5;;;:15;;-1:-1:-1;21560:35:5;21517;:39;;;21512:45;;:83;21505:90;;;;;1009:35;21601:5;;;:15;;-1:-1:-1;21681:35:5;21638;:39;;;21633:45;;:83;21626:90;;;;;1009:35;21722:5;;;:15;;-1:-1:-1;21802:35:5;21759;:39;;;21754:45;;:83;21747:90;;;;;1009:35;21843:5;;;:15;;-1:-1:-1;21923:35:5;21880;:39;;;21875:45;;:83;21868:90;;;;;19589:2397;-1:-1:-1;;;;;19589:2397:5:o;12661:826::-;12716:7;;12772:2;1085:35;12880:12;;12876:152;;12908:11;12922:22;1009:35;12932:1;:11;12922:9;:22::i;:::-;12958:11;;1009:35;13002:15;;;-1:-1:-1;49:1;45:20;25:41;;;;-1:-1;12876:152:5;1009:35;13133:1;:11;13129:297;;;772:3;13160:256;13194:1;13190;:5;;;13160:256;;;1009:35;13225:5;;;13224:17;;-1:-1:-1;1085:35:5;13280:12;;13276:126;;13369:14;-1:-1:-1;;13377:5:5;;13369:14;49:1:-1;13369:14:5;;;13362:21;;;;;25:41:-1;;;;13276:126:5;-1:-1:-1;;13197:3:5;13160:256;;;;13129:297;1398:33;1316;13443:19;;:37;;12661:826;-1:-1:-1;;;;12661:826:5:o;22157:2980::-;22211:7;22555:18;1009:35;22303:38;;;22355:5;;;:15;;;22441:5;;;:15;;;22527:5;;;:15;;;22551:22;;;22383:18;22379:22;;;22469:18;22465:22;;;;22458:29;22544;;22303:38;;22613:5;;;:15;22609:19;;22637:1;22641:18;22637:22;22630:29;;;;1009:35;22703:1;22699;:5;:15;;;;;;;;22695:19;;22723:1;22727:18;22723:22;22716:29;;;;1009:35;22789:1;22785;:5;:15;;;;;;;;22781:19;;22809:1;22813:18;22809:22;22802:29;;;;1009:35;22875:1;22871;:5;:15;;;;;;;;22867:19;;22895:1;22899:18;22895:22;22888:29;;;;1009:35;22961:1;22957;:5;:15;;;;;;;;22953:19;;22981:1;22985:18;22981:22;22974:29;;;;1009:35;23047:1;23043;:5;:15;;;;;;;;23039:19;;23067:1;23071:18;23067:22;23060:29;;;;1009:35;23133:1;23129;:5;:15;;;;;;;;23125:19;;23153:1;23157:18;23153:22;23146:29;;;;1009:35;23219:1;23215;:5;:15;;;;;;;;23211:19;;23239:1;23243:18;23239:22;23232:29;;;;1009:35;23305:1;23301;:5;:15;;;;;;;;23297:19;;23325:1;23329:18;23325:22;23318:29;;;;1009:35;23391:1;23387;:5;:15;;;;;;;;23383:19;;23411:1;23415:18;23411:22;23404:29;;;;1009:35;23477:1;23473;:5;:15;;;;;;;;23469:19;;23497:1;23501:18;23497:22;23490:29;;;;1009:35;23563:1;23559;:5;:15;;;;;;;;23555:19;;23583:1;23587:18;23583:22;23576:29;;;;1009:35;23649:1;23645;:5;:15;;;;;;;;23641:19;;23669:1;23673:18;23669:22;23662:29;;;;1009:35;23735:1;23731;:5;:15;;;;;;;;23727:19;;23755:1;23759:18;23755:22;23748:29;;;;1009:35;23821:1;23817;:5;:15;;;;;;;;23813:19;;23841:1;23845:18;23841:22;23834:29;;;;1009:35;23907:1;23903;:5;:15;;;;;;;23997:18;23903:15;;;23920:29;;;23991:24;:28;;1009:35;23991:38;;23903:15;-1:-1:-1;24099:35:5;24095:39;;24094:46;24090:137;;24192:35;24154;24148:41;;:79;24142:85;;24090:137;24246:35;24242:39;;24241:46;24237:137;;24339:35;24301;24295:41;;:79;24289:85;;24237:137;24393:35;24389:39;;24388:46;24384:137;;24486:35;24448;24442:41;;:79;24436:85;;24384:137;24540:35;24536:39;;24535:46;24531:137;;24633:35;24595;24589:41;;:79;24583:85;;24531:137;24687:35;24683:39;;24682:46;24678:137;;24780:35;24742;24736:41;;:79;24730:85;;24678:137;24834:35;24830:39;;24829:46;24825:137;;24927:35;24889;24883:41;;:79;24877:85;;24825:137;24981:35;24977:39;;24976:46;24972:137;;25074:35;25036;25030:41;;:79;25024:85;;24972:137;-1:-1:-1;25127:3:5;;22157:2980;-1:-1:-1;;;22157:2980:5:o;14495:508::-;14569:5;725:2;772:3;14659:179;14675:2;14666:11;;:2;14671:1;14666:6;:11;;;14659:179;;;14693:9;14717:1;14705:13;14706:7;;;14705:13;;;-1:-1:-1;14756:2:5;14736:11;:16;;;;;;;;;;;;:22;14732:95;;14781:3;14776:8;;14732:95;;;14824:3;14819:8;;14732:95;14659:179;;;;14871:2;14852:11;:15;;;;;;;;;;;;:21;14848:48;;14894:2;-1:-1:-1;14887:9:5;;-1:-1:-1;14887:9:5;14848:48;14929:2;14910:11;:15;;;;;;;;;;;;:21;14906:48;;-1:-1:-1;14952:2:5;-1:-1:-1;14945:9:5;;14906:48;14965:13;15587:3826;15660:7;15679:10;15692:2;15679:15;;15704:11;15718:1;15704:15;;15748:10;15735:23;;15741:2;15736;:7;15735:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;15735:23:5;15730:28;;15767:2;15772:33;15767:38;15760:45;;;;15859:10;15846:23;;15852:2;15847;:7;15846:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;15846:23:5;15841:28;;15878:2;15883:33;15878:38;15871:45;;;;15970:10;15957:23;;15963:2;15958;:7;15957:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;15957:23:5;15952:28;;15989:2;15994:33;15989:38;15982:45;;;;16081:10;16068:23;;16074:2;16069;:7;16068:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16068:23:5;16063:28;;16100:2;16105:33;16100:38;16093:45;;;;16192:10;16179:23;;16185:2;16180;:7;16179:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16179:23:5;16174:28;;16211:2;16216:33;16211:38;16204:45;;;;16303:10;16290:23;;16296:2;16291;:7;16290:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16290:23:5;16285:28;;16322:2;16327:33;16322:38;16315:45;;;;16414:10;16401:23;;16407:2;16402;:7;16401:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16401:23:5;16396:28;;16433:2;16438:33;16433:38;16426:45;;;;16525:10;16512:23;;16518:2;16513;:7;16512:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16512:23:5;16507:28;;16544:2;16549:33;16544:38;16537:45;;;;16636:10;16623:23;;16629:2;16624;:7;16623:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16623:23:5;16618:28;;16655:2;16660:33;16655:38;16648:45;;;;16747:10;16734:23;;16740:2;16735;:7;16734:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16734:23:5;16729:28;;16766:2;16771:33;16766:38;16759:45;;;;16858:10;16845:23;;16851:2;16846;:7;16845:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16845:23:5;16840:28;;16877:2;16882:33;16877:38;16870:45;;;;16969:10;16956:23;;16962:2;16957;:7;16956:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16956:23:5;16951:28;;16988:2;16993:33;16988:38;16981:45;;;;17080:10;17067:23;;17073:2;17068;:7;17067:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17067:23:5;17062:28;;17099:2;17104:33;17099:38;17092:45;;;;17191:10;17178:23;;17184:2;17179;:7;17178:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17178:23:5;17173:28;;17210:2;17215:33;17210:38;17203:45;;;;17302:10;17289:23;;17295:2;17290;:7;17289:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17289:23:5;17284:28;;17321:2;17326:33;17321:38;17314:45;;;;17413:10;17400:23;;17406:2;17401;:7;17400:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17400:23:5;17395:28;;17432:2;17437:33;17432:38;17425:45;;;;17524:10;17511:23;;17517:2;17512;:7;17511:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17511:23:5;17506:28;;17543:2;17548:33;17543:38;17536:45;;;;17635:10;17622:23;;17628:2;17623;:7;17622:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17622:23:5;17617:28;;17654:2;17659:33;17654:38;17647:45;;;;17746:10;17733:23;;17739:2;17734;:7;17733:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17733:23:5;17728:28;;17765:2;17770:33;17765:38;17758:45;;;;17857:10;17844:23;;17850:2;17845;:7;17844:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17844:23:5;17839:28;;17876:2;17881:33;17876:38;17869:45;;;;17968:10;17955:23;;17961:2;17956;:7;17955:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17955:23:5;17950:28;;17987:2;17992:33;17987:38;17980:45;;;;18079:10;18066:23;;18072:2;18067;:7;18066:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18066:23:5;18061:28;;18098:2;18103:33;18098:38;18091:45;;;;18190:10;18177:23;;18183:2;18178;:7;18177:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18177:23:5;18172:28;;18209:2;18214:33;18209:38;18202:45;;;;18301:10;18288:23;;18294:2;18289;:7;18288:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18288:23:5;18283:28;;18320:2;18325:33;18320:38;18313:45;;;;18412:10;18399:23;;18405:2;18400;:7;18399:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18399:23:5;18394:28;;18431:2;18436:33;18431:38;18424:45;;;;18523:10;18510:23;;18516:2;18511;:7;18510:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18510:23:5;18505:28;;18542:2;18547:33;18542:38;18535:45;;;;18634:10;18621:23;;18627:2;18622;:7;18621:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18621:23:5;18616:28;;18653:2;18658:33;18653:38;18646:45;;;;18745:10;18732:23;;18738:2;18733;:7;18732:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18732:23:5;18727:28;;18764:2;18769:33;18764:38;18757:45;;;;18856:10;18843:23;;18849:2;18844;:7;18843:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18843:23:5;18838:28;;18875:2;18880:33;18875:38;18868:45;;;;18967:10;18954:23;;18960:2;18955;:7;18954:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18954:23:5;18949:28;;18986:2;18991:33;18986:38;18979:45;;;;19078:10;19065:23;;19071:2;19066;:7;19065:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;19065:23:5;19060:28;;19097:2;19102:33;19097:38;19090:45;;;;19189:10;19176:23;;19182:2;19177;:7;19176:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;19176:23:5;19171:28;;19208:2;19213:33;19208:38;19201:45;;;;19345:10;19338:17;;629:1;19338:17;;;;19332:2;19296:33;19290:3;:39;;;;;;;;:44;:66;;15587:3826;-1:-1:-1;;;;;15587:3826:5:o;13602:532::-;13656:5;;13708:2;13729:3;13725:7;;13721:386;;;13784:80;13795:1;13791;:5;13784:80;;;13822:1;13841:8;;;;;49:1:-1;25:41;;13784:80:5;;;13721:386;;;13945:3;13930:167;13954:1;13950;:5;;;13930:167;;;13994:8;;;;;13988:15;;13984:99;;14056:8;;;;14027:7;;;49:1:-1;45:20;25:41;;;;13984:99:5;49:1:-1;13957:7:5;;;;25:41:-1;13930:167:5;;;;13721:386;-1:-1:-1;14124:3:5;13602:532;-1:-1:-1;;13602:532:5:o", + "source": "pragma solidity ^0.5.2;\n\nimport \"./ETHContinuousToken.sol\";\n\ncontract ArtistToken3 is ETHContinuousToken {\n\tconstructor(\n string memory _name,\n string memory _symbol,\n uint8 _decimals,\n uint _initialSupply,\n uint32 _reserveRatio\n ) public ETHContinuousToken(_name, _symbol, _decimals, _initialSupply, _reserveRatio) {}\n}", + "sourcePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/token/ArtistToken3.sol", + "ast": { + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/token/ArtistToken3.sol", + "exportedSymbols": { + "ArtistToken3": [ + 2656 + ] + }, + "id": 2657, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2631, + "literals": [ + "solidity", + "^", + "0.5", + ".2" + ], + "nodeType": "PragmaDirective", + "src": "0:23:9" + }, + { + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/token/ETHContinuousToken.sol", + "file": "./ETHContinuousToken.sol", + "id": 2632, + "nodeType": "ImportDirective", + "scope": 2657, + "sourceUnit": 3078, + "src": "25:34:9", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2633, + "name": "ETHContinuousToken", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3077, + "src": "86:18:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ETHContinuousToken_$3077", + "typeString": "contract ETHContinuousToken" + } + }, + "id": 2634, + "nodeType": "InheritanceSpecifier", + "src": "86:18:9" + } + ], + "contractDependencies": [ + 122, + 139, + 176, + 389, + 2569, + 2856, + 3077, + 3104, + 3597, + 4002, + 4060, + 4157 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 2656, + "linearizedBaseContracts": [ + 2656, + 3077, + 2856, + 176, + 122, + 389, + 2569, + 139, + 4060, + 4002, + 3597, + 4157, + 3104 + ], + "name": "ArtistToken3", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 2654, + "nodeType": "Block", + "src": "354:2:9", + "statements": [] + }, + "documentation": null, + "id": 2655, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 2647, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2636, + "src": "296:5:9", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 2648, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2638, + "src": "303:7:9", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 2649, + "name": "_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2640, + "src": "312:9:9", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 2650, + "name": "_initialSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2642, + "src": "323:14:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2651, + "name": "_reserveRatio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2644, + "src": "339:13:9", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "id": 2652, + "modifierName": { + "argumentTypes": null, + "id": 2646, + "name": "ETHContinuousToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3077, + "src": "277:18:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ETHContinuousToken_$3077_$", + "typeString": "type(contract ETHContinuousToken)" + } + }, + "nodeType": "ModifierInvocation", + "src": "277:76:9" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2645, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2636, + "name": "_name", + "nodeType": "VariableDeclaration", + "scope": 2655, + "src": "129:19:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2635, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "129:6:9", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2638, + "name": "_symbol", + "nodeType": "VariableDeclaration", + "scope": 2655, + "src": "158:21:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2637, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "158:6:9", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2640, + "name": "_decimals", + "nodeType": "VariableDeclaration", + "scope": 2655, + "src": "189:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2639, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "189:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2642, + "name": "_initialSupply", + "nodeType": "VariableDeclaration", + "scope": 2655, + "src": "214:19:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2641, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "214:4:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2644, + "name": "_reserveRatio", + "nodeType": "VariableDeclaration", + "scope": 2655, + "src": "243:20:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 2643, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "243:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "119:150:9" + }, + "returnParameters": { + "id": 2653, + "nodeType": "ParameterList", + "parameters": [], + "src": "354:0:9" + }, + "scope": 2656, + "src": "108:248:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 2657, + "src": "61:297:9" + } + ], + "src": "0:358:9" + }, + "legacyAST": { + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/token/ArtistToken3.sol", + "exportedSymbols": { + "ArtistToken3": [ + 2656 + ] + }, + "id": 2657, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2631, + "literals": [ + "solidity", + "^", + "0.5", + ".2" + ], + "nodeType": "PragmaDirective", + "src": "0:23:9" + }, + { + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/token/ETHContinuousToken.sol", + "file": "./ETHContinuousToken.sol", + "id": 2632, + "nodeType": "ImportDirective", + "scope": 2657, + "sourceUnit": 3078, + "src": "25:34:9", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2633, + "name": "ETHContinuousToken", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3077, + "src": "86:18:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ETHContinuousToken_$3077", + "typeString": "contract ETHContinuousToken" + } + }, + "id": 2634, + "nodeType": "InheritanceSpecifier", + "src": "86:18:9" + } + ], + "contractDependencies": [ + 122, + 139, + 176, + 389, + 2569, + 2856, + 3077, + 3104, + 3597, + 4002, + 4060, + 4157 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 2656, + "linearizedBaseContracts": [ + 2656, + 3077, + 2856, + 176, + 122, + 389, + 2569, + 139, + 4060, + 4002, + 3597, + 4157, + 3104 + ], + "name": "ArtistToken3", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 2654, + "nodeType": "Block", + "src": "354:2:9", + "statements": [] + }, + "documentation": null, + "id": 2655, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 2647, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2636, + "src": "296:5:9", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 2648, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2638, + "src": "303:7:9", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 2649, + "name": "_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2640, + "src": "312:9:9", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 2650, + "name": "_initialSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2642, + "src": "323:14:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2651, + "name": "_reserveRatio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2644, + "src": "339:13:9", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "id": 2652, + "modifierName": { + "argumentTypes": null, + "id": 2646, + "name": "ETHContinuousToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3077, + "src": "277:18:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ETHContinuousToken_$3077_$", + "typeString": "type(contract ETHContinuousToken)" + } + }, + "nodeType": "ModifierInvocation", + "src": "277:76:9" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2645, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2636, + "name": "_name", + "nodeType": "VariableDeclaration", + "scope": 2655, + "src": "129:19:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2635, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "129:6:9", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2638, + "name": "_symbol", + "nodeType": "VariableDeclaration", + "scope": 2655, + "src": "158:21:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2637, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "158:6:9", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2640, + "name": "_decimals", + "nodeType": "VariableDeclaration", + "scope": 2655, + "src": "189:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2639, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "189:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2642, + "name": "_initialSupply", + "nodeType": "VariableDeclaration", + "scope": 2655, + "src": "214:19:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2641, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "214:4:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2644, + "name": "_reserveRatio", + "nodeType": "VariableDeclaration", + "scope": 2655, + "src": "243:20:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 2643, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "243:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "119:150:9" + }, + "returnParameters": { + "id": 2653, + "nodeType": "ParameterList", + "parameters": [], + "src": "354:0:9" + }, + "scope": 2656, + "src": "108:248:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 2657, + "src": "61:297:9" + } + ], + "src": "0:358:9" + }, + "compiler": { + "name": "solc", + "version": "0.5.2+commit.1df8f40c.Emscripten.clang" + }, + "networks": { + "9545": { + "events": {}, + "links": {}, + "address": "0x5b9b42d6e4B2e4Bf8d42Eba32D46918e10899B66", + "transactionHash": "0x8240478426522cc117e213c48cefc7058213d4269d68b989d7a9656f5aa6bee8" + } + }, + "schemaVersion": "3.0.1", + "updatedAt": "2020-02-16T15:03:02.008Z", + "devdoc": { + "methods": { + "allowance(address,address)": { + "details": "See {IERC20-allowance}." + }, + "approve(address,uint256)": { + "details": "See {IERC20-approve}. * Requirements: * - `spender` cannot be the zero address." + }, + "balanceOf(address)": { + "details": "See {IERC20-balanceOf}." + }, + "calculatePurchaseReturn(uint256,uint256,uint32,uint256)": { + "details": "given a continuous token supply, reserve token balance, reserve ratio, and a deposit amount (in the reserve token), calculates the return for a given conversion (in the continuous token) * Formula: Return = _supply * ((1 + _depositAmount / _reserveBalance) ^ (_reserveRatio / MAX_RESERVE_RATIO) - 1)", + "params": { + "_depositAmount": "deposit amount, in reserve token", + "_reserveBalance": "total reserve token balance", + "_reserveRatio": "reserve ratio, represented in ppm, 1-1000000", + "_supply": "continuous token total supply" + }, + "return": "purchase return amount" + }, + "calculateSaleReturn(uint256,uint256,uint32,uint256)": { + "details": "given a continuous token supply, reserve token balance, reserve ratio and a sell amount (in the continuous token), calculates the return for a given conversion (in the reserve token) * Formula: Return = _reserveBalance * (1 - (1 - _sellAmount / _supply) ^ (1 / (_reserveRatio / MAX_RESERVE_RATIO)))", + "params": { + "_reserveBalance": "total reserve token balance", + "_reserveRatio": "constant reserve ratio, represented in ppm, 1-1000000", + "_sellAmount": "sell amount, in the continuous token itself", + "_supply": "continuous token total supply" + }, + "return": "sale return amount" + }, + "decimals()": { + "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). * Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. * NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}." + }, + "decreaseAllowance(address,uint256)": { + "details": "Atomically decreases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`." + }, + "increaseAllowance(address,uint256)": { + "details": "Atomically increases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address." + }, + "isOwner()": { + "details": "Returns true if the caller is the current owner." + }, + "name()": { + "details": "Returns the name of the token." + }, + "owner()": { + "details": "Returns the address of the current owner." + }, + "renounceOwnership()": { + "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner." + }, + "symbol()": { + "details": "Returns the symbol of the token, usually a shorter version of the name." + }, + "totalSupply()": { + "details": "See {IERC20-totalSupply}." + }, + "transfer(address,uint256)": { + "details": "See {IERC20-transfer}. * Requirements: * - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`." + }, + "transferFrom(address,address,uint256)": { + "details": "See {IERC20-transferFrom}. * Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; * Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for `sender`'s tokens of at least `amount`." + }, + "transferOwnership(address)": { + "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." + } + } + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/truffle/build/contracts/BancorBondingCurve.json b/truffle/build/contracts/BancorBondingCurve.json index 825db96..e2fa2fe 100644 --- a/truffle/build/contracts/BancorBondingCurve.json +++ b/truffle/build/contracts/BancorBondingCurve.json @@ -2,37 +2,35 @@ "contractName": "BancorBondingCurve", "abi": [ { - "inputs": [ + "constant": true, + "inputs": [], + "name": "reserveRatio", + "outputs": [ { - "internalType": "uint32", - "name": "_reserveRatio", + "name": "", "type": "uint32" } ], "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" + "stateMutability": "view", + "type": "function" }, { "constant": true, "inputs": [ { - "internalType": "uint256", "name": "_supply", "type": "uint256" }, { - "internalType": "uint256", "name": "_reserveBalance", "type": "uint256" }, { - "internalType": "uint32", "name": "_reserveRatio", "type": "uint32" }, { - "internalType": "uint256", "name": "_depositAmount", "type": "uint256" } @@ -40,7 +38,6 @@ "name": "calculatePurchaseReturn", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -53,22 +50,18 @@ "constant": true, "inputs": [ { - "internalType": "uint256", "name": "_supply", "type": "uint256" }, { - "internalType": "uint256", "name": "_reserveBalance", "type": "uint256" }, { - "internalType": "uint32", "name": "_reserveRatio", "type": "uint32" }, { - "internalType": "uint256", "name": "_sellAmount", "type": "uint256" } @@ -76,7 +69,6 @@ "name": "calculateSaleReturn", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -88,12 +80,11 @@ { "constant": true, "inputs": [], - "name": "reserveRatio", + "name": "version", "outputs": [ { - "internalType": "uint32", "name": "", - "type": "uint32" + "type": "string" } ], "payable": false, @@ -101,25 +92,20 @@ "type": "function" }, { - "constant": true, - "inputs": [], - "name": "version", - "outputs": [ + "inputs": [ { - "internalType": "string", - "name": "", - "type": "string" + "name": "_reserveRatio", + "type": "uint32" } ], "payable": false, - "stateMutability": "view", - "type": "function" + "stateMutability": "nonpayable", + "type": "constructor" }, { "constant": true, "inputs": [ { - "internalType": "uint256", "name": "_reserveTokenAmount", "type": "uint256" } @@ -127,7 +113,6 @@ "name": "getContinuousMintReward", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -140,7 +125,6 @@ "constant": true, "inputs": [ { - "internalType": "uint256", "name": "_continuousTokenAmount", "type": "uint256" } @@ -148,7 +132,6 @@ "name": "getContinuousBurnRefund", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -163,7 +146,6 @@ "name": "continuousSupply", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -178,7 +160,6 @@ "name": "reserveBalance", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -188,15 +169,14 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_reserveRatio\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_supply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_reserveBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_reserveRatio\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_depositAmount\",\"type\":\"uint256\"}],\"name\":\"calculatePurchaseReturn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_supply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_reserveBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_reserveRatio\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_sellAmount\",\"type\":\"uint256\"}],\"name\":\"calculateSaleReturn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"continuousSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_continuousTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getContinuousBurnRefund\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_reserveTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getContinuousMintReward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"reserveBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"reserveRatio\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"calculatePurchaseReturn(uint256,uint256,uint32,uint256)\":{\"details\":\"given a continuous token supply, reserve token balance, reserve ratio, and a deposit amount (in the reserve token), calculates the return for a given conversion (in the continuous token) * Formula: Return = _supply * ((1 + _depositAmount / _reserveBalance) ^ (_reserveRatio / MAX_RESERVE_RATIO) - 1)\",\"params\":{\"_depositAmount\":\"deposit amount, in reserve token\",\"_reserveBalance\":\"total reserve token balance\",\"_reserveRatio\":\"reserve ratio, represented in ppm, 1-1000000\",\"_supply\":\"continuous token total supply\"},\"return\":\"purchase return amount\"},\"calculateSaleReturn(uint256,uint256,uint32,uint256)\":{\"details\":\"given a continuous token supply, reserve token balance, reserve ratio and a sell amount (in the continuous token), calculates the return for a given conversion (in the reserve token) * Formula: Return = _reserveBalance * (1 - (1 - _sellAmount / _supply) ^ (1 / (_reserveRatio / MAX_RESERVE_RATIO)))\",\"params\":{\"_reserveBalance\":\"total reserve token balance\",\"_reserveRatio\":\"constant reserve ratio, represented in ppm, 1-1000000\",\"_sellAmount\":\"sell amount, in the continuous token itself\",\"_supply\":\"continuous token total supply\"},\"return\":\"sale return amount\"},\"continuousSupply()\":{\"details\":\"Abstract method that returns continuous token supply\"},\"reserveBalance()\":{\"details\":\"Abstract method that returns reserve token balance\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/curves/BancorBondingCurve.sol\":\"BancorBondingCurve\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":1500},\"remappings\":[]},\"sources\":{\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/curves/BancorBondingCurve.sol\":{\"keccak256\":\"0x687e9719bd334feff47289702610167b7278722ca2e3d1f10476d6fb4b3fac18\",\"urls\":[\"bzz-raw://3c8d354545c355f99e5851dfc99e48e988ff6b49b2482b535c82b4c28baec784\",\"dweb:/ipfs/QmZwfpQL6f5YVtAWNKrSJXKB2V1Mz7zYy3fGsFLt618ZHd\"]},\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/interfaces/IBondingCurve.sol\":{\"keccak256\":\"0x27a335544bca7d89b45438988419e4e3d5c6639dee6ff7e1e7da585db3f90b7b\",\"urls\":[\"bzz-raw://5caa54449bbd492dc880b1c3f2162614ce0483a886675df79c8c539909f29cf5\",\"dweb:/ipfs/QmfThvDW3d9L2Bjip74854Y1g1FdYaP5Eyj7PdjJy5LjEM\"]},\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/lib/ValidGasPrice.sol\":{\"keccak256\":\"0xab0eb602f0bd70cd9390021ec9d1e0b2a32f91b6c0af55fb6ea0b138f19be9fe\",\"urls\":[\"bzz-raw://153c896e4996d59fe5b747a28d8e8682f6afbae210587d7b7e2ae35ced2f1592\",\"dweb:/ipfs/QmReY8Thw4XDSKFdpLfvkEphdzBtbNr325DARGVSY9sUFc\"]},\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/math/BancorFormula.sol\":{\"keccak256\":\"0x07a5fc80f984d99091b528c4095e1c7b0a60ead97c05e3d6a5e06475e7a39e99\",\"urls\":[\"bzz-raw://efdd8da4c3c0ccbb02fcbd24fac4e8ca1e531d4d1b176f21410eb31432a93259\",\"dweb:/ipfs/Qme2dNAS3tdbLkKiH9qcJrNPi3s5kdtd5aLAZWEMAvEn2p\"]},\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/math/Power.sol\":{\"keccak256\":\"0x5a8b28886de5cede9e5be377a3649c13ac595eb996691ead28d0e8affc8bfe46\",\"urls\":[\"bzz-raw://bc28265d289fe49e251a7d12f399603ac3250cead55fed84107ff99aaeb46a32\",\"dweb:/ipfs/QmRxG1RDnaWwTzVpX12F4ECWyDZ1Kvonvm7hzJjVbWGuXE\"]},\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"keccak256\":\"0x90a3995645af7562d84b9d69363ffa5ae7217714ab61e951bf7bc450f40e4061\",\"urls\":[\"bzz-raw://216ef9d6b614db4eb46970b4e84903f2534a45572dd30a79f0041f1a5830f436\",\"dweb:/ipfs/QmNPrJ4MWKUAWzKXpUqeyKRUfosaoANZAqXgvepdrCwZAG\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0x6fb9d7889769d7cc161225f9ef7a90e468ba9788b253816f8d8b6894d3472c24\",\"urls\":[\"bzz-raw://cf4c00fc3c37cc5acf0c82ec6fd97bab67d72c2567fdc0ebf023d9c09b30a08e\",\"dweb:/ipfs/Qmb7TChG6DsEDX7LooJ4vmxot19f7VXX8S1zUGPeJTWbwZ\"]}},\"version\":1}", "bytecode": "0x", "deployedBytecode": "0x", "sourceMap": "", "deployedSourceMap": "", "source": "pragma solidity ^0.5.2;\n\nimport \"../math/BancorFormula.sol\";\nimport \"../lib/ValidGasPrice.sol\";\nimport \"../interfaces/IBondingCurve.sol\";\n\n\ncontract BancorBondingCurve is IBondingCurve, BancorFormula {\n /*\n reserve ratio, represented in ppm, 1-1000000\n 1/3 corresponds to y= multiple * x^2\n 1/2 corresponds to y= multiple * x\n 2/3 corresponds to y= multiple * x^1/2\n */\n uint32 public reserveRatio;\n\n constructor(uint32 _reserveRatio) public {\n reserveRatio = _reserveRatio;\n }\n\n function getContinuousMintReward(uint _reserveTokenAmount) public view returns (uint) {\n return calculatePurchaseReturn(continuousSupply(), reserveBalance(), reserveRatio, _reserveTokenAmount);\n }\n\n function getContinuousBurnRefund(uint _continuousTokenAmount) public view returns (uint) {\n return calculateSaleReturn(continuousSupply(), reserveBalance(), reserveRatio, _continuousTokenAmount);\n }\n\n /**\n * @dev Abstract method that returns continuous token supply\n */\n function continuousSupply() public view returns (uint);\n\n /**\n * @dev Abstract method that returns reserve token balance\n */ \n function reserveBalance() public view returns (uint);\n}", - "sourcePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/curves/BancorBondingCurve.sol", + "sourcePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/curves/BancorBondingCurve.sol", "ast": { - "absolutePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/curves/BancorBondingCurve.sol", + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/curves/BancorBondingCurve.sol", "exportedSymbols": { "BancorBondingCurve": [ 122 @@ -217,7 +197,7 @@ "src": "0:23:1" }, { - "absolutePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/math/BancorFormula.sol", + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/math/BancorFormula.sol", "file": "../math/BancorFormula.sol", "id": 59, "nodeType": "ImportDirective", @@ -228,7 +208,7 @@ "unitAlias": "" }, { - "absolutePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/lib/ValidGasPrice.sol", + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/lib/ValidGasPrice.sol", "file": "../lib/ValidGasPrice.sol", "id": 60, "nodeType": "ImportDirective", @@ -239,7 +219,7 @@ "unitAlias": "" }, { - "absolutePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/interfaces/IBondingCurve.sol", + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/interfaces/IBondingCurve.sol", "file": "../interfaces/IBondingCurve.sol", "id": 61, "nodeType": "ImportDirective", @@ -1008,7 +988,7 @@ "src": "0:1235:1" }, "legacyAST": { - "absolutePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/curves/BancorBondingCurve.sol", + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/curves/BancorBondingCurve.sol", "exportedSymbols": { "BancorBondingCurve": [ 122 @@ -1029,7 +1009,7 @@ "src": "0:23:1" }, { - "absolutePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/math/BancorFormula.sol", + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/math/BancorFormula.sol", "file": "../math/BancorFormula.sol", "id": 59, "nodeType": "ImportDirective", @@ -1040,7 +1020,7 @@ "unitAlias": "" }, { - "absolutePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/lib/ValidGasPrice.sol", + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/lib/ValidGasPrice.sol", "file": "../lib/ValidGasPrice.sol", "id": 60, "nodeType": "ImportDirective", @@ -1051,7 +1031,7 @@ "unitAlias": "" }, { - "absolutePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/interfaces/IBondingCurve.sol", + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/interfaces/IBondingCurve.sol", "file": "../interfaces/IBondingCurve.sol", "id": 61, "nodeType": "ImportDirective", @@ -1821,11 +1801,11 @@ }, "compiler": { "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" + "version": "0.5.2+commit.1df8f40c.Emscripten.clang" }, "networks": {}, - "schemaVersion": "3.0.23", - "updatedAt": "2020-02-16T12:52:29.743Z", + "schemaVersion": "3.0.1", + "updatedAt": "2020-02-16T14:54:14.890Z", "devdoc": { "methods": { "calculatePurchaseReturn(uint256,uint256,uint32,uint256)": { diff --git a/truffle/build/contracts/BancorFormula.json b/truffle/build/contracts/BancorFormula.json index 3ad034b..b8f9fbb 100644 --- a/truffle/build/contracts/BancorFormula.json +++ b/truffle/build/contracts/BancorFormula.json @@ -7,7 +7,6 @@ "name": "version", "outputs": [ { - "internalType": "string", "name": "", "type": "string" } @@ -20,22 +19,18 @@ "constant": true, "inputs": [ { - "internalType": "uint256", "name": "_supply", "type": "uint256" }, { - "internalType": "uint256", "name": "_reserveBalance", "type": "uint256" }, { - "internalType": "uint32", "name": "_reserveRatio", "type": "uint32" }, { - "internalType": "uint256", "name": "_depositAmount", "type": "uint256" } @@ -43,7 +38,6 @@ "name": "calculatePurchaseReturn", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -56,22 +50,18 @@ "constant": true, "inputs": [ { - "internalType": "uint256", "name": "_supply", "type": "uint256" }, { - "internalType": "uint256", "name": "_reserveBalance", "type": "uint256" }, { - "internalType": "uint32", "name": "_reserveRatio", "type": "uint32" }, { - "internalType": "uint256", "name": "_sellAmount", "type": "uint256" } @@ -79,7 +69,6 @@ "name": "calculateSaleReturn", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -89,15 +78,14 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_supply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_reserveBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_reserveRatio\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_depositAmount\",\"type\":\"uint256\"}],\"name\":\"calculatePurchaseReturn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_supply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_reserveBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_reserveRatio\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_sellAmount\",\"type\":\"uint256\"}],\"name\":\"calculateSaleReturn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"calculatePurchaseReturn(uint256,uint256,uint32,uint256)\":{\"details\":\"given a continuous token supply, reserve token balance, reserve ratio, and a deposit amount (in the reserve token), calculates the return for a given conversion (in the continuous token) * Formula: Return = _supply * ((1 + _depositAmount / _reserveBalance) ^ (_reserveRatio / MAX_RESERVE_RATIO) - 1)\",\"params\":{\"_depositAmount\":\"deposit amount, in reserve token\",\"_reserveBalance\":\"total reserve token balance\",\"_reserveRatio\":\"reserve ratio, represented in ppm, 1-1000000\",\"_supply\":\"continuous token total supply\"},\"return\":\"purchase return amount\"},\"calculateSaleReturn(uint256,uint256,uint32,uint256)\":{\"details\":\"given a continuous token supply, reserve token balance, reserve ratio and a sell amount (in the continuous token), calculates the return for a given conversion (in the reserve token) * Formula: Return = _reserveBalance * (1 - (1 - _sellAmount / _supply) ^ (1 / (_reserveRatio / MAX_RESERVE_RATIO)))\",\"params\":{\"_reserveBalance\":\"total reserve token balance\",\"_reserveRatio\":\"constant reserve ratio, represented in ppm, 1-1000000\",\"_sellAmount\":\"sell amount, in the continuous token itself\",\"_supply\":\"continuous token total supply\"},\"return\":\"sale return amount\"}},\"title\":\"Bancor formula by Bancor * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0. \\\"\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/math/BancorFormula.sol\":\"BancorFormula\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":1500},\"remappings\":[]},\"sources\":{\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/math/BancorFormula.sol\":{\"keccak256\":\"0x07a5fc80f984d99091b528c4095e1c7b0a60ead97c05e3d6a5e06475e7a39e99\",\"urls\":[\"bzz-raw://efdd8da4c3c0ccbb02fcbd24fac4e8ca1e531d4d1b176f21410eb31432a93259\",\"dweb:/ipfs/Qme2dNAS3tdbLkKiH9qcJrNPi3s5kdtd5aLAZWEMAvEn2p\"]},\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/math/Power.sol\":{\"keccak256\":\"0x5a8b28886de5cede9e5be377a3649c13ac595eb996691ead28d0e8affc8bfe46\",\"urls\":[\"bzz-raw://bc28265d289fe49e251a7d12f399603ac3250cead55fed84107ff99aaeb46a32\",\"dweb:/ipfs/QmRxG1RDnaWwTzVpX12F4ECWyDZ1Kvonvm7hzJjVbWGuXE\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]}},\"version\":1}", - "bytecode": "0x60c06040526003608081905262302e3360e81b60a090815262000026916000919062000756565b506001641c35fedd1560601b036021556001646c3390ecc9605e1b036022556001640cf801476160611b0360235560016431bdb23e1d605f1b0360245560016502fb1d8fe083605b1b0360255560016505b771955b37605a1b036026556001650af67a93bb5160591b0360275560016515060c256cb360581b036028556001651428a2f98d7360581b036029556001654d515663970960561b03602a55600165944620b0e70f60551b03602b55600166011c592761c66760541b03602c5560016602214d10d014eb60531b03602d55600166020ade36b7dbef60531b03602e5560016603eab73b3bbfe360521b03602f556001660782ee3593f6d760511b036030556001661ccf4b44bb4821604f1b0360315560016606e7f88ad8a77760511b0360325560016669f3d1c921891d604d1b03603355600166cb2ff529eb71e5604c1b03603455600166c2d415c3db974b604c1b0360355560016702eb40f9f620fda7604a1b0360365560016705990681d961a1eb60491b03603755600167055e12902701414760491b0360385560016714962dee9dc9764160471b0360395560016704ef57b9b560fab560491b03603a5560016712ed7b32a58f552b60471b03603b556001679131271922eaa60760441b03603c556001678b380f3558668c4760441b03603d556001680215f77c045fbe885760421b03603e556001600160831b03603f556001670f577eded5773a1160471b036040556001680eb5ec597592befbf5603f1b036041556001681c35fedd14b861eb05603e1b036042556001683619c87664579bc94b603d1b0360435560016867c00a3b07ffc01fd7603c1b03604455600168c6f6c8f8739773a7a5603b1b03604555600168bec763f8209b7a72b1603b1b0360465560016902dbb8caad9b7097b91b60391b03604755600169057b3d49dda84556d6f760381b03604855600169054183095b2c8ececf3160381b036049556001690a14517cc6b9457111ef60371b03604a5560016913545598e5c23276ccf160361b03604b556001692511882c39c3adea96ff60351b03604c55600169471649d87199aa99075760341b03604d557004429a21a029d4c1457cfbffffffffffff604e55700415bc6d6fb7dd71af2cb3ffffffffffff604f557003eab73b3bbfe282243ce1ffffffffffff6050557003c1771ac9fb6b4c18e229ffffffffffff605155700399e96897690418f785257fffffffffff605255700373fc456c53bb779bf0ea9fffffffffff60535570034f9e8e490c48e67e6ab8bfffffffffff60545570032cbfd4a7adc790560b3337ffffffffff60555570030b50570f6e5d2acca94613ffffffffff6056557002eb40f9f620fda6b56c2861ffffffffff6057557002cc8340ecb0d0f520a6af58ffffffffff6058557002af09481380a0a35cf1ba02ffffffffff605955700292c5bdd3b92ec810287b1b3fffffffff605a55700277abdcdab07d5a77ac6d6b9fffffffff605b5570025daf6654b1eaa55fd64df5efffffffff605c55700244c49c648baa98192dce88b7ffffffff605d5570022ce03cd5619a311b2471268bffffffff605e55700215f77c045fbe885654a44a0fffffffff605f556001600160811b036060557001eaefdbdaaee7421fc4d3ede5ffffffff6061557001d6bd8b2eb257df7e8ca57b09bfffffff6062557001c35fedd14b861eb0443f7f133fffffff6063557001b0ce43b322bcde4a56e8ada5afffffff60645570019f0028ec1fff007f5a195a39dfffffff60655570018ded91f0e72ee74f49b15ba527ffffff60665570017d8ec7f04136f4e5615fd41a63ffffff60675570016ddc6556cdb84bdc8d12d22e6fffffff60685570015ecf52776a1155b5bd8395814f7fffff60695570015060c256cb23b3b3cc3754cf40ffffff606a557001428a2f98d728ae223ddab715be3fffff606b5570013545598e5c23276ccf0ede68034fffff606c557001288c4161ce1d6f54b7f61081194fffff606d5570011c592761c666aa641d5a01a40f17ffff606e55700110a688680a7530515f3e6e6cfdcdffff606f557001056f1b5bedf75c6bcb2ce8aed428ffff6070556ffaadceceeff8a0890f3875f008277fff6071556ff05dc6b27edad306388a600f6ba0bfff6072556fe67a5a25da41063de1495d5b18cdbfff6073556fdcff115b14eedde6fc3aa5353f2e4fff6074556fd3e7a3924312399f9aae2e0f868f8fff6075556fcb2ff529eb71e41582cccd5a1ee26fff6076556fc2d415c3db974ab32a51840c0b67edff6077556fbad03e7d883f69ad5b0a186184e06bff6078556fb320d03b2c343d4829abd6075f0cc5ff6079556fabc25204e02828d73c6e80bcdb1a95bf607a556fa4b16f74ee4bb2040a1ec6c15fbbf2df607b556f9deaf736ac1f569deb1b5ae3f36c130f607c556f976bd9952c7aa957f5937d790ef65037607d556f9131271922eaa6064b73a22d0bd4f2bf607e556f8b380f3558668c46c91c49a2f8e967b9607f556f857ddf0117efa215952912839f6473e6608055620007fb565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200079957805160ff1916838001178555620007c9565b82800160010185558215620007c9579182015b82811115620007c9578251825591602001919060010190620007ac565b50620007d7929150620007db565b5090565b620007f891905b80821115620007d75760008155600101620007e2565b90565b611628806200080b6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806329a00e7c1461004657806349f9b0f71461008d57806354fd4d50146100c2575b600080fd5b61007b6004803603608081101561005c57600080fd5b5080359060208101359063ffffffff604082013516906060013561013f565b60408051918252519081900360200190f35b61007b600480360360808110156100a357600080fd5b5080359060208101359063ffffffff6040820135169060600135610270565b6100ca6103ad565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101045781810151838201526020016100ec565b50505050905090810190601f1680156101315780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080851180156101505750600084115b8015610162575060008363ffffffff16115b80156101775750620f424063ffffffff841611155b6101c8576040805162461bcd60e51b815260206004820152600f60248201527f496e76616c696420696e707574732e0000000000000000000000000000000000604482015290519081900360640190fd5b816101d557506000610268565b63ffffffff8316620f4240141561020d57610206846101fa878563ffffffff61043b16565b9063ffffffff61049d16565b9050610268565b60008080610221858863ffffffff6104df16565b9050610232818888620f4240610539565b9093509150600060ff831661024d8a8663ffffffff61043b16565b901c9050610261818a63ffffffff6106c216565b9450505050505b949350505050565b600080851180156102815750600084115b8015610293575060008363ffffffff16115b80156102a85750620f424063ffffffff841611155b80156102b45750848211155b610305576040805162461bcd60e51b815260206004820152600f60248201527f496e76616c696420696e707574732e0000000000000000000000000000000000604482015290519081900360640190fd5b8161031257506000610268565b84821415610321575082610268565b63ffffffff8316620f4240141561034657610206856101fa868563ffffffff61043b16565b6000808061035a888663ffffffff6106c216565b905061036b8882620f424089610539565b90935091506000610382888563ffffffff61043b16565b905060ff831688901b61039f856101fa848463ffffffff6106c216565b9a9950505050505050505050565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104335780601f1061040857610100808354040283529160200191610433565b820191906000526020600020905b81548152906001019060200180831161041657829003601f168201915b505050505081565b60008261044a57506000610497565b8282028284828161045757fe5b04146104945760405162461bcd60e51b81526004018080602001828103825260218152602001806115d36021913960400191505060405180910390fd5b90505b92915050565b600061049483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610704565b600082820183811015610494576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008070020000000000000000000000000000000086106105a1576040805162461bcd60e51b815260206004820152601860248201527f626173654e2065786365656473206d61782076616c75652e0000000000000000604482015290519081900360640190fd5b848610156105f6576040805162461bcd60e51b815260206004820152601c60248201527f4261736573203c203120617265206e6f7420737570706f727465642e00000000604482015290519081900360640190fd5b600080866001607f1b89028161060857fe5b04905070015bf0a8b1457695355fb8ac404e7a79e38110156106345761062d816107a6565b9150610640565b61063d81610c53565b91505b60008563ffffffff168763ffffffff1684028161065957fe5b04905070080000000000000000000000000000000081101561068c5761067e81610d03565b607f945094505050506106b9565b6000610697826110e5565b90506106ac81607f0360ff1683901c82611177565b955093506106b992505050565b94509492505050565b600061049483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611514565b600081836107905760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561075557818101518382015260200161073d565b50505050905090810190601f1680156107825780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161079c57fe5b0495945050505050565b6000808080806fd3094c70f034de4b96ff7d5b6f99fcd886106107fb576f40000000000000000000000000000000840193506fd3094c70f034de4b96ff7d5b6f99fcd86001607f1b8702816107f757fe5b0495505b6fa45af1e1f40c333b3de1db4dd55f29a7861061084a576f20000000000000000000000000000000840193506fa45af1e1f40c333b3de1db4dd55f29a76001607f1b87028161084657fe5b0495505b6f910b022db7ae67ce76b441c27035c6a18610610899576f10000000000000000000000000000000840193506f910b022db7ae67ce76b441c27035c6a16001607f1b87028161089557fe5b0495505b6f88415abbe9a76bead8d00cf112e4d4a886106108e8576f08000000000000000000000000000000840193506f88415abbe9a76bead8d00cf112e4d4a86001607f1b8702816108e457fe5b0495505b6f84102b00893f64c705e841d5d4064bd38610610937576f04000000000000000000000000000000840193506f84102b00893f64c705e841d5d4064bd36001607f1b87028161093357fe5b0495505b6f8204055aaef1c8bd5c3259f4822735a28610610986576f02000000000000000000000000000000840193506f8204055aaef1c8bd5c3259f4822735a26001607f1b87028161098257fe5b0495505b6f810100ab00222d861931c15e39b44e9986106109d5576f01000000000000000000000000000000840193506f810100ab00222d861931c15e39b44e996001607f1b8702816109d157fe5b0495505b6f808040155aabbbe9451521693554f7338610610a23576e800000000000000000000000000000840193506f808040155aabbbe9451521693554f7336001607f1b870281610a1f57fe5b0495505b7fffffffffffffffffffffffffffffffff80000000000000000000000000000000860192508291506001607f1b828002049050600160801b838103830204840193506001607f1b81830281610a7457fe5b049150700200000000000000000000000000000000836faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa03830281610aa557fe5b04840193506001607f1b81830281610ab957fe5b049150700300000000000000000000000000000000836f9999999999999999999999999999999903830281610aea57fe5b04840193506001607f1b81830281610afe57fe5b049150700400000000000000000000000000000000836f9249249249249249249249249249249203830281610b2f57fe5b04840193506001607f1b81830281610b4357fe5b049150700500000000000000000000000000000000836f8e38e38e38e38e38e38e38e38e38e38e03830281610b7457fe5b04840193506001607f1b81830281610b8857fe5b049150700600000000000000000000000000000000836f8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8b03830281610bb957fe5b04840193506001607f1b81830281610bcd57fe5b049150700700000000000000000000000000000000836f89d89d89d89d89d89d89d89d89d89d8903830281610bfe57fe5b04840193506001607f1b81830281610c1257fe5b049150700800000000000000000000000000000000836f8888888888888888888888888888888803830281610c4357fe5b049390930193505050505b919050565b60008082600160801b8110610c86576000610c736001607f1b830461156e565b60ff166001607f1b810293509190911c90505b6001607f1b811115610cd657607f5b60ff811615610cd4576001607f1b828002049150600160801b8210610ccb57600182901c91506001810360ff166001901b830192505b60001901610c95565b505b6f05b9de1d10bf4103d647b0955897ba806f03f80fe03f80fe03f80fe03f80fe03f8830204949350505050565b6000670168244fdac780006001607f1b6f0fffffffffffffffffffffffffffffff84168080028290048082028390048083028490049485026710e1b3be415a00009092026705a0913f6b1e000091909102010192909181830204905080664807432bc1800002830192506001607f1b82820281610d7c57fe5b04905080660c0135dca0400002830192506001607f1b82820281610d9c57fe5b049050806601b707b1cdc00002830192506001607f1b82820281610dbc57fe5b049050806536e0f639b80002830192506001607f1b82820281610ddb57fe5b04905080650618fee9f80002830192506001607f1b82820281610dfa57fe5b04905080649c197dcc0002830192506001607f1b82820281610e1857fe5b04905080640e30dce40002830192506001607f1b82820281610e3657fe5b0490508064012ebd130002830192506001607f1b82820281610e5457fe5b049050806317499f0002830192506001607f1b82820281610e7157fe5b049050806301a9d48002830192506001607f1b82820281610e8e57fe5b04905080621c638002830192506001607f1b82820281610eaa57fe5b049050806201c63802830192506001607f1b82820281610ec657fe5b04905080611ab802830192506001607f1b82820281610ee157fe5b0490508061017c02830192506001607f1b82820281610efc57fe5b04905080601402830192506001607f1b82820281610f1657fe5b6721c3677c82b400009190049384010482016001607f1b019290506f10000000000000000000000000000000851615610f735770018ebef9eac820ae8682b9793ac6d1e7767001c3d6a24ed82218787d624d3e5eba95f984020492505b6f20000000000000000000000000000000851615610fb5577001368b2fc6f9609fe7aceb46aa619baed470018ebef9eac820ae8682b9793ac6d1e77884020492505b6f40000000000000000000000000000000851615610ff6576fbc5ab1b16779be3575bd8f0520a9f21f7001368b2fc6f9609fe7aceb46aa619baed584020492505b6001607f1b85161561102a576f454aaa8efe072e7f6ddbab84b40a55c96fbc5ab1b16779be3575bd8f0520a9f21e84020492505b600160801b85161561105e576f0960aadc109e7a3bf4578099615711ea6f454aaa8efe072e7f6ddbab84b40a55c584020492505b70020000000000000000000000000000000085161561109e576e2bf84208204f5977f9a8cf01fdce3d6f0960aadc109e7a3bf4578099615711d784020492505b7004000000000000000000000000000000008516156110dc576d03c6ab775dd0b95b4cbee7e65d116e2bf84208204f5977f9a8cf01fdc30784020492505b50909392505050565b60006020607f5b8060ff168260010160ff161015611134576000600260ff848401160490508460018260ff166080811061111b57fe5b01541061112a5780925061112e565b8091505b506110ec565b8360018260ff166080811061114557fe5b015410611155579150610c4e9050565b8360018360ff166080811061116657fe5b01541061117557509050610c4e565bfe5b60008083905060008090508360ff16858302901c9150816f03442c4e6074a82f1797f72ac000000002810190508360ff16858302901c9150816f0116b96f757c380fb287fd0e4000000002810190508360ff16858302901c9150816e45ae5bdd5f0e03eca1ff439000000002810190508360ff16858302901c9150816e0defabf91302cd95b9ffda5000000002810190508360ff16858302901c9150816e02529ca9832b22439efff9b800000002810190508360ff16858302901c9150816d54f1cf12bd04e516b6da8800000002810190508360ff16858302901c9150816d0a9e39e257a09ca2d6db5100000002810190508360ff16858302901c9150816d012e066e7b839fa050c30900000002810190508360ff16858302901c9150816c1e33d7d926c329a1ad1a80000002810190508360ff16858302901c9150816c02bee513bdb4a6b19b5f80000002810190508360ff16858302901c9150816b3a9316fa79b88eccf2a0000002810190508360ff16858302901c9150816b048177ebe1fa81237520000002810190508360ff16858302901c9150816a5263fe90242dcbacf0000002810190508360ff16858302901c9150816a057e22099c030d9410000002810190508360ff16858302901c9150816957e22099c030d941000002810190508360ff16858302901c91508169052b6b5456997631000002810190508360ff16858302901c915081684985f67696bf74800002810190508360ff16858302901c9150816803dea12ea99e49800002810190508360ff16858302901c9150816731880f2214b6e00002810190508360ff16858302901c91508167025bcff56eb3600002810190508360ff16858302901c915081661b722e10ab100002810190508360ff16858302901c9150816601317c7007700002810190508360ff16858302901c915081650cba84aafa0002810190508360ff16858302901c9150816482573a0a0002810190508360ff16858302901c9150816405035ad90002810190508360ff16858302901c915081632f881b0002810190508360ff16858302901c9150816301b2934002810190508360ff16858302901c915081620efc4002810190508360ff16858302901c915081617fe002810190508360ff16858302901c91508161042002810190508360ff16858302901c915081602102810190508360ff16858302901c915081600102810190508360ff166001901b856f0688589cc0e9505e2f2fee5580000000838161150857fe5b04010195945050505050565b600081848411156115665760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561075557818101518382015260200161073d565b505050900390565b60008082610100811015611597575b6001811115611592576001918201911c61157d565b6115cb565b60805b60ff8116156115c957600160ff82161b82106115be579182179160ff81169190911c905b60011c607f1661159a565b505b509291505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a72315820d700785f356d8e46e54e0c6193aa83292d66e2825e5a99b65ee854bb91e991fa64736f6c63430005100032", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c806329a00e7c1461004657806349f9b0f71461008d57806354fd4d50146100c2575b600080fd5b61007b6004803603608081101561005c57600080fd5b5080359060208101359063ffffffff604082013516906060013561013f565b60408051918252519081900360200190f35b61007b600480360360808110156100a357600080fd5b5080359060208101359063ffffffff6040820135169060600135610270565b6100ca6103ad565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101045781810151838201526020016100ec565b50505050905090810190601f1680156101315780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080851180156101505750600084115b8015610162575060008363ffffffff16115b80156101775750620f424063ffffffff841611155b6101c8576040805162461bcd60e51b815260206004820152600f60248201527f496e76616c696420696e707574732e0000000000000000000000000000000000604482015290519081900360640190fd5b816101d557506000610268565b63ffffffff8316620f4240141561020d57610206846101fa878563ffffffff61043b16565b9063ffffffff61049d16565b9050610268565b60008080610221858863ffffffff6104df16565b9050610232818888620f4240610539565b9093509150600060ff831661024d8a8663ffffffff61043b16565b901c9050610261818a63ffffffff6106c216565b9450505050505b949350505050565b600080851180156102815750600084115b8015610293575060008363ffffffff16115b80156102a85750620f424063ffffffff841611155b80156102b45750848211155b610305576040805162461bcd60e51b815260206004820152600f60248201527f496e76616c696420696e707574732e0000000000000000000000000000000000604482015290519081900360640190fd5b8161031257506000610268565b84821415610321575082610268565b63ffffffff8316620f4240141561034657610206856101fa868563ffffffff61043b16565b6000808061035a888663ffffffff6106c216565b905061036b8882620f424089610539565b90935091506000610382888563ffffffff61043b16565b905060ff831688901b61039f856101fa848463ffffffff6106c216565b9a9950505050505050505050565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104335780601f1061040857610100808354040283529160200191610433565b820191906000526020600020905b81548152906001019060200180831161041657829003601f168201915b505050505081565b60008261044a57506000610497565b8282028284828161045757fe5b04146104945760405162461bcd60e51b81526004018080602001828103825260218152602001806115d36021913960400191505060405180910390fd5b90505b92915050565b600061049483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610704565b600082820183811015610494576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008070020000000000000000000000000000000086106105a1576040805162461bcd60e51b815260206004820152601860248201527f626173654e2065786365656473206d61782076616c75652e0000000000000000604482015290519081900360640190fd5b848610156105f6576040805162461bcd60e51b815260206004820152601c60248201527f4261736573203c203120617265206e6f7420737570706f727465642e00000000604482015290519081900360640190fd5b600080866001607f1b89028161060857fe5b04905070015bf0a8b1457695355fb8ac404e7a79e38110156106345761062d816107a6565b9150610640565b61063d81610c53565b91505b60008563ffffffff168763ffffffff1684028161065957fe5b04905070080000000000000000000000000000000081101561068c5761067e81610d03565b607f945094505050506106b9565b6000610697826110e5565b90506106ac81607f0360ff1683901c82611177565b955093506106b992505050565b94509492505050565b600061049483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611514565b600081836107905760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561075557818101518382015260200161073d565b50505050905090810190601f1680156107825780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161079c57fe5b0495945050505050565b6000808080806fd3094c70f034de4b96ff7d5b6f99fcd886106107fb576f40000000000000000000000000000000840193506fd3094c70f034de4b96ff7d5b6f99fcd86001607f1b8702816107f757fe5b0495505b6fa45af1e1f40c333b3de1db4dd55f29a7861061084a576f20000000000000000000000000000000840193506fa45af1e1f40c333b3de1db4dd55f29a76001607f1b87028161084657fe5b0495505b6f910b022db7ae67ce76b441c27035c6a18610610899576f10000000000000000000000000000000840193506f910b022db7ae67ce76b441c27035c6a16001607f1b87028161089557fe5b0495505b6f88415abbe9a76bead8d00cf112e4d4a886106108e8576f08000000000000000000000000000000840193506f88415abbe9a76bead8d00cf112e4d4a86001607f1b8702816108e457fe5b0495505b6f84102b00893f64c705e841d5d4064bd38610610937576f04000000000000000000000000000000840193506f84102b00893f64c705e841d5d4064bd36001607f1b87028161093357fe5b0495505b6f8204055aaef1c8bd5c3259f4822735a28610610986576f02000000000000000000000000000000840193506f8204055aaef1c8bd5c3259f4822735a26001607f1b87028161098257fe5b0495505b6f810100ab00222d861931c15e39b44e9986106109d5576f01000000000000000000000000000000840193506f810100ab00222d861931c15e39b44e996001607f1b8702816109d157fe5b0495505b6f808040155aabbbe9451521693554f7338610610a23576e800000000000000000000000000000840193506f808040155aabbbe9451521693554f7336001607f1b870281610a1f57fe5b0495505b7fffffffffffffffffffffffffffffffff80000000000000000000000000000000860192508291506001607f1b828002049050600160801b838103830204840193506001607f1b81830281610a7457fe5b049150700200000000000000000000000000000000836faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa03830281610aa557fe5b04840193506001607f1b81830281610ab957fe5b049150700300000000000000000000000000000000836f9999999999999999999999999999999903830281610aea57fe5b04840193506001607f1b81830281610afe57fe5b049150700400000000000000000000000000000000836f9249249249249249249249249249249203830281610b2f57fe5b04840193506001607f1b81830281610b4357fe5b049150700500000000000000000000000000000000836f8e38e38e38e38e38e38e38e38e38e38e03830281610b7457fe5b04840193506001607f1b81830281610b8857fe5b049150700600000000000000000000000000000000836f8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8b03830281610bb957fe5b04840193506001607f1b81830281610bcd57fe5b049150700700000000000000000000000000000000836f89d89d89d89d89d89d89d89d89d89d8903830281610bfe57fe5b04840193506001607f1b81830281610c1257fe5b049150700800000000000000000000000000000000836f8888888888888888888888888888888803830281610c4357fe5b049390930193505050505b919050565b60008082600160801b8110610c86576000610c736001607f1b830461156e565b60ff166001607f1b810293509190911c90505b6001607f1b811115610cd657607f5b60ff811615610cd4576001607f1b828002049150600160801b8210610ccb57600182901c91506001810360ff166001901b830192505b60001901610c95565b505b6f05b9de1d10bf4103d647b0955897ba806f03f80fe03f80fe03f80fe03f80fe03f8830204949350505050565b6000670168244fdac780006001607f1b6f0fffffffffffffffffffffffffffffff84168080028290048082028390048083028490049485026710e1b3be415a00009092026705a0913f6b1e000091909102010192909181830204905080664807432bc1800002830192506001607f1b82820281610d7c57fe5b04905080660c0135dca0400002830192506001607f1b82820281610d9c57fe5b049050806601b707b1cdc00002830192506001607f1b82820281610dbc57fe5b049050806536e0f639b80002830192506001607f1b82820281610ddb57fe5b04905080650618fee9f80002830192506001607f1b82820281610dfa57fe5b04905080649c197dcc0002830192506001607f1b82820281610e1857fe5b04905080640e30dce40002830192506001607f1b82820281610e3657fe5b0490508064012ebd130002830192506001607f1b82820281610e5457fe5b049050806317499f0002830192506001607f1b82820281610e7157fe5b049050806301a9d48002830192506001607f1b82820281610e8e57fe5b04905080621c638002830192506001607f1b82820281610eaa57fe5b049050806201c63802830192506001607f1b82820281610ec657fe5b04905080611ab802830192506001607f1b82820281610ee157fe5b0490508061017c02830192506001607f1b82820281610efc57fe5b04905080601402830192506001607f1b82820281610f1657fe5b6721c3677c82b400009190049384010482016001607f1b019290506f10000000000000000000000000000000851615610f735770018ebef9eac820ae8682b9793ac6d1e7767001c3d6a24ed82218787d624d3e5eba95f984020492505b6f20000000000000000000000000000000851615610fb5577001368b2fc6f9609fe7aceb46aa619baed470018ebef9eac820ae8682b9793ac6d1e77884020492505b6f40000000000000000000000000000000851615610ff6576fbc5ab1b16779be3575bd8f0520a9f21f7001368b2fc6f9609fe7aceb46aa619baed584020492505b6001607f1b85161561102a576f454aaa8efe072e7f6ddbab84b40a55c96fbc5ab1b16779be3575bd8f0520a9f21e84020492505b600160801b85161561105e576f0960aadc109e7a3bf4578099615711ea6f454aaa8efe072e7f6ddbab84b40a55c584020492505b70020000000000000000000000000000000085161561109e576e2bf84208204f5977f9a8cf01fdce3d6f0960aadc109e7a3bf4578099615711d784020492505b7004000000000000000000000000000000008516156110dc576d03c6ab775dd0b95b4cbee7e65d116e2bf84208204f5977f9a8cf01fdc30784020492505b50909392505050565b60006020607f5b8060ff168260010160ff161015611134576000600260ff848401160490508460018260ff166080811061111b57fe5b01541061112a5780925061112e565b8091505b506110ec565b8360018260ff166080811061114557fe5b015410611155579150610c4e9050565b8360018360ff166080811061116657fe5b01541061117557509050610c4e565bfe5b60008083905060008090508360ff16858302901c9150816f03442c4e6074a82f1797f72ac000000002810190508360ff16858302901c9150816f0116b96f757c380fb287fd0e4000000002810190508360ff16858302901c9150816e45ae5bdd5f0e03eca1ff439000000002810190508360ff16858302901c9150816e0defabf91302cd95b9ffda5000000002810190508360ff16858302901c9150816e02529ca9832b22439efff9b800000002810190508360ff16858302901c9150816d54f1cf12bd04e516b6da8800000002810190508360ff16858302901c9150816d0a9e39e257a09ca2d6db5100000002810190508360ff16858302901c9150816d012e066e7b839fa050c30900000002810190508360ff16858302901c9150816c1e33d7d926c329a1ad1a80000002810190508360ff16858302901c9150816c02bee513bdb4a6b19b5f80000002810190508360ff16858302901c9150816b3a9316fa79b88eccf2a0000002810190508360ff16858302901c9150816b048177ebe1fa81237520000002810190508360ff16858302901c9150816a5263fe90242dcbacf0000002810190508360ff16858302901c9150816a057e22099c030d9410000002810190508360ff16858302901c9150816957e22099c030d941000002810190508360ff16858302901c91508169052b6b5456997631000002810190508360ff16858302901c915081684985f67696bf74800002810190508360ff16858302901c9150816803dea12ea99e49800002810190508360ff16858302901c9150816731880f2214b6e00002810190508360ff16858302901c91508167025bcff56eb3600002810190508360ff16858302901c915081661b722e10ab100002810190508360ff16858302901c9150816601317c7007700002810190508360ff16858302901c915081650cba84aafa0002810190508360ff16858302901c9150816482573a0a0002810190508360ff16858302901c9150816405035ad90002810190508360ff16858302901c915081632f881b0002810190508360ff16858302901c9150816301b2934002810190508360ff16858302901c915081620efc4002810190508360ff16858302901c915081617fe002810190508360ff16858302901c91508161042002810190508360ff16858302901c915081602102810190508360ff16858302901c915081600102810190508360ff166001901b856f0688589cc0e9505e2f2fee5580000000838161150857fe5b04010195945050505050565b600081848411156115665760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561075557818101518382015260200161073d565b505050900390565b60008082610100811015611597575b6001811115611592576001918201911c61157d565b6115cb565b60805b60ff8116156115c957600160ff82161b82106115be579182179160ff81169190911c905b60011c607f1661159a565b505b509291505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a72315820d700785f356d8e46e54e0c6193aa83292d66e2825e5a99b65ee854bb91e991fa64736f6c63430005100032", - "sourceMap": "562:29:5:-;336:3620:4;562:29:5;;336:3620:4;562:29:5;;;-1:-1:-1;;;562:29:5;;;;;;-1:-1:-1;;562:29:5;;:::i;:::-;-1:-1:-1;;;;;;4049:15:5;:54;-1:-1:-1;;;;;4113:15:5;:54;-1:-1:-1;;;;;4177:15:5;:54;-1:-1:-1;;;;;4241:15:5;:54;-1:-1:-1;;;;;4305:15:5;:54;-1:-1:-1;;;;;4369:15:5;:54;-1:-1:-1;;;;;4433:15:5;:54;-1:-1:-1;;;;;4497:15:5;:54;-1:-1:-1;;;;;4561:15:5;:54;-1:-1:-1;;;;;4625:15:5;:54;-1:-1:-1;;;;;4689:15:5;:54;-1:-1:-1;;;;;4753:15:5;:54;-1:-1:-1;;;;;4817:15:5;:54;-1:-1:-1;;;;;4881:15:5;:54;-1:-1:-1;;;;;4945:15:5;:54;-1:-1:-1;;;;;5009:15:5;:54;-1:-1:-1;;;;;5073:15:5;:54;-1:-1:-1;;;;;5137:15:5;:54;-1:-1:-1;;;;;5201:15:5;:54;-1:-1:-1;;;;;5265:15:5;:54;-1:-1:-1;;;;;5329:15:5;:54;-1:-1:-1;;;;;5393:15:5;:54;-1:-1:-1;;;;;5457:15:5;:54;-1:-1:-1;;;;;5521:15:5;:54;-1:-1:-1;;;;;5585:15:5;:54;-1:-1:-1;;;;;5649:15:5;:54;-1:-1:-1;;;;;5713:15:5;:54;-1:-1:-1;;;;;5777:15:5;:54;-1:-1:-1;;;;;5841:15:5;:54;-1:-1:-1;;;;;5905:15:5;:54;-1:-1:-1;;;;;5969:15:5;:54;-1:-1:-1;;;;;6033:15:5;:54;-1:-1:-1;;;;;6097:15:5;:54;-1:-1:-1;;;;;6161:15:5;:54;-1:-1:-1;;;;;6225:15:5;:54;-1:-1:-1;;;;;6289:15:5;:54;-1:-1:-1;;;;;6353:15:5;:54;-1:-1:-1;;;;;6417:15:5;:54;-1:-1:-1;;;;;6481:15:5;:54;-1:-1:-1;;;;;6545:15:5;:54;-1:-1:-1;;;;;6609:15:5;:54;-1:-1:-1;;;;;6673:15:5;:54;-1:-1:-1;;;;;6737:15:5;:54;-1:-1:-1;;;;;6801:15:5;:54;-1:-1:-1;;;;;6865:15:5;:54;6947:36;6929:15;:54;7011:36;6993:15;:54;7075:36;7057:15;:54;7139:36;7121:15;:54;7203:36;7185:15;:54;7267:36;7249:15;:54;7331:36;7313:15;:54;7395:36;7377:15;:54;7459:36;7441:15;:54;7523:36;7505:15;:54;7587:36;7569:15;:54;7651:36;7633:15;:54;7715:36;7697:15;:54;7779:36;7761:15;:54;7843:36;7825:15;:54;7907:36;7889:15;:54;7971:36;7953:15;:54;8035:36;8017:15;:54;-1:-1:-1;;;;;8081:15:5;:54;8163:36;8145:15;:54;8227:36;8209:15;:54;8291:36;8273:15;:54;8355:36;8337:15;:54;8420:36;8401:16;:55;8485:36;8466:16;:55;8550:36;8531:16;:55;8615:36;8596:16;:55;8680:36;8661:16;:55;8745:36;8726:16;:55;8810:36;8791:16;:55;8875:36;8856:16;:55;8940:36;8921:16;:55;9005:36;8986:16;:55;9070:36;9051:16;:55;9135:36;9116:16;:55;9200:36;9181:16;:55;9265:36;9246:16;:55;9330:36;9311:16;:55;9395:36;9376:16;:55;9460:36;9441:16;:55;9525:36;9506:16;:55;9590:36;9571:16;:55;9655:36;9636:16;:55;9720:36;9701:16;:55;9785:36;9766:16;:55;9850:36;9831:16;:55;9915:36;9896:16;:55;9980:36;9961:16;:55;10045:36;10026:16;:55;10110:36;10091:16;:55;10175:36;10156:16;:55;336:3620:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;336:3620:4;;;-1:-1:-1;336:3620:4;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", - "deployedSourceMap": "336:3620:4:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;336:3620:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1129:975;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;1129:975:4;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2789:1165;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;2789:1165:4;;;;;;;;;;;;;;;;;;;:::i;562:29:5:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;562:29:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1129:975:4;1304:7;1371:1;1361:7;:11;:34;;;;;1394:1;1376:15;:19;1361:34;:55;;;;;1415:1;1399:13;:17;;;1361:55;:93;;;;-1:-1:-1;450:7:4;1420:34;;;;;1361:93;1353:121;;;;;-1:-1:-1;;;1353:121:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;1533:19;1529:58;;-1:-1:-1;1575:1:4;1568:8;;1529:58;1644:34;;;450:7;1644:34;1640:120;;;1701:48;1733:15;1701:27;:7;1713:14;1701:27;:11;:27;:::i;:::-;:31;:48;:31;:48;:::i;:::-;1694:55;;;;1640:120;1769:14;;;1834:35;:14;1853:15;1834:35;:18;:35;:::i;:::-;1818:51;;1901:85;1920:5;1927:15;1944:13;450:7;1901:5;:85::i;:::-;1879:107;;-1:-1:-1;1879:107:4;-1:-1:-1;1996:22:4;2021:32;;;:19;:7;1879:107;2021:19;:11;:19;:::i;:::-;:32;;;-1:-1:-1;2070:27:4;2021:32;2089:7;2070:27;:18;:27;:::i;:::-;2063:34;;;;;;1129:975;;;;;;;:::o;2789:1165::-;2957:7;3024:1;3014:7;:11;:34;;;;;3047:1;3029:15;:19;3014:34;:55;;;;;3068:1;3052:13;:17;;;3014:55;:93;;;;-1:-1:-1;450:7:4;3073:34;;;;;3014:93;:119;;;;;3126:7;3111:11;:22;;3014:119;3006:147;;;;;-1:-1:-1;;;3006:147:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;3209:16;3205:55;;-1:-1:-1;3248:1:4;3241:8;;3205:55;3342:7;3327:11;:22;3323:75;;;-1:-1:-1;3372:15:4;3365:22;;3323:75;3455:34;;;450:7;3455:34;3451:117;;;3512:45;3549:7;3512:32;:15;3532:11;3512:32;:19;:32;:::i;3451:117::-;3577:14;;;3642:24;:7;3654:11;3642:24;:11;:24;:::i;:::-;3626:40;;3698:77;3717:7;3726:5;450:7;3752:13;3698:5;:77::i;:::-;3676:99;;-1:-1:-1;3676:99:4;-1:-1:-1;3785:18:4;3806:27;:15;3676:99;3806:27;:19;:27;:::i;:::-;3785:48;-1:-1:-1;3864:28:4;;;;;;3909:38;3940:6;3909:26;3785:48;3864:28;3909:26;:14;:26;:::i;:38::-;3902:45;2789:1165;-1:-1:-1;;;;;;;;;;2789:1165:4:o;562:29:5:-;;;;;;;;;;;;;;;-1:-1:-1;;562:29:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2159:459:13:-;2217:7;2458:6;2454:45;;-1:-1:-1;2487:1:13;2480:8;;2454:45;2521:5;;;2525:1;2521;:5;:1;2544:5;;;;;:10;2536:56;;;;-1:-1:-1;;;2536:56:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2610:1;-1:-1:-1;2159:459:13;;;;;:::o;3073:130::-;3131:7;3157:39;3161:1;3164;3157:39;;;;;;;;;;;;;;;;;:3;:39::i;834:176::-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:13;;;;;;;;;;;;;;;;;;;;;;;;;;;11604:892:5;11740:7;11749:5;1161:35;11778:6;:16;11770:53;;;;;-1:-1:-1;;;11770:53:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;11851:6;11841;:16;;11833:57;;;;;-1:-1:-1;;;11833:57:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;11901:15;11926:12;11960:6;-1:-1:-1;;;11941:6:5;:16;:25;;;;;;11926:40;;1585:35;11980:4;:22;11976:136;;;12028:16;12039:4;12028:10;:16::i;:::-;12018:26;;11976:136;;;12085:16;12096:4;12085:10;:16::i;:::-;12075:26;;11976:136;12122:23;12166:5;12148:23;;12158:5;12148:15;;:7;:15;:23;;;;;;12122:49;;1669:35;12185:15;:33;12181:309;;;12242:27;12253:15;12242:10;:27::i;:::-;772:3;12234:51;;;;;;;;;12181:309;12316:15;12334:42;12360:15;12334:25;:42::i;:::-;12316:60;;12398:69;12445:9;772:3;12429:25;12409:46;;:15;:46;;12457:9;12398:10;:69::i;:::-;12390:89;-1:-1:-1;12469:9:5;-1:-1:-1;12390:89:5;;-1:-1:-1;;;12390:89:5;11604:892;;;;;;;;:::o;1274:134:13:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;3718:338::-;3804:7;3904:12;3897:5;3889:28;;;;-1:-1:-1;;;3889:28:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3889:28:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3927:9;3943:1;3939;:5;;;;;;;3718:338;-1:-1:-1;;;;;3718:338:13:o;19589:2397:5:-;19643:7;;;;;19755:34;19750:39;;19746:143;;19799:34;19792:41;;;;19853:34;-1:-1:-1;;;19839:1:5;:11;:48;;;;;;19835:52;;19746:143;19907:34;19902:1;:39;19898:143;;19951:34;19944:41;;;;20005:34;-1:-1:-1;;;19991:1:5;:11;:48;;;;;;19987:52;;19898:143;20059:34;20054:1;:39;20050:143;;20103:34;20096:41;;;;20157:34;-1:-1:-1;;;20143:1:5;:11;:48;;;;;;20139:52;;20050:143;20211:34;20206:1;:39;20202:143;;20255:34;20248:41;;;;20309:34;-1:-1:-1;;;20295:1:5;:11;:48;;;;;;20291:52;;20202:143;20363:34;20358:1;:39;20354:143;;20407:34;20400:41;;;;20461:34;-1:-1:-1;;;20447:1:5;:11;:48;;;;;;20443:52;;20354:143;20515:34;20510:1;:39;20506:143;;20559:34;20552:41;;;;20613:34;-1:-1:-1;;;20599:1:5;:11;:48;;;;;;20595:52;;20506:143;20667:34;20662:1;:39;20658:143;;20711:34;20704:41;;;;20765:34;-1:-1:-1;;;20751:1:5;:11;:48;;;;;;20747:52;;20658:143;20819:34;20814:1;:39;20810:143;;20863:34;20856:41;;;;20917:34;-1:-1:-1;;;20903:1:5;:11;:48;;;;;;20899:52;;20810:143;20971:11;;;;-1:-1:-1;20971:11:5;;-1:-1:-1;;;;20996:5:5;;;:15;;-1:-1:-1;;;;21033:39:5;;;21028:45;;:83;21021:90;;;;-1:-1:-1;;;21121:1:5;21117;:5;:15;;;;;;21113:19;;21197:35;21192:1;21154:35;:39;21149:1;:45;:83;;;;;;21142:90;;;;-1:-1:-1;;;21242:1:5;21238;:5;:15;;;;;;21234:19;;21318:35;21313:1;21275:35;:39;21270:1;:45;:83;;;;;;21263:90;;;;-1:-1:-1;;;21363:1:5;21359;:5;:15;;;;;;21355:19;;21439:35;21434:1;21396:35;:39;21391:1;:45;:83;;;;;;21384:90;;;;-1:-1:-1;;;21484:1:5;21480;:5;:15;;;;;;21476:19;;21560:35;21555:1;21517:35;:39;21512:1;:45;:83;;;;;;21505:90;;;;-1:-1:-1;;;21605:1:5;21601;:5;:15;;;;;;21597:19;;21681:35;21676:1;21638:35;:39;21633:1;:45;:83;;;;;;21626:90;;;;-1:-1:-1;;;21726:1:5;21722;:5;:15;;;;;;21718:19;;21802:35;21797:1;21759:35;:39;21754:1;:45;:83;;;;;;21747:90;;;;-1:-1:-1;;;21847:1:5;21843;:5;:15;;;;;;21839:19;;21923:35;21918:1;21880:35;:39;21875:1;:45;:83;;;;;;21868:90;;;;;-1:-1:-1;;;;19589:2397:5;;;;:::o;12661:826::-;12716:7;;12772:2;-1:-1:-1;;;12880:12:5;;12876:152;;12908:11;12922:22;-1:-1:-1;;;12932:1:5;:11;12922:9;:22::i;:::-;12958:11;;-1:-1:-1;;;13002:15:5;;;-1:-1:-1;12958:11:5;;;;;-1:-1:-1;12876:152:5;-1:-1:-1;;;13133:1:5;:11;13129:297;;;772:3;13160:256;13190:5;;;;13160:256;;-1:-1:-1;;;13225:5:5;;;13224:17;13220:21;;-1:-1:-1;;;13280:1:5;:12;13276:126;;13322:1;13316:7;;;;;13381:1;13377;:5;13369:14;;629:1;13369:14;;13362:21;;;;13276:126;-1:-1:-1;;13197:3:5;13160:256;;;;13129:297;1398:33;1316;13443:19;;:37;;12661:826;-1:-1:-1;;;;12661:826:5:o;22157:2980::-;22211:7;22555:18;-1:-1:-1;;;22303:38:5;;;22355:5;;;:15;;;22441:5;;;:15;;;22527:5;;;:15;;;22551:22;;;22383:18;22379:22;;;22469:18;22465:22;;;;22458:29;22544;;22303:38;;22613:5;;;:15;22609:19;;22637:1;22641:18;22637:22;22630:29;;;;-1:-1:-1;;;22703:1:5;22699;:5;:15;;;;;;22695:19;;22723:1;22727:18;22723:22;22716:29;;;;-1:-1:-1;;;22789:1:5;22785;:5;:15;;;;;;22781:19;;22809:1;22813:18;22809:22;22802:29;;;;-1:-1:-1;;;22875:1:5;22871;:5;:15;;;;;;22867:19;;22895:1;22899:18;22895:22;22888:29;;;;-1:-1:-1;;;22961:1:5;22957;:5;:15;;;;;;22953:19;;22981:1;22985:18;22981:22;22974:29;;;;-1:-1:-1;;;23047:1:5;23043;:5;:15;;;;;;23039:19;;23067:1;23071:18;23067:22;23060:29;;;;-1:-1:-1;;;23133:1:5;23129;:5;:15;;;;;;23125:19;;23153:1;23157:18;23153:22;23146:29;;;;-1:-1:-1;;;23219:1:5;23215;:5;:15;;;;;;23211:19;;23239:1;23243:18;23239:22;23232:29;;;;-1:-1:-1;;;23305:1:5;23301;:5;:15;;;;;;23297:19;;23325:1;23329:18;23325:22;23318:29;;;;-1:-1:-1;;;23391:1:5;23387;:5;:15;;;;;;23383:19;;23411:1;23415:18;23411:22;23404:29;;;;-1:-1:-1;;;23477:1:5;23473;:5;:15;;;;;;23469:19;;23497:1;23501:18;23497:22;23490:29;;;;-1:-1:-1;;;23563:1:5;23559;:5;:15;;;;;;23555:19;;23583:1;23587:18;23583:22;23576:29;;;;-1:-1:-1;;;23649:1:5;23645;:5;:15;;;;;;23641:19;;23669:1;23673:18;23669:22;23662:29;;;;-1:-1:-1;;;23735:1:5;23731;:5;:15;;;;;;23727:19;;23755:1;23759:18;23755:22;23748:29;;;;-1:-1:-1;;;23821:1:5;23817;:5;:15;;;;;;23813:19;;23841:1;23845:18;23841:22;23834:29;;;;-1:-1:-1;;;23907:1:5;23903;:5;:15;;;;;23997:18;23903:15;;;23920:29;;;23991:24;:28;;-1:-1:-1;;;23991:38:5;;23903:15;-1:-1:-1;24099:35:5;24095:39;;24094:46;24090:137;;24192:35;24154;24148:41;;:79;24142:85;;24090:137;24246:35;24242:39;;24241:46;24237:137;;24339:35;24301;24295:41;;:79;24289:85;;24237:137;24393:35;24389:39;;24388:46;24384:137;;24486:35;24448;24442:41;;:79;24436:85;;24384:137;-1:-1:-1;;;24536:39:5;;24535:46;24531:137;;24633:35;24595;24589:41;;:79;24583:85;;24531:137;-1:-1:-1;;;24683:39:5;;24682:46;24678:137;;24780:35;24742;24736:41;;:79;24730:85;;24678:137;24834:35;24830:39;;24829:46;24825:137;;24927:35;24889;24883:41;;:79;24877:85;;24825:137;24981:35;24977:39;;24976:46;24972:137;;25074:35;25036;25030:41;;:79;25024:85;;24972:137;-1:-1:-1;25127:3:5;;22157:2980;-1:-1:-1;;;22157:2980:5:o;14495:508::-;14569:5;725:2;772:3;14659:179;14675:2;14666:11;;:2;14671:1;14666:6;:11;;;14659:179;;;14693:9;14717:1;14705:13;14706:7;;;14705:13;;14693:25;;14756:2;14736:11;14748:3;14736:16;;;;;;;;;;;:22;14732:95;;14781:3;14776:8;;14732:95;;;14824:3;14819:8;;14732:95;14659:179;;;;14871:2;14852:11;14864:2;14852:15;;;;;;;;;;;:21;14848:48;;14894:2;-1:-1:-1;14887:9:5;;-1:-1:-1;14887:9:5;14848:48;14929:2;14910:11;14922:2;14910:15;;;;;;;;;;;:21;14906:48;;-1:-1:-1;14952:2:5;-1:-1:-1;14945:9:5;;14906:48;14965:13;15587:3826;15660:7;15679:10;15692:2;15679:15;;15704:11;15718:1;15704:15;;15748:10;15735:23;;15741:2;15736;:7;15735:23;;15730:28;;15767:2;15772:33;15767:38;15760:45;;;;15859:10;15846:23;;15852:2;15847;:7;15846:23;;15841:28;;15878:2;15883:33;15878:38;15871:45;;;;15970:10;15957:23;;15963:2;15958;:7;15957:23;;15952:28;;15989:2;15994:33;15989:38;15982:45;;;;16081:10;16068:23;;16074:2;16069;:7;16068:23;;16063:28;;16100:2;16105:33;16100:38;16093:45;;;;16192:10;16179:23;;16185:2;16180;:7;16179:23;;16174:28;;16211:2;16216:33;16211:38;16204:45;;;;16303:10;16290:23;;16296:2;16291;:7;16290:23;;16285:28;;16322:2;16327:33;16322:38;16315:45;;;;16414:10;16401:23;;16407:2;16402;:7;16401:23;;16396:28;;16433:2;16438:33;16433:38;16426:45;;;;16525:10;16512:23;;16518:2;16513;:7;16512:23;;16507:28;;16544:2;16549:33;16544:38;16537:45;;;;16636:10;16623:23;;16629:2;16624;:7;16623:23;;16618:28;;16655:2;16660:33;16655:38;16648:45;;;;16747:10;16734:23;;16740:2;16735;:7;16734:23;;16729:28;;16766:2;16771:33;16766:38;16759:45;;;;16858:10;16845:23;;16851:2;16846;:7;16845:23;;16840:28;;16877:2;16882:33;16877:38;16870:45;;;;16969:10;16956:23;;16962:2;16957;:7;16956:23;;16951:28;;16988:2;16993:33;16988:38;16981:45;;;;17080:10;17067:23;;17073:2;17068;:7;17067:23;;17062:28;;17099:2;17104:33;17099:38;17092:45;;;;17191:10;17178:23;;17184:2;17179;:7;17178:23;;17173:28;;17210:2;17215:33;17210:38;17203:45;;;;17302:10;17289:23;;17295:2;17290;:7;17289:23;;17284:28;;17321:2;17326:33;17321:38;17314:45;;;;17413:10;17400:23;;17406:2;17401;:7;17400:23;;17395:28;;17432:2;17437:33;17432:38;17425:45;;;;17524:10;17511:23;;17517:2;17512;:7;17511:23;;17506:28;;17543:2;17548:33;17543:38;17536:45;;;;17635:10;17622:23;;17628:2;17623;:7;17622:23;;17617:28;;17654:2;17659:33;17654:38;17647:45;;;;17746:10;17733:23;;17739:2;17734;:7;17733:23;;17728:28;;17765:2;17770:33;17765:38;17758:45;;;;17857:10;17844:23;;17850:2;17845;:7;17844:23;;17839:28;;17876:2;17881:33;17876:38;17869:45;;;;17968:10;17955:23;;17961:2;17956;:7;17955:23;;17950:28;;17987:2;17992:33;17987:38;17980:45;;;;18079:10;18066:23;;18072:2;18067;:7;18066:23;;18061:28;;18098:2;18103:33;18098:38;18091:45;;;;18190:10;18177:23;;18183:2;18178;:7;18177:23;;18172:28;;18209:2;18214:33;18209:38;18202:45;;;;18301:10;18288:23;;18294:2;18289;:7;18288:23;;18283:28;;18320:2;18325:33;18320:38;18313:45;;;;18412:10;18399:23;;18405:2;18400;:7;18399:23;;18394:28;;18431:2;18436:33;18431:38;18424:45;;;;18523:10;18510:23;;18516:2;18511;:7;18510:23;;18505:28;;18542:2;18547:33;18542:38;18535:45;;;;18634:10;18621:23;;18627:2;18622;:7;18621:23;;18616:28;;18653:2;18658:33;18653:38;18646:45;;;;18745:10;18732:23;;18738:2;18733;:7;18732:23;;18727:28;;18764:2;18769:33;18764:38;18757:45;;;;18856:10;18843:23;;18849:2;18844;:7;18843:23;;18838:28;;18875:2;18880:33;18875:38;18868:45;;;;18967:10;18954:23;;18960:2;18955;:7;18954:23;;18949:28;;18986:2;18991:33;18986:38;18979:45;;;;19078:10;19065:23;;19071:2;19066;:7;19065:23;;19060:28;;19097:2;19102:33;19097:38;19090:45;;;;19189:10;19176:23;;19182:2;19177;:7;19176:23;;19171:28;;19208:2;19213:33;19208:38;19201:45;;;;19345:10;19338:17;;629:1;19338:17;;19332:2;19296:33;19290:3;:39;;;;;;:44;:66;;15587:3826;-1:-1:-1;;;;;15587:3826:5:o;1732:187:13:-;1818:7;1853:12;1845:6;;;;1837:29;;;;-1:-1:-1;;;1837:29:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1837:29:13;-1:-1:-1;;;1888:5:13;;;1732:187::o;13602:532:5:-;13656:5;;13708:2;13729:3;13725:7;;13721:386;;;13784:80;13795:1;13791;:5;13784:80;;;13822:1;13841:8;;;;13816:7;13784:80;;;13721:386;;;13945:3;13930:167;13950:5;;;;13930:167;;629:1;13994:8;;;;13988:15;;13984:99;;14056:8;;;;14027:7;;;;;;;;13984:99;13963:1;13957:7;;;13930:167;;;;13721:386;-1:-1:-1;14124:3:5;13602:532;-1:-1:-1;;13602:532:5:o", + "bytecode": "0x60c0604052600360808190527f302e33000000000000000000000000000000000000000000000000000000000060a0908152620000409160009190620007e9565b506001606060020a641c35fedd1502036021556001605e60020a646c3390ecc902036022556001606160020a640cf801476102036023556001605f60020a6431bdb23e1d02036024556001605b60020a6502fb1d8fe08302036025556001605a60020a6505b771955b3702036026556001605960020a650af67a93bb5102036027556001605860020a6515060c256cb302036028556001605860020a651428a2f98d7302036029556001605660020a654d51566397090203602a556001605560020a65944620b0e70f0203602b557011c592761c666fffffffffffffffffffff602c5570110a688680a757ffffffffffffffffffff602d55701056f1b5bedf77ffffffffffffffffffff602e55700faadceceeff8bffffffffffffffffffff602f55700f05dc6b27edadffffffffffffffffffff603055700e67a5a25da4107fffffffffffffffffff603155700dcff115b14eedffffffffffffffffffff603255700d3e7a392431239fffffffffffffffffff603355700cb2ff529eb71e4fffffffffffffffffff603455700c2d415c3db974afffffffffffffffffff603555700bad03e7d883f69bffffffffffffffffff603655700b320d03b2c343d5ffffffffffffffffff603755700abc25204e02828dffffffffffffffffff603855700a4b16f74ee4bb207fffffffffffffffff6039557009deaf736ac1f569ffffffffffffffffff603a55700976bd9952c7aa957fffffffffffffffff603b557009131271922eaa606fffffffffffffffff603c557008b380f3558668c46fffffffffffffffff603d55700857ddf0117efa215bffffffffffffffff603e556001608360020a03603f557007abbf6f6abb9d087fffffffffffffffff60405570075af62cbac95f7dfa7fffffffffffffff60415570070d7fb7452e187ac13fffffffffffffff6042557006c3390ecc8af379295fffffffffffffff60435570067c00a3b07ffc01fd6fffffffffffffff604455700637b647c39cbb9d3d27ffffffffffffff6045557005f63b1fc104dbd39587ffffffffffffff6046557005b771955b36e12f7235ffffffffffffff60475570057b3d49dda84556d6f6ffffffffffffff60485570054183095b2c8ececf30ffffffffffffff60495570050a28be635ca2b888f77fffffffffffff604a557004d5156639708c9db33c3fffffffffffff604b557004a23105873875bd52dfdfffffffffffff604c55700471649d87199aa990756fffffffffffff604d557004429a21a029d4c1457cfbffffffffffff604e55700415bc6d6fb7dd71af2cb3ffffffffffff604f557003eab73b3bbfe282243ce1ffffffffffff6050557003c1771ac9fb6b4c18e229ffffffffffff605155700399e96897690418f785257fffffffffff605255700373fc456c53bb779bf0ea9fffffffffff60535570034f9e8e490c48e67e6ab8bfffffffffff60545570032cbfd4a7adc790560b3337ffffffffff60555570030b50570f6e5d2acca94613ffffffffff6056557002eb40f9f620fda6b56c2861ffffffffff6057557002cc8340ecb0d0f520a6af58ffffffffff6058557002af09481380a0a35cf1ba02ffffffffff605955700292c5bdd3b92ec810287b1b3fffffffff605a55700277abdcdab07d5a77ac6d6b9fffffffff605b5570025daf6654b1eaa55fd64df5efffffffff605c55700244c49c648baa98192dce88b7ffffffff605d5570022ce03cd5619a311b2471268bffffffff605e55700215f77c045fbe885654a44a0fffffffff605f556001608160020a036060557001eaefdbdaaee7421fc4d3ede5ffffffff6061557001d6bd8b2eb257df7e8ca57b09bfffffff6062557001c35fedd14b861eb0443f7f133fffffff6063557001b0ce43b322bcde4a56e8ada5afffffff60645570019f0028ec1fff007f5a195a39dfffffff60655570018ded91f0e72ee74f49b15ba527ffffff60665570017d8ec7f04136f4e5615fd41a63ffffff60675570016ddc6556cdb84bdc8d12d22e6fffffff60685570015ecf52776a1155b5bd8395814f7fffff60695570015060c256cb23b3b3cc3754cf40ffffff606a557001428a2f98d728ae223ddab715be3fffff606b5570013545598e5c23276ccf0ede68034fffff606c557001288c4161ce1d6f54b7f61081194fffff606d5570011c592761c666aa641d5a01a40f17ffff606e55700110a688680a7530515f3e6e6cfdcdffff606f557001056f1b5bedf75c6bcb2ce8aed428ffff6070556ffaadceceeff8a0890f3875f008277fff6071556ff05dc6b27edad306388a600f6ba0bfff6072556fe67a5a25da41063de1495d5b18cdbfff6073556fdcff115b14eedde6fc3aa5353f2e4fff6074556fd3e7a3924312399f9aae2e0f868f8fff6075556fcb2ff529eb71e41582cccd5a1ee26fff6076556fc2d415c3db974ab32a51840c0b67edff6077556fbad03e7d883f69ad5b0a186184e06bff6078556fb320d03b2c343d4829abd6075f0cc5ff6079556fabc25204e02828d73c6e80bcdb1a95bf607a556fa4b16f74ee4bb2040a1ec6c15fbbf2df607b556f9deaf736ac1f569deb1b5ae3f36c130f607c556f976bd9952c7aa957f5937d790ef65037607d556f9131271922eaa6064b73a22d0bd4f2bf607e556f8b380f3558668c46c91c49a2f8e967b9607f556f857ddf0117efa215952912839f6473e66080556200088e565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200082c57805160ff19168380011785556200085c565b828001600101855582156200085c579182015b828111156200085c5782518255916020019190600101906200083f565b506200086a9291506200086e565b5090565b6200088b91905b808211156200086a576000815560010162000875565b90565b6119e2806200089e6000396000f3fe608060405234801561001057600080fd5b506004361061005d577c0100000000000000000000000000000000000000000000000000000000600035046329a00e7c811461006257806349f9b0f7146100a957806354fd4d50146100de575b600080fd5b6100976004803603608081101561007857600080fd5b5080359060208101359063ffffffff604082013516906060013561015b565b60408051918252519081900360200190f35b610097600480360360808110156100bf57600080fd5b5080359060208101359063ffffffff60408201351690606001356102b0565b6100e661040d565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610120578181015183820152602001610108565b50505050905090810190601f16801561014d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000808511801561016c5750600084115b801561017e575060008363ffffffff16115b80156101935750620f424063ffffffff841611155b151561020057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f496e76616c696420696e707574732e0000000000000000000000000000000000604482015290519081900360640190fd5b81151561020f575060006102a8565b63ffffffff8316620f424014156102475761024084610234878563ffffffff61049b16565b9063ffffffff61051b16565b90506102a8565b6000808061025b858863ffffffff61055d16565b905061026c818888620f42406105d1565b9093509150600060ff83166102878a8663ffffffff61049b16565b60029190910a900490506102a1818a63ffffffff6107a116565b9450505050505b949350505050565b600080851180156102c15750600084115b80156102d3575060008363ffffffff16115b80156102e85750620f424063ffffffff841611155b80156102f45750848211155b151561036157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f496e76616c696420696e707574732e0000000000000000000000000000000000604482015290519081900360640190fd5b811515610370575060006102a8565b8482141561037f5750826102a8565b63ffffffff8316620f424014156103a45761024085610234868563ffffffff61049b16565b600080806103b8888663ffffffff6107a116565b90506103c98882620f4240896105d1565b909350915060006103e0888563ffffffff61049b16565b905060ff831660020a88026103ff85610234848463ffffffff6107a116565b9a9950505050505050505050565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104935780601f1061046857610100808354040283529160200191610493565b820191906000526020600020905b81548152906001019060200180831161047657829003601f168201915b505050505081565b60008215156104ac57506000610515565b8282028284828115156104bb57fe5b0414610512576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806119966021913960400191505060405180910390fd5b90505b92915050565b600061051283836040805190810160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506107e3565b60008282018381101561051257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600080700200000000000000000000000000000000861061065357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f626173654e2065786365656473206d61782076616c75652e0000000000000000604482015290519081900360640190fd5b848610156106c257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4261736573203c203120617265206e6f7420737570706f727465642e00000000604482015290519081900360640190fd5b600080866f8000000000000000000000000000000089028115156106e257fe5b04905070015bf0a8b1457695355fb8ac404e7a79e381101561070e57610707816108a3565b915061071a565b61071781610d99565b91505b60008563ffffffff168763ffffffff16840281151561073557fe5b0490507008000000000000000000000000000000008110156107685761075a81610e98565b607f94509450505050610798565b60006107738261137d565b905061078b60ff607f8390031660020a83048261140f565b9550935061079892505050565b94509492505050565b600061051283836040805190810160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506118b1565b60008181841161088b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610850578181015183820152602001610838565b50505050905090810190601f16801561087d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581151561089957fe5b0495945050505050565b6000808080806fd3094c70f034de4b96ff7d5b6f99fcd886106108fe576f4000000000000000000000000000000093909301926fd3094c70f034de4b96ff7d5b6f99fcd86f8000000000000000000000000000000087020495505b6fa45af1e1f40c333b3de1db4dd55f29a78610610953576f2000000000000000000000000000000093909301926fa45af1e1f40c333b3de1db4dd55f29a76f8000000000000000000000000000000087020495505b6f910b022db7ae67ce76b441c27035c6a186106109a8576f1000000000000000000000000000000093909301926f910b022db7ae67ce76b441c27035c6a16f8000000000000000000000000000000087020495505b6f88415abbe9a76bead8d00cf112e4d4a886106109fd576f0800000000000000000000000000000093909301926f88415abbe9a76bead8d00cf112e4d4a86f8000000000000000000000000000000087020495505b6f84102b00893f64c705e841d5d4064bd38610610a52576f0400000000000000000000000000000093909301926f84102b00893f64c705e841d5d4064bd36f8000000000000000000000000000000087020495505b6f8204055aaef1c8bd5c3259f4822735a28610610aa7576f0200000000000000000000000000000093909301926f8204055aaef1c8bd5c3259f4822735a26f8000000000000000000000000000000087020495505b6f810100ab00222d861931c15e39b44e998610610afc576f0100000000000000000000000000000093909301926f810100ab00222d861931c15e39b44e996f8000000000000000000000000000000087020495505b6f808040155aabbbe9451521693554f7338610610b50576e80000000000000000000000000000093909301926f808040155aabbbe9451521693554f7336f8000000000000000000000000000000087020495505b7fffffffffffffffffffffffffffffffff80000000000000000000000000000000860192508291506f8000000000000000000000000000000082800204905070010000000000000000000000000000000083810383020493909301926f800000000000000000000000000000008282020491507002000000000000000000000000000000006faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa84900383020493909301926f800000000000000000000000000000008282020491507003000000000000000000000000000000006f9999999999999999999999999999999984900383020493909301926f800000000000000000000000000000008282020491507004000000000000000000000000000000006f9249249249249249249249249249249284900383020493909301926f800000000000000000000000000000008282020491507005000000000000000000000000000000006f8e38e38e38e38e38e38e38e38e38e38e84900383020493909301926f800000000000000000000000000000008282020491507006000000000000000000000000000000006f8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8b84900383020493909301926f800000000000000000000000000000008282020491507007000000000000000000000000000000006f89d89d89d89d89d89d89d89d89d89d8984900383020493909301926f800000000000000000000000000000008282020491507008000000000000000000000000000000006f888888888888888888888888888888888490038302049390930193505050505b919050565b600080827001000000000000000000000000000000008110610df3576000610dd26f800000000000000000000000000000008304611926565b60ff166f800000000000000000000000000000008102935060020a90910490505b6f80000000000000000000000000000000811115610e6b57607f5b60008160ff161115610e69576f800000000000000000000000000000008280020491507001000000000000000000000000000000008210610e605760ff600019820116600290810a9390930192909104905b60001901610e0e565b505b6f05b9de1d10bf4103d647b0955897ba806f03f80fe03f80fe03f80fe03f80fe03f8830204949350505050565b6000670168244fdac780006f800000000000000000000000000000006f0fffffffffffffffffffffffffffffff84168080028290048082028390048083028490049485026710e1b3be415a00009092026705a0913f6b1e000091909102010192909181830204905080664807432bc1800002830192506f80000000000000000000000000000000828202811515610f2b57fe5b04905080660c0135dca0400002830192506f80000000000000000000000000000000828202811515610f5957fe5b049050806601b707b1cdc00002830192506f80000000000000000000000000000000828202811515610f8757fe5b049050806536e0f639b80002830192506f80000000000000000000000000000000828202811515610fb457fe5b04905080650618fee9f80002830192506f80000000000000000000000000000000828202811515610fe157fe5b04905080649c197dcc0002830192506f8000000000000000000000000000000082820281151561100d57fe5b04905080640e30dce40002830192506f8000000000000000000000000000000082820281151561103957fe5b0490508064012ebd130002830192506f8000000000000000000000000000000082820281151561106557fe5b049050806317499f0002830192506f8000000000000000000000000000000082820281151561109057fe5b049050806301a9d48002830192506f800000000000000000000000000000008282028115156110bb57fe5b04905080621c638002830192506f800000000000000000000000000000008282028115156110e557fe5b049050806201c63802830192506f8000000000000000000000000000000082820281151561110f57fe5b04905080611ab802830192506f8000000000000000000000000000000082820281151561113857fe5b0490508061017c02830192506f8000000000000000000000000000000082820281151561116157fe5b04905080601402830192506f8000000000000000000000000000000082820281151561118957fe5b6721c3677c82b400009190049384010482016f80000000000000000000000000000000019290506f100000000000000000000000000000008516156111f25770018ebef9eac820ae8682b9793ac6d1e7767001c3d6a24ed82218787d624d3e5eba95f984020492505b6f20000000000000000000000000000000851615611234577001368b2fc6f9609fe7aceb46aa619baed470018ebef9eac820ae8682b9793ac6d1e77884020492505b6f40000000000000000000000000000000851615611275576fbc5ab1b16779be3575bd8f0520a9f21f7001368b2fc6f9609fe7aceb46aa619baed584020492505b6f800000000000000000000000000000008516156112b5576f454aaa8efe072e7f6ddbab84b40a55c96fbc5ab1b16779be3575bd8f0520a9f21e84020492505b7001000000000000000000000000000000008516156112f6576f0960aadc109e7a3bf4578099615711ea6f454aaa8efe072e7f6ddbab84b40a55c584020492505b700200000000000000000000000000000000851615611336576e2bf84208204f5977f9a8cf01fdce3d6f0960aadc109e7a3bf4578099615711d784020492505b700400000000000000000000000000000000851615611374576d03c6ab775dd0b95b4cbee7e65d116e2bf84208204f5977f9a8cf01fdc30784020492505b50909392505050565b60006020607f5b8060ff168260010160ff1610156113cc576000600260ff8484011604905084600160ff8316608081106113b357fe5b0154106113c2578092506113c6565b8091505b50611384565b83600160ff8316608081106113dd57fe5b0154106113ed579150610d949050565b83600160ff8416608081106113fe57fe5b01541061140d57509050610d94565bfe5b60008083905060008090508360ff16858302908060020a82049150509150816f03442c4e6074a82f1797f72ac000000002810190508360ff16858302908060020a82049150509150816f0116b96f757c380fb287fd0e4000000002810190508360ff16858302908060020a82049150509150816e45ae5bdd5f0e03eca1ff439000000002810190508360ff16858302908060020a82049150509150816e0defabf91302cd95b9ffda5000000002810190508360ff16858302908060020a82049150509150816e02529ca9832b22439efff9b800000002810190508360ff16858302908060020a82049150509150816d54f1cf12bd04e516b6da8800000002810190508360ff16858302908060020a82049150509150816d0a9e39e257a09ca2d6db5100000002810190508360ff16858302908060020a82049150509150816d012e066e7b839fa050c30900000002810190508360ff16858302908060020a82049150509150816c1e33d7d926c329a1ad1a80000002810190508360ff16858302908060020a82049150509150816c02bee513bdb4a6b19b5f80000002810190508360ff16858302908060020a82049150509150816b3a9316fa79b88eccf2a0000002810190508360ff16858302908060020a82049150509150816b048177ebe1fa81237520000002810190508360ff16858302908060020a82049150509150816a5263fe90242dcbacf0000002810190508360ff16858302908060020a82049150509150816a057e22099c030d9410000002810190508360ff16858302908060020a82049150509150816957e22099c030d941000002810190508360ff16858302908060020a820491505091508169052b6b5456997631000002810190508360ff16858302908060020a8204915050915081684985f67696bf74800002810190508360ff16858302908060020a82049150509150816803dea12ea99e49800002810190508360ff16858302908060020a82049150509150816731880f2214b6e00002810190508360ff16858302908060020a820491505091508167025bcff56eb3600002810190508360ff16858302908060020a8204915050915081661b722e10ab100002810190508360ff16858302908060020a82049150509150816601317c7007700002810190508360ff16858302908060020a8204915050915081650cba84aafa0002810190508360ff16858302908060020a82049150509150816482573a0a0002810190508360ff16858302908060020a82049150509150816405035ad90002810190508360ff16858302908060020a8204915050915081632f881b0002810190508360ff16858302908060020a82049150509150816301b2934002810190508360ff16858302908060020a8204915050915081620efc4002810190508360ff16858302908060020a8204915050915081617fe002810190508360ff16858302908060020a820491505091508161042002810190508360ff16858302908060020a8204915050915081602102810190508360ff16858302908060020a8204915050915081600102810190508360ff1660019060020a02856f0688589cc0e9505e2f2fee5580000000838115156118a557fe5b04010195945050505050565b6000818484111561191e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610850578181015183820152602001610838565b505050900390565b60008082610100811015611953575b600181111561194e576001919091019060029004611935565b61198e565b60805b60008160ff16111561198c5760ff811660020a821061197f579182179160ff811660020a909104905b600260ff90911604611956565b505b509291505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a165627a7a723058205c71c3d750539d151b9e4f95f16ae8ca5349bf9212421b5c7b9ea3e0fde2837b0029", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061005d577c0100000000000000000000000000000000000000000000000000000000600035046329a00e7c811461006257806349f9b0f7146100a957806354fd4d50146100de575b600080fd5b6100976004803603608081101561007857600080fd5b5080359060208101359063ffffffff604082013516906060013561015b565b60408051918252519081900360200190f35b610097600480360360808110156100bf57600080fd5b5080359060208101359063ffffffff60408201351690606001356102b0565b6100e661040d565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610120578181015183820152602001610108565b50505050905090810190601f16801561014d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000808511801561016c5750600084115b801561017e575060008363ffffffff16115b80156101935750620f424063ffffffff841611155b151561020057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f496e76616c696420696e707574732e0000000000000000000000000000000000604482015290519081900360640190fd5b81151561020f575060006102a8565b63ffffffff8316620f424014156102475761024084610234878563ffffffff61049b16565b9063ffffffff61051b16565b90506102a8565b6000808061025b858863ffffffff61055d16565b905061026c818888620f42406105d1565b9093509150600060ff83166102878a8663ffffffff61049b16565b60029190910a900490506102a1818a63ffffffff6107a116565b9450505050505b949350505050565b600080851180156102c15750600084115b80156102d3575060008363ffffffff16115b80156102e85750620f424063ffffffff841611155b80156102f45750848211155b151561036157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f496e76616c696420696e707574732e0000000000000000000000000000000000604482015290519081900360640190fd5b811515610370575060006102a8565b8482141561037f5750826102a8565b63ffffffff8316620f424014156103a45761024085610234868563ffffffff61049b16565b600080806103b8888663ffffffff6107a116565b90506103c98882620f4240896105d1565b909350915060006103e0888563ffffffff61049b16565b905060ff831660020a88026103ff85610234848463ffffffff6107a116565b9a9950505050505050505050565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104935780601f1061046857610100808354040283529160200191610493565b820191906000526020600020905b81548152906001019060200180831161047657829003601f168201915b505050505081565b60008215156104ac57506000610515565b8282028284828115156104bb57fe5b0414610512576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806119966021913960400191505060405180910390fd5b90505b92915050565b600061051283836040805190810160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506107e3565b60008282018381101561051257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600080700200000000000000000000000000000000861061065357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f626173654e2065786365656473206d61782076616c75652e0000000000000000604482015290519081900360640190fd5b848610156106c257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4261736573203c203120617265206e6f7420737570706f727465642e00000000604482015290519081900360640190fd5b600080866f8000000000000000000000000000000089028115156106e257fe5b04905070015bf0a8b1457695355fb8ac404e7a79e381101561070e57610707816108a3565b915061071a565b61071781610d99565b91505b60008563ffffffff168763ffffffff16840281151561073557fe5b0490507008000000000000000000000000000000008110156107685761075a81610e98565b607f94509450505050610798565b60006107738261137d565b905061078b60ff607f8390031660020a83048261140f565b9550935061079892505050565b94509492505050565b600061051283836040805190810160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506118b1565b60008181841161088b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610850578181015183820152602001610838565b50505050905090810190601f16801561087d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581151561089957fe5b0495945050505050565b6000808080806fd3094c70f034de4b96ff7d5b6f99fcd886106108fe576f4000000000000000000000000000000093909301926fd3094c70f034de4b96ff7d5b6f99fcd86f8000000000000000000000000000000087020495505b6fa45af1e1f40c333b3de1db4dd55f29a78610610953576f2000000000000000000000000000000093909301926fa45af1e1f40c333b3de1db4dd55f29a76f8000000000000000000000000000000087020495505b6f910b022db7ae67ce76b441c27035c6a186106109a8576f1000000000000000000000000000000093909301926f910b022db7ae67ce76b441c27035c6a16f8000000000000000000000000000000087020495505b6f88415abbe9a76bead8d00cf112e4d4a886106109fd576f0800000000000000000000000000000093909301926f88415abbe9a76bead8d00cf112e4d4a86f8000000000000000000000000000000087020495505b6f84102b00893f64c705e841d5d4064bd38610610a52576f0400000000000000000000000000000093909301926f84102b00893f64c705e841d5d4064bd36f8000000000000000000000000000000087020495505b6f8204055aaef1c8bd5c3259f4822735a28610610aa7576f0200000000000000000000000000000093909301926f8204055aaef1c8bd5c3259f4822735a26f8000000000000000000000000000000087020495505b6f810100ab00222d861931c15e39b44e998610610afc576f0100000000000000000000000000000093909301926f810100ab00222d861931c15e39b44e996f8000000000000000000000000000000087020495505b6f808040155aabbbe9451521693554f7338610610b50576e80000000000000000000000000000093909301926f808040155aabbbe9451521693554f7336f8000000000000000000000000000000087020495505b7fffffffffffffffffffffffffffffffff80000000000000000000000000000000860192508291506f8000000000000000000000000000000082800204905070010000000000000000000000000000000083810383020493909301926f800000000000000000000000000000008282020491507002000000000000000000000000000000006faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa84900383020493909301926f800000000000000000000000000000008282020491507003000000000000000000000000000000006f9999999999999999999999999999999984900383020493909301926f800000000000000000000000000000008282020491507004000000000000000000000000000000006f9249249249249249249249249249249284900383020493909301926f800000000000000000000000000000008282020491507005000000000000000000000000000000006f8e38e38e38e38e38e38e38e38e38e38e84900383020493909301926f800000000000000000000000000000008282020491507006000000000000000000000000000000006f8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8b84900383020493909301926f800000000000000000000000000000008282020491507007000000000000000000000000000000006f89d89d89d89d89d89d89d89d89d89d8984900383020493909301926f800000000000000000000000000000008282020491507008000000000000000000000000000000006f888888888888888888888888888888888490038302049390930193505050505b919050565b600080827001000000000000000000000000000000008110610df3576000610dd26f800000000000000000000000000000008304611926565b60ff166f800000000000000000000000000000008102935060020a90910490505b6f80000000000000000000000000000000811115610e6b57607f5b60008160ff161115610e69576f800000000000000000000000000000008280020491507001000000000000000000000000000000008210610e605760ff600019820116600290810a9390930192909104905b60001901610e0e565b505b6f05b9de1d10bf4103d647b0955897ba806f03f80fe03f80fe03f80fe03f80fe03f8830204949350505050565b6000670168244fdac780006f800000000000000000000000000000006f0fffffffffffffffffffffffffffffff84168080028290048082028390048083028490049485026710e1b3be415a00009092026705a0913f6b1e000091909102010192909181830204905080664807432bc1800002830192506f80000000000000000000000000000000828202811515610f2b57fe5b04905080660c0135dca0400002830192506f80000000000000000000000000000000828202811515610f5957fe5b049050806601b707b1cdc00002830192506f80000000000000000000000000000000828202811515610f8757fe5b049050806536e0f639b80002830192506f80000000000000000000000000000000828202811515610fb457fe5b04905080650618fee9f80002830192506f80000000000000000000000000000000828202811515610fe157fe5b04905080649c197dcc0002830192506f8000000000000000000000000000000082820281151561100d57fe5b04905080640e30dce40002830192506f8000000000000000000000000000000082820281151561103957fe5b0490508064012ebd130002830192506f8000000000000000000000000000000082820281151561106557fe5b049050806317499f0002830192506f8000000000000000000000000000000082820281151561109057fe5b049050806301a9d48002830192506f800000000000000000000000000000008282028115156110bb57fe5b04905080621c638002830192506f800000000000000000000000000000008282028115156110e557fe5b049050806201c63802830192506f8000000000000000000000000000000082820281151561110f57fe5b04905080611ab802830192506f8000000000000000000000000000000082820281151561113857fe5b0490508061017c02830192506f8000000000000000000000000000000082820281151561116157fe5b04905080601402830192506f8000000000000000000000000000000082820281151561118957fe5b6721c3677c82b400009190049384010482016f80000000000000000000000000000000019290506f100000000000000000000000000000008516156111f25770018ebef9eac820ae8682b9793ac6d1e7767001c3d6a24ed82218787d624d3e5eba95f984020492505b6f20000000000000000000000000000000851615611234577001368b2fc6f9609fe7aceb46aa619baed470018ebef9eac820ae8682b9793ac6d1e77884020492505b6f40000000000000000000000000000000851615611275576fbc5ab1b16779be3575bd8f0520a9f21f7001368b2fc6f9609fe7aceb46aa619baed584020492505b6f800000000000000000000000000000008516156112b5576f454aaa8efe072e7f6ddbab84b40a55c96fbc5ab1b16779be3575bd8f0520a9f21e84020492505b7001000000000000000000000000000000008516156112f6576f0960aadc109e7a3bf4578099615711ea6f454aaa8efe072e7f6ddbab84b40a55c584020492505b700200000000000000000000000000000000851615611336576e2bf84208204f5977f9a8cf01fdce3d6f0960aadc109e7a3bf4578099615711d784020492505b700400000000000000000000000000000000851615611374576d03c6ab775dd0b95b4cbee7e65d116e2bf84208204f5977f9a8cf01fdc30784020492505b50909392505050565b60006020607f5b8060ff168260010160ff1610156113cc576000600260ff8484011604905084600160ff8316608081106113b357fe5b0154106113c2578092506113c6565b8091505b50611384565b83600160ff8316608081106113dd57fe5b0154106113ed579150610d949050565b83600160ff8416608081106113fe57fe5b01541061140d57509050610d94565bfe5b60008083905060008090508360ff16858302908060020a82049150509150816f03442c4e6074a82f1797f72ac000000002810190508360ff16858302908060020a82049150509150816f0116b96f757c380fb287fd0e4000000002810190508360ff16858302908060020a82049150509150816e45ae5bdd5f0e03eca1ff439000000002810190508360ff16858302908060020a82049150509150816e0defabf91302cd95b9ffda5000000002810190508360ff16858302908060020a82049150509150816e02529ca9832b22439efff9b800000002810190508360ff16858302908060020a82049150509150816d54f1cf12bd04e516b6da8800000002810190508360ff16858302908060020a82049150509150816d0a9e39e257a09ca2d6db5100000002810190508360ff16858302908060020a82049150509150816d012e066e7b839fa050c30900000002810190508360ff16858302908060020a82049150509150816c1e33d7d926c329a1ad1a80000002810190508360ff16858302908060020a82049150509150816c02bee513bdb4a6b19b5f80000002810190508360ff16858302908060020a82049150509150816b3a9316fa79b88eccf2a0000002810190508360ff16858302908060020a82049150509150816b048177ebe1fa81237520000002810190508360ff16858302908060020a82049150509150816a5263fe90242dcbacf0000002810190508360ff16858302908060020a82049150509150816a057e22099c030d9410000002810190508360ff16858302908060020a82049150509150816957e22099c030d941000002810190508360ff16858302908060020a820491505091508169052b6b5456997631000002810190508360ff16858302908060020a8204915050915081684985f67696bf74800002810190508360ff16858302908060020a82049150509150816803dea12ea99e49800002810190508360ff16858302908060020a82049150509150816731880f2214b6e00002810190508360ff16858302908060020a820491505091508167025bcff56eb3600002810190508360ff16858302908060020a8204915050915081661b722e10ab100002810190508360ff16858302908060020a82049150509150816601317c7007700002810190508360ff16858302908060020a8204915050915081650cba84aafa0002810190508360ff16858302908060020a82049150509150816482573a0a0002810190508360ff16858302908060020a82049150509150816405035ad90002810190508360ff16858302908060020a8204915050915081632f881b0002810190508360ff16858302908060020a82049150509150816301b2934002810190508360ff16858302908060020a8204915050915081620efc4002810190508360ff16858302908060020a8204915050915081617fe002810190508360ff16858302908060020a820491505091508161042002810190508360ff16858302908060020a8204915050915081602102810190508360ff16858302908060020a8204915050915081600102810190508360ff1660019060020a02856f0688589cc0e9505e2f2fee5580000000838115156118a557fe5b04010195945050505050565b6000818484111561191e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015610850578181015183820152602001610838565b505050900390565b60008082610100811015611953575b600181111561194e576001919091019060029004611935565b61198e565b60805b60008160ff16111561198c5760ff811660020a821061197f579182179160ff811660020a909104905b600260ff90911604611956565b505b509291505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a165627a7a723058205c71c3d750539d151b9e4f95f16ae8ca5349bf9212421b5c7b9ea3e0fde2837b0029", + "sourceMap": "562:29:5:-;336:3620:4;562:29:5;;336:3620:4;562:29:5;;;;;;;;;;-1:-1:-1;;562:29:5;;:::i;:::-;-1:-1:-1;;;;;;;;4049:15:5;:54;-1:-1:-1;;;;;;;4113:15:5;:54;-1:-1:-1;;;;;;;4177:15:5;:54;-1:-1:-1;;;;;;;4241:15:5;:54;-1:-1:-1;;;;;;;4305:15:5;:54;-1:-1:-1;;;;;;;4369:15:5;:54;-1:-1:-1;;;;;;;4433:15:5;:54;-1:-1:-1;;;;;;;4497:15:5;:54;-1:-1:-1;;;;;;;4561:15:5;:54;-1:-1:-1;;;;;;;4625:15:5;:54;-1:-1:-1;;;;;;;4689:15:5;:54;4771:36;4753:15;:54;4835:36;4817:15;:54;4899:36;4881:15;:54;4963:36;4945:15;:54;5027:36;5009:15;:54;5091:36;5073:15;:54;5155:36;5137:15;:54;5219:36;5201:15;:54;5283:36;5265:15;:54;5347:36;5329:15;:54;5411:36;5393:15;:54;5475:36;5457:15;:54;5539:36;5521:15;:54;5603:36;5585:15;:54;5667:36;5649:15;:54;5731:36;5713:15;:54;5795:36;5777:15;:54;5859:36;5841:15;:54;5923:36;5905:15;:54;-1:-1:-1;;;;;5969:15:5;:54;6051:36;6033:15;:54;6115:36;6097:15;:54;6179:36;6161:15;:54;6243:36;6225:15;:54;6307:36;6289:15;:54;6371:36;6353:15;:54;6435:36;6417:15;:54;6499:36;6481:15;:54;6563:36;6545:15;:54;6627:36;6609:15;:54;6691:36;6673:15;:54;6755:36;6737:15;:54;6819:36;6801:15;:54;6883:36;6865:15;:54;6947:36;6929:15;:54;7011:36;6993:15;:54;7075:36;7057:15;:54;7139:36;7121:15;:54;7203:36;7185:15;:54;7267:36;7249:15;:54;7331:36;7313:15;:54;7395:36;7377:15;:54;7459:36;7441:15;:54;7523:36;7505:15;:54;7587:36;7569:15;:54;7651:36;7633:15;:54;7715:36;7697:15;:54;7779:36;7761:15;:54;7843:36;7825:15;:54;7907:36;7889:15;:54;7971:36;7953:15;:54;8035:36;8017:15;:54;-1:-1:-1;;;;;8081:15:5;:54;8163:36;8145:15;:54;8227:36;8209:15;:54;8291:36;8273:15;:54;8355:36;8337:15;:54;8420:36;8401:16;:55;8485:36;8466:16;:55;8550:36;8531:16;:55;8615:36;8596:16;:55;8680:36;8661:16;:55;8745:36;8726:16;:55;8810:36;8791:16;:55;8875:36;8856:16;:55;8940:36;8921:16;:55;9005:36;8986:16;:55;9070:36;9051:16;:55;9135:36;9116:16;:55;9200:36;9181:16;:55;9265:36;9246:16;:55;9330:36;9311:16;:55;9395:36;9376:16;:55;9460:36;9441:16;:55;9525:36;9506:16;:55;9590:36;9571:16;:55;9655:36;9636:16;:55;9720:36;9701:16;:55;9785:36;9766:16;:55;9850:36;9831:16;:55;9915:36;9896:16;:55;9980:36;9961:16;:55;10045:36;10026:16;:55;10110:36;10091:16;:55;10175:36;10156:16;:55;336:3620:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;336:3620:4;;;-1:-1:-1;336:3620:4;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "336:3620:4:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;336:3620:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1129:975;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;1129:975:4;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2789:1165;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;2789:1165:4;;;;;;;;;;;;;;;;;;;:::i;562:29:5:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;562:29:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1129:975:4;1304:7;1371:1;1361:7;:11;:34;;;;;1394:1;1376:15;:19;1361:34;:55;;;;;1415:1;1399:13;:17;;;1361:55;:93;;;;-1:-1:-1;450:7:4;1420:34;;;;;1361:93;1353:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1533:19;;1529:58;;;-1:-1:-1;1575:1:4;1568:8;;1529:58;1644:34;;;450:7;1644:34;1640:120;;;1701:48;1733:15;1701:27;:7;1713:14;1701:27;:11;:27;:::i;:::-;:31;:48;:31;:48;:::i;:::-;1694:55;;;;1640:120;1769:14;;;1834:35;:14;1853:15;1834:35;:18;:35;:::i;:::-;1818:51;;1901:85;1920:5;1927:15;1944:13;450:7;1901:5;:85::i;:::-;1879:107;;-1:-1:-1;1879:107:4;-1:-1:-1;1996:22:4;2021:32;;;:19;:7;1879:107;2021:19;:11;:19;:::i;:::-;49:1:-1;45:20;;;;25:41;;;-1:-1;2070:27:4;25:41:-1;2089:7:4;2070:27;:18;:27;:::i;:::-;2063:34;;;;;;1129:975;;;;;;;:::o;2789:1165::-;2957:7;3024:1;3014:7;:11;:34;;;;;3047:1;3029:15;:19;3014:34;:55;;;;;3068:1;3052:13;:17;;;3014:55;:93;;;;-1:-1:-1;450:7:4;3073:34;;;;;3014:93;:119;;;;;3126:7;3111:11;:22;;3014:119;3006:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3209:16;;3205:55;;;-1:-1:-1;3248:1:4;3241:8;;3205:55;3342:7;3327:11;:22;3323:75;;;-1:-1:-1;3372:15:4;3365:22;;3323:75;3455:34;;;450:7;3455:34;3451:117;;;3512:45;3549:7;3512:32;:15;3532:11;3512:32;:19;:32;:::i;3451:117::-;3577:14;;;3642:24;:7;3654:11;3642:24;:11;:24;:::i;:::-;3626:40;;3698:77;3717:7;3726:5;450:7;3752:13;3698:5;:77::i;:::-;3676:99;;-1:-1:-1;3676:99:4;-1:-1:-1;3785:18:4;3806:27;:15;3676:99;3806:27;:19;:27;:::i;:::-;3785:48;-1:-1:-1;3864:28:4;;;;;;;3909:38;3940:6;3909:26;3785:48;3864:28;3909:26;:14;:26;:::i;:38::-;3902:45;2789:1165;-1:-1:-1;;;;;;;;;;2789:1165:4:o;562:29:5:-;;;;;;;;;;;;;;;-1:-1:-1;;562:29:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2159:459:16:-;2217:7;2458:6;;2454:45;;;-1:-1:-1;2487:1:16;2480:8;;2454:45;2521:5;;;2525:1;2521;:5;2544;;;;;;;;:10;2536:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2610:1;-1:-1:-1;2159:459:16;;;;;:::o;3073:130::-;3131:7;3157:39;3161:1;3164;3157:39;;;;;;;;;;;;;;;;;;:3;:39::i;834:176::-;892:7;923:5;;;946:6;;;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11604:892:5;11740:7;;1161:35;11778:16;;11770:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11841:16;;;;11833:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11901:15;11926:12;11960:6;1009:35;11941:6;:16;:25;;;;;;;;11926:40;;1585:35;11980:4;:22;11976:136;;;12028:16;12039:4;12028:10;:16::i;:::-;12018:26;;11976:136;;;12085:16;12096:4;12085:10;:16::i;:::-;12075:26;;11976:136;12122:23;12166:5;12148:23;;12158:5;12148:15;;:7;:15;:23;;;;;;;;12122:49;;1669:35;12185:15;:33;12181:309;;;12242:27;12253:15;12242:10;:27::i;:::-;772:3;12234:51;;;;;;;;;12181:309;12316:15;12334:42;12360:15;12334:25;:42::i;:::-;12316:60;-1:-1:-1;12398:69:5;12409:46;772:3;12429:25;;;12409:46;49:1:-1;45:20;25:41;;12316:60:5;12398:10;:69::i;:::-;12390:89;-1:-1:-1;12469:9:5;-1:-1:-1;12390:89:5;;-1:-1:-1;;;12390:89:5;11604:892;;;;;;;;:::o;1274:134:16:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;;:3;:43::i;3718:338::-;3804:7;3904:12;3897:5;;;3889:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3889:28:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3927:9;3943:1;3939;:5;;;;;;;;;3718:338;-1:-1:-1;;;;;3718:338:16:o;19589:2397:5:-;19643:7;;;;;19755:34;19750:39;;19746:143;;19799:34;19792:41;;;;;19853:34;1009:35;19839:11;;:48;19835:52;;19746:143;19907:34;19902:39;;19898:143;;19951:34;19944:41;;;;;20005:34;1009:35;19991:11;;:48;19987:52;;19898:143;20059:34;20054:39;;20050:143;;20103:34;20096:41;;;;;20157:34;1009:35;20143:11;;:48;20139:52;;20050:143;20211:34;20206:39;;20202:143;;20255:34;20248:41;;;;;20309:34;1009:35;20295:11;;:48;20291:52;;20202:143;20363:34;20358:39;;20354:143;;20407:34;20400:41;;;;;20461:34;1009:35;20447:11;;:48;20443:52;;20354:143;20515:34;20510:39;;20506:143;;20559:34;20552:41;;;;;20613:34;1009:35;20599:11;;:48;20595:52;;20506:143;20667:34;20662:39;;20658:143;;20711:34;20704:41;;;;;20765:34;1009:35;20751:11;;:48;20747:52;;20658:143;20819:34;20814:39;;20810:143;;20863:34;20856:41;;;;;20917:34;1009:35;20903:11;;:48;20899:52;;20810:143;20971:11;;;;-1:-1:-1;20971:11:5;;-1:-1:-1;1009:35:5;20996:5;;;:15;;-1:-1:-1;21076:35:5;21033:39;;;21028:45;;:83;21021:90;;;;;1009:35;21117:5;;;:15;;-1:-1:-1;21197:35:5;21154;:39;;;21149:45;;:83;21142:90;;;;;1009:35;21238:5;;;:15;;-1:-1:-1;21318:35:5;21275;:39;;;21270:45;;:83;21263:90;;;;;1009:35;21359:5;;;:15;;-1:-1:-1;21439:35:5;21396;:39;;;21391:45;;:83;21384:90;;;;;1009:35;21480:5;;;:15;;-1:-1:-1;21560:35:5;21517;:39;;;21512:45;;:83;21505:90;;;;;1009:35;21601:5;;;:15;;-1:-1:-1;21681:35:5;21638;:39;;;21633:45;;:83;21626:90;;;;;1009:35;21722:5;;;:15;;-1:-1:-1;21802:35:5;21759;:39;;;21754:45;;:83;21747:90;;;;;1009:35;21843:5;;;:15;;-1:-1:-1;21923:35:5;21880;:39;;;21875:45;;:83;21868:90;;;;;-1:-1:-1;;;;19589:2397:5;;;;:::o;12661:826::-;12716:7;;12772:2;1085:35;12880:12;;12876:152;;12908:11;12922:22;1009:35;12932:1;:11;12922:9;:22::i;:::-;12958:11;;1009:35;13002:15;;;-1:-1:-1;49:1;45:20;25:41;;;;-1:-1;12876:152:5;1009:35;13133:1;:11;13129:297;;;772:3;13160:256;13194:1;13190;:5;;;13160:256;;;1009:35;13225:5;;;13224:17;;-1:-1:-1;1085:35:5;13280:12;;13276:126;;13369:14;-1:-1:-1;;13377:5:5;;13369:14;49:1:-1;13369:14:5;;;13362:21;;;;;25:41:-1;;;;13276:126:5;-1:-1:-1;;13197:3:5;13160:256;;;;13129:297;1398:33;1316;13443:19;;:37;;12661:826;-1:-1:-1;;;;12661:826:5:o;22157:2980::-;22211:7;22555:18;1009:35;22303:38;;;22355:5;;;:15;;;22441:5;;;:15;;;22527:5;;;:15;;;22551:22;;;22383:18;22379:22;;;22469:18;22465:22;;;;22458:29;22544;;22303:38;;22613:5;;;:15;22609:19;;22637:1;22641:18;22637:22;22630:29;;;;1009:35;22703:1;22699;:5;:15;;;;;;;;22695:19;;22723:1;22727:18;22723:22;22716:29;;;;1009:35;22789:1;22785;:5;:15;;;;;;;;22781:19;;22809:1;22813:18;22809:22;22802:29;;;;1009:35;22875:1;22871;:5;:15;;;;;;;;22867:19;;22895:1;22899:18;22895:22;22888:29;;;;1009:35;22961:1;22957;:5;:15;;;;;;;;22953:19;;22981:1;22985:18;22981:22;22974:29;;;;1009:35;23047:1;23043;:5;:15;;;;;;;;23039:19;;23067:1;23071:18;23067:22;23060:29;;;;1009:35;23133:1;23129;:5;:15;;;;;;;;23125:19;;23153:1;23157:18;23153:22;23146:29;;;;1009:35;23219:1;23215;:5;:15;;;;;;;;23211:19;;23239:1;23243:18;23239:22;23232:29;;;;1009:35;23305:1;23301;:5;:15;;;;;;;;23297:19;;23325:1;23329:18;23325:22;23318:29;;;;1009:35;23391:1;23387;:5;:15;;;;;;;;23383:19;;23411:1;23415:18;23411:22;23404:29;;;;1009:35;23477:1;23473;:5;:15;;;;;;;;23469:19;;23497:1;23501:18;23497:22;23490:29;;;;1009:35;23563:1;23559;:5;:15;;;;;;;;23555:19;;23583:1;23587:18;23583:22;23576:29;;;;1009:35;23649:1;23645;:5;:15;;;;;;;;23641:19;;23669:1;23673:18;23669:22;23662:29;;;;1009:35;23735:1;23731;:5;:15;;;;;;;;23727:19;;23755:1;23759:18;23755:22;23748:29;;;;1009:35;23821:1;23817;:5;:15;;;;;;;;23813:19;;23841:1;23845:18;23841:22;23834:29;;;;1009:35;23907:1;23903;:5;:15;;;;;;;23997:18;23903:15;;;23920:29;;;23991:24;:28;;1009:35;23991:38;;23903:15;-1:-1:-1;24099:35:5;24095:39;;24094:46;24090:137;;24192:35;24154;24148:41;;:79;24142:85;;24090:137;24246:35;24242:39;;24241:46;24237:137;;24339:35;24301;24295:41;;:79;24289:85;;24237:137;24393:35;24389:39;;24388:46;24384:137;;24486:35;24448;24442:41;;:79;24436:85;;24384:137;24540:35;24536:39;;24535:46;24531:137;;24633:35;24595;24589:41;;:79;24583:85;;24531:137;24687:35;24683:39;;24682:46;24678:137;;24780:35;24742;24736:41;;:79;24730:85;;24678:137;24834:35;24830:39;;24829:46;24825:137;;24927:35;24889;24883:41;;:79;24877:85;;24825:137;24981:35;24977:39;;24976:46;24972:137;;25074:35;25036;25030:41;;:79;25024:85;;24972:137;-1:-1:-1;25127:3:5;;22157:2980;-1:-1:-1;;;22157:2980:5:o;14495:508::-;14569:5;725:2;772:3;14659:179;14675:2;14666:11;;:2;14671:1;14666:6;:11;;;14659:179;;;14693:9;14717:1;14705:13;14706:7;;;14705:13;;;-1:-1:-1;14756:2:5;14736:11;:16;;;;;;;;;;;;:22;14732:95;;14781:3;14776:8;;14732:95;;;14824:3;14819:8;;14732:95;14659:179;;;;14871:2;14852:11;:15;;;;;;;;;;;;:21;14848:48;;14894:2;-1:-1:-1;14887:9:5;;-1:-1:-1;14887:9:5;14848:48;14929:2;14910:11;:15;;;;;;;;;;;;:21;14906:48;;-1:-1:-1;14952:2:5;-1:-1:-1;14945:9:5;;14906:48;14965:13;15587:3826;15660:7;15679:10;15692:2;15679:15;;15704:11;15718:1;15704:15;;15748:10;15735:23;;15741:2;15736;:7;15735:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;15735:23:5;15730:28;;15767:2;15772:33;15767:38;15760:45;;;;15859:10;15846:23;;15852:2;15847;:7;15846:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;15846:23:5;15841:28;;15878:2;15883:33;15878:38;15871:45;;;;15970:10;15957:23;;15963:2;15958;:7;15957:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;15957:23:5;15952:28;;15989:2;15994:33;15989:38;15982:45;;;;16081:10;16068:23;;16074:2;16069;:7;16068:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16068:23:5;16063:28;;16100:2;16105:33;16100:38;16093:45;;;;16192:10;16179:23;;16185:2;16180;:7;16179:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16179:23:5;16174:28;;16211:2;16216:33;16211:38;16204:45;;;;16303:10;16290:23;;16296:2;16291;:7;16290:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16290:23:5;16285:28;;16322:2;16327:33;16322:38;16315:45;;;;16414:10;16401:23;;16407:2;16402;:7;16401:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16401:23:5;16396:28;;16433:2;16438:33;16433:38;16426:45;;;;16525:10;16512:23;;16518:2;16513;:7;16512:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16512:23:5;16507:28;;16544:2;16549:33;16544:38;16537:45;;;;16636:10;16623:23;;16629:2;16624;:7;16623:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16623:23:5;16618:28;;16655:2;16660:33;16655:38;16648:45;;;;16747:10;16734:23;;16740:2;16735;:7;16734:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16734:23:5;16729:28;;16766:2;16771:33;16766:38;16759:45;;;;16858:10;16845:23;;16851:2;16846;:7;16845:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16845:23:5;16840:28;;16877:2;16882:33;16877:38;16870:45;;;;16969:10;16956:23;;16962:2;16957;:7;16956:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16956:23:5;16951:28;;16988:2;16993:33;16988:38;16981:45;;;;17080:10;17067:23;;17073:2;17068;:7;17067:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17067:23:5;17062:28;;17099:2;17104:33;17099:38;17092:45;;;;17191:10;17178:23;;17184:2;17179;:7;17178:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17178:23:5;17173:28;;17210:2;17215:33;17210:38;17203:45;;;;17302:10;17289:23;;17295:2;17290;:7;17289:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17289:23:5;17284:28;;17321:2;17326:33;17321:38;17314:45;;;;17413:10;17400:23;;17406:2;17401;:7;17400:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17400:23:5;17395:28;;17432:2;17437:33;17432:38;17425:45;;;;17524:10;17511:23;;17517:2;17512;:7;17511:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17511:23:5;17506:28;;17543:2;17548:33;17543:38;17536:45;;;;17635:10;17622:23;;17628:2;17623;:7;17622:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17622:23:5;17617:28;;17654:2;17659:33;17654:38;17647:45;;;;17746:10;17733:23;;17739:2;17734;:7;17733:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17733:23:5;17728:28;;17765:2;17770:33;17765:38;17758:45;;;;17857:10;17844:23;;17850:2;17845;:7;17844:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17844:23:5;17839:28;;17876:2;17881:33;17876:38;17869:45;;;;17968:10;17955:23;;17961:2;17956;:7;17955:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17955:23:5;17950:28;;17987:2;17992:33;17987:38;17980:45;;;;18079:10;18066:23;;18072:2;18067;:7;18066:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18066:23:5;18061:28;;18098:2;18103:33;18098:38;18091:45;;;;18190:10;18177:23;;18183:2;18178;:7;18177:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18177:23:5;18172:28;;18209:2;18214:33;18209:38;18202:45;;;;18301:10;18288:23;;18294:2;18289;:7;18288:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18288:23:5;18283:28;;18320:2;18325:33;18320:38;18313:45;;;;18412:10;18399:23;;18405:2;18400;:7;18399:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18399:23:5;18394:28;;18431:2;18436:33;18431:38;18424:45;;;;18523:10;18510:23;;18516:2;18511;:7;18510:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18510:23:5;18505:28;;18542:2;18547:33;18542:38;18535:45;;;;18634:10;18621:23;;18627:2;18622;:7;18621:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18621:23:5;18616:28;;18653:2;18658:33;18653:38;18646:45;;;;18745:10;18732:23;;18738:2;18733;:7;18732:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18732:23:5;18727:28;;18764:2;18769:33;18764:38;18757:45;;;;18856:10;18843:23;;18849:2;18844;:7;18843:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18843:23:5;18838:28;;18875:2;18880:33;18875:38;18868:45;;;;18967:10;18954:23;;18960:2;18955;:7;18954:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18954:23:5;18949:28;;18986:2;18991:33;18986:38;18979:45;;;;19078:10;19065:23;;19071:2;19066;:7;19065:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;19065:23:5;19060:28;;19097:2;19102:33;19097:38;19090:45;;;;19189:10;19176:23;;19182:2;19177;:7;19176:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;19176:23:5;19171:28;;19208:2;19213:33;19208:38;19201:45;;;;19345:10;19338:17;;629:1;19338:17;;;;19332:2;19296:33;19290:3;:39;;;;;;;;:44;:66;;15587:3826;-1:-1:-1;;;;;15587:3826:5:o;1732:187:16:-;1818:7;1853:12;1845:6;;;;1837:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1837:29:16;-1:-1:-1;;;1888:5:16;;;1732:187::o;13602:532:5:-;13656:5;;13708:2;13729:3;13725:7;;13721:386;;;13784:80;13795:1;13791;:5;13784:80;;;13822:1;13841:8;;;;;49:1:-1;25:41;;13784:80:5;;;13721:386;;;13945:3;13930:167;13954:1;13950;:5;;;13930:167;;;13994:8;;;;;13988:15;;13984:99;;14056:8;;;;14027:7;;;49:1:-1;45:20;25:41;;;;13984:99:5;49:1:-1;13957:7:5;;;;25:41:-1;13930:167:5;;;;13721:386;-1:-1:-1;14124:3:5;13602:532;-1:-1:-1;;13602:532:5:o", "source": "pragma solidity ^0.5.2;\n\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\nimport \"./Power.sol\"; // Efficient power function.\n\n\n/**\n* @title Bancor formula by Bancor\n*\n* Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements;\n* and to You under the Apache License, Version 2.0. \"\n*/\ncontract BancorFormula is Power {\n using SafeMath for uint256;\n uint32 private constant MAX_RESERVE_RATIO = 1000000;\n\n /**\n * @dev given a continuous token supply, reserve token balance, reserve ratio, and a deposit amount (in the reserve token),\n * calculates the return for a given conversion (in the continuous token)\n *\n * Formula:\n * Return = _supply * ((1 + _depositAmount / _reserveBalance) ^ (_reserveRatio / MAX_RESERVE_RATIO) - 1)\n *\n * @param _supply continuous token total supply\n * @param _reserveBalance total reserve token balance\n * @param _reserveRatio reserve ratio, represented in ppm, 1-1000000\n * @param _depositAmount deposit amount, in reserve token\n *\n * @return purchase return amount\n */\n function calculatePurchaseReturn(\n uint256 _supply,\n uint256 _reserveBalance,\n uint32 _reserveRatio,\n uint256 _depositAmount) public view returns (uint256)\n {\n // validate input\n require(_supply > 0 && _reserveBalance > 0 && _reserveRatio > 0 && _reserveRatio <= MAX_RESERVE_RATIO, \"Invalid inputs.\");\n // special case for 0 deposit amount\n if (_depositAmount == 0) {\n return 0;\n }\n // special case if the ratio = 100%\n if (_reserveRatio == MAX_RESERVE_RATIO) {\n return _supply.mul(_depositAmount).div(_reserveBalance);\n }\n uint256 result;\n uint8 precision;\n uint256 baseN = _depositAmount.add(_reserveBalance);\n (result, precision) = power(\n baseN, _reserveBalance, _reserveRatio, MAX_RESERVE_RATIO\n );\n uint256 newTokenSupply = _supply.mul(result) >> precision;\n return newTokenSupply.sub(_supply);\n }\n\n /**\n * @dev given a continuous token supply, reserve token balance, reserve ratio and a sell amount (in the continuous token),\n * calculates the return for a given conversion (in the reserve token)\n *\n * Formula:\n * Return = _reserveBalance * (1 - (1 - _sellAmount / _supply) ^ (1 / (_reserveRatio / MAX_RESERVE_RATIO)))\n *\n * @param _supply continuous token total supply\n * @param _reserveBalance total reserve token balance\n * @param _reserveRatio constant reserve ratio, represented in ppm, 1-1000000\n * @param _sellAmount sell amount, in the continuous token itself\n *\n * @return sale return amount\n */\n function calculateSaleReturn(\n uint256 _supply,\n uint256 _reserveBalance,\n uint32 _reserveRatio,\n uint256 _sellAmount) public view returns (uint256)\n {\n // validate input\n require(_supply > 0 && _reserveBalance > 0 && _reserveRatio > 0 && _reserveRatio <= MAX_RESERVE_RATIO && _sellAmount <= _supply, \"Invalid inputs.\");\n // special case for 0 sell amount\n if (_sellAmount == 0) {\n return 0;\n }\n // special case for selling the entire supply\n if (_sellAmount == _supply) {\n return _reserveBalance;\n }\n // special case if the ratio = 100%\n if (_reserveRatio == MAX_RESERVE_RATIO) {\n return _reserveBalance.mul(_sellAmount).div(_supply);\n }\n uint256 result;\n uint8 precision;\n uint256 baseD = _supply.sub(_sellAmount);\n (result, precision) = power(\n _supply, baseD, MAX_RESERVE_RATIO, _reserveRatio\n );\n uint256 oldBalance = _reserveBalance.mul(result);\n uint256 newBalance = _reserveBalance << precision;\n return oldBalance.sub(newBalance).div(result);\n }\n}", - "sourcePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/math/BancorFormula.sol", + "sourcePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/math/BancorFormula.sol", "ast": { - "absolutePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/math/BancorFormula.sol", + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/math/BancorFormula.sol", "exportedSymbols": { "BancorFormula": [ 389 @@ -123,13 +111,13 @@ "id": 179, "nodeType": "ImportDirective", "scope": 390, - "sourceUnit": 3375, + "sourceUnit": 3480, "src": "25:59:4", "symbolAliases": [], "unitAlias": "" }, { - "absolutePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/math/Power.sol", + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/math/Power.sol", "file": "./Power.sol", "id": 180, "nodeType": "ImportDirective", @@ -181,10 +169,10 @@ "id": 183, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3374, + "referencedDeclaration": 3479, "src": "380:8:4", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$3374", + "typeIdentifier": "t_contract$_SafeMath_$3479", "typeString": "library SafeMath" } }, @@ -540,10 +528,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, + "referencedDeclaration": 4176, "src": "1353:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -779,7 +767,7 @@ "lValueRequested": false, "memberName": "mul", "nodeType": "MemberAccess", - "referencedDeclaration": 3291, + "referencedDeclaration": 3396, "src": "1701:11:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -807,7 +795,7 @@ "lValueRequested": false, "memberName": "div", "nodeType": "MemberAccess", - "referencedDeclaration": 3307, + "referencedDeclaration": 3412, "src": "1701:31:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -987,7 +975,7 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 3214, + "referencedDeclaration": 3319, "src": "1834:18:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -1262,7 +1250,7 @@ "lValueRequested": false, "memberName": "mul", "nodeType": "MemberAccess", - "referencedDeclaration": 3291, + "referencedDeclaration": 3396, "src": "2021:11:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -1352,7 +1340,7 @@ "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 3230, + "referencedDeclaration": 3335, "src": "2070:18:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -1897,10 +1885,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, + "referencedDeclaration": 4176, "src": "3006:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -2213,7 +2201,7 @@ "lValueRequested": false, "memberName": "mul", "nodeType": "MemberAccess", - "referencedDeclaration": 3291, + "referencedDeclaration": 3396, "src": "3512:19:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -2241,7 +2229,7 @@ "lValueRequested": false, "memberName": "div", "nodeType": "MemberAccess", - "referencedDeclaration": 3307, + "referencedDeclaration": 3412, "src": "3512:36:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -2421,7 +2409,7 @@ "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 3230, + "referencedDeclaration": 3335, "src": "3642:11:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -2685,7 +2673,7 @@ "lValueRequested": false, "memberName": "mul", "nodeType": "MemberAccess", - "referencedDeclaration": 3291, + "referencedDeclaration": 3396, "src": "3806:19:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -2859,7 +2847,7 @@ "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 3230, + "referencedDeclaration": 3335, "src": "3909:14:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -2887,7 +2875,7 @@ "lValueRequested": false, "memberName": "div", "nodeType": "MemberAccess", - "referencedDeclaration": 3307, + "referencedDeclaration": 3412, "src": "3909:30:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -3080,7 +3068,7 @@ "src": "0:3956:4" }, "legacyAST": { - "absolutePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/math/BancorFormula.sol", + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/math/BancorFormula.sol", "exportedSymbols": { "BancorFormula": [ 389 @@ -3106,13 +3094,13 @@ "id": 179, "nodeType": "ImportDirective", "scope": 390, - "sourceUnit": 3375, + "sourceUnit": 3480, "src": "25:59:4", "symbolAliases": [], "unitAlias": "" }, { - "absolutePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/math/Power.sol", + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/math/Power.sol", "file": "./Power.sol", "id": 180, "nodeType": "ImportDirective", @@ -3164,10 +3152,10 @@ "id": 183, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3374, + "referencedDeclaration": 3479, "src": "380:8:4", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$3374", + "typeIdentifier": "t_contract$_SafeMath_$3479", "typeString": "library SafeMath" } }, @@ -3523,10 +3511,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, + "referencedDeclaration": 4176, "src": "1353:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -3762,7 +3750,7 @@ "lValueRequested": false, "memberName": "mul", "nodeType": "MemberAccess", - "referencedDeclaration": 3291, + "referencedDeclaration": 3396, "src": "1701:11:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -3790,7 +3778,7 @@ "lValueRequested": false, "memberName": "div", "nodeType": "MemberAccess", - "referencedDeclaration": 3307, + "referencedDeclaration": 3412, "src": "1701:31:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -3970,7 +3958,7 @@ "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 3214, + "referencedDeclaration": 3319, "src": "1834:18:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -4245,7 +4233,7 @@ "lValueRequested": false, "memberName": "mul", "nodeType": "MemberAccess", - "referencedDeclaration": 3291, + "referencedDeclaration": 3396, "src": "2021:11:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -4335,7 +4323,7 @@ "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 3230, + "referencedDeclaration": 3335, "src": "2070:18:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -4880,10 +4868,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, + "referencedDeclaration": 4176, "src": "3006:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -5196,7 +5184,7 @@ "lValueRequested": false, "memberName": "mul", "nodeType": "MemberAccess", - "referencedDeclaration": 3291, + "referencedDeclaration": 3396, "src": "3512:19:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -5224,7 +5212,7 @@ "lValueRequested": false, "memberName": "div", "nodeType": "MemberAccess", - "referencedDeclaration": 3307, + "referencedDeclaration": 3412, "src": "3512:36:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -5404,7 +5392,7 @@ "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 3230, + "referencedDeclaration": 3335, "src": "3642:11:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -5668,7 +5656,7 @@ "lValueRequested": false, "memberName": "mul", "nodeType": "MemberAccess", - "referencedDeclaration": 3291, + "referencedDeclaration": 3396, "src": "3806:19:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -5842,7 +5830,7 @@ "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 3230, + "referencedDeclaration": 3335, "src": "3909:14:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -5870,7 +5858,7 @@ "lValueRequested": false, "memberName": "div", "nodeType": "MemberAccess", - "referencedDeclaration": 3307, + "referencedDeclaration": 3412, "src": "3909:30:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", @@ -6064,11 +6052,11 @@ }, "compiler": { "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" + "version": "0.5.2+commit.1df8f40c.Emscripten.clang" }, "networks": {}, - "schemaVersion": "3.0.23", - "updatedAt": "2020-02-16T12:52:29.747Z", + "schemaVersion": "3.0.1", + "updatedAt": "2020-02-16T14:54:14.891Z", "devdoc": { "methods": { "calculatePurchaseReturn(uint256,uint256,uint32,uint256)": { diff --git a/truffle/build/contracts/Context.json b/truffle/build/contracts/Context.json index 7a3b8ee..7ee3e73 100644 --- a/truffle/build/contracts/Context.json +++ b/truffle/build/contracts/Context.json @@ -8,7 +8,6 @@ "type": "constructor" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"openzeppelin-solidity/contracts/GSN/Context.sol\":\"Context\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":1500},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"keccak256\":\"0x90a3995645af7562d84b9d69363ffa5ae7217714ab61e951bf7bc450f40e4061\",\"urls\":[\"bzz-raw://216ef9d6b614db4eb46970b4e84903f2534a45572dd30a79f0041f1a5830f436\",\"dweb:/ipfs/QmNPrJ4MWKUAWzKXpUqeyKRUfosaoANZAqXgvepdrCwZAG\"]}},\"version\":1}", "bytecode": "0x", "deployedBytecode": "0x", "sourceMap": "", @@ -19,14 +18,14 @@ "absolutePath": "openzeppelin-solidity/contracts/GSN/Context.sol", "exportedSymbols": { "Context": [ - 2999 + 3104 ] }, - "id": 3000, + "id": 3105, "nodeType": "SourceUnit", "nodes": [ { - "id": 2974, + "id": 3079, "literals": [ "solidity", "^", @@ -34,7 +33,7 @@ ".0" ], "nodeType": "PragmaDirective", - "src": "0:23:10" + "src": "0:23:13" }, { "baseContracts": [], @@ -42,68 +41,68 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 2999, + "id": 3104, "linearizedBaseContracts": [ - 2999 + 3104 ], "name": "Context", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 2977, + "id": 3082, "nodeType": "Block", - "src": "726:3:10", + "src": "726:3:13", "statements": [] }, "documentation": null, - "id": 2978, + "id": 3083, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 2975, + "id": 3080, "nodeType": "ParameterList", "parameters": [], - "src": "714:2:10" + "src": "714:2:13" }, "returnParameters": { - "id": 2976, + "id": 3081, "nodeType": "ParameterList", "parameters": [], - "src": "726:0:10" + "src": "726:0:13" }, - "scope": 2999, - "src": "702:27:10", + "scope": 3104, + "src": "702:27:13", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 2986, + "id": 3091, "nodeType": "Block", - "src": "850:34:10", + "src": "850:34:13", "statements": [ { "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2983, + "id": 3088, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4067, - "src": "867:3:10", + "referencedDeclaration": 4172, + "src": "867:3:13", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2984, + "id": 3089, "isConstant": false, "isLValue": false, "isPure": false, @@ -111,43 +110,43 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "867:10:10", + "src": "867:10:13", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "functionReturnParameters": 2982, - "id": 2985, + "functionReturnParameters": 3087, + "id": 3090, "nodeType": "Return", - "src": "860:17:10" + "src": "860:17:13" } ] }, "documentation": null, - "id": 2987, + "id": 3092, "implemented": true, "kind": "function", "modifiers": [], "name": "_msgSender", "nodeType": "FunctionDefinition", "parameters": { - "id": 2979, + "id": 3084, "nodeType": "ParameterList", "parameters": [], - "src": "807:2:10" + "src": "807:2:13" }, "returnParameters": { - "id": 2982, + "id": 3087, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2981, + "id": 3086, "name": "", "nodeType": "VariableDeclaration", - "scope": 2987, - "src": "833:15:10", + "scope": 3092, + "src": "833:15:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -155,10 +154,10 @@ "typeString": "address payable" }, "typeName": { - "id": 2980, + "id": 3085, "name": "address", "nodeType": "ElementaryTypeName", - "src": "833:15:10", + "src": "833:15:13", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -169,55 +168,55 @@ "visibility": "internal" } ], - "src": "832:17:10" + "src": "832:17:13" }, - "scope": 2999, - "src": "788:96:10", + "scope": 3104, + "src": "788:96:13", "stateMutability": "view", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 2997, + "id": 3102, "nodeType": "Block", - "src": "947:165:10", + "src": "947:165:13", "statements": [ { "expression": { "argumentTypes": null, - "id": 2992, + "id": 3097, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4089, - "src": "957:4:10", + "referencedDeclaration": 4193, + "src": "957:4:13", "typeDescriptions": { - "typeIdentifier": "t_contract$_Context_$2999", + "typeIdentifier": "t_contract$_Context_$3104", "typeString": "contract Context" } }, - "id": 2993, + "id": 3098, "nodeType": "ExpressionStatement", - "src": "957:4:10" + "src": "957:4:13" }, { "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2994, + "id": 3099, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4067, - "src": "1097:3:10", + "referencedDeclaration": 4172, + "src": "1097:3:13", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2995, + "id": 3100, "isConstant": false, "isLValue": false, "isPure": false, @@ -225,43 +224,43 @@ "memberName": "data", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1097:8:10", + "src": "1097:8:13", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, - "functionReturnParameters": 2991, - "id": 2996, + "functionReturnParameters": 3096, + "id": 3101, "nodeType": "Return", - "src": "1090:15:10" + "src": "1090:15:13" } ] }, "documentation": null, - "id": 2998, + "id": 3103, "implemented": true, "kind": "function", "modifiers": [], "name": "_msgData", "nodeType": "FunctionDefinition", "parameters": { - "id": 2988, + "id": 3093, "nodeType": "ParameterList", "parameters": [], - "src": "907:2:10" + "src": "907:2:13" }, "returnParameters": { - "id": 2991, + "id": 3096, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2990, + "id": 3095, "name": "", "nodeType": "VariableDeclaration", - "scope": 2998, - "src": "933:12:10", + "scope": 3103, + "src": "933:12:13", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -269,10 +268,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2989, + "id": 3094, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "933:5:10", + "src": "933:5:13", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -282,33 +281,33 @@ "visibility": "internal" } ], - "src": "932:14:10" + "src": "932:14:13" }, - "scope": 2999, - "src": "890:222:10", + "scope": 3104, + "src": "890:222:13", "stateMutability": "view", "superFunction": null, "visibility": "internal" } ], - "scope": 3000, - "src": "525:589:10" + "scope": 3105, + "src": "525:589:13" } ], - "src": "0:1115:10" + "src": "0:1115:13" }, "legacyAST": { "absolutePath": "openzeppelin-solidity/contracts/GSN/Context.sol", "exportedSymbols": { "Context": [ - 2999 + 3104 ] }, - "id": 3000, + "id": 3105, "nodeType": "SourceUnit", "nodes": [ { - "id": 2974, + "id": 3079, "literals": [ "solidity", "^", @@ -316,7 +315,7 @@ ".0" ], "nodeType": "PragmaDirective", - "src": "0:23:10" + "src": "0:23:13" }, { "baseContracts": [], @@ -324,68 +323,68 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 2999, + "id": 3104, "linearizedBaseContracts": [ - 2999 + 3104 ], "name": "Context", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 2977, + "id": 3082, "nodeType": "Block", - "src": "726:3:10", + "src": "726:3:13", "statements": [] }, "documentation": null, - "id": 2978, + "id": 3083, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 2975, + "id": 3080, "nodeType": "ParameterList", "parameters": [], - "src": "714:2:10" + "src": "714:2:13" }, "returnParameters": { - "id": 2976, + "id": 3081, "nodeType": "ParameterList", "parameters": [], - "src": "726:0:10" + "src": "726:0:13" }, - "scope": 2999, - "src": "702:27:10", + "scope": 3104, + "src": "702:27:13", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 2986, + "id": 3091, "nodeType": "Block", - "src": "850:34:10", + "src": "850:34:13", "statements": [ { "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2983, + "id": 3088, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4067, - "src": "867:3:10", + "referencedDeclaration": 4172, + "src": "867:3:13", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2984, + "id": 3089, "isConstant": false, "isLValue": false, "isPure": false, @@ -393,43 +392,43 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "867:10:10", + "src": "867:10:13", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "functionReturnParameters": 2982, - "id": 2985, + "functionReturnParameters": 3087, + "id": 3090, "nodeType": "Return", - "src": "860:17:10" + "src": "860:17:13" } ] }, "documentation": null, - "id": 2987, + "id": 3092, "implemented": true, "kind": "function", "modifiers": [], "name": "_msgSender", "nodeType": "FunctionDefinition", "parameters": { - "id": 2979, + "id": 3084, "nodeType": "ParameterList", "parameters": [], - "src": "807:2:10" + "src": "807:2:13" }, "returnParameters": { - "id": 2982, + "id": 3087, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2981, + "id": 3086, "name": "", "nodeType": "VariableDeclaration", - "scope": 2987, - "src": "833:15:10", + "scope": 3092, + "src": "833:15:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -437,10 +436,10 @@ "typeString": "address payable" }, "typeName": { - "id": 2980, + "id": 3085, "name": "address", "nodeType": "ElementaryTypeName", - "src": "833:15:10", + "src": "833:15:13", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", @@ -451,55 +450,55 @@ "visibility": "internal" } ], - "src": "832:17:10" + "src": "832:17:13" }, - "scope": 2999, - "src": "788:96:10", + "scope": 3104, + "src": "788:96:13", "stateMutability": "view", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 2997, + "id": 3102, "nodeType": "Block", - "src": "947:165:10", + "src": "947:165:13", "statements": [ { "expression": { "argumentTypes": null, - "id": 2992, + "id": 3097, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4089, - "src": "957:4:10", + "referencedDeclaration": 4193, + "src": "957:4:13", "typeDescriptions": { - "typeIdentifier": "t_contract$_Context_$2999", + "typeIdentifier": "t_contract$_Context_$3104", "typeString": "contract Context" } }, - "id": 2993, + "id": 3098, "nodeType": "ExpressionStatement", - "src": "957:4:10" + "src": "957:4:13" }, { "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2994, + "id": 3099, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4067, - "src": "1097:3:10", + "referencedDeclaration": 4172, + "src": "1097:3:13", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2995, + "id": 3100, "isConstant": false, "isLValue": false, "isPure": false, @@ -507,43 +506,43 @@ "memberName": "data", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1097:8:10", + "src": "1097:8:13", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, - "functionReturnParameters": 2991, - "id": 2996, + "functionReturnParameters": 3096, + "id": 3101, "nodeType": "Return", - "src": "1090:15:10" + "src": "1090:15:13" } ] }, "documentation": null, - "id": 2998, + "id": 3103, "implemented": true, "kind": "function", "modifiers": [], "name": "_msgData", "nodeType": "FunctionDefinition", "parameters": { - "id": 2988, + "id": 3093, "nodeType": "ParameterList", "parameters": [], - "src": "907:2:10" + "src": "907:2:13" }, "returnParameters": { - "id": 2991, + "id": 3096, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2990, + "id": 3095, "name": "", "nodeType": "VariableDeclaration", - "scope": 2998, - "src": "933:12:10", + "scope": 3103, + "src": "933:12:13", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -551,10 +550,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2989, + "id": 3094, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "933:5:10", + "src": "933:5:13", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -564,28 +563,28 @@ "visibility": "internal" } ], - "src": "932:14:10" + "src": "932:14:13" }, - "scope": 2999, - "src": "890:222:10", + "scope": 3104, + "src": "890:222:13", "stateMutability": "view", "superFunction": null, "visibility": "internal" } ], - "scope": 3000, - "src": "525:589:10" + "scope": 3105, + "src": "525:589:13" } ], - "src": "0:1115:10" + "src": "0:1115:13" }, "compiler": { "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" + "version": "0.5.2+commit.1df8f40c.Emscripten.clang" }, "networks": {}, - "schemaVersion": "3.0.23", - "updatedAt": "2020-02-16T12:52:29.804Z", + "schemaVersion": "3.0.1", + "updatedAt": "2020-02-16T14:54:14.903Z", "devdoc": { "methods": {} }, diff --git a/truffle/build/contracts/ContinuousToken.json b/truffle/build/contracts/ContinuousToken.json index b7f8047..53dff7b 100644 --- a/truffle/build/contracts/ContinuousToken.json +++ b/truffle/build/contracts/ContinuousToken.json @@ -2,176 +2,50 @@ "contractName": "ContinuousToken", "abi": [ { - "inputs": [ - { - "internalType": "string", - "name": "_name", - "type": "string" - }, + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ { - "internalType": "string", - "name": "_symbol", + "name": "", "type": "string" - }, - { - "internalType": "uint8", - "name": "_decimals", - "type": "uint8" - }, - { - "internalType": "uint256", - "name": "_initialSupply", - "type": "uint256" - }, - { - "internalType": "uint32", - "name": "_reserveRatio", - "type": "uint32" } ], "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" + "stateMutability": "view", + "type": "function" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", "name": "spender", "type": "address" }, { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", "name": "amount", "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "refund", - "type": "uint256" } ], - "name": "Burned", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "deposit", - "type": "uint256" - } - ], - "name": "Minted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, + "name": "approve", + "outputs": [ { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" + "name": "", + "type": "bool" } ], - "name": "Transfer", - "type": "event" + "payable": false, + "stateMutability": "nonpayable", + "type": "function" }, { "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", + "inputs": [], + "name": "reserveRatio", "outputs": [ { - "internalType": "uint256", "name": "", - "type": "uint256" + "type": "uint32" } ], "payable": false, @@ -179,44 +53,30 @@ "type": "function" }, { - "constant": false, + "constant": true, "inputs": [ { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", + "name": "_reserveTokenAmount", "type": "uint256" } ], - "name": "approve", + "name": "getContinuousMintReward", "outputs": [ { - "internalType": "bool", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function" }, { "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", + "inputs": [], + "name": "totalSupply", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -226,69 +86,55 @@ "type": "function" }, { - "constant": true, + "constant": false, "inputs": [ { - "internalType": "uint256", - "name": "_supply", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_reserveBalance", - "type": "uint256" + "name": "sender", + "type": "address" }, { - "internalType": "uint32", - "name": "_reserveRatio", - "type": "uint32" + "name": "recipient", + "type": "address" }, { - "internalType": "uint256", - "name": "_depositAmount", + "name": "amount", "type": "uint256" } ], - "name": "calculatePurchaseReturn", + "name": "transferFrom", "outputs": [ { - "internalType": "uint256", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { - "internalType": "uint256", "name": "_supply", "type": "uint256" }, { - "internalType": "uint256", "name": "_reserveBalance", "type": "uint256" }, { - "internalType": "uint32", "name": "_reserveRatio", "type": "uint32" }, { - "internalType": "uint256", - "name": "_sellAmount", + "name": "_depositAmount", "type": "uint256" } ], - "name": "calculateSaleReturn", + "name": "calculatePurchaseReturn", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -303,7 +149,6 @@ "name": "decimals", "outputs": [ { - "internalType": "uint8", "name": "", "type": "uint8" } @@ -316,20 +161,17 @@ "constant": false, "inputs": [ { - "internalType": "address", "name": "spender", "type": "address" }, { - "internalType": "uint256", - "name": "subtractedValue", + "name": "addedValue", "type": "uint256" } ], - "name": "decreaseAllowance", + "name": "increaseAllowance", "outputs": [ { - "internalType": "bool", "name": "", "type": "bool" } @@ -338,19 +180,43 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "maxGasPrice", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [ { - "internalType": "uint256", - "name": "_continuousTokenAmount", + "name": "_supply", + "type": "uint256" + }, + { + "name": "_reserveBalance", + "type": "uint256" + }, + { + "name": "_reserveRatio", + "type": "uint32" + }, + { + "name": "_sellAmount", "type": "uint256" } ], - "name": "getContinuousBurnRefund", + "name": "calculateSaleReturn", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -359,19 +225,31 @@ "stateMutability": "view", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "version", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [ { - "internalType": "uint256", - "name": "_reserveTokenAmount", - "type": "uint256" + "name": "account", + "type": "address" } ], - "name": "getContinuousMintReward", + "name": "balanceOf", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -382,39 +260,40 @@ }, { "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, "inputs": [ { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "addedValue", + "name": "_continuousTokenAmount", "type": "uint256" } ], - "name": "increaseAllowance", + "name": "getContinuousBurnRefund", "outputs": [ { - "internalType": "bool", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], - "name": "isOwner", + "name": "owner", "outputs": [ { - "internalType": "bool", "name": "", - "type": "bool" + "type": "address" } ], "payable": false, @@ -424,12 +303,11 @@ { "constant": true, "inputs": [], - "name": "maxGasPrice", + "name": "isOwner", "outputs": [ { - "internalType": "uint256", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, @@ -439,10 +317,9 @@ { "constant": true, "inputs": [], - "name": "name", + "name": "symbol", "outputs": [ { - "internalType": "string", "name": "", "type": "string" } @@ -454,12 +331,11 @@ { "constant": true, "inputs": [], - "name": "owner", + "name": "reserveBalance", "outputs": [ { - "internalType": "address", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, @@ -468,48 +344,54 @@ }, { "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { - "constant": true, - "inputs": [], - "name": "reserveBalance", - "outputs": [ + "constant": false, + "inputs": [ + { + "name": "recipient", + "type": "address" + }, { - "internalType": "uint256", - "name": "", + "name": "amount", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "reserveRatio", + "name": "transfer", "outputs": [ { - "internalType": "uint32", "name": "", - "type": "uint32" + "type": "bool" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { - "internalType": "uint256", "name": "newPrice", "type": "uint256" } @@ -522,13 +404,21 @@ }, { "constant": true, - "inputs": [], - "name": "symbol", + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "spender", + "type": "address" + } + ], + "name": "allowance", "outputs": [ { - "internalType": "string", "name": "", - "type": "string" + "type": "uint256" } ], "payable": false, @@ -536,106 +426,150 @@ "type": "function" }, { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ + "constant": false, + "inputs": [ { - "internalType": "uint256", - "name": "", - "type": "uint256" + "name": "newOwner", + "type": "address" } ], + "name": "transferOwnership", + "outputs": [], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function" }, { - "constant": false, "inputs": [ { - "internalType": "address", - "name": "recipient", - "type": "address" + "name": "_name", + "type": "string" }, { - "internalType": "uint256", - "name": "amount", + "name": "_symbol", + "type": "string" + }, + { + "name": "_decimals", + "type": "uint8" + }, + { + "name": "_initialSupply", "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ + }, { - "internalType": "bool", - "name": "", - "type": "bool" + "name": "_reserveRatio", + "type": "uint32" } ], "payable": false, "stateMutability": "nonpayable", - "type": "function" + "type": "constructor" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "internalType": "address", + "indexed": false, "name": "sender", "type": "address" }, { - "internalType": "address", - "name": "recipient", + "indexed": false, + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "name": "deposit", + "type": "uint256" + } + ], + "name": "Minted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "sender", "type": "address" }, { - "internalType": "uint256", + "indexed": false, "name": "amount", "type": "uint256" + }, + { + "indexed": false, + "name": "refund", + "type": "uint256" } ], - "name": "transferFrom", - "outputs": [ + "name": "Burned", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ { - "internalType": "bool", - "name": "", - "type": "bool" + "indexed": true, + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "name": "newOwner", + "type": "address" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" + "name": "OwnershipTransferred", + "type": "event" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "internalType": "address", - "name": "newOwner", + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" } ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" + "name": "Transfer", + "type": "event" }, { - "constant": true, - "inputs": [], - "name": "version", - "outputs": [ + "anonymous": false, + "inputs": [ { - "internalType": "string", - "name": "", - "type": "string" + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function" + "name": "Approval", + "type": "event" }, { "constant": true, @@ -643,7 +577,6 @@ "name": "continuousSupply", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -656,7 +589,6 @@ "constant": false, "inputs": [ { - "internalType": "uint256", "name": "_amount", "type": "uint256" } @@ -671,12 +603,10 @@ "constant": false, "inputs": [ { - "internalType": "address", "name": "_from", "type": "address" }, { - "internalType": "uint256", "name": "_amount", "type": "uint256" } @@ -688,25 +618,24 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"_decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"_initialSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_reserveRatio\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"refund\",\"type\":\"uint256\"}],\"name\":\"Burned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_supply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_reserveBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_reserveRatio\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_depositAmount\",\"type\":\"uint256\"}],\"name\":\"calculatePurchaseReturn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_supply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_reserveBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_reserveRatio\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_sellAmount\",\"type\":\"uint256\"}],\"name\":\"calculateSaleReturn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"continuousSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_continuousTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getContinuousBurnRefund\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_reserveTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getContinuousMintReward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"maxGasPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"reserveBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"reserveRatio\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPrice\",\"type\":\"uint256\"}],\"name\":\"setMaxGasPrice\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"sponsoredBurn\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"sponsoredBurnFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. * Requirements: * - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"calculatePurchaseReturn(uint256,uint256,uint32,uint256)\":{\"details\":\"given a continuous token supply, reserve token balance, reserve ratio, and a deposit amount (in the reserve token), calculates the return for a given conversion (in the continuous token) * Formula: Return = _supply * ((1 + _depositAmount / _reserveBalance) ^ (_reserveRatio / MAX_RESERVE_RATIO) - 1)\",\"params\":{\"_depositAmount\":\"deposit amount, in reserve token\",\"_reserveBalance\":\"total reserve token balance\",\"_reserveRatio\":\"reserve ratio, represented in ppm, 1-1000000\",\"_supply\":\"continuous token total supply\"},\"return\":\"purchase return amount\"},\"calculateSaleReturn(uint256,uint256,uint32,uint256)\":{\"details\":\"given a continuous token supply, reserve token balance, reserve ratio and a sell amount (in the continuous token), calculates the return for a given conversion (in the reserve token) * Formula: Return = _reserveBalance * (1 - (1 - _sellAmount / _supply) ^ (1 / (_reserveRatio / MAX_RESERVE_RATIO)))\",\"params\":{\"_reserveBalance\":\"total reserve token balance\",\"_reserveRatio\":\"constant reserve ratio, represented in ppm, 1-1000000\",\"_sellAmount\":\"sell amount, in the continuous token itself\",\"_supply\":\"continuous token total supply\"},\"return\":\"sale return amount\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). * Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. * NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address.\"},\"isOwner()\":{\"details\":\"Returns true if the caller is the current owner.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"reserveBalance()\":{\"details\":\"Abstract method that returns reserve token balance\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. * Requirements: * - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. * Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; * Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for `sender`'s tokens of at least `amount`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/token/ContinuousToken.sol\":\"ContinuousToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":1500},\"remappings\":[]},\"sources\":{\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/curves/BancorBondingCurve.sol\":{\"keccak256\":\"0x687e9719bd334feff47289702610167b7278722ca2e3d1f10476d6fb4b3fac18\",\"urls\":[\"bzz-raw://3c8d354545c355f99e5851dfc99e48e988ff6b49b2482b535c82b4c28baec784\",\"dweb:/ipfs/QmZwfpQL6f5YVtAWNKrSJXKB2V1Mz7zYy3fGsFLt618ZHd\"]},\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/interfaces/IBondingCurve.sol\":{\"keccak256\":\"0x27a335544bca7d89b45438988419e4e3d5c6639dee6ff7e1e7da585db3f90b7b\",\"urls\":[\"bzz-raw://5caa54449bbd492dc880b1c3f2162614ce0483a886675df79c8c539909f29cf5\",\"dweb:/ipfs/QmfThvDW3d9L2Bjip74854Y1g1FdYaP5Eyj7PdjJy5LjEM\"]},\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/lib/ValidGasPrice.sol\":{\"keccak256\":\"0xab0eb602f0bd70cd9390021ec9d1e0b2a32f91b6c0af55fb6ea0b138f19be9fe\",\"urls\":[\"bzz-raw://153c896e4996d59fe5b747a28d8e8682f6afbae210587d7b7e2ae35ced2f1592\",\"dweb:/ipfs/QmReY8Thw4XDSKFdpLfvkEphdzBtbNr325DARGVSY9sUFc\"]},\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/math/BancorFormula.sol\":{\"keccak256\":\"0x07a5fc80f984d99091b528c4095e1c7b0a60ead97c05e3d6a5e06475e7a39e99\",\"urls\":[\"bzz-raw://efdd8da4c3c0ccbb02fcbd24fac4e8ca1e531d4d1b176f21410eb31432a93259\",\"dweb:/ipfs/Qme2dNAS3tdbLkKiH9qcJrNPi3s5kdtd5aLAZWEMAvEn2p\"]},\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/math/Power.sol\":{\"keccak256\":\"0x5a8b28886de5cede9e5be377a3649c13ac595eb996691ead28d0e8affc8bfe46\",\"urls\":[\"bzz-raw://bc28265d289fe49e251a7d12f399603ac3250cead55fed84107ff99aaeb46a32\",\"dweb:/ipfs/QmRxG1RDnaWwTzVpX12F4ECWyDZ1Kvonvm7hzJjVbWGuXE\"]},\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/token/ContinuousToken.sol\":{\"keccak256\":\"0x34325e4d749cb7ef49fa3384cb05d31094f14f8fa541d15a73be1f3f32f222f8\",\"urls\":[\"bzz-raw://12642ec5cb0b082a914e7e83bdae9e9a61430f827802f53a7459e35031375611\",\"dweb:/ipfs/QmaLNn8R3WvbXJhQMGFihNQ9eMp5BTV1ERYRcbBU9TuLpM\"]},\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"keccak256\":\"0x90a3995645af7562d84b9d69363ffa5ae7217714ab61e951bf7bc450f40e4061\",\"urls\":[\"bzz-raw://216ef9d6b614db4eb46970b4e84903f2534a45572dd30a79f0041f1a5830f436\",\"dweb:/ipfs/QmNPrJ4MWKUAWzKXpUqeyKRUfosaoANZAqXgvepdrCwZAG\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0x6fb9d7889769d7cc161225f9ef7a90e468ba9788b253816f8d8b6894d3472c24\",\"urls\":[\"bzz-raw://cf4c00fc3c37cc5acf0c82ec6fd97bab67d72c2567fdc0ebf023d9c09b30a08e\",\"dweb:/ipfs/Qmb7TChG6DsEDX7LooJ4vmxot19f7VXX8S1zUGPeJTWbwZ\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xb15af804e2bc97db51e4e103f13de9fe13f87e6b835d7a88c897966c0e58506e\",\"urls\":[\"bzz-raw://1e8cff8437557fc915a3bed968fcd8f2df9809599e665ef69c2c9ce628548055\",\"dweb:/ipfs/QmP5spYP8vs2jvLF8zNrXUbqB79hMsoEvMHiLcBxerWKcm\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol\":{\"keccak256\":\"0x4a3a810b7ebe742e897e1fd428b3eeed2196d3acea58eaf9c566ed10d545d2ed\",\"urls\":[\"bzz-raw://28d03f328e19e4099d5013de0649afaeaabac1a614e130767ab1cb4aca9775b6\",\"dweb:/ipfs/Qmb9iW7yNuYehB2NfhRMs9TakqbLVQhBhmGMkaDZ5g1Eb4\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]}},\"version\":1}", "bytecode": "0x", "deployedBytecode": "0x", "sourceMap": "", "deployedSourceMap": "", "source": "pragma solidity ^0.5.2;\n\nimport \"openzeppelin-solidity/contracts/ownership/Ownable.sol\";\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\nimport \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";\nimport \"openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol\";\n\nimport \"../curves/BancorBondingCurve.sol\";\nimport \"../lib/ValidGasPrice.sol\";\n\n\ncontract ContinuousToken is Ownable, ERC20, ERC20Detailed, BancorBondingCurve, ValidGasPrice {\n using SafeMath for uint;\n\n event Minted(address sender, uint amount, uint deposit);\n event Burned(address sender, uint amount, uint refund);\n\n constructor(\n string memory _name,\n string memory _symbol,\n uint8 _decimals,\n uint _initialSupply,\n uint32 _reserveRatio\n ) public ERC20Detailed(_name, _symbol, _decimals) BancorBondingCurve(_reserveRatio) {\n _mint(msg.sender, _initialSupply);\n }\n\n function continuousSupply() public view returns (uint) {\n return totalSupply(); // Continuous Token total supply\n }\n\n function _continuousMint(uint _deposit) internal validGasPrice returns (uint) {\n require(_deposit > 0, \"Deposit must be non-zero.\");\n\n uint rewardAmount = getContinuousMintReward(_deposit);\n _mint(msg.sender, rewardAmount);\n emit Minted(msg.sender, rewardAmount, _deposit);\n return rewardAmount;\n }\n\n function _continuousBurn(uint _amount) internal validGasPrice returns (uint) {\n require(_amount > 0, \"Amount must be non-zero.\");\n require(balanceOf(msg.sender) >= _amount, \"Insufficient tokens to burn.\");\n\n uint refundAmount = getContinuousBurnRefund(_amount);\n _burn(msg.sender, _amount);\n emit Burned(msg.sender, _amount, refundAmount);\n return refundAmount;\n }\n\n function sponsoredBurn(uint _amount) public {\n _burn(msg.sender, _amount);\n emit Burned(msg.sender, _amount, 0);\n }\n\n function sponsoredBurnFrom(address _from, uint _amount) public {\n _burnFrom(_from, _amount);\n emit Burned(msg.sender, _amount, 0);\n } \n}", - "sourcePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/token/ContinuousToken.sol", + "sourcePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/token/ContinuousToken.sol", "ast": { - "absolutePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/token/ContinuousToken.sol", + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/token/ContinuousToken.sol", "exportedSymbols": { "ContinuousToken": [ - 2775 + 2856 ] }, - "id": 2776, + "id": 2857, "nodeType": "SourceUnit", "nodes": [ { - "id": 2577, + "id": 2658, "literals": [ "solidity", "^", @@ -714,71 +643,71 @@ ".2" ], "nodeType": "PragmaDirective", - "src": "0:23:7" + "src": "0:23:10" }, { "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol", "file": "openzeppelin-solidity/contracts/ownership/Ownable.sol", - "id": 2578, + "id": 2659, "nodeType": "ImportDirective", - "scope": 2776, - "sourceUnit": 3493, - "src": "25:63:7", + "scope": 2857, + "sourceUnit": 3598, + "src": "25:63:10", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", "file": "openzeppelin-solidity/contracts/math/SafeMath.sol", - "id": 2579, + "id": 2660, "nodeType": "ImportDirective", - "scope": 2776, - "sourceUnit": 3375, - "src": "89:59:7", + "scope": 2857, + "sourceUnit": 3480, + "src": "89:59:10", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", "file": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", - "id": 2580, + "id": 2661, "nodeType": "ImportDirective", - "scope": 2776, - "sourceUnit": 3898, - "src": "149:63:7", + "scope": 2857, + "sourceUnit": 4003, + "src": "149:63:10", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol", "file": "openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol", - "id": 2581, + "id": 2662, "nodeType": "ImportDirective", - "scope": 2776, - "sourceUnit": 3956, - "src": "213:71:7", + "scope": 2857, + "sourceUnit": 4061, + "src": "213:71:10", "symbolAliases": [], "unitAlias": "" }, { - "absolutePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/curves/BancorBondingCurve.sol", + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/curves/BancorBondingCurve.sol", "file": "../curves/BancorBondingCurve.sol", - "id": 2582, + "id": 2663, "nodeType": "ImportDirective", - "scope": 2776, + "scope": 2857, "sourceUnit": 123, - "src": "286:42:7", + "src": "286:42:10", "symbolAliases": [], "unitAlias": "" }, { - "absolutePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/lib/ValidGasPrice.sol", + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/lib/ValidGasPrice.sol", "file": "../lib/ValidGasPrice.sol", - "id": 2583, + "id": 2664, "nodeType": "ImportDirective", - "scope": 2776, + "scope": 2857, "sourceUnit": 177, - "src": "329:34:7", + "src": "329:34:10", "symbolAliases": [], "unitAlias": "" }, @@ -788,91 +717,91 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 2584, + "id": 2665, "name": "Ownable", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3492, - "src": "394:7:7", + "referencedDeclaration": 3597, + "src": "394:7:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_Ownable_$3492", + "typeIdentifier": "t_contract$_Ownable_$3597", "typeString": "contract Ownable" } }, - "id": 2585, + "id": 2666, "nodeType": "InheritanceSpecifier", - "src": "394:7:7" + "src": "394:7:10" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 2586, + "id": 2667, "name": "ERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3897, - "src": "403:5:7", + "referencedDeclaration": 4002, + "src": "403:5:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$3897", + "typeIdentifier": "t_contract$_ERC20_$4002", "typeString": "contract ERC20" } }, - "id": 2587, + "id": 2668, "nodeType": "InheritanceSpecifier", - "src": "403:5:7" + "src": "403:5:10" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 2588, + "id": 2669, "name": "ERC20Detailed", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3955, - "src": "410:13:7", + "referencedDeclaration": 4060, + "src": "410:13:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Detailed_$3955", + "typeIdentifier": "t_contract$_ERC20Detailed_$4060", "typeString": "contract ERC20Detailed" } }, - "id": 2589, + "id": 2670, "nodeType": "InheritanceSpecifier", - "src": "410:13:7" + "src": "410:13:10" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 2590, + "id": 2671, "name": "BancorBondingCurve", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 122, - "src": "425:18:7", + "src": "425:18:10", "typeDescriptions": { "typeIdentifier": "t_contract$_BancorBondingCurve_$122", "typeString": "contract BancorBondingCurve" } }, - "id": 2591, + "id": 2672, "nodeType": "InheritanceSpecifier", - "src": "425:18:7" + "src": "425:18:10" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 2592, + "id": 2673, "name": "ValidGasPrice", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 176, - "src": "445:13:7", + "src": "445:13:10", "typeDescriptions": { "typeIdentifier": "t_contract$_ValidGasPrice_$176", "typeString": "contract ValidGasPrice" } }, - "id": 2593, + "id": 2674, "nodeType": "InheritanceSpecifier", - "src": "445:13:7" + "src": "445:13:10" } ], "contractDependencies": [ @@ -881,53 +810,53 @@ 176, 389, 2569, - 2999, - 3492, - 3897, - 3955, - 4052 + 3104, + 3597, + 4002, + 4060, + 4157 ], "contractKind": "contract", "documentation": null, "fullyImplemented": false, - "id": 2775, + "id": 2856, "linearizedBaseContracts": [ - 2775, + 2856, 176, 122, 389, 2569, 139, - 3955, - 3897, - 3492, - 4052, - 2999 + 4060, + 4002, + 3597, + 4157, + 3104 ], "name": "ContinuousToken", "nodeType": "ContractDefinition", "nodes": [ { - "id": 2596, + "id": 2677, "libraryName": { "contractScope": null, - "id": 2594, + "id": 2675, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3374, - "src": "471:8:7", + "referencedDeclaration": 3479, + "src": "471:8:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$3374", + "typeIdentifier": "t_contract$_SafeMath_$3479", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", - "src": "465:24:7", + "src": "465:24:10", "typeName": { - "id": 2595, + "id": 2676, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "484:4:7", + "src": "484:4:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -937,21 +866,21 @@ { "anonymous": false, "documentation": null, - "id": 2604, + "id": 2685, "name": "Minted", "nodeType": "EventDefinition", "parameters": { - "id": 2603, + "id": 2684, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2598, + "id": 2679, "indexed": false, "name": "sender", "nodeType": "VariableDeclaration", - "scope": 2604, - "src": "508:14:7", + "scope": 2685, + "src": "508:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -959,10 +888,10 @@ "typeString": "address" }, "typeName": { - "id": 2597, + "id": 2678, "name": "address", "nodeType": "ElementaryTypeName", - "src": "508:7:7", + "src": "508:7:10", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -974,12 +903,12 @@ }, { "constant": false, - "id": 2600, + "id": 2681, "indexed": false, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 2604, - "src": "524:11:7", + "scope": 2685, + "src": "524:11:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -987,10 +916,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2599, + "id": 2680, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "524:4:7", + "src": "524:4:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1001,12 +930,12 @@ }, { "constant": false, - "id": 2602, + "id": 2683, "indexed": false, "name": "deposit", "nodeType": "VariableDeclaration", - "scope": 2604, - "src": "537:12:7", + "scope": 2685, + "src": "537:12:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1014,10 +943,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2601, + "id": 2682, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "537:4:7", + "src": "537:4:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1027,28 +956,28 @@ "visibility": "internal" } ], - "src": "507:43:7" + "src": "507:43:10" }, - "src": "495:56:7" + "src": "495:56:10" }, { "anonymous": false, "documentation": null, - "id": 2612, + "id": 2693, "name": "Burned", "nodeType": "EventDefinition", "parameters": { - "id": 2611, + "id": 2692, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2606, + "id": 2687, "indexed": false, "name": "sender", "nodeType": "VariableDeclaration", - "scope": 2612, - "src": "569:14:7", + "scope": 2693, + "src": "569:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1056,10 +985,10 @@ "typeString": "address" }, "typeName": { - "id": 2605, + "id": 2686, "name": "address", "nodeType": "ElementaryTypeName", - "src": "569:7:7", + "src": "569:7:10", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1071,12 +1000,12 @@ }, { "constant": false, - "id": 2608, + "id": 2689, "indexed": false, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 2612, - "src": "585:11:7", + "scope": 2693, + "src": "585:11:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1084,10 +1013,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2607, + "id": 2688, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "585:4:7", + "src": "585:4:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1098,12 +1027,12 @@ }, { "constant": false, - "id": 2610, + "id": 2691, "indexed": false, "name": "refund", "nodeType": "VariableDeclaration", - "scope": 2612, - "src": "598:11:7", + "scope": 2693, + "src": "598:11:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1111,10 +1040,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2609, + "id": 2690, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "598:4:7", + "src": "598:4:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1124,15 +1053,15 @@ "visibility": "internal" } ], - "src": "568:42:7" + "src": "568:42:10" }, - "src": "556:55:7" + "src": "556:55:10" }, { "body": { - "id": 2639, + "id": 2720, "nodeType": "Block", - "src": "861:50:7", + "src": "861:50:10", "statements": [ { "expression": { @@ -1142,18 +1071,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2634, + "id": 2715, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4067, - "src": "877:3:7", + "referencedDeclaration": 4172, + "src": "877:3:10", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2635, + "id": 2716, "isConstant": false, "isLValue": false, "isPure": false, @@ -1161,7 +1090,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "877:10:7", + "src": "877:10:10", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -1169,12 +1098,12 @@ }, { "argumentTypes": null, - "id": 2636, + "id": 2717, "name": "_initialSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2620, - "src": "889:14:7", + "referencedDeclaration": 2701, + "src": "889:14:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1192,18 +1121,18 @@ "typeString": "uint256" } ], - "id": 2633, + "id": 2714, "name": "_mint", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3781, - "src": "871:5:7", + "referencedDeclaration": 3886, + "src": "871:5:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 2637, + "id": 2718, "isConstant": false, "isLValue": false, "isPure": false, @@ -1211,20 +1140,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "871:33:7", + "src": "871:33:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2638, + "id": 2719, "nodeType": "ExpressionStatement", - "src": "871:33:7" + "src": "871:33:10" } ] }, "documentation": null, - "id": 2640, + "id": 2721, "implemented": true, "kind": "constructor", "modifiers": [ @@ -1232,12 +1161,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2625, + "id": 2706, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2614, - "src": "800:5:7", + "referencedDeclaration": 2695, + "src": "800:5:10", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" @@ -1245,12 +1174,12 @@ }, { "argumentTypes": null, - "id": 2626, + "id": 2707, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2616, - "src": "807:7:7", + "referencedDeclaration": 2697, + "src": "807:7:10", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" @@ -1258,82 +1187,82 @@ }, { "argumentTypes": null, - "id": 2627, + "id": 2708, "name": "_decimals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2618, - "src": "816:9:7", + "referencedDeclaration": 2699, + "src": "816:9:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], - "id": 2628, + "id": 2709, "modifierName": { "argumentTypes": null, - "id": 2624, + "id": 2705, "name": "ERC20Detailed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3955, - "src": "786:13:7", + "referencedDeclaration": 4060, + "src": "786:13:10", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20Detailed_$3955_$", + "typeIdentifier": "t_type$_t_contract$_ERC20Detailed_$4060_$", "typeString": "type(contract ERC20Detailed)" } }, "nodeType": "ModifierInvocation", - "src": "786:40:7" + "src": "786:40:10" }, { "arguments": [ { "argumentTypes": null, - "id": 2630, + "id": 2711, "name": "_reserveRatio", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2622, - "src": "846:13:7", + "referencedDeclaration": 2703, + "src": "846:13:10", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } } ], - "id": 2631, + "id": 2712, "modifierName": { "argumentTypes": null, - "id": 2629, + "id": 2710, "name": "BancorBondingCurve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 122, - "src": "827:18:7", + "src": "827:18:10", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_BancorBondingCurve_$122_$", "typeString": "type(contract BancorBondingCurve)" } }, "nodeType": "ModifierInvocation", - "src": "827:33:7" + "src": "827:33:10" } ], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 2623, + "id": 2704, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2614, + "id": 2695, "name": "_name", "nodeType": "VariableDeclaration", - "scope": 2640, - "src": "638:19:7", + "scope": 2721, + "src": "638:19:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -1341,10 +1270,10 @@ "typeString": "string" }, "typeName": { - "id": 2613, + "id": 2694, "name": "string", "nodeType": "ElementaryTypeName", - "src": "638:6:7", + "src": "638:6:10", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -1355,11 +1284,11 @@ }, { "constant": false, - "id": 2616, + "id": 2697, "name": "_symbol", "nodeType": "VariableDeclaration", - "scope": 2640, - "src": "667:21:7", + "scope": 2721, + "src": "667:21:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -1367,10 +1296,10 @@ "typeString": "string" }, "typeName": { - "id": 2615, + "id": 2696, "name": "string", "nodeType": "ElementaryTypeName", - "src": "667:6:7", + "src": "667:6:10", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -1381,11 +1310,11 @@ }, { "constant": false, - "id": 2618, + "id": 2699, "name": "_decimals", "nodeType": "VariableDeclaration", - "scope": 2640, - "src": "698:15:7", + "scope": 2721, + "src": "698:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1393,10 +1322,10 @@ "typeString": "uint8" }, "typeName": { - "id": 2617, + "id": 2698, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "698:5:7", + "src": "698:5:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1407,11 +1336,11 @@ }, { "constant": false, - "id": 2620, + "id": 2701, "name": "_initialSupply", "nodeType": "VariableDeclaration", - "scope": 2640, - "src": "723:19:7", + "scope": 2721, + "src": "723:19:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1419,10 +1348,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2619, + "id": 2700, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "723:4:7", + "src": "723:4:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1433,11 +1362,11 @@ }, { "constant": false, - "id": 2622, + "id": 2703, "name": "_reserveRatio", "nodeType": "VariableDeclaration", - "scope": 2640, - "src": "752:20:7", + "scope": 2721, + "src": "752:20:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1445,10 +1374,10 @@ "typeString": "uint32" }, "typeName": { - "id": 2621, + "id": 2702, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "752:6:7", + "src": "752:6:10", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -1458,25 +1387,25 @@ "visibility": "internal" } ], - "src": "628:150:7" + "src": "628:150:10" }, "returnParameters": { - "id": 2632, + "id": 2713, "nodeType": "ParameterList", "parameters": [], - "src": "861:0:7" + "src": "861:0:10" }, - "scope": 2775, - "src": "617:294:7", + "scope": 2856, + "src": "617:294:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2648, + "id": 2729, "nodeType": "Block", - "src": "972:70:7", + "src": "972:70:10", "statements": [ { "expression": { @@ -1484,18 +1413,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 2645, + "id": 2726, "name": "totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3524, - "src": "989:11:7", + "referencedDeclaration": 3629, + "src": "989:11:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 2646, + "id": 2727, "isConstant": false, "isLValue": false, "isPure": false, @@ -1503,43 +1432,43 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "989:13:7", + "src": "989:13:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 2644, - "id": 2647, + "functionReturnParameters": 2725, + "id": 2728, "nodeType": "Return", - "src": "982:20:7" + "src": "982:20:10" } ] }, "documentation": null, - "id": 2649, + "id": 2730, "implemented": true, "kind": "function", "modifiers": [], "name": "continuousSupply", "nodeType": "FunctionDefinition", "parameters": { - "id": 2641, + "id": 2722, "nodeType": "ParameterList", "parameters": [], - "src": "942:2:7" + "src": "942:2:10" }, "returnParameters": { - "id": 2644, + "id": 2725, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2643, + "id": 2724, "name": "", "nodeType": "VariableDeclaration", - "scope": 2649, - "src": "966:4:7", + "scope": 2730, + "src": "966:4:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1547,10 +1476,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2642, + "id": 2723, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "966:4:7", + "src": "966:4:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1560,19 +1489,19 @@ "visibility": "internal" } ], - "src": "965:6:7" + "src": "965:6:10" }, - "scope": 2775, - "src": "917:125:7", + "scope": 2856, + "src": "917:125:10", "stateMutability": "view", "superFunction": 116, "visibility": "public" }, { "body": { - "id": 2686, + "id": 2767, "nodeType": "Block", - "src": "1126:258:7", + "src": "1126:258:10", "statements": [ { "expression": { @@ -1584,19 +1513,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2661, + "id": 2742, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2659, + "id": 2740, "name": "_deposit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2651, - "src": "1144:8:7", + "referencedDeclaration": 2732, + "src": "1144:8:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1607,14 +1536,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 2660, + "id": 2741, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1155:1:7", + "src": "1155:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1622,7 +1551,7 @@ }, "value": "0" }, - "src": "1144:12:7", + "src": "1144:12:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1631,14 +1560,14 @@ { "argumentTypes": null, "hexValue": "4465706f736974206d757374206265206e6f6e2d7a65726f2e", - "id": 2662, + "id": 2743, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1158:27:7", + "src": "1158:27:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_384f005d376e8e27694df499dbb9c5a37c55a854f203d91db02ba3830d7e9867", @@ -1658,21 +1587,21 @@ "typeString": "literal_string \"Deposit must be non-zero.\"" } ], - "id": 2658, + "id": 2739, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "1136:7:7", + "referencedDeclaration": 4176, + "src": "1136:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2663, + "id": 2744, "isConstant": false, "isLValue": false, "isPure": false, @@ -1680,28 +1609,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1136:50:7", + "src": "1136:50:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2664, + "id": 2745, "nodeType": "ExpressionStatement", - "src": "1136:50:7" + "src": "1136:50:10" }, { "assignments": [ - 2666 + 2747 ], "declarations": [ { "constant": false, - "id": 2666, + "id": 2747, "name": "rewardAmount", "nodeType": "VariableDeclaration", - "scope": 2686, - "src": "1197:17:7", + "scope": 2767, + "src": "1197:17:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1709,10 +1638,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2665, + "id": 2746, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "1197:4:7", + "src": "1197:4:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1722,18 +1651,18 @@ "visibility": "internal" } ], - "id": 2670, + "id": 2751, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 2668, + "id": 2749, "name": "_deposit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2651, - "src": "1241:8:7", + "referencedDeclaration": 2732, + "src": "1241:8:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1747,18 +1676,18 @@ "typeString": "uint256" } ], - "id": 2667, + "id": 2748, "name": "getContinuousMintReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 94, - "src": "1217:23:7", + "src": "1217:23:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) view returns (uint256)" } }, - "id": 2669, + "id": 2750, "isConstant": false, "isLValue": false, "isPure": false, @@ -1766,14 +1695,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1217:33:7", + "src": "1217:33:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1197:53:7" + "src": "1197:53:10" }, { "expression": { @@ -1783,18 +1712,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2672, + "id": 2753, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4067, - "src": "1266:3:7", + "referencedDeclaration": 4172, + "src": "1266:3:10", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2673, + "id": 2754, "isConstant": false, "isLValue": false, "isPure": false, @@ -1802,7 +1731,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1266:10:7", + "src": "1266:10:10", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -1810,12 +1739,12 @@ }, { "argumentTypes": null, - "id": 2674, + "id": 2755, "name": "rewardAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2666, - "src": "1278:12:7", + "referencedDeclaration": 2747, + "src": "1278:12:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1833,18 +1762,18 @@ "typeString": "uint256" } ], - "id": 2671, + "id": 2752, "name": "_mint", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3781, - "src": "1260:5:7", + "referencedDeclaration": 3886, + "src": "1260:5:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 2675, + "id": 2756, "isConstant": false, "isLValue": false, "isPure": false, @@ -1852,15 +1781,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1260:31:7", + "src": "1260:31:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2676, + "id": 2757, "nodeType": "ExpressionStatement", - "src": "1260:31:7" + "src": "1260:31:10" }, { "eventCall": { @@ -1870,18 +1799,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2678, + "id": 2759, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4067, - "src": "1313:3:7", + "referencedDeclaration": 4172, + "src": "1313:3:10", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2679, + "id": 2760, "isConstant": false, "isLValue": false, "isPure": false, @@ -1889,7 +1818,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1313:10:7", + "src": "1313:10:10", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -1897,12 +1826,12 @@ }, { "argumentTypes": null, - "id": 2680, + "id": 2761, "name": "rewardAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2666, - "src": "1325:12:7", + "referencedDeclaration": 2747, + "src": "1325:12:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1910,12 +1839,12 @@ }, { "argumentTypes": null, - "id": 2681, + "id": 2762, "name": "_deposit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2651, - "src": "1339:8:7", + "referencedDeclaration": 2732, + "src": "1339:8:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1937,18 +1866,18 @@ "typeString": "uint256" } ], - "id": 2677, + "id": 2758, "name": "Minted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2604, - "src": "1306:6:7", + "referencedDeclaration": 2685, + "src": "1306:6:10", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,uint256,uint256)" } }, - "id": 2682, + "id": 2763, "isConstant": false, "isLValue": false, "isPure": false, @@ -1956,75 +1885,75 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1306:42:7", + "src": "1306:42:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2683, + "id": 2764, "nodeType": "EmitStatement", - "src": "1301:47:7" + "src": "1301:47:10" }, { "expression": { "argumentTypes": null, - "id": 2684, + "id": 2765, "name": "rewardAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2666, - "src": "1365:12:7", + "referencedDeclaration": 2747, + "src": "1365:12:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 2657, - "id": 2685, + "functionReturnParameters": 2738, + "id": 2766, "nodeType": "Return", - "src": "1358:19:7" + "src": "1358:19:10" } ] }, "documentation": null, - "id": 2687, + "id": 2768, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, - "id": 2654, + "id": 2735, "modifierName": { "argumentTypes": null, - "id": 2653, + "id": 2734, "name": "validGasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 163, - "src": "1097:13:7", + "src": "1097:13:10", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1097:13:7" + "src": "1097:13:10" } ], "name": "_continuousMint", "nodeType": "FunctionDefinition", "parameters": { - "id": 2652, + "id": 2733, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2651, + "id": 2732, "name": "_deposit", "nodeType": "VariableDeclaration", - "scope": 2687, - "src": "1073:13:7", + "scope": 2768, + "src": "1073:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2032,10 +1961,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2650, + "id": 2731, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "1073:4:7", + "src": "1073:4:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2045,19 +1974,19 @@ "visibility": "internal" } ], - "src": "1072:15:7" + "src": "1072:15:10" }, "returnParameters": { - "id": 2657, + "id": 2738, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2656, + "id": 2737, "name": "", "nodeType": "VariableDeclaration", - "scope": 2687, - "src": "1120:4:7", + "scope": 2768, + "src": "1120:4:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2065,10 +1994,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2655, + "id": 2736, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "1120:4:7", + "src": "1120:4:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2078,19 +2007,19 @@ "visibility": "internal" } ], - "src": "1119:6:7" + "src": "1119:6:10" }, - "scope": 2775, - "src": "1048:336:7", + "scope": 2856, + "src": "1048:336:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 2734, + "id": 2815, "nodeType": "Block", - "src": "1467:332:7", + "src": "1467:332:10", "statements": [ { "expression": { @@ -2102,19 +2031,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2699, + "id": 2780, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2697, + "id": 2778, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2689, - "src": "1485:7:7", + "referencedDeclaration": 2770, + "src": "1485:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2125,14 +2054,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 2698, + "id": 2779, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1495:1:7", + "src": "1495:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2140,7 +2069,7 @@ }, "value": "0" }, - "src": "1485:11:7", + "src": "1485:11:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2149,14 +2078,14 @@ { "argumentTypes": null, "hexValue": "416d6f756e74206d757374206265206e6f6e2d7a65726f2e", - "id": 2700, + "id": 2781, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1498:26:7", + "src": "1498:26:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_dfeabd9f98723cad1570bd87fad256d1cbf96804bfa4a2d119d2c9449a257e66", @@ -2176,21 +2105,21 @@ "typeString": "literal_string \"Amount must be non-zero.\"" } ], - "id": 2696, + "id": 2777, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "1477:7:7", + "referencedDeclaration": 4176, + "src": "1477:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2701, + "id": 2782, "isConstant": false, "isLValue": false, "isPure": false, @@ -2198,15 +2127,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1477:48:7", + "src": "1477:48:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2702, + "id": 2783, "nodeType": "ExpressionStatement", - "src": "1477:48:7" + "src": "1477:48:10" }, { "expression": { @@ -2218,7 +2147,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2709, + "id": 2790, "isConstant": false, "isLValue": false, "isPure": false, @@ -2230,18 +2159,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2705, + "id": 2786, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4067, - "src": "1553:3:7", + "referencedDeclaration": 4172, + "src": "1553:3:10", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2706, + "id": 2787, "isConstant": false, "isLValue": false, "isPure": false, @@ -2249,7 +2178,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1553:10:7", + "src": "1553:10:10", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -2263,18 +2192,18 @@ "typeString": "address payable" } ], - "id": 2704, + "id": 2785, "name": "balanceOf", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3536, - "src": "1543:9:7", + "referencedDeclaration": 3641, + "src": "1543:9:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view returns (uint256)" } }, - "id": 2707, + "id": 2788, "isConstant": false, "isLValue": false, "isPure": false, @@ -2282,7 +2211,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1543:21:7", + "src": "1543:21:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2292,18 +2221,18 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 2708, + "id": 2789, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2689, - "src": "1568:7:7", + "referencedDeclaration": 2770, + "src": "1568:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1543:32:7", + "src": "1543:32:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2312,14 +2241,14 @@ { "argumentTypes": null, "hexValue": "496e73756666696369656e7420746f6b656e7320746f206275726e2e", - "id": 2710, + "id": 2791, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1577:30:7", + "src": "1577:30:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_9f8e3a3e4ac165136f48c2ad0b909c53ab197371836b489f789dec19bb20b32f", @@ -2339,21 +2268,21 @@ "typeString": "literal_string \"Insufficient tokens to burn.\"" } ], - "id": 2703, + "id": 2784, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "1535:7:7", + "referencedDeclaration": 4176, + "src": "1535:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2711, + "id": 2792, "isConstant": false, "isLValue": false, "isPure": false, @@ -2361,28 +2290,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1535:73:7", + "src": "1535:73:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2712, + "id": 2793, "nodeType": "ExpressionStatement", - "src": "1535:73:7" + "src": "1535:73:10" }, { "assignments": [ - 2714 + 2795 ], "declarations": [ { "constant": false, - "id": 2714, + "id": 2795, "name": "refundAmount", "nodeType": "VariableDeclaration", - "scope": 2734, - "src": "1619:17:7", + "scope": 2815, + "src": "1619:17:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2390,10 +2319,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2713, + "id": 2794, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "1619:4:7", + "src": "1619:4:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2403,18 +2332,18 @@ "visibility": "internal" } ], - "id": 2718, + "id": 2799, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 2716, + "id": 2797, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2689, - "src": "1663:7:7", + "referencedDeclaration": 2770, + "src": "1663:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2428,18 +2357,18 @@ "typeString": "uint256" } ], - "id": 2715, + "id": 2796, "name": "getContinuousBurnRefund", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 111, - "src": "1639:23:7", + "src": "1639:23:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) view returns (uint256)" } }, - "id": 2717, + "id": 2798, "isConstant": false, "isLValue": false, "isPure": false, @@ -2447,14 +2376,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1639:32:7", + "src": "1639:32:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1619:52:7" + "src": "1619:52:10" }, { "expression": { @@ -2464,18 +2393,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2720, + "id": 2801, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4067, - "src": "1687:3:7", + "referencedDeclaration": 4172, + "src": "1687:3:10", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2721, + "id": 2802, "isConstant": false, "isLValue": false, "isPure": false, @@ -2483,7 +2412,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1687:10:7", + "src": "1687:10:10", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -2491,12 +2420,12 @@ }, { "argumentTypes": null, - "id": 2722, + "id": 2803, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2689, - "src": "1699:7:7", + "referencedDeclaration": 2770, + "src": "1699:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2514,18 +2443,18 @@ "typeString": "uint256" } ], - "id": 2719, + "id": 2800, "name": "_burn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3825, - "src": "1681:5:7", + "referencedDeclaration": 3930, + "src": "1681:5:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 2723, + "id": 2804, "isConstant": false, "isLValue": false, "isPure": false, @@ -2533,15 +2462,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1681:26:7", + "src": "1681:26:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2724, + "id": 2805, "nodeType": "ExpressionStatement", - "src": "1681:26:7" + "src": "1681:26:10" }, { "eventCall": { @@ -2551,18 +2480,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2726, + "id": 2807, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4067, - "src": "1729:3:7", + "referencedDeclaration": 4172, + "src": "1729:3:10", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2727, + "id": 2808, "isConstant": false, "isLValue": false, "isPure": false, @@ -2570,7 +2499,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1729:10:7", + "src": "1729:10:10", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -2578,12 +2507,12 @@ }, { "argumentTypes": null, - "id": 2728, + "id": 2809, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2689, - "src": "1741:7:7", + "referencedDeclaration": 2770, + "src": "1741:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2591,12 +2520,12 @@ }, { "argumentTypes": null, - "id": 2729, + "id": 2810, "name": "refundAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2714, - "src": "1750:12:7", + "referencedDeclaration": 2795, + "src": "1750:12:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2618,18 +2547,18 @@ "typeString": "uint256" } ], - "id": 2725, + "id": 2806, "name": "Burned", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2612, - "src": "1722:6:7", + "referencedDeclaration": 2693, + "src": "1722:6:10", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,uint256,uint256)" } }, - "id": 2730, + "id": 2811, "isConstant": false, "isLValue": false, "isPure": false, @@ -2637,75 +2566,75 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1722:41:7", + "src": "1722:41:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2731, + "id": 2812, "nodeType": "EmitStatement", - "src": "1717:46:7" + "src": "1717:46:10" }, { "expression": { "argumentTypes": null, - "id": 2732, + "id": 2813, "name": "refundAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2714, - "src": "1780:12:7", + "referencedDeclaration": 2795, + "src": "1780:12:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 2695, - "id": 2733, + "functionReturnParameters": 2776, + "id": 2814, "nodeType": "Return", - "src": "1773:19:7" + "src": "1773:19:10" } ] }, "documentation": null, - "id": 2735, + "id": 2816, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, - "id": 2692, + "id": 2773, "modifierName": { "argumentTypes": null, - "id": 2691, + "id": 2772, "name": "validGasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 163, - "src": "1438:13:7", + "src": "1438:13:10", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1438:13:7" + "src": "1438:13:10" } ], "name": "_continuousBurn", "nodeType": "FunctionDefinition", "parameters": { - "id": 2690, + "id": 2771, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2689, + "id": 2770, "name": "_amount", "nodeType": "VariableDeclaration", - "scope": 2735, - "src": "1415:12:7", + "scope": 2816, + "src": "1415:12:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2713,10 +2642,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2688, + "id": 2769, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "1415:4:7", + "src": "1415:4:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2726,19 +2655,19 @@ "visibility": "internal" } ], - "src": "1414:14:7" + "src": "1414:14:10" }, "returnParameters": { - "id": 2695, + "id": 2776, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2694, + "id": 2775, "name": "", "nodeType": "VariableDeclaration", - "scope": 2735, - "src": "1461:4:7", + "scope": 2816, + "src": "1461:4:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2746,10 +2675,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2693, + "id": 2774, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "1461:4:7", + "src": "1461:4:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2759,19 +2688,19 @@ "visibility": "internal" } ], - "src": "1460:6:7" + "src": "1460:6:10" }, - "scope": 2775, - "src": "1390:409:7", + "scope": 2856, + "src": "1390:409:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 2753, + "id": 2834, "nodeType": "Block", - "src": "1849:88:7", + "src": "1849:88:10", "statements": [ { "expression": { @@ -2781,18 +2710,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2741, + "id": 2822, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4067, - "src": "1865:3:7", + "referencedDeclaration": 4172, + "src": "1865:3:10", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2742, + "id": 2823, "isConstant": false, "isLValue": false, "isPure": false, @@ -2800,7 +2729,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1865:10:7", + "src": "1865:10:10", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -2808,12 +2737,12 @@ }, { "argumentTypes": null, - "id": 2743, + "id": 2824, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2737, - "src": "1877:7:7", + "referencedDeclaration": 2818, + "src": "1877:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2831,18 +2760,18 @@ "typeString": "uint256" } ], - "id": 2740, + "id": 2821, "name": "_burn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3825, - "src": "1859:5:7", + "referencedDeclaration": 3930, + "src": "1859:5:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 2744, + "id": 2825, "isConstant": false, "isLValue": false, "isPure": false, @@ -2850,15 +2779,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1859:26:7", + "src": "1859:26:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2745, + "id": 2826, "nodeType": "ExpressionStatement", - "src": "1859:26:7" + "src": "1859:26:10" }, { "eventCall": { @@ -2868,18 +2797,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2747, + "id": 2828, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4067, - "src": "1907:3:7", + "referencedDeclaration": 4172, + "src": "1907:3:10", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2748, + "id": 2829, "isConstant": false, "isLValue": false, "isPure": false, @@ -2887,7 +2816,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1907:10:7", + "src": "1907:10:10", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -2895,12 +2824,12 @@ }, { "argumentTypes": null, - "id": 2749, + "id": 2830, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2737, - "src": "1919:7:7", + "referencedDeclaration": 2818, + "src": "1919:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2909,14 +2838,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 2750, + "id": 2831, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1928:1:7", + "src": "1928:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2940,18 +2869,18 @@ "typeString": "int_const 0" } ], - "id": 2746, + "id": 2827, "name": "Burned", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2612, - "src": "1900:6:7", + "referencedDeclaration": 2693, + "src": "1900:6:10", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,uint256,uint256)" } }, - "id": 2751, + "id": 2832, "isConstant": false, "isLValue": false, "isPure": false, @@ -2959,36 +2888,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1900:30:7", + "src": "1900:30:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2752, + "id": 2833, "nodeType": "EmitStatement", - "src": "1895:35:7" + "src": "1895:35:10" } ] }, "documentation": null, - "id": 2754, + "id": 2835, "implemented": true, "kind": "function", "modifiers": [], "name": "sponsoredBurn", "nodeType": "FunctionDefinition", "parameters": { - "id": 2738, + "id": 2819, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2737, + "id": 2818, "name": "_amount", "nodeType": "VariableDeclaration", - "scope": 2754, - "src": "1828:12:7", + "scope": 2835, + "src": "1828:12:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2996,10 +2925,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2736, + "id": 2817, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "1828:4:7", + "src": "1828:4:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3009,25 +2938,25 @@ "visibility": "internal" } ], - "src": "1827:14:7" + "src": "1827:14:10" }, "returnParameters": { - "id": 2739, + "id": 2820, "nodeType": "ParameterList", "parameters": [], - "src": "1849:0:7" + "src": "1849:0:10" }, - "scope": 2775, - "src": "1805:132:7", + "scope": 2856, + "src": "1805:132:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2773, + "id": 2854, "nodeType": "Block", - "src": "2006:87:7", + "src": "2006:87:10", "statements": [ { "expression": { @@ -3035,12 +2964,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2762, + "id": 2843, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2756, - "src": "2026:5:7", + "referencedDeclaration": 2837, + "src": "2026:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3048,12 +2977,12 @@ }, { "argumentTypes": null, - "id": 2763, + "id": 2844, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2758, - "src": "2033:7:7", + "referencedDeclaration": 2839, + "src": "2033:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3071,18 +3000,18 @@ "typeString": "uint256" } ], - "id": 2761, + "id": 2842, "name": "_burnFrom", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3896, - "src": "2016:9:7", + "referencedDeclaration": 4001, + "src": "2016:9:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 2764, + "id": 2845, "isConstant": false, "isLValue": false, "isPure": false, @@ -3090,15 +3019,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2016:25:7", + "src": "2016:25:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2765, + "id": 2846, "nodeType": "ExpressionStatement", - "src": "2016:25:7" + "src": "2016:25:10" }, { "eventCall": { @@ -3108,18 +3037,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2767, + "id": 2848, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4067, - "src": "2063:3:7", + "referencedDeclaration": 4172, + "src": "2063:3:10", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2768, + "id": 2849, "isConstant": false, "isLValue": false, "isPure": false, @@ -3127,7 +3056,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2063:10:7", + "src": "2063:10:10", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -3135,12 +3064,12 @@ }, { "argumentTypes": null, - "id": 2769, + "id": 2850, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2758, - "src": "2075:7:7", + "referencedDeclaration": 2839, + "src": "2075:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3149,14 +3078,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 2770, + "id": 2851, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2084:1:7", + "src": "2084:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3180,18 +3109,18 @@ "typeString": "int_const 0" } ], - "id": 2766, + "id": 2847, "name": "Burned", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2612, - "src": "2056:6:7", + "referencedDeclaration": 2693, + "src": "2056:6:10", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,uint256,uint256)" } }, - "id": 2771, + "id": 2852, "isConstant": false, "isLValue": false, "isPure": false, @@ -3199,36 +3128,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2056:30:7", + "src": "2056:30:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2772, + "id": 2853, "nodeType": "EmitStatement", - "src": "2051:35:7" + "src": "2051:35:10" } ] }, "documentation": null, - "id": 2774, + "id": 2855, "implemented": true, "kind": "function", "modifiers": [], "name": "sponsoredBurnFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 2759, + "id": 2840, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2756, + "id": 2837, "name": "_from", "nodeType": "VariableDeclaration", - "scope": 2774, - "src": "1970:13:7", + "scope": 2855, + "src": "1970:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3236,10 +3165,10 @@ "typeString": "address" }, "typeName": { - "id": 2755, + "id": 2836, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1970:7:7", + "src": "1970:7:10", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3251,11 +3180,11 @@ }, { "constant": false, - "id": 2758, + "id": 2839, "name": "_amount", "nodeType": "VariableDeclaration", - "scope": 2774, - "src": "1985:12:7", + "scope": 2855, + "src": "1985:12:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3263,10 +3192,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2757, + "id": 2838, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "1985:4:7", + "src": "1985:4:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3276,39 +3205,39 @@ "visibility": "internal" } ], - "src": "1969:29:7" + "src": "1969:29:10" }, "returnParameters": { - "id": 2760, + "id": 2841, "nodeType": "ParameterList", "parameters": [], - "src": "2006:0:7" + "src": "2006:0:10" }, - "scope": 2775, - "src": "1943:150:7", + "scope": 2856, + "src": "1943:150:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 2776, - "src": "366:1733:7" + "scope": 2857, + "src": "366:1733:10" } ], - "src": "0:2099:7" + "src": "0:2099:10" }, "legacyAST": { - "absolutePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/token/ContinuousToken.sol", + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/token/ContinuousToken.sol", "exportedSymbols": { "ContinuousToken": [ - 2775 + 2856 ] }, - "id": 2776, + "id": 2857, "nodeType": "SourceUnit", "nodes": [ { - "id": 2577, + "id": 2658, "literals": [ "solidity", "^", @@ -3316,71 +3245,71 @@ ".2" ], "nodeType": "PragmaDirective", - "src": "0:23:7" + "src": "0:23:10" }, { "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol", "file": "openzeppelin-solidity/contracts/ownership/Ownable.sol", - "id": 2578, + "id": 2659, "nodeType": "ImportDirective", - "scope": 2776, - "sourceUnit": 3493, - "src": "25:63:7", + "scope": 2857, + "sourceUnit": 3598, + "src": "25:63:10", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", "file": "openzeppelin-solidity/contracts/math/SafeMath.sol", - "id": 2579, + "id": 2660, "nodeType": "ImportDirective", - "scope": 2776, - "sourceUnit": 3375, - "src": "89:59:7", + "scope": 2857, + "sourceUnit": 3480, + "src": "89:59:10", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", "file": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", - "id": 2580, + "id": 2661, "nodeType": "ImportDirective", - "scope": 2776, - "sourceUnit": 3898, - "src": "149:63:7", + "scope": 2857, + "sourceUnit": 4003, + "src": "149:63:10", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol", "file": "openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol", - "id": 2581, + "id": 2662, "nodeType": "ImportDirective", - "scope": 2776, - "sourceUnit": 3956, - "src": "213:71:7", + "scope": 2857, + "sourceUnit": 4061, + "src": "213:71:10", "symbolAliases": [], "unitAlias": "" }, { - "absolutePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/curves/BancorBondingCurve.sol", + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/curves/BancorBondingCurve.sol", "file": "../curves/BancorBondingCurve.sol", - "id": 2582, + "id": 2663, "nodeType": "ImportDirective", - "scope": 2776, + "scope": 2857, "sourceUnit": 123, - "src": "286:42:7", + "src": "286:42:10", "symbolAliases": [], "unitAlias": "" }, { - "absolutePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/lib/ValidGasPrice.sol", + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/lib/ValidGasPrice.sol", "file": "../lib/ValidGasPrice.sol", - "id": 2583, + "id": 2664, "nodeType": "ImportDirective", - "scope": 2776, + "scope": 2857, "sourceUnit": 177, - "src": "329:34:7", + "src": "329:34:10", "symbolAliases": [], "unitAlias": "" }, @@ -3390,91 +3319,91 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 2584, + "id": 2665, "name": "Ownable", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3492, - "src": "394:7:7", + "referencedDeclaration": 3597, + "src": "394:7:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_Ownable_$3492", + "typeIdentifier": "t_contract$_Ownable_$3597", "typeString": "contract Ownable" } }, - "id": 2585, + "id": 2666, "nodeType": "InheritanceSpecifier", - "src": "394:7:7" + "src": "394:7:10" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 2586, + "id": 2667, "name": "ERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3897, - "src": "403:5:7", + "referencedDeclaration": 4002, + "src": "403:5:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$3897", + "typeIdentifier": "t_contract$_ERC20_$4002", "typeString": "contract ERC20" } }, - "id": 2587, + "id": 2668, "nodeType": "InheritanceSpecifier", - "src": "403:5:7" + "src": "403:5:10" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 2588, + "id": 2669, "name": "ERC20Detailed", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3955, - "src": "410:13:7", + "referencedDeclaration": 4060, + "src": "410:13:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Detailed_$3955", + "typeIdentifier": "t_contract$_ERC20Detailed_$4060", "typeString": "contract ERC20Detailed" } }, - "id": 2589, + "id": 2670, "nodeType": "InheritanceSpecifier", - "src": "410:13:7" + "src": "410:13:10" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 2590, + "id": 2671, "name": "BancorBondingCurve", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 122, - "src": "425:18:7", + "src": "425:18:10", "typeDescriptions": { "typeIdentifier": "t_contract$_BancorBondingCurve_$122", "typeString": "contract BancorBondingCurve" } }, - "id": 2591, + "id": 2672, "nodeType": "InheritanceSpecifier", - "src": "425:18:7" + "src": "425:18:10" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 2592, + "id": 2673, "name": "ValidGasPrice", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 176, - "src": "445:13:7", + "src": "445:13:10", "typeDescriptions": { "typeIdentifier": "t_contract$_ValidGasPrice_$176", "typeString": "contract ValidGasPrice" } }, - "id": 2593, + "id": 2674, "nodeType": "InheritanceSpecifier", - "src": "445:13:7" + "src": "445:13:10" } ], "contractDependencies": [ @@ -3483,53 +3412,53 @@ 176, 389, 2569, - 2999, - 3492, - 3897, - 3955, - 4052 + 3104, + 3597, + 4002, + 4060, + 4157 ], "contractKind": "contract", "documentation": null, "fullyImplemented": false, - "id": 2775, + "id": 2856, "linearizedBaseContracts": [ - 2775, + 2856, 176, 122, 389, 2569, 139, - 3955, - 3897, - 3492, - 4052, - 2999 + 4060, + 4002, + 3597, + 4157, + 3104 ], "name": "ContinuousToken", "nodeType": "ContractDefinition", "nodes": [ { - "id": 2596, + "id": 2677, "libraryName": { "contractScope": null, - "id": 2594, + "id": 2675, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3374, - "src": "471:8:7", + "referencedDeclaration": 3479, + "src": "471:8:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$3374", + "typeIdentifier": "t_contract$_SafeMath_$3479", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", - "src": "465:24:7", + "src": "465:24:10", "typeName": { - "id": 2595, + "id": 2676, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "484:4:7", + "src": "484:4:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3539,21 +3468,21 @@ { "anonymous": false, "documentation": null, - "id": 2604, + "id": 2685, "name": "Minted", "nodeType": "EventDefinition", "parameters": { - "id": 2603, + "id": 2684, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2598, + "id": 2679, "indexed": false, "name": "sender", "nodeType": "VariableDeclaration", - "scope": 2604, - "src": "508:14:7", + "scope": 2685, + "src": "508:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3561,10 +3490,10 @@ "typeString": "address" }, "typeName": { - "id": 2597, + "id": 2678, "name": "address", "nodeType": "ElementaryTypeName", - "src": "508:7:7", + "src": "508:7:10", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3576,12 +3505,12 @@ }, { "constant": false, - "id": 2600, + "id": 2681, "indexed": false, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 2604, - "src": "524:11:7", + "scope": 2685, + "src": "524:11:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3589,10 +3518,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2599, + "id": 2680, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "524:4:7", + "src": "524:4:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3603,12 +3532,12 @@ }, { "constant": false, - "id": 2602, + "id": 2683, "indexed": false, "name": "deposit", "nodeType": "VariableDeclaration", - "scope": 2604, - "src": "537:12:7", + "scope": 2685, + "src": "537:12:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3616,10 +3545,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2601, + "id": 2682, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "537:4:7", + "src": "537:4:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3629,28 +3558,28 @@ "visibility": "internal" } ], - "src": "507:43:7" + "src": "507:43:10" }, - "src": "495:56:7" + "src": "495:56:10" }, { "anonymous": false, "documentation": null, - "id": 2612, + "id": 2693, "name": "Burned", "nodeType": "EventDefinition", "parameters": { - "id": 2611, + "id": 2692, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2606, + "id": 2687, "indexed": false, "name": "sender", "nodeType": "VariableDeclaration", - "scope": 2612, - "src": "569:14:7", + "scope": 2693, + "src": "569:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3658,10 +3587,10 @@ "typeString": "address" }, "typeName": { - "id": 2605, + "id": 2686, "name": "address", "nodeType": "ElementaryTypeName", - "src": "569:7:7", + "src": "569:7:10", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3673,12 +3602,12 @@ }, { "constant": false, - "id": 2608, + "id": 2689, "indexed": false, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 2612, - "src": "585:11:7", + "scope": 2693, + "src": "585:11:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3686,10 +3615,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2607, + "id": 2688, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "585:4:7", + "src": "585:4:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3700,12 +3629,12 @@ }, { "constant": false, - "id": 2610, + "id": 2691, "indexed": false, "name": "refund", "nodeType": "VariableDeclaration", - "scope": 2612, - "src": "598:11:7", + "scope": 2693, + "src": "598:11:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3713,10 +3642,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2609, + "id": 2690, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "598:4:7", + "src": "598:4:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3726,15 +3655,15 @@ "visibility": "internal" } ], - "src": "568:42:7" + "src": "568:42:10" }, - "src": "556:55:7" + "src": "556:55:10" }, { "body": { - "id": 2639, + "id": 2720, "nodeType": "Block", - "src": "861:50:7", + "src": "861:50:10", "statements": [ { "expression": { @@ -3744,18 +3673,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2634, + "id": 2715, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4067, - "src": "877:3:7", + "referencedDeclaration": 4172, + "src": "877:3:10", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2635, + "id": 2716, "isConstant": false, "isLValue": false, "isPure": false, @@ -3763,7 +3692,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "877:10:7", + "src": "877:10:10", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -3771,12 +3700,12 @@ }, { "argumentTypes": null, - "id": 2636, + "id": 2717, "name": "_initialSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2620, - "src": "889:14:7", + "referencedDeclaration": 2701, + "src": "889:14:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3794,18 +3723,18 @@ "typeString": "uint256" } ], - "id": 2633, + "id": 2714, "name": "_mint", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3781, - "src": "871:5:7", + "referencedDeclaration": 3886, + "src": "871:5:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 2637, + "id": 2718, "isConstant": false, "isLValue": false, "isPure": false, @@ -3813,20 +3742,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "871:33:7", + "src": "871:33:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2638, + "id": 2719, "nodeType": "ExpressionStatement", - "src": "871:33:7" + "src": "871:33:10" } ] }, "documentation": null, - "id": 2640, + "id": 2721, "implemented": true, "kind": "constructor", "modifiers": [ @@ -3834,12 +3763,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2625, + "id": 2706, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2614, - "src": "800:5:7", + "referencedDeclaration": 2695, + "src": "800:5:10", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" @@ -3847,12 +3776,12 @@ }, { "argumentTypes": null, - "id": 2626, + "id": 2707, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2616, - "src": "807:7:7", + "referencedDeclaration": 2697, + "src": "807:7:10", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" @@ -3860,82 +3789,82 @@ }, { "argumentTypes": null, - "id": 2627, + "id": 2708, "name": "_decimals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2618, - "src": "816:9:7", + "referencedDeclaration": 2699, + "src": "816:9:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], - "id": 2628, + "id": 2709, "modifierName": { "argumentTypes": null, - "id": 2624, + "id": 2705, "name": "ERC20Detailed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3955, - "src": "786:13:7", + "referencedDeclaration": 4060, + "src": "786:13:10", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20Detailed_$3955_$", + "typeIdentifier": "t_type$_t_contract$_ERC20Detailed_$4060_$", "typeString": "type(contract ERC20Detailed)" } }, "nodeType": "ModifierInvocation", - "src": "786:40:7" + "src": "786:40:10" }, { "arguments": [ { "argumentTypes": null, - "id": 2630, + "id": 2711, "name": "_reserveRatio", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2622, - "src": "846:13:7", + "referencedDeclaration": 2703, + "src": "846:13:10", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } } ], - "id": 2631, + "id": 2712, "modifierName": { "argumentTypes": null, - "id": 2629, + "id": 2710, "name": "BancorBondingCurve", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 122, - "src": "827:18:7", + "src": "827:18:10", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_BancorBondingCurve_$122_$", "typeString": "type(contract BancorBondingCurve)" } }, "nodeType": "ModifierInvocation", - "src": "827:33:7" + "src": "827:33:10" } ], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 2623, + "id": 2704, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2614, + "id": 2695, "name": "_name", "nodeType": "VariableDeclaration", - "scope": 2640, - "src": "638:19:7", + "scope": 2721, + "src": "638:19:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -3943,10 +3872,10 @@ "typeString": "string" }, "typeName": { - "id": 2613, + "id": 2694, "name": "string", "nodeType": "ElementaryTypeName", - "src": "638:6:7", + "src": "638:6:10", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -3957,11 +3886,11 @@ }, { "constant": false, - "id": 2616, + "id": 2697, "name": "_symbol", "nodeType": "VariableDeclaration", - "scope": 2640, - "src": "667:21:7", + "scope": 2721, + "src": "667:21:10", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -3969,10 +3898,10 @@ "typeString": "string" }, "typeName": { - "id": 2615, + "id": 2696, "name": "string", "nodeType": "ElementaryTypeName", - "src": "667:6:7", + "src": "667:6:10", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -3983,11 +3912,11 @@ }, { "constant": false, - "id": 2618, + "id": 2699, "name": "_decimals", "nodeType": "VariableDeclaration", - "scope": 2640, - "src": "698:15:7", + "scope": 2721, + "src": "698:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3995,10 +3924,10 @@ "typeString": "uint8" }, "typeName": { - "id": 2617, + "id": 2698, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "698:5:7", + "src": "698:5:10", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4009,11 +3938,11 @@ }, { "constant": false, - "id": 2620, + "id": 2701, "name": "_initialSupply", "nodeType": "VariableDeclaration", - "scope": 2640, - "src": "723:19:7", + "scope": 2721, + "src": "723:19:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4021,10 +3950,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2619, + "id": 2700, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "723:4:7", + "src": "723:4:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4035,11 +3964,11 @@ }, { "constant": false, - "id": 2622, + "id": 2703, "name": "_reserveRatio", "nodeType": "VariableDeclaration", - "scope": 2640, - "src": "752:20:7", + "scope": 2721, + "src": "752:20:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4047,10 +3976,10 @@ "typeString": "uint32" }, "typeName": { - "id": 2621, + "id": 2702, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "752:6:7", + "src": "752:6:10", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -4060,25 +3989,25 @@ "visibility": "internal" } ], - "src": "628:150:7" + "src": "628:150:10" }, "returnParameters": { - "id": 2632, + "id": 2713, "nodeType": "ParameterList", "parameters": [], - "src": "861:0:7" + "src": "861:0:10" }, - "scope": 2775, - "src": "617:294:7", + "scope": 2856, + "src": "617:294:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2648, + "id": 2729, "nodeType": "Block", - "src": "972:70:7", + "src": "972:70:10", "statements": [ { "expression": { @@ -4086,18 +4015,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 2645, + "id": 2726, "name": "totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3524, - "src": "989:11:7", + "referencedDeclaration": 3629, + "src": "989:11:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 2646, + "id": 2727, "isConstant": false, "isLValue": false, "isPure": false, @@ -4105,43 +4034,43 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "989:13:7", + "src": "989:13:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 2644, - "id": 2647, + "functionReturnParameters": 2725, + "id": 2728, "nodeType": "Return", - "src": "982:20:7" + "src": "982:20:10" } ] }, "documentation": null, - "id": 2649, + "id": 2730, "implemented": true, "kind": "function", "modifiers": [], "name": "continuousSupply", "nodeType": "FunctionDefinition", "parameters": { - "id": 2641, + "id": 2722, "nodeType": "ParameterList", "parameters": [], - "src": "942:2:7" + "src": "942:2:10" }, "returnParameters": { - "id": 2644, + "id": 2725, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2643, + "id": 2724, "name": "", "nodeType": "VariableDeclaration", - "scope": 2649, - "src": "966:4:7", + "scope": 2730, + "src": "966:4:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4149,10 +4078,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2642, + "id": 2723, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "966:4:7", + "src": "966:4:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4162,19 +4091,19 @@ "visibility": "internal" } ], - "src": "965:6:7" + "src": "965:6:10" }, - "scope": 2775, - "src": "917:125:7", + "scope": 2856, + "src": "917:125:10", "stateMutability": "view", "superFunction": 116, "visibility": "public" }, { "body": { - "id": 2686, + "id": 2767, "nodeType": "Block", - "src": "1126:258:7", + "src": "1126:258:10", "statements": [ { "expression": { @@ -4186,19 +4115,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2661, + "id": 2742, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2659, + "id": 2740, "name": "_deposit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2651, - "src": "1144:8:7", + "referencedDeclaration": 2732, + "src": "1144:8:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4209,14 +4138,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 2660, + "id": 2741, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1155:1:7", + "src": "1155:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4224,7 +4153,7 @@ }, "value": "0" }, - "src": "1144:12:7", + "src": "1144:12:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4233,14 +4162,14 @@ { "argumentTypes": null, "hexValue": "4465706f736974206d757374206265206e6f6e2d7a65726f2e", - "id": 2662, + "id": 2743, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1158:27:7", + "src": "1158:27:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_384f005d376e8e27694df499dbb9c5a37c55a854f203d91db02ba3830d7e9867", @@ -4260,21 +4189,21 @@ "typeString": "literal_string \"Deposit must be non-zero.\"" } ], - "id": 2658, + "id": 2739, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "1136:7:7", + "referencedDeclaration": 4176, + "src": "1136:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2663, + "id": 2744, "isConstant": false, "isLValue": false, "isPure": false, @@ -4282,28 +4211,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1136:50:7", + "src": "1136:50:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2664, + "id": 2745, "nodeType": "ExpressionStatement", - "src": "1136:50:7" + "src": "1136:50:10" }, { "assignments": [ - 2666 + 2747 ], "declarations": [ { "constant": false, - "id": 2666, + "id": 2747, "name": "rewardAmount", "nodeType": "VariableDeclaration", - "scope": 2686, - "src": "1197:17:7", + "scope": 2767, + "src": "1197:17:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4311,10 +4240,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2665, + "id": 2746, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "1197:4:7", + "src": "1197:4:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4324,18 +4253,18 @@ "visibility": "internal" } ], - "id": 2670, + "id": 2751, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 2668, + "id": 2749, "name": "_deposit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2651, - "src": "1241:8:7", + "referencedDeclaration": 2732, + "src": "1241:8:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4349,18 +4278,18 @@ "typeString": "uint256" } ], - "id": 2667, + "id": 2748, "name": "getContinuousMintReward", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 94, - "src": "1217:23:7", + "src": "1217:23:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) view returns (uint256)" } }, - "id": 2669, + "id": 2750, "isConstant": false, "isLValue": false, "isPure": false, @@ -4368,14 +4297,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1217:33:7", + "src": "1217:33:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1197:53:7" + "src": "1197:53:10" }, { "expression": { @@ -4385,18 +4314,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2672, + "id": 2753, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4067, - "src": "1266:3:7", + "referencedDeclaration": 4172, + "src": "1266:3:10", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2673, + "id": 2754, "isConstant": false, "isLValue": false, "isPure": false, @@ -4404,7 +4333,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1266:10:7", + "src": "1266:10:10", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -4412,12 +4341,12 @@ }, { "argumentTypes": null, - "id": 2674, + "id": 2755, "name": "rewardAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2666, - "src": "1278:12:7", + "referencedDeclaration": 2747, + "src": "1278:12:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4435,18 +4364,18 @@ "typeString": "uint256" } ], - "id": 2671, + "id": 2752, "name": "_mint", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3781, - "src": "1260:5:7", + "referencedDeclaration": 3886, + "src": "1260:5:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 2675, + "id": 2756, "isConstant": false, "isLValue": false, "isPure": false, @@ -4454,15 +4383,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1260:31:7", + "src": "1260:31:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2676, + "id": 2757, "nodeType": "ExpressionStatement", - "src": "1260:31:7" + "src": "1260:31:10" }, { "eventCall": { @@ -4472,18 +4401,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2678, + "id": 2759, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4067, - "src": "1313:3:7", + "referencedDeclaration": 4172, + "src": "1313:3:10", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2679, + "id": 2760, "isConstant": false, "isLValue": false, "isPure": false, @@ -4491,7 +4420,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1313:10:7", + "src": "1313:10:10", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -4499,12 +4428,12 @@ }, { "argumentTypes": null, - "id": 2680, + "id": 2761, "name": "rewardAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2666, - "src": "1325:12:7", + "referencedDeclaration": 2747, + "src": "1325:12:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4512,12 +4441,12 @@ }, { "argumentTypes": null, - "id": 2681, + "id": 2762, "name": "_deposit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2651, - "src": "1339:8:7", + "referencedDeclaration": 2732, + "src": "1339:8:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4539,18 +4468,18 @@ "typeString": "uint256" } ], - "id": 2677, + "id": 2758, "name": "Minted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2604, - "src": "1306:6:7", + "referencedDeclaration": 2685, + "src": "1306:6:10", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,uint256,uint256)" } }, - "id": 2682, + "id": 2763, "isConstant": false, "isLValue": false, "isPure": false, @@ -4558,75 +4487,75 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1306:42:7", + "src": "1306:42:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2683, + "id": 2764, "nodeType": "EmitStatement", - "src": "1301:47:7" + "src": "1301:47:10" }, { "expression": { "argumentTypes": null, - "id": 2684, + "id": 2765, "name": "rewardAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2666, - "src": "1365:12:7", + "referencedDeclaration": 2747, + "src": "1365:12:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 2657, - "id": 2685, + "functionReturnParameters": 2738, + "id": 2766, "nodeType": "Return", - "src": "1358:19:7" + "src": "1358:19:10" } ] }, "documentation": null, - "id": 2687, + "id": 2768, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, - "id": 2654, + "id": 2735, "modifierName": { "argumentTypes": null, - "id": 2653, + "id": 2734, "name": "validGasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 163, - "src": "1097:13:7", + "src": "1097:13:10", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1097:13:7" + "src": "1097:13:10" } ], "name": "_continuousMint", "nodeType": "FunctionDefinition", "parameters": { - "id": 2652, + "id": 2733, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2651, + "id": 2732, "name": "_deposit", "nodeType": "VariableDeclaration", - "scope": 2687, - "src": "1073:13:7", + "scope": 2768, + "src": "1073:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4634,10 +4563,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2650, + "id": 2731, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "1073:4:7", + "src": "1073:4:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4647,19 +4576,19 @@ "visibility": "internal" } ], - "src": "1072:15:7" + "src": "1072:15:10" }, "returnParameters": { - "id": 2657, + "id": 2738, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2656, + "id": 2737, "name": "", "nodeType": "VariableDeclaration", - "scope": 2687, - "src": "1120:4:7", + "scope": 2768, + "src": "1120:4:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4667,10 +4596,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2655, + "id": 2736, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "1120:4:7", + "src": "1120:4:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4680,19 +4609,19 @@ "visibility": "internal" } ], - "src": "1119:6:7" + "src": "1119:6:10" }, - "scope": 2775, - "src": "1048:336:7", + "scope": 2856, + "src": "1048:336:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 2734, + "id": 2815, "nodeType": "Block", - "src": "1467:332:7", + "src": "1467:332:10", "statements": [ { "expression": { @@ -4704,19 +4633,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2699, + "id": 2780, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2697, + "id": 2778, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2689, - "src": "1485:7:7", + "referencedDeclaration": 2770, + "src": "1485:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4727,14 +4656,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 2698, + "id": 2779, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1495:1:7", + "src": "1495:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4742,7 +4671,7 @@ }, "value": "0" }, - "src": "1485:11:7", + "src": "1485:11:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4751,14 +4680,14 @@ { "argumentTypes": null, "hexValue": "416d6f756e74206d757374206265206e6f6e2d7a65726f2e", - "id": 2700, + "id": 2781, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1498:26:7", + "src": "1498:26:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_dfeabd9f98723cad1570bd87fad256d1cbf96804bfa4a2d119d2c9449a257e66", @@ -4778,21 +4707,21 @@ "typeString": "literal_string \"Amount must be non-zero.\"" } ], - "id": 2696, + "id": 2777, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "1477:7:7", + "referencedDeclaration": 4176, + "src": "1477:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2701, + "id": 2782, "isConstant": false, "isLValue": false, "isPure": false, @@ -4800,15 +4729,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1477:48:7", + "src": "1477:48:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2702, + "id": 2783, "nodeType": "ExpressionStatement", - "src": "1477:48:7" + "src": "1477:48:10" }, { "expression": { @@ -4820,7 +4749,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2709, + "id": 2790, "isConstant": false, "isLValue": false, "isPure": false, @@ -4832,18 +4761,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2705, + "id": 2786, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4067, - "src": "1553:3:7", + "referencedDeclaration": 4172, + "src": "1553:3:10", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2706, + "id": 2787, "isConstant": false, "isLValue": false, "isPure": false, @@ -4851,7 +4780,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1553:10:7", + "src": "1553:10:10", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -4865,18 +4794,18 @@ "typeString": "address payable" } ], - "id": 2704, + "id": 2785, "name": "balanceOf", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3536, - "src": "1543:9:7", + "referencedDeclaration": 3641, + "src": "1543:9:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view returns (uint256)" } }, - "id": 2707, + "id": 2788, "isConstant": false, "isLValue": false, "isPure": false, @@ -4884,7 +4813,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1543:21:7", + "src": "1543:21:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4894,18 +4823,18 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 2708, + "id": 2789, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2689, - "src": "1568:7:7", + "referencedDeclaration": 2770, + "src": "1568:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1543:32:7", + "src": "1543:32:10", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4914,14 +4843,14 @@ { "argumentTypes": null, "hexValue": "496e73756666696369656e7420746f6b656e7320746f206275726e2e", - "id": 2710, + "id": 2791, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1577:30:7", + "src": "1577:30:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_9f8e3a3e4ac165136f48c2ad0b909c53ab197371836b489f789dec19bb20b32f", @@ -4941,21 +4870,21 @@ "typeString": "literal_string \"Insufficient tokens to burn.\"" } ], - "id": 2703, + "id": 2784, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "1535:7:7", + "referencedDeclaration": 4176, + "src": "1535:7:10", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2711, + "id": 2792, "isConstant": false, "isLValue": false, "isPure": false, @@ -4963,28 +4892,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1535:73:7", + "src": "1535:73:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2712, + "id": 2793, "nodeType": "ExpressionStatement", - "src": "1535:73:7" + "src": "1535:73:10" }, { "assignments": [ - 2714 + 2795 ], "declarations": [ { "constant": false, - "id": 2714, + "id": 2795, "name": "refundAmount", "nodeType": "VariableDeclaration", - "scope": 2734, - "src": "1619:17:7", + "scope": 2815, + "src": "1619:17:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4992,10 +4921,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2713, + "id": 2794, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "1619:4:7", + "src": "1619:4:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5005,18 +4934,18 @@ "visibility": "internal" } ], - "id": 2718, + "id": 2799, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 2716, + "id": 2797, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2689, - "src": "1663:7:7", + "referencedDeclaration": 2770, + "src": "1663:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5030,18 +4959,18 @@ "typeString": "uint256" } ], - "id": 2715, + "id": 2796, "name": "getContinuousBurnRefund", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 111, - "src": "1639:23:7", + "src": "1639:23:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) view returns (uint256)" } }, - "id": 2717, + "id": 2798, "isConstant": false, "isLValue": false, "isPure": false, @@ -5049,14 +4978,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1639:32:7", + "src": "1639:32:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1619:52:7" + "src": "1619:52:10" }, { "expression": { @@ -5066,18 +4995,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2720, + "id": 2801, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4067, - "src": "1687:3:7", + "referencedDeclaration": 4172, + "src": "1687:3:10", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2721, + "id": 2802, "isConstant": false, "isLValue": false, "isPure": false, @@ -5085,7 +5014,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1687:10:7", + "src": "1687:10:10", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -5093,12 +5022,12 @@ }, { "argumentTypes": null, - "id": 2722, + "id": 2803, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2689, - "src": "1699:7:7", + "referencedDeclaration": 2770, + "src": "1699:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5116,18 +5045,18 @@ "typeString": "uint256" } ], - "id": 2719, + "id": 2800, "name": "_burn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3825, - "src": "1681:5:7", + "referencedDeclaration": 3930, + "src": "1681:5:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 2723, + "id": 2804, "isConstant": false, "isLValue": false, "isPure": false, @@ -5135,15 +5064,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1681:26:7", + "src": "1681:26:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2724, + "id": 2805, "nodeType": "ExpressionStatement", - "src": "1681:26:7" + "src": "1681:26:10" }, { "eventCall": { @@ -5153,18 +5082,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2726, + "id": 2807, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4067, - "src": "1729:3:7", + "referencedDeclaration": 4172, + "src": "1729:3:10", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2727, + "id": 2808, "isConstant": false, "isLValue": false, "isPure": false, @@ -5172,7 +5101,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1729:10:7", + "src": "1729:10:10", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -5180,12 +5109,12 @@ }, { "argumentTypes": null, - "id": 2728, + "id": 2809, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2689, - "src": "1741:7:7", + "referencedDeclaration": 2770, + "src": "1741:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5193,12 +5122,12 @@ }, { "argumentTypes": null, - "id": 2729, + "id": 2810, "name": "refundAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2714, - "src": "1750:12:7", + "referencedDeclaration": 2795, + "src": "1750:12:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5220,18 +5149,18 @@ "typeString": "uint256" } ], - "id": 2725, + "id": 2806, "name": "Burned", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2612, - "src": "1722:6:7", + "referencedDeclaration": 2693, + "src": "1722:6:10", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,uint256,uint256)" } }, - "id": 2730, + "id": 2811, "isConstant": false, "isLValue": false, "isPure": false, @@ -5239,75 +5168,75 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1722:41:7", + "src": "1722:41:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2731, + "id": 2812, "nodeType": "EmitStatement", - "src": "1717:46:7" + "src": "1717:46:10" }, { "expression": { "argumentTypes": null, - "id": 2732, + "id": 2813, "name": "refundAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2714, - "src": "1780:12:7", + "referencedDeclaration": 2795, + "src": "1780:12:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 2695, - "id": 2733, + "functionReturnParameters": 2776, + "id": 2814, "nodeType": "Return", - "src": "1773:19:7" + "src": "1773:19:10" } ] }, "documentation": null, - "id": 2735, + "id": 2816, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, - "id": 2692, + "id": 2773, "modifierName": { "argumentTypes": null, - "id": 2691, + "id": 2772, "name": "validGasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 163, - "src": "1438:13:7", + "src": "1438:13:10", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1438:13:7" + "src": "1438:13:10" } ], "name": "_continuousBurn", "nodeType": "FunctionDefinition", "parameters": { - "id": 2690, + "id": 2771, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2689, + "id": 2770, "name": "_amount", "nodeType": "VariableDeclaration", - "scope": 2735, - "src": "1415:12:7", + "scope": 2816, + "src": "1415:12:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5315,10 +5244,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2688, + "id": 2769, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "1415:4:7", + "src": "1415:4:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5328,19 +5257,19 @@ "visibility": "internal" } ], - "src": "1414:14:7" + "src": "1414:14:10" }, "returnParameters": { - "id": 2695, + "id": 2776, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2694, + "id": 2775, "name": "", "nodeType": "VariableDeclaration", - "scope": 2735, - "src": "1461:4:7", + "scope": 2816, + "src": "1461:4:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5348,10 +5277,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2693, + "id": 2774, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "1461:4:7", + "src": "1461:4:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5361,19 +5290,19 @@ "visibility": "internal" } ], - "src": "1460:6:7" + "src": "1460:6:10" }, - "scope": 2775, - "src": "1390:409:7", + "scope": 2856, + "src": "1390:409:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 2753, + "id": 2834, "nodeType": "Block", - "src": "1849:88:7", + "src": "1849:88:10", "statements": [ { "expression": { @@ -5383,18 +5312,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2741, + "id": 2822, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4067, - "src": "1865:3:7", + "referencedDeclaration": 4172, + "src": "1865:3:10", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2742, + "id": 2823, "isConstant": false, "isLValue": false, "isPure": false, @@ -5402,7 +5331,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1865:10:7", + "src": "1865:10:10", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -5410,12 +5339,12 @@ }, { "argumentTypes": null, - "id": 2743, + "id": 2824, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2737, - "src": "1877:7:7", + "referencedDeclaration": 2818, + "src": "1877:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5433,18 +5362,18 @@ "typeString": "uint256" } ], - "id": 2740, + "id": 2821, "name": "_burn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3825, - "src": "1859:5:7", + "referencedDeclaration": 3930, + "src": "1859:5:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 2744, + "id": 2825, "isConstant": false, "isLValue": false, "isPure": false, @@ -5452,15 +5381,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1859:26:7", + "src": "1859:26:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2745, + "id": 2826, "nodeType": "ExpressionStatement", - "src": "1859:26:7" + "src": "1859:26:10" }, { "eventCall": { @@ -5470,18 +5399,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2747, + "id": 2828, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4067, - "src": "1907:3:7", + "referencedDeclaration": 4172, + "src": "1907:3:10", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2748, + "id": 2829, "isConstant": false, "isLValue": false, "isPure": false, @@ -5489,7 +5418,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1907:10:7", + "src": "1907:10:10", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -5497,12 +5426,12 @@ }, { "argumentTypes": null, - "id": 2749, + "id": 2830, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2737, - "src": "1919:7:7", + "referencedDeclaration": 2818, + "src": "1919:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5511,14 +5440,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 2750, + "id": 2831, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1928:1:7", + "src": "1928:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5542,18 +5471,18 @@ "typeString": "int_const 0" } ], - "id": 2746, + "id": 2827, "name": "Burned", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2612, - "src": "1900:6:7", + "referencedDeclaration": 2693, + "src": "1900:6:10", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,uint256,uint256)" } }, - "id": 2751, + "id": 2832, "isConstant": false, "isLValue": false, "isPure": false, @@ -5561,36 +5490,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1900:30:7", + "src": "1900:30:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2752, + "id": 2833, "nodeType": "EmitStatement", - "src": "1895:35:7" + "src": "1895:35:10" } ] }, "documentation": null, - "id": 2754, + "id": 2835, "implemented": true, "kind": "function", "modifiers": [], "name": "sponsoredBurn", "nodeType": "FunctionDefinition", "parameters": { - "id": 2738, + "id": 2819, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2737, + "id": 2818, "name": "_amount", "nodeType": "VariableDeclaration", - "scope": 2754, - "src": "1828:12:7", + "scope": 2835, + "src": "1828:12:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5598,10 +5527,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2736, + "id": 2817, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "1828:4:7", + "src": "1828:4:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5611,25 +5540,25 @@ "visibility": "internal" } ], - "src": "1827:14:7" + "src": "1827:14:10" }, "returnParameters": { - "id": 2739, + "id": 2820, "nodeType": "ParameterList", "parameters": [], - "src": "1849:0:7" + "src": "1849:0:10" }, - "scope": 2775, - "src": "1805:132:7", + "scope": 2856, + "src": "1805:132:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2773, + "id": 2854, "nodeType": "Block", - "src": "2006:87:7", + "src": "2006:87:10", "statements": [ { "expression": { @@ -5637,12 +5566,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2762, + "id": 2843, "name": "_from", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2756, - "src": "2026:5:7", + "referencedDeclaration": 2837, + "src": "2026:5:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5650,12 +5579,12 @@ }, { "argumentTypes": null, - "id": 2763, + "id": 2844, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2758, - "src": "2033:7:7", + "referencedDeclaration": 2839, + "src": "2033:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5673,18 +5602,18 @@ "typeString": "uint256" } ], - "id": 2761, + "id": 2842, "name": "_burnFrom", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3896, - "src": "2016:9:7", + "referencedDeclaration": 4001, + "src": "2016:9:10", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 2764, + "id": 2845, "isConstant": false, "isLValue": false, "isPure": false, @@ -5692,15 +5621,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2016:25:7", + "src": "2016:25:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2765, + "id": 2846, "nodeType": "ExpressionStatement", - "src": "2016:25:7" + "src": "2016:25:10" }, { "eventCall": { @@ -5710,18 +5639,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2767, + "id": 2848, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4067, - "src": "2063:3:7", + "referencedDeclaration": 4172, + "src": "2063:3:10", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2768, + "id": 2849, "isConstant": false, "isLValue": false, "isPure": false, @@ -5729,7 +5658,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2063:10:7", + "src": "2063:10:10", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -5737,12 +5666,12 @@ }, { "argumentTypes": null, - "id": 2769, + "id": 2850, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2758, - "src": "2075:7:7", + "referencedDeclaration": 2839, + "src": "2075:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5751,14 +5680,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 2770, + "id": 2851, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2084:1:7", + "src": "2084:1:10", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5782,18 +5711,18 @@ "typeString": "int_const 0" } ], - "id": 2766, + "id": 2847, "name": "Burned", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2612, - "src": "2056:6:7", + "referencedDeclaration": 2693, + "src": "2056:6:10", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (address,uint256,uint256)" } }, - "id": 2771, + "id": 2852, "isConstant": false, "isLValue": false, "isPure": false, @@ -5801,36 +5730,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2056:30:7", + "src": "2056:30:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2772, + "id": 2853, "nodeType": "EmitStatement", - "src": "2051:35:7" + "src": "2051:35:10" } ] }, "documentation": null, - "id": 2774, + "id": 2855, "implemented": true, "kind": "function", "modifiers": [], "name": "sponsoredBurnFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 2759, + "id": 2840, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2756, + "id": 2837, "name": "_from", "nodeType": "VariableDeclaration", - "scope": 2774, - "src": "1970:13:7", + "scope": 2855, + "src": "1970:13:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5838,10 +5767,10 @@ "typeString": "address" }, "typeName": { - "id": 2755, + "id": 2836, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1970:7:7", + "src": "1970:7:10", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5853,11 +5782,11 @@ }, { "constant": false, - "id": 2758, + "id": 2839, "name": "_amount", "nodeType": "VariableDeclaration", - "scope": 2774, - "src": "1985:12:7", + "scope": 2855, + "src": "1985:12:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5865,10 +5794,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2757, + "id": 2838, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "1985:4:7", + "src": "1985:4:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5878,34 +5807,34 @@ "visibility": "internal" } ], - "src": "1969:29:7" + "src": "1969:29:10" }, "returnParameters": { - "id": 2760, + "id": 2841, "nodeType": "ParameterList", "parameters": [], - "src": "2006:0:7" + "src": "2006:0:10" }, - "scope": 2775, - "src": "1943:150:7", + "scope": 2856, + "src": "1943:150:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 2776, - "src": "366:1733:7" + "scope": 2857, + "src": "366:1733:10" } ], - "src": "0:2099:7" + "src": "0:2099:10" }, "compiler": { "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" + "version": "0.5.2+commit.1df8f40c.Emscripten.clang" }, "networks": {}, - "schemaVersion": "3.0.23", - "updatedAt": "2020-02-16T12:52:29.790Z", + "schemaVersion": "3.0.1", + "updatedAt": "2020-02-16T14:54:14.901Z", "devdoc": { "methods": { "allowance(address,address)": { diff --git a/truffle/build/contracts/ERC20.json b/truffle/build/contracts/ERC20.json index 728939f..5761eee 100644 --- a/truffle/build/contracts/ERC20.json +++ b/truffle/build/contracts/ERC20.json @@ -6,24 +6,21 @@ "inputs": [ { "indexed": true, - "internalType": "address", - "name": "owner", + "name": "from", "type": "address" }, { "indexed": true, - "internalType": "address", - "name": "spender", + "name": "to", "type": "address" }, { "indexed": false, - "internalType": "uint256", "name": "value", "type": "uint256" } ], - "name": "Approval", + "name": "Transfer", "type": "event" }, { @@ -31,24 +28,21 @@ "inputs": [ { "indexed": true, - "internalType": "address", - "name": "from", + "name": "owner", "type": "address" }, { "indexed": true, - "internalType": "address", - "name": "to", + "name": "spender", "type": "address" }, { "indexed": false, - "internalType": "uint256", "name": "value", "type": "uint256" } ], - "name": "Transfer", + "name": "Approval", "type": "event" }, { @@ -57,7 +51,6 @@ "name": "totalSupply", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -70,7 +63,6 @@ "constant": true, "inputs": [ { - "internalType": "address", "name": "account", "type": "address" } @@ -78,7 +70,6 @@ "name": "balanceOf", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -91,12 +82,10 @@ "constant": false, "inputs": [ { - "internalType": "address", "name": "recipient", "type": "address" }, { - "internalType": "uint256", "name": "amount", "type": "uint256" } @@ -104,7 +93,6 @@ "name": "transfer", "outputs": [ { - "internalType": "bool", "name": "", "type": "bool" } @@ -117,12 +105,10 @@ "constant": true, "inputs": [ { - "internalType": "address", "name": "owner", "type": "address" }, { - "internalType": "address", "name": "spender", "type": "address" } @@ -130,7 +116,6 @@ "name": "allowance", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -143,12 +128,10 @@ "constant": false, "inputs": [ { - "internalType": "address", "name": "spender", "type": "address" }, { - "internalType": "uint256", "name": "amount", "type": "uint256" } @@ -156,7 +139,6 @@ "name": "approve", "outputs": [ { - "internalType": "bool", "name": "", "type": "bool" } @@ -169,17 +151,14 @@ "constant": false, "inputs": [ { - "internalType": "address", "name": "sender", "type": "address" }, { - "internalType": "address", "name": "recipient", "type": "address" }, { - "internalType": "uint256", "name": "amount", "type": "uint256" } @@ -187,7 +166,6 @@ "name": "transferFrom", "outputs": [ { - "internalType": "bool", "name": "", "type": "bool" } @@ -200,12 +178,10 @@ "constant": false, "inputs": [ { - "internalType": "address", "name": "spender", "type": "address" }, { - "internalType": "uint256", "name": "addedValue", "type": "uint256" } @@ -213,7 +189,6 @@ "name": "increaseAllowance", "outputs": [ { - "internalType": "bool", "name": "", "type": "bool" } @@ -226,12 +201,10 @@ "constant": false, "inputs": [ { - "internalType": "address", "name": "spender", "type": "address" }, { - "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } @@ -239,7 +212,6 @@ "name": "decreaseAllowance", "outputs": [ { - "internalType": "bool", "name": "", "type": "bool" } @@ -249,25 +221,24 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. * This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20Mintable}. * TIP: For a detailed writeup see our guide https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. * We have followed general OpenZeppelin guidelines: functions revert instead of returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. * Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. * Requirements: * - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. * Requirements: * - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. * Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; * Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for `sender`'s tokens of at least `amount`.\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":1500},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"keccak256\":\"0x90a3995645af7562d84b9d69363ffa5ae7217714ab61e951bf7bc450f40e4061\",\"urls\":[\"bzz-raw://216ef9d6b614db4eb46970b4e84903f2534a45572dd30a79f0041f1a5830f436\",\"dweb:/ipfs/QmNPrJ4MWKUAWzKXpUqeyKRUfosaoANZAqXgvepdrCwZAG\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xb15af804e2bc97db51e4e103f13de9fe13f87e6b835d7a88c897966c0e58506e\",\"urls\":[\"bzz-raw://1e8cff8437557fc915a3bed968fcd8f2df9809599e665ef69c2c9ce628548055\",\"dweb:/ipfs/QmP5spYP8vs2jvLF8zNrXUbqB79hMsoEvMHiLcBxerWKcm\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]}},\"version\":1}", - "bytecode": "0x608060405261083b806100136000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806370a082311161005b57806370a0823114610149578063a457c2d71461016f578063a9059cbb1461019b578063dd62ed3e146101c757610088565b8063095ea7b31461008d57806318160ddd146100cd57806323b872dd146100e7578063395093511461011d575b600080fd5b6100b9600480360360408110156100a357600080fd5b506001600160a01b0381351690602001356101f5565b604080519115158252519081900360200190f35b6100d5610212565b60408051918252519081900360200190f35b6100b9600480360360608110156100fd57600080fd5b506001600160a01b03813581169160208101359091169060400135610218565b6100b96004803603604081101561013357600080fd5b506001600160a01b0381351690602001356102a5565b6100d56004803603602081101561015f57600080fd5b50356001600160a01b03166102f9565b6100b96004803603604081101561018557600080fd5b506001600160a01b038135169060200135610314565b6100b9600480360360408110156101b157600080fd5b506001600160a01b038135169060200135610382565b6100d5600480360360408110156101dd57600080fd5b506001600160a01b0381358116916020013516610396565b60006102096102026103c1565b84846103c5565b50600192915050565b60025490565b60006102258484846104b1565b61029b846102316103c1565b61029685604051806060016040528060288152602001610771602891396001600160a01b038a1660009081526001602052604081209061026f6103c1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61060d16565b6103c5565b5060019392505050565b60006102096102b26103c1565b8461029685600160006102c36103c1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6106a416565b6001600160a01b031660009081526020819052604090205490565b60006102096103216103c1565b84610296856040518060600160405280602581526020016107e2602591396001600061034b6103c1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61060d16565b600061020961038f6103c1565b84846104b1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661040a5760405162461bcd60e51b81526004018080602001828103825260248152602001806107be6024913960400191505060405180910390fd5b6001600160a01b03821661044f5760405162461bcd60e51b81526004018080602001828103825260228152602001806107296022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166104f65760405162461bcd60e51b81526004018080602001828103825260258152602001806107996025913960400191505060405180910390fd5b6001600160a01b03821661053b5760405162461bcd60e51b81526004018080602001828103825260238152602001806107066023913960400191505060405180910390fd5b61057e8160405180606001604052806026815260200161074b602691396001600160a01b038616600090815260208190526040902054919063ffffffff61060d16565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546105b3908263ffffffff6106a416565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561069c5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610661578181015183820152602001610649565b50505050905090810190601f16801561068e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156106fe576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158208581b3d2739c73b18334f1ec34574e4313cd3371ff421afe7b9569592bb1091f64736f6c63430005100032", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c806370a082311161005b57806370a0823114610149578063a457c2d71461016f578063a9059cbb1461019b578063dd62ed3e146101c757610088565b8063095ea7b31461008d57806318160ddd146100cd57806323b872dd146100e7578063395093511461011d575b600080fd5b6100b9600480360360408110156100a357600080fd5b506001600160a01b0381351690602001356101f5565b604080519115158252519081900360200190f35b6100d5610212565b60408051918252519081900360200190f35b6100b9600480360360608110156100fd57600080fd5b506001600160a01b03813581169160208101359091169060400135610218565b6100b96004803603604081101561013357600080fd5b506001600160a01b0381351690602001356102a5565b6100d56004803603602081101561015f57600080fd5b50356001600160a01b03166102f9565b6100b96004803603604081101561018557600080fd5b506001600160a01b038135169060200135610314565b6100b9600480360360408110156101b157600080fd5b506001600160a01b038135169060200135610382565b6100d5600480360360408110156101dd57600080fd5b506001600160a01b0381358116916020013516610396565b60006102096102026103c1565b84846103c5565b50600192915050565b60025490565b60006102258484846104b1565b61029b846102316103c1565b61029685604051806060016040528060288152602001610771602891396001600160a01b038a1660009081526001602052604081209061026f6103c1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61060d16565b6103c5565b5060019392505050565b60006102096102b26103c1565b8461029685600160006102c36103c1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6106a416565b6001600160a01b031660009081526020819052604090205490565b60006102096103216103c1565b84610296856040518060600160405280602581526020016107e2602591396001600061034b6103c1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61060d16565b600061020961038f6103c1565b84846104b1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661040a5760405162461bcd60e51b81526004018080602001828103825260248152602001806107be6024913960400191505060405180910390fd5b6001600160a01b03821661044f5760405162461bcd60e51b81526004018080602001828103825260228152602001806107296022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166104f65760405162461bcd60e51b81526004018080602001828103825260258152602001806107996025913960400191505060405180910390fd5b6001600160a01b03821661053b5760405162461bcd60e51b81526004018080602001828103825260238152602001806107066023913960400191505060405180910390fd5b61057e8160405180606001604052806026815260200161074b602691396001600160a01b038616600090815260208190526040902054919063ffffffff61060d16565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546105b3908263ffffffff6106a416565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561069c5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610661578181015183820152602001610649565b50505050905090810190601f16801561068e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156106fe576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158208581b3d2739c73b18334f1ec34574e4313cd3371ff421afe7b9569592bb1091f64736f6c63430005100032", - "sourceMap": "1268:6823:15:-;;;;;;;;;", - "deployedSourceMap": "1268:6823:15:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1268:6823:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2500:149;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2500:149:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1559:89;;;:::i;:::-;;;;;;;;;;;;;;;;3107:300;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3107:300:15;;;;;;;;;;;;;;;;;:::i;3802:207::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3802:207:15;;;;;;;;:::i;1706:108::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1706:108:15;-1:-1:-1;;;;;1706:108:15;;:::i;4496:258::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4496:258:15;;;;;;;;:::i;2017:155::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2017:155:15;;;;;;;;:::i;2230:132::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2230:132:15;;;;;;;;;;:::i;2500:149::-;2566:4;2582:39;2591:12;:10;:12::i;:::-;2605:7;2614:6;2582:8;:39::i;:::-;-1:-1:-1;2638:4:15;2500:149;;;;:::o;1559:89::-;1629:12;;1559:89;:::o;3107:300::-;3196:4;3212:36;3222:6;3230:9;3241:6;3212:9;:36::i;:::-;3258:121;3267:6;3275:12;:10;:12::i;:::-;3289:89;3327:6;3289:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3289:19:15;;;;;;:11;:19;;;;;;3309:12;:10;:12::i;:::-;-1:-1:-1;;;;;3289:33:15;;;;;;;;;;;;-1:-1:-1;3289:33:15;;;:89;;:37;:89;:::i;:::-;3258:8;:121::i;:::-;-1:-1:-1;3396:4:15;3107:300;;;;;:::o;3802:207::-;3882:4;3898:83;3907:12;:10;:12::i;:::-;3921:7;3930:50;3969:10;3930:11;:25;3942:12;:10;:12::i;:::-;-1:-1:-1;;;;;3930:25:15;;;;;;;;;;;;;;;;;-1:-1:-1;3930:25:15;;;:34;;;;;;;;;;;:50;:38;:50;:::i;1706:108::-;-1:-1:-1;;;;;1789:18:15;1763:7;1789:18;;;;;;;;;;;;1706:108::o;4496:258::-;4581:4;4597:129;4606:12;:10;:12::i;:::-;4620:7;4629:96;4668:15;4629:96;;;;;;;;;;;;;;;;;:11;:25;4641:12;:10;:12::i;:::-;-1:-1:-1;;;;;4629:25:15;;;;;;;;;;;;;;;;;-1:-1:-1;4629:25:15;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;2017:155::-;2086:4;2102:42;2112:12;:10;:12::i;:::-;2126:9;2137:6;2102:9;:42::i;2230:132::-;-1:-1:-1;;;;;2328:18:15;;;2302:7;2328:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2230:132::o;788:96:10:-;867:10;788:96;:::o;7350:332:15:-;-1:-1:-1;;;;;7443:19:15;;7435:68;;;;-1:-1:-1;;;7435:68:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7521:21:15;;7513:68;;;;-1:-1:-1;;;7513:68:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7592:18:15;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7643:32;;;;;;;;;;;;;;;;;7350:332;;;:::o;5228:464::-;-1:-1:-1;;;;;5325:20:15;;5317:70;;;;-1:-1:-1;;;5317:70:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5405:23:15;;5397:71;;;;-1:-1:-1;;;5397:71:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5499;5521:6;5499:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5499:17:15;;:9;:17;;;;;;;;;;;;:71;;:21;:71;:::i;:::-;-1:-1:-1;;;;;5479:17:15;;;:9;:17;;;;;;;;;;;:91;;;;5603:20;;;;;;;:32;;5628:6;5603:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;5580:20:15;;;:9;:20;;;;;;;;;;;;:55;;;;5650:35;;;;;;;5580:20;;5650:35;;;;;;;;;;;;;5228:464;;;:::o;1732:187:13:-;1818:7;1853:12;1845:6;;;;1837:29;;;;-1:-1:-1;;;1837:29:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1837:29:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1888:5:13;;;1732:187::o;834:176::-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:13:o", + "bytecode": "0x6080604052610a07806100136000396000f3fe608060405234801561001057600080fd5b50600436106100a5576000357c01000000000000000000000000000000000000000000000000000000009004806370a082311161007857806370a082311461018d578063a457c2d7146101c0578063a9059cbb146101f9578063dd62ed3e14610232576100a5565b8063095ea7b3146100aa57806318160ddd146100f757806323b872dd146101115780633950935114610154575b600080fd5b6100e3600480360360408110156100c057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561026d565b604080519115158252519081900360200190f35b6100ff61028a565b60408051918252519081900360200190f35b6100e36004803603606081101561012757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610290565b6100e36004803603604081101561016a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610338565b6100ff600480360360208110156101a357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610399565b6100e3600480360360408110156101d657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103c1565b6100e36004803603604081101561020f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561043d565b6100ff6004803603604081101561024857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610451565b600061028161027a610489565b848461048d565b50600192915050565b60025490565b600061029d8484846105d8565b61032e846102a9610489565b61032985606060405190810160405280602881526020016109466028913973ffffffffffffffffffffffffffffffffffffffff8a166000908152600160205260408120906102f5610489565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002054919063ffffffff6107ae16565b61048d565b5060019392505050565b6000610281610345610489565b846103298560016000610356610489565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61085f16565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60006102816103ce610489565b8461032985606060405190810160405280602581526020016109b760259139600160006103f9610489565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6107ae16565b600061028161044a610489565b84846105d8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b3390565b73ffffffffffffffffffffffffffffffffffffffff831615156104fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806109936024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161515610569576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806108fe6022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff83161515610646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061096e6025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821615156106b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806108db6023913960400191505060405180910390fd5b61070581606060405190810160405280602681526020016109206026913973ffffffffffffffffffffffffffffffffffffffff8616600090815260208190526040902054919063ffffffff6107ae16565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610747908263ffffffff61085f16565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610857576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561081c578181015183820152602001610804565b50505050905090810190601f1680156108495780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156108d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa165627a7a723058204274a7f708d7a55882c96b50a17bfee46e1154d7acff80406cff62a8ce80c6dd0029", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a5576000357c01000000000000000000000000000000000000000000000000000000009004806370a082311161007857806370a082311461018d578063a457c2d7146101c0578063a9059cbb146101f9578063dd62ed3e14610232576100a5565b8063095ea7b3146100aa57806318160ddd146100f757806323b872dd146101115780633950935114610154575b600080fd5b6100e3600480360360408110156100c057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561026d565b604080519115158252519081900360200190f35b6100ff61028a565b60408051918252519081900360200190f35b6100e36004803603606081101561012757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610290565b6100e36004803603604081101561016a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610338565b6100ff600480360360208110156101a357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610399565b6100e3600480360360408110156101d657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103c1565b6100e36004803603604081101561020f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561043d565b6100ff6004803603604081101561024857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610451565b600061028161027a610489565b848461048d565b50600192915050565b60025490565b600061029d8484846105d8565b61032e846102a9610489565b61032985606060405190810160405280602881526020016109466028913973ffffffffffffffffffffffffffffffffffffffff8a166000908152600160205260408120906102f5610489565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002054919063ffffffff6107ae16565b61048d565b5060019392505050565b6000610281610345610489565b846103298560016000610356610489565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61085f16565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60006102816103ce610489565b8461032985606060405190810160405280602581526020016109b760259139600160006103f9610489565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6107ae16565b600061028161044a610489565b84846105d8565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b3390565b73ffffffffffffffffffffffffffffffffffffffff831615156104fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806109936024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161515610569576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806108fe6022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff83161515610646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061096e6025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821615156106b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806108db6023913960400191505060405180910390fd5b61070581606060405190810160405280602681526020016109206026913973ffffffffffffffffffffffffffffffffffffffff8616600090815260208190526040902054919063ffffffff6107ae16565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610747908263ffffffff61085f16565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610857576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561081c578181015183820152602001610804565b50505050905090810190601f1680156108495780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156108d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa165627a7a723058204274a7f708d7a55882c96b50a17bfee46e1154d7acff80406cff62a8ce80c6dd0029", + "sourceMap": "1268:6823:18:-;;;;;;;;;", + "deployedSourceMap": "1268:6823:18:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1268:6823:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2500:149;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2500:149:18;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1559:89;;;:::i;:::-;;;;;;;;;;;;;;;;3107:300;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3107:300:18;;;;;;;;;;;;;;;;;;:::i;3802:207::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3802:207:18;;;;;;;;;:::i;1706:108::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1706:108:18;;;;:::i;4496:258::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4496:258:18;;;;;;;;;:::i;2017:155::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2017:155:18;;;;;;;;;:::i;2230:132::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2230:132:18;;;;;;;;;;;:::i;2500:149::-;2566:4;2582:39;2591:12;:10;:12::i;:::-;2605:7;2614:6;2582:8;:39::i;:::-;-1:-1:-1;2638:4:18;2500:149;;;;:::o;1559:89::-;1629:12;;1559:89;:::o;3107:300::-;3196:4;3212:36;3222:6;3230:9;3241:6;3212:9;:36::i;:::-;3258:121;3267:6;3275:12;:10;:12::i;:::-;3289:89;3327:6;3289:89;;;;;;;;;;;;;;;;;;:19;;;;;;;:11;:19;;;;;;3309:12;:10;:12::i;:::-;3289:33;;;;;;;;;;;;;-1:-1:-1;3289:33:18;;;:89;;:37;:89;:::i;:::-;3258:8;:121::i;:::-;-1:-1:-1;3396:4:18;3107:300;;;;;:::o;3802:207::-;3882:4;3898:83;3907:12;:10;:12::i;:::-;3921:7;3930:50;3969:10;3930:11;:25;3942:12;:10;:12::i;:::-;3930:25;;;;;;;;;;;;;;;;;;-1:-1:-1;3930:25:18;;;:34;;;;;;;;;;;:50;:38;:50;:::i;1706:108::-;1789:18;;1763:7;1789:18;;;;;;;;;;;;1706:108::o;4496:258::-;4581:4;4597:129;4606:12;:10;:12::i;:::-;4620:7;4629:96;4668:15;4629:96;;;;;;;;;;;;;;;;;;:11;:25;4641:12;:10;:12::i;:::-;4629:25;;;;;;;;;;;;;;;;;;-1:-1:-1;4629:25:18;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;2017:155::-;2086:4;2102:42;2112:12;:10;:12::i;:::-;2126:9;2137:6;2102:9;:42::i;2230:132::-;2328:18;;;;2302:7;2328:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2230:132::o;788:96:13:-;867:10;788:96;:::o;7350:332:18:-;7443:19;;;;;7435:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7521:21;;;;;7513:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7592:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7643:32;;;;;;;;;;;;;;;;;7350:332;;;:::o;5228:464::-;5325:20;;;;;5317:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5405:23;;;;;5397:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5499;5521:6;5499:71;;;;;;;;;;;;;;;;;;:17;;;:9;:17;;;;;;;;;;;;:71;;:21;:71;:::i;:::-;5479:17;;;;:9;:17;;;;;;;;;;;:91;;;;5603:20;;;;;;;:32;;5628:6;5603:32;:24;:32;:::i;:::-;5580:20;;;;:9;:20;;;;;;;;;;;;:55;;;;5650:35;;;;;;;5580:20;;5650:35;;;;;;;;;;;;;5228:464;;;:::o;1732:187:16:-;1818:7;1853:12;1845:6;;;;1837:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1837:29:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1888:5:16;;;1732:187::o;834:176::-;892:7;923:5;;;946:6;;;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:16:o", "source": "pragma solidity ^0.5.0;\n\nimport \"../../GSN/Context.sol\";\nimport \"./IERC20.sol\";\nimport \"../../math/SafeMath.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20Mintable}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * We have followed general OpenZeppelin guidelines: functions revert instead\n * of returning `false` on failure. This behavior is nonetheless conventional\n * and does not conflict with the expectations of ERC20 applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */\ncontract ERC20 is Context, IERC20 {\n using SafeMath for uint256;\n\n mapping (address => uint256) private _balances;\n\n mapping (address => mapping (address => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n /**\n * @dev See {IERC20-totalSupply}.\n */\n function totalSupply() public view returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev See {IERC20-balanceOf}.\n */\n function balanceOf(address account) public view returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `recipient` cannot be the zero address.\n * - the caller must have a balance of at least `amount`.\n */\n function transfer(address recipient, uint256 amount) public returns (bool) {\n _transfer(_msgSender(), recipient, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-allowance}.\n */\n function allowance(address owner, address spender) public view returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 amount) public returns (bool) {\n _approve(_msgSender(), spender, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Emits an {Approval} event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of {ERC20};\n *\n * Requirements:\n * - `sender` and `recipient` cannot be the zero address.\n * - `sender` must have a balance of at least `amount`.\n * - the caller must have allowance for `sender`'s tokens of at least\n * `amount`.\n */\n function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {\n _transfer(sender, recipient, amount);\n _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, \"ERC20: transfer amount exceeds allowance\"));\n return true;\n }\n\n /**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));\n return true;\n }\n\n /**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */\n function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, \"ERC20: decreased allowance below zero\"));\n return true;\n }\n\n /**\n * @dev Moves tokens `amount` from `sender` to `recipient`.\n *\n * This is internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * Requirements:\n *\n * - `sender` cannot be the zero address.\n * - `recipient` cannot be the zero address.\n * - `sender` must have a balance of at least `amount`.\n */\n function _transfer(address sender, address recipient, uint256 amount) internal {\n require(sender != address(0), \"ERC20: transfer from the zero address\");\n require(recipient != address(0), \"ERC20: transfer to the zero address\");\n\n _balances[sender] = _balances[sender].sub(amount, \"ERC20: transfer amount exceeds balance\");\n _balances[recipient] = _balances[recipient].add(amount);\n emit Transfer(sender, recipient, amount);\n }\n\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n * the total supply.\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * Requirements\n *\n * - `to` cannot be the zero address.\n */\n function _mint(address account, uint256 amount) internal {\n require(account != address(0), \"ERC20: mint to the zero address\");\n\n _totalSupply = _totalSupply.add(amount);\n _balances[account] = _balances[account].add(amount);\n emit Transfer(address(0), account, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`, reducing the\n * total supply.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * Requirements\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n */\n function _burn(address account, uint256 amount) internal {\n require(account != address(0), \"ERC20: burn from the zero address\");\n\n _balances[account] = _balances[account].sub(amount, \"ERC20: burn amount exceeds balance\");\n _totalSupply = _totalSupply.sub(amount);\n emit Transfer(account, address(0), amount);\n }\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\n *\n * This is internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n */\n function _approve(address owner, address spender, uint256 amount) internal {\n require(owner != address(0), \"ERC20: approve from the zero address\");\n require(spender != address(0), \"ERC20: approve to the zero address\");\n\n _allowances[owner][spender] = amount;\n emit Approval(owner, spender, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`.`amount` is then deducted\n * from the caller's allowance.\n *\n * See {_burn} and {_approve}.\n */\n function _burnFrom(address account, uint256 amount) internal {\n _burn(account, amount);\n _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, \"ERC20: burn amount exceeds allowance\"));\n }\n}\n", "sourcePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", "ast": { "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", "exportedSymbols": { "ERC20": [ - 3897 + 4002 ] }, - "id": 3898, + "id": 4003, "nodeType": "SourceUnit", "nodes": [ { - "id": 3494, + "id": 3599, "literals": [ "solidity", "^", @@ -275,38 +246,38 @@ ".0" ], "nodeType": "PragmaDirective", - "src": "0:23:15" + "src": "0:23:18" }, { "absolutePath": "openzeppelin-solidity/contracts/GSN/Context.sol", "file": "../../GSN/Context.sol", - "id": 3495, + "id": 3600, "nodeType": "ImportDirective", - "scope": 3898, - "sourceUnit": 3000, - "src": "25:31:15", + "scope": 4003, + "sourceUnit": 3105, + "src": "25:31:18", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "file": "./IERC20.sol", - "id": 3496, + "id": 3601, "nodeType": "ImportDirective", - "scope": 3898, - "sourceUnit": 4053, - "src": "57:22:15", + "scope": 4003, + "sourceUnit": 4158, + "src": "57:22:18", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", "file": "../../math/SafeMath.sol", - "id": 3497, + "id": 3602, "nodeType": "ImportDirective", - "scope": 3898, - "sourceUnit": 3375, - "src": "80:33:15", + "scope": 4003, + "sourceUnit": 3480, + "src": "80:33:18", "symbolAliases": [], "unitAlias": "" }, @@ -316,76 +287,76 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 3498, + "id": 3603, "name": "Context", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2999, - "src": "1286:7:15", + "referencedDeclaration": 3104, + "src": "1286:7:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_Context_$2999", + "typeIdentifier": "t_contract$_Context_$3104", "typeString": "contract Context" } }, - "id": 3499, + "id": 3604, "nodeType": "InheritanceSpecifier", - "src": "1286:7:15" + "src": "1286:7:18" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 3500, + "id": 3605, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 4052, - "src": "1295:6:15", + "referencedDeclaration": 4157, + "src": "1295:6:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$4052", + "typeIdentifier": "t_contract$_IERC20_$4157", "typeString": "contract IERC20" } }, - "id": 3501, + "id": 3606, "nodeType": "InheritanceSpecifier", - "src": "1295:6:15" + "src": "1295:6:18" } ], "contractDependencies": [ - 2999, - 4052 + 3104, + 4157 ], "contractKind": "contract", "documentation": "@dev Implementation of the {IERC20} interface.\n * This implementation is agnostic to the way tokens are created. This means\nthat a supply mechanism has to be added in a derived contract using {_mint}.\nFor a generic mechanism see {ERC20Mintable}.\n * TIP: For a detailed writeup see our guide\nhttps://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\nto implement supply mechanisms].\n * We have followed general OpenZeppelin guidelines: functions revert instead\nof returning `false` on failure. This behavior is nonetheless conventional\nand does not conflict with the expectations of ERC20 applications.\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\nThis allows applications to reconstruct the allowance for all accounts just\nby listening to said events. Other implementations of the EIP may not emit\nthese events, as it isn't required by the specification.\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\nfunctions have been added to mitigate the well-known issues around setting\nallowances. See {IERC20-approve}.", "fullyImplemented": true, - "id": 3897, + "id": 4002, "linearizedBaseContracts": [ - 3897, - 4052, - 2999 + 4002, + 4157, + 3104 ], "name": "ERC20", "nodeType": "ContractDefinition", "nodes": [ { - "id": 3504, + "id": 3609, "libraryName": { "contractScope": null, - "id": 3502, + "id": 3607, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3374, - "src": "1314:8:15", + "referencedDeclaration": 3479, + "src": "1314:8:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$3374", + "typeIdentifier": "t_contract$_SafeMath_$3479", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", - "src": "1308:27:15", + "src": "1308:27:18", "typeName": { - "id": 3503, + "id": 3608, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1327:7:15", + "src": "1327:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -394,11 +365,11 @@ }, { "constant": false, - "id": 3508, + "id": 3613, "name": "_balances", "nodeType": "VariableDeclaration", - "scope": 3897, - "src": "1341:46:15", + "scope": 4002, + "src": "1341:46:18", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -406,28 +377,28 @@ "typeString": "mapping(address => uint256)" }, "typeName": { - "id": 3507, + "id": 3612, "keyType": { - "id": 3505, + "id": 3610, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1350:7:15", + "src": "1350:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "1341:28:15", + "src": "1341:28:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { - "id": 3506, + "id": 3611, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1361:7:15", + "src": "1361:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -439,11 +410,11 @@ }, { "constant": false, - "id": 3514, + "id": 3619, "name": "_allowances", "nodeType": "VariableDeclaration", - "scope": 3897, - "src": "1394:69:15", + "scope": 4002, + "src": "1394:69:18", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -451,46 +422,46 @@ "typeString": "mapping(address => mapping(address => uint256))" }, "typeName": { - "id": 3513, + "id": 3618, "keyType": { - "id": 3509, + "id": 3614, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1403:7:15", + "src": "1403:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "1394:49:15", + "src": "1394:49:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" }, "valueType": { - "id": 3512, + "id": 3617, "keyType": { - "id": 3510, + "id": 3615, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1423:7:15", + "src": "1423:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "1414:28:15", + "src": "1414:28:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { - "id": 3511, + "id": 3616, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1434:7:15", + "src": "1434:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -503,11 +474,11 @@ }, { "constant": false, - "id": 3516, + "id": 3621, "name": "_totalSupply", "nodeType": "VariableDeclaration", - "scope": 3897, - "src": "1470:28:15", + "scope": 4002, + "src": "1470:28:18", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -515,10 +486,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3515, + "id": 3620, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1470:7:15", + "src": "1470:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -529,55 +500,55 @@ }, { "body": { - "id": 3523, + "id": 3628, "nodeType": "Block", - "src": "1612:36:15", + "src": "1612:36:18", "statements": [ { "expression": { "argumentTypes": null, - "id": 3521, + "id": 3626, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3516, - "src": "1629:12:15", + "referencedDeclaration": 3621, + "src": "1629:12:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 3520, - "id": 3522, + "functionReturnParameters": 3625, + "id": 3627, "nodeType": "Return", - "src": "1622:19:15" + "src": "1622:19:18" } ] }, "documentation": "@dev See {IERC20-totalSupply}.", - "id": 3524, + "id": 3629, "implemented": true, "kind": "function", "modifiers": [], "name": "totalSupply", "nodeType": "FunctionDefinition", "parameters": { - "id": 3517, + "id": 3622, "nodeType": "ParameterList", "parameters": [], - "src": "1579:2:15" + "src": "1579:2:18" }, "returnParameters": { - "id": 3520, + "id": 3625, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3519, + "id": 3624, "name": "", "nodeType": "VariableDeclaration", - "scope": 3524, - "src": "1603:7:15", + "scope": 3629, + "src": "1603:7:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -585,10 +556,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3518, + "id": 3623, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1603:7:15", + "src": "1603:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -598,45 +569,45 @@ "visibility": "internal" } ], - "src": "1602:9:15" + "src": "1602:9:18" }, - "scope": 3897, - "src": "1559:89:15", + "scope": 4002, + "src": "1559:89:18", "stateMutability": "view", - "superFunction": 3990, + "superFunction": 4095, "visibility": "public" }, { "body": { - "id": 3535, + "id": 3640, "nodeType": "Block", - "src": "1772:42:15", + "src": "1772:42:18", "statements": [ { "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 3531, + "id": 3636, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3508, - "src": "1789:9:15", + "referencedDeclaration": 3613, + "src": "1789:9:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 3533, + "id": 3638, "indexExpression": { "argumentTypes": null, - "id": 3532, + "id": 3637, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3526, - "src": "1799:7:15", + "referencedDeclaration": 3631, + "src": "1799:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -647,37 +618,37 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1789:18:15", + "src": "1789:18:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 3530, - "id": 3534, + "functionReturnParameters": 3635, + "id": 3639, "nodeType": "Return", - "src": "1782:25:15" + "src": "1782:25:18" } ] }, "documentation": "@dev See {IERC20-balanceOf}.", - "id": 3536, + "id": 3641, "implemented": true, "kind": "function", "modifiers": [], "name": "balanceOf", "nodeType": "FunctionDefinition", "parameters": { - "id": 3527, + "id": 3632, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3526, + "id": 3631, "name": "account", "nodeType": "VariableDeclaration", - "scope": 3536, - "src": "1725:15:15", + "scope": 3641, + "src": "1725:15:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -685,10 +656,10 @@ "typeString": "address" }, "typeName": { - "id": 3525, + "id": 3630, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1725:7:15", + "src": "1725:7:18", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -699,19 +670,19 @@ "visibility": "internal" } ], - "src": "1724:17:15" + "src": "1724:17:18" }, "returnParameters": { - "id": 3530, + "id": 3635, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3529, + "id": 3634, "name": "", "nodeType": "VariableDeclaration", - "scope": 3536, - "src": "1763:7:15", + "scope": 3641, + "src": "1763:7:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -719,10 +690,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3528, + "id": 3633, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1763:7:15", + "src": "1763:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -732,19 +703,19 @@ "visibility": "internal" } ], - "src": "1762:9:15" + "src": "1762:9:18" }, - "scope": 3897, - "src": "1706:108:15", + "scope": 4002, + "src": "1706:108:18", "stateMutability": "view", - "superFunction": 3997, + "superFunction": 4102, "visibility": "public" }, { "body": { - "id": 3554, + "id": 3659, "nodeType": "Block", - "src": "2092:80:15", + "src": "2092:80:18", "statements": [ { "expression": { @@ -755,18 +726,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 3546, + "id": 3651, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2987, - "src": "2112:10:15", + "referencedDeclaration": 3092, + "src": "2112:10:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 3547, + "id": 3652, "isConstant": false, "isLValue": false, "isPure": false, @@ -774,7 +745,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2112:12:15", + "src": "2112:12:18", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -782,12 +753,12 @@ }, { "argumentTypes": null, - "id": 3548, + "id": 3653, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3538, - "src": "2126:9:15", + "referencedDeclaration": 3643, + "src": "2126:9:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -795,12 +766,12 @@ }, { "argumentTypes": null, - "id": 3549, + "id": 3654, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3540, - "src": "2137:6:15", + "referencedDeclaration": 3645, + "src": "2137:6:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -822,18 +793,18 @@ "typeString": "uint256" } ], - "id": 3545, + "id": 3650, "name": "_transfer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3738, - "src": "2102:9:15", + "referencedDeclaration": 3843, + "src": "2102:9:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 3550, + "id": 3655, "isConstant": false, "isLValue": false, "isPure": false, @@ -841,28 +812,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2102:42:15", + "src": "2102:42:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3551, + "id": 3656, "nodeType": "ExpressionStatement", - "src": "2102:42:15" + "src": "2102:42:18" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 3552, + "id": 3657, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2161:4:15", + "src": "2161:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -870,31 +841,31 @@ }, "value": "true" }, - "functionReturnParameters": 3544, - "id": 3553, + "functionReturnParameters": 3649, + "id": 3658, "nodeType": "Return", - "src": "2154:11:15" + "src": "2154:11:18" } ] }, "documentation": "@dev See {IERC20-transfer}.\n * Requirements:\n * - `recipient` cannot be the zero address.\n- the caller must have a balance of at least `amount`.", - "id": 3555, + "id": 3660, "implemented": true, "kind": "function", "modifiers": [], "name": "transfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 3541, + "id": 3646, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3538, + "id": 3643, "name": "recipient", "nodeType": "VariableDeclaration", - "scope": 3555, - "src": "2035:17:15", + "scope": 3660, + "src": "2035:17:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -902,10 +873,10 @@ "typeString": "address" }, "typeName": { - "id": 3537, + "id": 3642, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2035:7:15", + "src": "2035:7:18", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -917,11 +888,11 @@ }, { "constant": false, - "id": 3540, + "id": 3645, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 3555, - "src": "2054:14:15", + "scope": 3660, + "src": "2054:14:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -929,10 +900,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3539, + "id": 3644, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2054:7:15", + "src": "2054:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -942,19 +913,19 @@ "visibility": "internal" } ], - "src": "2034:35:15" + "src": "2034:35:18" }, "returnParameters": { - "id": 3544, + "id": 3649, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3543, + "id": 3648, "name": "", "nodeType": "VariableDeclaration", - "scope": 3555, - "src": "2086:4:15", + "scope": 3660, + "src": "2086:4:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -962,10 +933,10 @@ "typeString": "bool" }, "typeName": { - "id": 3542, + "id": 3647, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2086:4:15", + "src": "2086:4:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -975,19 +946,19 @@ "visibility": "internal" } ], - "src": "2085:6:15" + "src": "2085:6:18" }, - "scope": 3897, - "src": "2017:155:15", + "scope": 4002, + "src": "2017:155:18", "stateMutability": "nonpayable", - "superFunction": 4006, + "superFunction": 4111, "visibility": "public" }, { "body": { - "id": 3570, + "id": 3675, "nodeType": "Block", - "src": "2311:51:15", + "src": "2311:51:18", "statements": [ { "expression": { @@ -996,26 +967,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 3564, + "id": 3669, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3514, - "src": "2328:11:15", + "referencedDeclaration": 3619, + "src": "2328:11:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, - "id": 3566, + "id": 3671, "indexExpression": { "argumentTypes": null, - "id": 3565, + "id": 3670, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3557, - "src": "2340:5:15", + "referencedDeclaration": 3662, + "src": "2340:5:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1026,21 +997,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2328:18:15", + "src": "2328:18:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 3568, + "id": 3673, "indexExpression": { "argumentTypes": null, - "id": 3567, + "id": 3672, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3559, - "src": "2347:7:15", + "referencedDeclaration": 3664, + "src": "2347:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1051,37 +1022,37 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2328:27:15", + "src": "2328:27:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 3563, - "id": 3569, + "functionReturnParameters": 3668, + "id": 3674, "nodeType": "Return", - "src": "2321:34:15" + "src": "2321:34:18" } ] }, "documentation": "@dev See {IERC20-allowance}.", - "id": 3571, + "id": 3676, "implemented": true, "kind": "function", "modifiers": [], "name": "allowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 3560, + "id": 3665, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3557, + "id": 3662, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 3571, - "src": "2249:13:15", + "scope": 3676, + "src": "2249:13:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1089,10 +1060,10 @@ "typeString": "address" }, "typeName": { - "id": 3556, + "id": 3661, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2249:7:15", + "src": "2249:7:18", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1104,11 +1075,11 @@ }, { "constant": false, - "id": 3559, + "id": 3664, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 3571, - "src": "2264:15:15", + "scope": 3676, + "src": "2264:15:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1116,10 +1087,10 @@ "typeString": "address" }, "typeName": { - "id": 3558, + "id": 3663, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2264:7:15", + "src": "2264:7:18", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1130,19 +1101,19 @@ "visibility": "internal" } ], - "src": "2248:32:15" + "src": "2248:32:18" }, "returnParameters": { - "id": 3563, + "id": 3668, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3562, + "id": 3667, "name": "", "nodeType": "VariableDeclaration", - "scope": 3571, - "src": "2302:7:15", + "scope": 3676, + "src": "2302:7:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1150,10 +1121,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3561, + "id": 3666, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2302:7:15", + "src": "2302:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1163,19 +1134,19 @@ "visibility": "internal" } ], - "src": "2301:9:15" + "src": "2301:9:18" }, - "scope": 3897, - "src": "2230:132:15", + "scope": 4002, + "src": "2230:132:18", "stateMutability": "view", - "superFunction": 4015, + "superFunction": 4120, "visibility": "public" }, { "body": { - "id": 3589, + "id": 3694, "nodeType": "Block", - "src": "2572:77:15", + "src": "2572:77:18", "statements": [ { "expression": { @@ -1186,18 +1157,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 3581, + "id": 3686, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2987, - "src": "2591:10:15", + "referencedDeclaration": 3092, + "src": "2591:10:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 3582, + "id": 3687, "isConstant": false, "isLValue": false, "isPure": false, @@ -1205,7 +1176,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2591:12:15", + "src": "2591:12:18", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -1213,12 +1184,12 @@ }, { "argumentTypes": null, - "id": 3583, + "id": 3688, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3573, - "src": "2605:7:15", + "referencedDeclaration": 3678, + "src": "2605:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1226,12 +1197,12 @@ }, { "argumentTypes": null, - "id": 3584, + "id": 3689, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3575, - "src": "2614:6:15", + "referencedDeclaration": 3680, + "src": "2614:6:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1253,18 +1224,18 @@ "typeString": "uint256" } ], - "id": 3580, + "id": 3685, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3867, - "src": "2582:8:15", + "referencedDeclaration": 3972, + "src": "2582:8:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 3585, + "id": 3690, "isConstant": false, "isLValue": false, "isPure": false, @@ -1272,28 +1243,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2582:39:15", + "src": "2582:39:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3586, + "id": 3691, "nodeType": "ExpressionStatement", - "src": "2582:39:15" + "src": "2582:39:18" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 3587, + "id": 3692, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2638:4:15", + "src": "2638:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1301,31 +1272,31 @@ }, "value": "true" }, - "functionReturnParameters": 3579, - "id": 3588, + "functionReturnParameters": 3684, + "id": 3693, "nodeType": "Return", - "src": "2631:11:15" + "src": "2631:11:18" } ] }, "documentation": "@dev See {IERC20-approve}.\n * Requirements:\n * - `spender` cannot be the zero address.", - "id": 3590, + "id": 3695, "implemented": true, "kind": "function", "modifiers": [], "name": "approve", "nodeType": "FunctionDefinition", "parameters": { - "id": 3576, + "id": 3681, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3573, + "id": 3678, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 3590, - "src": "2517:15:15", + "scope": 3695, + "src": "2517:15:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1333,10 +1304,10 @@ "typeString": "address" }, "typeName": { - "id": 3572, + "id": 3677, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2517:7:15", + "src": "2517:7:18", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1348,11 +1319,11 @@ }, { "constant": false, - "id": 3575, + "id": 3680, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 3590, - "src": "2534:14:15", + "scope": 3695, + "src": "2534:14:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1360,10 +1331,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3574, + "id": 3679, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2534:7:15", + "src": "2534:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1373,19 +1344,19 @@ "visibility": "internal" } ], - "src": "2516:33:15" + "src": "2516:33:18" }, "returnParameters": { - "id": 3579, + "id": 3684, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3578, + "id": 3683, "name": "", "nodeType": "VariableDeclaration", - "scope": 3590, - "src": "2566:4:15", + "scope": 3695, + "src": "2566:4:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1393,10 +1364,10 @@ "typeString": "bool" }, "typeName": { - "id": 3577, + "id": 3682, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2566:4:15", + "src": "2566:4:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1406,19 +1377,19 @@ "visibility": "internal" } ], - "src": "2565:6:15" + "src": "2565:6:18" }, - "scope": 3897, - "src": "2500:149:15", + "scope": 4002, + "src": "2500:149:18", "stateMutability": "nonpayable", - "superFunction": 4024, + "superFunction": 4129, "visibility": "public" }, { "body": { - "id": 3625, + "id": 3730, "nodeType": "Block", - "src": "3202:205:15", + "src": "3202:205:18", "statements": [ { "expression": { @@ -1426,12 +1397,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3602, + "id": 3707, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3592, - "src": "3222:6:15", + "referencedDeclaration": 3697, + "src": "3222:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1439,12 +1410,12 @@ }, { "argumentTypes": null, - "id": 3603, + "id": 3708, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3594, - "src": "3230:9:15", + "referencedDeclaration": 3699, + "src": "3230:9:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1452,12 +1423,12 @@ }, { "argumentTypes": null, - "id": 3604, + "id": 3709, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3596, - "src": "3241:6:15", + "referencedDeclaration": 3701, + "src": "3241:6:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1479,18 +1450,18 @@ "typeString": "uint256" } ], - "id": 3601, + "id": 3706, "name": "_transfer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3738, - "src": "3212:9:15", + "referencedDeclaration": 3843, + "src": "3212:9:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 3605, + "id": 3710, "isConstant": false, "isLValue": false, "isPure": false, @@ -1498,15 +1469,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3212:36:15", + "src": "3212:36:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3606, + "id": 3711, "nodeType": "ExpressionStatement", - "src": "3212:36:15" + "src": "3212:36:18" }, { "expression": { @@ -1514,12 +1485,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3608, + "id": 3713, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3592, - "src": "3267:6:15", + "referencedDeclaration": 3697, + "src": "3267:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1530,18 +1501,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 3609, + "id": 3714, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2987, - "src": "3275:10:15", + "referencedDeclaration": 3092, + "src": "3275:10:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 3610, + "id": 3715, "isConstant": false, "isLValue": false, "isPure": false, @@ -1549,7 +1520,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3275:12:15", + "src": "3275:12:18", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -1560,12 +1531,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3618, + "id": 3723, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3596, - "src": "3327:6:15", + "referencedDeclaration": 3701, + "src": "3327:6:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1574,14 +1545,14 @@ { "argumentTypes": null, "hexValue": "45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365", - "id": 3619, + "id": 3724, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3335:42:15", + "src": "3335:42:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330", @@ -1607,26 +1578,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 3611, + "id": 3716, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3514, - "src": "3289:11:15", + "referencedDeclaration": 3619, + "src": "3289:11:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, - "id": 3613, + "id": 3718, "indexExpression": { "argumentTypes": null, - "id": 3612, + "id": 3717, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3592, - "src": "3301:6:15", + "referencedDeclaration": 3697, + "src": "3301:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1637,30 +1608,30 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3289:19:15", + "src": "3289:19:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 3616, + "id": 3721, "indexExpression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 3614, + "id": 3719, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2987, - "src": "3309:10:15", + "referencedDeclaration": 3092, + "src": "3309:10:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 3615, + "id": 3720, "isConstant": false, "isLValue": false, "isPure": false, @@ -1668,7 +1639,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3309:12:15", + "src": "3309:12:18", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -1679,27 +1650,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3289:33:15", + "src": "3289:33:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 3617, + "id": 3722, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 3257, - "src": "3289:37:15", + "referencedDeclaration": 3362, + "src": "3289:37:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" } }, - "id": 3620, + "id": 3725, "isConstant": false, "isLValue": false, "isPure": false, @@ -1707,7 +1678,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3289:89:15", + "src": "3289:89:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1729,18 +1700,18 @@ "typeString": "uint256" } ], - "id": 3607, + "id": 3712, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3867, - "src": "3258:8:15", + "referencedDeclaration": 3972, + "src": "3258:8:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 3621, + "id": 3726, "isConstant": false, "isLValue": false, "isPure": false, @@ -1748,28 +1719,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3258:121:15", + "src": "3258:121:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3622, + "id": 3727, "nodeType": "ExpressionStatement", - "src": "3258:121:15" + "src": "3258:121:18" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 3623, + "id": 3728, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3396:4:15", + "src": "3396:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1777,31 +1748,31 @@ }, "value": "true" }, - "functionReturnParameters": 3600, - "id": 3624, + "functionReturnParameters": 3705, + "id": 3729, "nodeType": "Return", - "src": "3389:11:15" + "src": "3389:11:18" } ] }, "documentation": "@dev See {IERC20-transferFrom}.\n * Emits an {Approval} event indicating the updated allowance. This is not\nrequired by the EIP. See the note at the beginning of {ERC20};\n * Requirements:\n- `sender` and `recipient` cannot be the zero address.\n- `sender` must have a balance of at least `amount`.\n- the caller must have allowance for `sender`'s tokens of at least\n`amount`.", - "id": 3626, + "id": 3731, "implemented": true, "kind": "function", "modifiers": [], "name": "transferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 3597, + "id": 3702, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3592, + "id": 3697, "name": "sender", "nodeType": "VariableDeclaration", - "scope": 3626, - "src": "3129:14:15", + "scope": 3731, + "src": "3129:14:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1809,10 +1780,10 @@ "typeString": "address" }, "typeName": { - "id": 3591, + "id": 3696, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3129:7:15", + "src": "3129:7:18", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1824,11 +1795,11 @@ }, { "constant": false, - "id": 3594, + "id": 3699, "name": "recipient", "nodeType": "VariableDeclaration", - "scope": 3626, - "src": "3145:17:15", + "scope": 3731, + "src": "3145:17:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1836,10 +1807,10 @@ "typeString": "address" }, "typeName": { - "id": 3593, + "id": 3698, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3145:7:15", + "src": "3145:7:18", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1851,11 +1822,11 @@ }, { "constant": false, - "id": 3596, + "id": 3701, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 3626, - "src": "3164:14:15", + "scope": 3731, + "src": "3164:14:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1863,10 +1834,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3595, + "id": 3700, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3164:7:15", + "src": "3164:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1876,19 +1847,19 @@ "visibility": "internal" } ], - "src": "3128:51:15" + "src": "3128:51:18" }, "returnParameters": { - "id": 3600, + "id": 3705, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3599, + "id": 3704, "name": "", "nodeType": "VariableDeclaration", - "scope": 3626, - "src": "3196:4:15", + "scope": 3731, + "src": "3196:4:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1896,10 +1867,10 @@ "typeString": "bool" }, "typeName": { - "id": 3598, + "id": 3703, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3196:4:15", + "src": "3196:4:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1909,19 +1880,19 @@ "visibility": "internal" } ], - "src": "3195:6:15" + "src": "3195:6:18" }, - "scope": 3897, - "src": "3107:300:15", + "scope": 4002, + "src": "3107:300:18", "stateMutability": "nonpayable", - "superFunction": 4035, + "superFunction": 4140, "visibility": "public" }, { "body": { - "id": 3652, + "id": 3757, "nodeType": "Block", - "src": "3888:121:15", + "src": "3888:121:18", "statements": [ { "expression": { @@ -1932,18 +1903,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 3636, + "id": 3741, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2987, - "src": "3907:10:15", + "referencedDeclaration": 3092, + "src": "3907:10:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 3637, + "id": 3742, "isConstant": false, "isLValue": false, "isPure": false, @@ -1951,7 +1922,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3907:12:15", + "src": "3907:12:18", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -1959,12 +1930,12 @@ }, { "argumentTypes": null, - "id": 3638, + "id": 3743, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3628, - "src": "3921:7:15", + "referencedDeclaration": 3733, + "src": "3921:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1975,12 +1946,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3646, + "id": 3751, "name": "addedValue", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3630, - "src": "3969:10:15", + "referencedDeclaration": 3735, + "src": "3969:10:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2000,35 +1971,35 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 3639, + "id": 3744, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3514, - "src": "3930:11:15", + "referencedDeclaration": 3619, + "src": "3930:11:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, - "id": 3642, + "id": 3747, "indexExpression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 3640, + "id": 3745, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2987, - "src": "3942:10:15", + "referencedDeclaration": 3092, + "src": "3942:10:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 3641, + "id": 3746, "isConstant": false, "isLValue": false, "isPure": false, @@ -2036,7 +2007,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3942:12:15", + "src": "3942:12:18", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -2047,21 +2018,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3930:25:15", + "src": "3930:25:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 3644, + "id": 3749, "indexExpression": { "argumentTypes": null, - "id": 3643, + "id": 3748, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3628, - "src": "3956:7:15", + "referencedDeclaration": 3733, + "src": "3956:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2072,27 +2043,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3930:34:15", + "src": "3930:34:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 3645, + "id": 3750, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 3214, - "src": "3930:38:15", + "referencedDeclaration": 3319, + "src": "3930:38:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 3647, + "id": 3752, "isConstant": false, "isLValue": false, "isPure": false, @@ -2100,7 +2071,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3930:50:15", + "src": "3930:50:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2122,18 +2093,18 @@ "typeString": "uint256" } ], - "id": 3635, + "id": 3740, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3867, - "src": "3898:8:15", + "referencedDeclaration": 3972, + "src": "3898:8:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 3648, + "id": 3753, "isConstant": false, "isLValue": false, "isPure": false, @@ -2141,28 +2112,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3898:83:15", + "src": "3898:83:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3649, + "id": 3754, "nodeType": "ExpressionStatement", - "src": "3898:83:15" + "src": "3898:83:18" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 3650, + "id": 3755, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3998:4:15", + "src": "3998:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2170,31 +2141,31 @@ }, "value": "true" }, - "functionReturnParameters": 3634, - "id": 3651, + "functionReturnParameters": 3739, + "id": 3756, "nodeType": "Return", - "src": "3991:11:15" + "src": "3991:11:18" } ] }, "documentation": "@dev Atomically increases the allowance granted to `spender` by the caller.\n * This is an alternative to {approve} that can be used as a mitigation for\nproblems described in {IERC20-approve}.\n * Emits an {Approval} event indicating the updated allowance.\n * Requirements:\n * - `spender` cannot be the zero address.", - "id": 3653, + "id": 3758, "implemented": true, "kind": "function", "modifiers": [], "name": "increaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 3631, + "id": 3736, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3628, + "id": 3733, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 3653, - "src": "3829:15:15", + "scope": 3758, + "src": "3829:15:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2202,10 +2173,10 @@ "typeString": "address" }, "typeName": { - "id": 3627, + "id": 3732, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3829:7:15", + "src": "3829:7:18", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2217,11 +2188,11 @@ }, { "constant": false, - "id": 3630, + "id": 3735, "name": "addedValue", "nodeType": "VariableDeclaration", - "scope": 3653, - "src": "3846:18:15", + "scope": 3758, + "src": "3846:18:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2229,10 +2200,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3629, + "id": 3734, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3846:7:15", + "src": "3846:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2242,19 +2213,19 @@ "visibility": "internal" } ], - "src": "3828:37:15" + "src": "3828:37:18" }, "returnParameters": { - "id": 3634, + "id": 3739, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3633, + "id": 3738, "name": "", "nodeType": "VariableDeclaration", - "scope": 3653, - "src": "3882:4:15", + "scope": 3758, + "src": "3882:4:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2262,10 +2233,10 @@ "typeString": "bool" }, "typeName": { - "id": 3632, + "id": 3737, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3882:4:15", + "src": "3882:4:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2275,19 +2246,19 @@ "visibility": "internal" } ], - "src": "3881:6:15" + "src": "3881:6:18" }, - "scope": 3897, - "src": "3802:207:15", + "scope": 4002, + "src": "3802:207:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 3680, + "id": 3785, "nodeType": "Block", - "src": "4587:167:15", + "src": "4587:167:18", "statements": [ { "expression": { @@ -2298,18 +2269,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 3663, + "id": 3768, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2987, - "src": "4606:10:15", + "referencedDeclaration": 3092, + "src": "4606:10:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 3664, + "id": 3769, "isConstant": false, "isLValue": false, "isPure": false, @@ -2317,7 +2288,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4606:12:15", + "src": "4606:12:18", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -2325,12 +2296,12 @@ }, { "argumentTypes": null, - "id": 3665, + "id": 3770, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3655, - "src": "4620:7:15", + "referencedDeclaration": 3760, + "src": "4620:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2341,12 +2312,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3673, + "id": 3778, "name": "subtractedValue", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3657, - "src": "4668:15:15", + "referencedDeclaration": 3762, + "src": "4668:15:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2355,14 +2326,14 @@ { "argumentTypes": null, "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f", - "id": 3674, + "id": 3779, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4685:39:15", + "src": "4685:39:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8", @@ -2388,35 +2359,35 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 3666, + "id": 3771, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3514, - "src": "4629:11:15", + "referencedDeclaration": 3619, + "src": "4629:11:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, - "id": 3669, + "id": 3774, "indexExpression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 3667, + "id": 3772, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2987, - "src": "4641:10:15", + "referencedDeclaration": 3092, + "src": "4641:10:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 3668, + "id": 3773, "isConstant": false, "isLValue": false, "isPure": false, @@ -2424,7 +2395,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4641:12:15", + "src": "4641:12:18", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -2435,21 +2406,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4629:25:15", + "src": "4629:25:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 3671, + "id": 3776, "indexExpression": { "argumentTypes": null, - "id": 3670, + "id": 3775, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3655, - "src": "4655:7:15", + "referencedDeclaration": 3760, + "src": "4655:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2460,27 +2431,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4629:34:15", + "src": "4629:34:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 3672, + "id": 3777, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 3257, - "src": "4629:38:15", + "referencedDeclaration": 3362, + "src": "4629:38:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" } }, - "id": 3675, + "id": 3780, "isConstant": false, "isLValue": false, "isPure": false, @@ -2488,7 +2459,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4629:96:15", + "src": "4629:96:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2510,18 +2481,18 @@ "typeString": "uint256" } ], - "id": 3662, + "id": 3767, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3867, - "src": "4597:8:15", + "referencedDeclaration": 3972, + "src": "4597:8:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 3676, + "id": 3781, "isConstant": false, "isLValue": false, "isPure": false, @@ -2529,28 +2500,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4597:129:15", + "src": "4597:129:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3677, + "id": 3782, "nodeType": "ExpressionStatement", - "src": "4597:129:15" + "src": "4597:129:18" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 3678, + "id": 3783, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "4743:4:15", + "src": "4743:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2558,31 +2529,31 @@ }, "value": "true" }, - "functionReturnParameters": 3661, - "id": 3679, + "functionReturnParameters": 3766, + "id": 3784, "nodeType": "Return", - "src": "4736:11:15" + "src": "4736:11:18" } ] }, "documentation": "@dev Atomically decreases the allowance granted to `spender` by the caller.\n * This is an alternative to {approve} that can be used as a mitigation for\nproblems described in {IERC20-approve}.\n * Emits an {Approval} event indicating the updated allowance.\n * Requirements:\n * - `spender` cannot be the zero address.\n- `spender` must have allowance for the caller of at least\n`subtractedValue`.", - "id": 3681, + "id": 3786, "implemented": true, "kind": "function", "modifiers": [], "name": "decreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 3658, + "id": 3763, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3655, + "id": 3760, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 3681, - "src": "4523:15:15", + "scope": 3786, + "src": "4523:15:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2590,10 +2561,10 @@ "typeString": "address" }, "typeName": { - "id": 3654, + "id": 3759, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4523:7:15", + "src": "4523:7:18", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2605,11 +2576,11 @@ }, { "constant": false, - "id": 3657, + "id": 3762, "name": "subtractedValue", "nodeType": "VariableDeclaration", - "scope": 3681, - "src": "4540:23:15", + "scope": 3786, + "src": "4540:23:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2617,10 +2588,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3656, + "id": 3761, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4540:7:15", + "src": "4540:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2630,19 +2601,19 @@ "visibility": "internal" } ], - "src": "4522:42:15" + "src": "4522:42:18" }, "returnParameters": { - "id": 3661, + "id": 3766, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3660, + "id": 3765, "name": "", "nodeType": "VariableDeclaration", - "scope": 3681, - "src": "4581:4:15", + "scope": 3786, + "src": "4581:4:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2650,10 +2621,10 @@ "typeString": "bool" }, "typeName": { - "id": 3659, + "id": 3764, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4581:4:15", + "src": "4581:4:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2663,19 +2634,19 @@ "visibility": "internal" } ], - "src": "4580:6:15" + "src": "4580:6:18" }, - "scope": 3897, - "src": "4496:258:15", + "scope": 4002, + "src": "4496:258:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 3737, + "id": 3842, "nodeType": "Block", - "src": "5307:385:15", + "src": "5307:385:18", "statements": [ { "expression": { @@ -2687,19 +2658,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 3695, + "id": 3800, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3691, + "id": 3796, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3683, - "src": "5325:6:15", + "referencedDeclaration": 3788, + "src": "5325:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2713,14 +2684,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 3693, + "id": 3798, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5343:1:15", + "src": "5343:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2736,20 +2707,20 @@ "typeString": "int_const 0" } ], - "id": 3692, + "id": 3797, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "5335:7:15", + "src": "5335:7:18", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 3694, + "id": 3799, "isConstant": false, "isLValue": false, "isPure": true, @@ -2757,13 +2728,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5335:10:15", + "src": "5335:10:18", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "src": "5325:20:15", + "src": "5325:20:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2772,14 +2743,14 @@ { "argumentTypes": null, "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373", - "id": 3696, + "id": 3801, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5347:39:15", + "src": "5347:39:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea", @@ -2799,21 +2770,21 @@ "typeString": "literal_string \"ERC20: transfer from the zero address\"" } ], - "id": 3690, + "id": 3795, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "5317:7:15", + "referencedDeclaration": 4176, + "src": "5317:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 3697, + "id": 3802, "isConstant": false, "isLValue": false, "isPure": false, @@ -2821,15 +2792,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5317:70:15", + "src": "5317:70:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3698, + "id": 3803, "nodeType": "ExpressionStatement", - "src": "5317:70:15" + "src": "5317:70:18" }, { "expression": { @@ -2841,19 +2812,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 3704, + "id": 3809, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3700, + "id": 3805, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3685, - "src": "5405:9:15", + "referencedDeclaration": 3790, + "src": "5405:9:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2867,14 +2838,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 3702, + "id": 3807, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5426:1:15", + "src": "5426:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2890,20 +2861,20 @@ "typeString": "int_const 0" } ], - "id": 3701, + "id": 3806, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "5418:7:15", + "src": "5418:7:18", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 3703, + "id": 3808, "isConstant": false, "isLValue": false, "isPure": true, @@ -2911,13 +2882,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5418:10:15", + "src": "5418:10:18", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "src": "5405:23:15", + "src": "5405:23:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2926,14 +2897,14 @@ { "argumentTypes": null, "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373", - "id": 3705, + "id": 3810, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5430:37:15", + "src": "5430:37:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f", @@ -2953,21 +2924,21 @@ "typeString": "literal_string \"ERC20: transfer to the zero address\"" } ], - "id": 3699, + "id": 3804, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "5397:7:15", + "referencedDeclaration": 4176, + "src": "5397:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 3706, + "id": 3811, "isConstant": false, "isLValue": false, "isPure": false, @@ -2975,20 +2946,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5397:71:15", + "src": "5397:71:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3707, + "id": 3812, "nodeType": "ExpressionStatement", - "src": "5397:71:15" + "src": "5397:71:18" }, { "expression": { "argumentTypes": null, - "id": 3718, + "id": 3823, "isConstant": false, "isLValue": false, "isPure": false, @@ -2997,26 +2968,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 3708, + "id": 3813, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3508, - "src": "5479:9:15", + "referencedDeclaration": 3613, + "src": "5479:9:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 3710, + "id": 3815, "indexExpression": { "argumentTypes": null, - "id": 3709, + "id": 3814, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3683, - "src": "5489:6:15", + "referencedDeclaration": 3788, + "src": "5489:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3027,7 +2998,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "5479:17:15", + "src": "5479:17:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3040,12 +3011,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3715, + "id": 3820, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3687, - "src": "5521:6:15", + "referencedDeclaration": 3792, + "src": "5521:6:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3054,14 +3025,14 @@ { "argumentTypes": null, "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365", - "id": 3716, + "id": 3821, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5529:40:15", + "src": "5529:40:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6", @@ -3085,26 +3056,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 3711, + "id": 3816, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3508, - "src": "5499:9:15", + "referencedDeclaration": 3613, + "src": "5499:9:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 3713, + "id": 3818, "indexExpression": { "argumentTypes": null, - "id": 3712, + "id": 3817, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3683, - "src": "5509:6:15", + "referencedDeclaration": 3788, + "src": "5509:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3115,27 +3086,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5499:17:15", + "src": "5499:17:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 3714, + "id": 3819, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 3257, - "src": "5499:21:15", + "referencedDeclaration": 3362, + "src": "5499:21:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" } }, - "id": 3717, + "id": 3822, "isConstant": false, "isLValue": false, "isPure": false, @@ -3143,26 +3114,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5499:71:15", + "src": "5499:71:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5479:91:15", + "src": "5479:91:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 3719, + "id": 3824, "nodeType": "ExpressionStatement", - "src": "5479:91:15" + "src": "5479:91:18" }, { "expression": { "argumentTypes": null, - "id": 3729, + "id": 3834, "isConstant": false, "isLValue": false, "isPure": false, @@ -3171,26 +3142,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 3720, + "id": 3825, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3508, - "src": "5580:9:15", + "referencedDeclaration": 3613, + "src": "5580:9:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 3722, + "id": 3827, "indexExpression": { "argumentTypes": null, - "id": 3721, + "id": 3826, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3685, - "src": "5590:9:15", + "referencedDeclaration": 3790, + "src": "5590:9:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3201,7 +3172,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "5580:20:15", + "src": "5580:20:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3214,12 +3185,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3727, + "id": 3832, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3687, - "src": "5628:6:15", + "referencedDeclaration": 3792, + "src": "5628:6:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3237,26 +3208,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 3723, + "id": 3828, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3508, - "src": "5603:9:15", + "referencedDeclaration": 3613, + "src": "5603:9:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 3725, + "id": 3830, "indexExpression": { "argumentTypes": null, - "id": 3724, + "id": 3829, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3685, - "src": "5613:9:15", + "referencedDeclaration": 3790, + "src": "5613:9:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3267,27 +3238,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5603:20:15", + "src": "5603:20:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 3726, + "id": 3831, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 3214, - "src": "5603:24:15", + "referencedDeclaration": 3319, + "src": "5603:24:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 3728, + "id": 3833, "isConstant": false, "isLValue": false, "isPure": false, @@ -3295,21 +3266,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5603:32:15", + "src": "5603:32:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5580:55:15", + "src": "5580:55:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 3730, + "id": 3835, "nodeType": "ExpressionStatement", - "src": "5580:55:15" + "src": "5580:55:18" }, { "eventCall": { @@ -3317,12 +3288,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3732, + "id": 3837, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3683, - "src": "5659:6:15", + "referencedDeclaration": 3788, + "src": "5659:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3330,12 +3301,12 @@ }, { "argumentTypes": null, - "id": 3733, + "id": 3838, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3685, - "src": "5667:9:15", + "referencedDeclaration": 3790, + "src": "5667:9:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3343,12 +3314,12 @@ }, { "argumentTypes": null, - "id": 3734, + "id": 3839, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3687, - "src": "5678:6:15", + "referencedDeclaration": 3792, + "src": "5678:6:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3370,18 +3341,18 @@ "typeString": "uint256" } ], - "id": 3731, + "id": 3836, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4043, - "src": "5650:8:15", + "referencedDeclaration": 4148, + "src": "5650:8:18", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 3735, + "id": 3840, "isConstant": false, "isLValue": false, "isPure": false, @@ -3389,36 +3360,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5650:35:15", + "src": "5650:35:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3736, + "id": 3841, "nodeType": "EmitStatement", - "src": "5645:40:15" + "src": "5645:40:18" } ] }, "documentation": "@dev Moves tokens `amount` from `sender` to `recipient`.\n * This is internal function is equivalent to {transfer}, and can be used to\ne.g. implement automatic token fees, slashing mechanisms, etc.\n * Emits a {Transfer} event.\n * Requirements:\n * - `sender` cannot be the zero address.\n- `recipient` cannot be the zero address.\n- `sender` must have a balance of at least `amount`.", - "id": 3738, + "id": 3843, "implemented": true, "kind": "function", "modifiers": [], "name": "_transfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 3688, + "id": 3793, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3683, + "id": 3788, "name": "sender", "nodeType": "VariableDeclaration", - "scope": 3738, - "src": "5247:14:15", + "scope": 3843, + "src": "5247:14:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3426,10 +3397,10 @@ "typeString": "address" }, "typeName": { - "id": 3682, + "id": 3787, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5247:7:15", + "src": "5247:7:18", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3441,11 +3412,11 @@ }, { "constant": false, - "id": 3685, + "id": 3790, "name": "recipient", "nodeType": "VariableDeclaration", - "scope": 3738, - "src": "5263:17:15", + "scope": 3843, + "src": "5263:17:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3453,10 +3424,10 @@ "typeString": "address" }, "typeName": { - "id": 3684, + "id": 3789, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5263:7:15", + "src": "5263:7:18", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3468,11 +3439,11 @@ }, { "constant": false, - "id": 3687, + "id": 3792, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 3738, - "src": "5282:14:15", + "scope": 3843, + "src": "5282:14:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3480,10 +3451,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3686, + "id": 3791, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5282:7:15", + "src": "5282:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3493,25 +3464,25 @@ "visibility": "internal" } ], - "src": "5246:51:15" + "src": "5246:51:18" }, "returnParameters": { - "id": 3689, + "id": 3794, "nodeType": "ParameterList", "parameters": [], - "src": "5307:0:15" + "src": "5307:0:18" }, - "scope": 3897, - "src": "5228:464:15", + "scope": 4002, + "src": "5228:464:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 3780, + "id": 3885, "nodeType": "Block", - "src": "6019:245:15", + "src": "6019:245:18", "statements": [ { "expression": { @@ -3523,19 +3494,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 3750, + "id": 3855, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3746, + "id": 3851, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3740, - "src": "6037:7:15", + "referencedDeclaration": 3845, + "src": "6037:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3549,14 +3520,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 3748, + "id": 3853, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6056:1:15", + "src": "6056:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3572,20 +3543,20 @@ "typeString": "int_const 0" } ], - "id": 3747, + "id": 3852, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6048:7:15", + "src": "6048:7:18", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 3749, + "id": 3854, "isConstant": false, "isLValue": false, "isPure": true, @@ -3593,13 +3564,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6048:10:15", + "src": "6048:10:18", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "src": "6037:21:15", + "src": "6037:21:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3608,14 +3579,14 @@ { "argumentTypes": null, "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373", - "id": 3751, + "id": 3856, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "6060:33:15", + "src": "6060:33:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e", @@ -3635,21 +3606,21 @@ "typeString": "literal_string \"ERC20: mint to the zero address\"" } ], - "id": 3745, + "id": 3850, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "6029:7:15", + "referencedDeclaration": 4176, + "src": "6029:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 3752, + "id": 3857, "isConstant": false, "isLValue": false, "isPure": false, @@ -3657,32 +3628,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6029:65:15", + "src": "6029:65:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3753, + "id": 3858, "nodeType": "ExpressionStatement", - "src": "6029:65:15" + "src": "6029:65:18" }, { "expression": { "argumentTypes": null, - "id": 3759, + "id": 3864, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 3754, + "id": 3859, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3516, - "src": "6105:12:15", + "referencedDeclaration": 3621, + "src": "6105:12:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3695,12 +3666,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3757, + "id": 3862, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3742, - "src": "6137:6:15", + "referencedDeclaration": 3847, + "src": "6137:6:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3716,32 +3687,32 @@ ], "expression": { "argumentTypes": null, - "id": 3755, + "id": 3860, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3516, - "src": "6120:12:15", + "referencedDeclaration": 3621, + "src": "6120:12:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 3756, + "id": 3861, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 3214, - "src": "6120:16:15", + "referencedDeclaration": 3319, + "src": "6120:16:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 3758, + "id": 3863, "isConstant": false, "isLValue": false, "isPure": false, @@ -3749,26 +3720,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6120:24:15", + "src": "6120:24:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "6105:39:15", + "src": "6105:39:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 3760, + "id": 3865, "nodeType": "ExpressionStatement", - "src": "6105:39:15" + "src": "6105:39:18" }, { "expression": { "argumentTypes": null, - "id": 3770, + "id": 3875, "isConstant": false, "isLValue": false, "isPure": false, @@ -3777,26 +3748,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 3761, + "id": 3866, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3508, - "src": "6154:9:15", + "referencedDeclaration": 3613, + "src": "6154:9:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 3763, + "id": 3868, "indexExpression": { "argumentTypes": null, - "id": 3762, + "id": 3867, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3740, - "src": "6164:7:15", + "referencedDeclaration": 3845, + "src": "6164:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3807,7 +3778,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "6154:18:15", + "src": "6154:18:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3820,12 +3791,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3768, + "id": 3873, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3742, - "src": "6198:6:15", + "referencedDeclaration": 3847, + "src": "6198:6:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3843,26 +3814,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 3764, + "id": 3869, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3508, - "src": "6175:9:15", + "referencedDeclaration": 3613, + "src": "6175:9:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 3766, + "id": 3871, "indexExpression": { "argumentTypes": null, - "id": 3765, + "id": 3870, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3740, - "src": "6185:7:15", + "referencedDeclaration": 3845, + "src": "6185:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3873,27 +3844,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "6175:18:15", + "src": "6175:18:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 3767, + "id": 3872, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 3214, - "src": "6175:22:15", + "referencedDeclaration": 3319, + "src": "6175:22:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 3769, + "id": 3874, "isConstant": false, "isLValue": false, "isPure": false, @@ -3901,21 +3872,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6175:30:15", + "src": "6175:30:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "6154:51:15", + "src": "6154:51:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 3771, + "id": 3876, "nodeType": "ExpressionStatement", - "src": "6154:51:15" + "src": "6154:51:18" }, { "eventCall": { @@ -3927,14 +3898,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 3774, + "id": 3879, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6237:1:15", + "src": "6237:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3950,20 +3921,20 @@ "typeString": "int_const 0" } ], - "id": 3773, + "id": 3878, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6229:7:15", + "src": "6229:7:18", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 3775, + "id": 3880, "isConstant": false, "isLValue": false, "isPure": true, @@ -3971,7 +3942,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6229:10:15", + "src": "6229:10:18", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -3979,12 +3950,12 @@ }, { "argumentTypes": null, - "id": 3776, + "id": 3881, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3740, - "src": "6241:7:15", + "referencedDeclaration": 3845, + "src": "6241:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3992,12 +3963,12 @@ }, { "argumentTypes": null, - "id": 3777, + "id": 3882, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3742, - "src": "6250:6:15", + "referencedDeclaration": 3847, + "src": "6250:6:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4019,18 +3990,18 @@ "typeString": "uint256" } ], - "id": 3772, + "id": 3877, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4043, - "src": "6220:8:15", + "referencedDeclaration": 4148, + "src": "6220:8:18", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 3778, + "id": 3883, "isConstant": false, "isLValue": false, "isPure": false, @@ -4038,36 +4009,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6220:37:15", + "src": "6220:37:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3779, + "id": 3884, "nodeType": "EmitStatement", - "src": "6215:42:15" + "src": "6215:42:18" } ] }, "documentation": "@dev Creates `amount` tokens and assigns them to `account`, increasing\nthe total supply.\n * Emits a {Transfer} event with `from` set to the zero address.\n * Requirements\n * - `to` cannot be the zero address.", - "id": 3781, + "id": 3886, "implemented": true, "kind": "function", "modifiers": [], "name": "_mint", "nodeType": "FunctionDefinition", "parameters": { - "id": 3743, + "id": 3848, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3740, + "id": 3845, "name": "account", "nodeType": "VariableDeclaration", - "scope": 3781, - "src": "5977:15:15", + "scope": 3886, + "src": "5977:15:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4075,10 +4046,10 @@ "typeString": "address" }, "typeName": { - "id": 3739, + "id": 3844, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5977:7:15", + "src": "5977:7:18", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4090,11 +4061,11 @@ }, { "constant": false, - "id": 3742, + "id": 3847, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 3781, - "src": "5994:14:15", + "scope": 3886, + "src": "5994:14:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4102,10 +4073,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3741, + "id": 3846, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5994:7:15", + "src": "5994:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4115,25 +4086,25 @@ "visibility": "internal" } ], - "src": "5976:33:15" + "src": "5976:33:18" }, "returnParameters": { - "id": 3744, + "id": 3849, "nodeType": "ParameterList", "parameters": [], - "src": "6019:0:15" + "src": "6019:0:18" }, - "scope": 3897, - "src": "5962:302:15", + "scope": 4002, + "src": "5962:302:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 3824, + "id": 3929, "nodeType": "Block", - "src": "6640:285:15", + "src": "6640:285:18", "statements": [ { "expression": { @@ -4145,19 +4116,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 3793, + "id": 3898, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3789, + "id": 3894, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3783, - "src": "6658:7:15", + "referencedDeclaration": 3888, + "src": "6658:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4171,14 +4142,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 3791, + "id": 3896, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6677:1:15", + "src": "6677:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4194,20 +4165,20 @@ "typeString": "int_const 0" } ], - "id": 3790, + "id": 3895, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6669:7:15", + "src": "6669:7:18", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 3792, + "id": 3897, "isConstant": false, "isLValue": false, "isPure": true, @@ -4215,13 +4186,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6669:10:15", + "src": "6669:10:18", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "src": "6658:21:15", + "src": "6658:21:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4230,14 +4201,14 @@ { "argumentTypes": null, "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373", - "id": 3794, + "id": 3899, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "6681:35:15", + "src": "6681:35:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f", @@ -4257,21 +4228,21 @@ "typeString": "literal_string \"ERC20: burn from the zero address\"" } ], - "id": 3788, + "id": 3893, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "6650:7:15", + "referencedDeclaration": 4176, + "src": "6650:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 3795, + "id": 3900, "isConstant": false, "isLValue": false, "isPure": false, @@ -4279,20 +4250,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6650:67:15", + "src": "6650:67:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3796, + "id": 3901, "nodeType": "ExpressionStatement", - "src": "6650:67:15" + "src": "6650:67:18" }, { "expression": { "argumentTypes": null, - "id": 3807, + "id": 3912, "isConstant": false, "isLValue": false, "isPure": false, @@ -4301,26 +4272,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 3797, + "id": 3902, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3508, - "src": "6728:9:15", + "referencedDeclaration": 3613, + "src": "6728:9:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 3799, + "id": 3904, "indexExpression": { "argumentTypes": null, - "id": 3798, + "id": 3903, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3783, - "src": "6738:7:15", + "referencedDeclaration": 3888, + "src": "6738:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4331,7 +4302,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "6728:18:15", + "src": "6728:18:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4344,12 +4315,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3804, + "id": 3909, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3785, - "src": "6772:6:15", + "referencedDeclaration": 3890, + "src": "6772:6:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4358,14 +4329,14 @@ { "argumentTypes": null, "hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365", - "id": 3805, + "id": 3910, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "6780:36:15", + "src": "6780:36:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd", @@ -4389,26 +4360,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 3800, + "id": 3905, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3508, - "src": "6749:9:15", + "referencedDeclaration": 3613, + "src": "6749:9:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 3802, + "id": 3907, "indexExpression": { "argumentTypes": null, - "id": 3801, + "id": 3906, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3783, - "src": "6759:7:15", + "referencedDeclaration": 3888, + "src": "6759:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4419,27 +4390,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "6749:18:15", + "src": "6749:18:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 3803, + "id": 3908, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 3257, - "src": "6749:22:15", + "referencedDeclaration": 3362, + "src": "6749:22:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" } }, - "id": 3806, + "id": 3911, "isConstant": false, "isLValue": false, "isPure": false, @@ -4447,38 +4418,38 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6749:68:15", + "src": "6749:68:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "6728:89:15", + "src": "6728:89:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 3808, + "id": 3913, "nodeType": "ExpressionStatement", - "src": "6728:89:15" + "src": "6728:89:18" }, { "expression": { "argumentTypes": null, - "id": 3814, + "id": 3919, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 3809, + "id": 3914, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3516, - "src": "6827:12:15", + "referencedDeclaration": 3621, + "src": "6827:12:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4491,12 +4462,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3812, + "id": 3917, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3785, - "src": "6859:6:15", + "referencedDeclaration": 3890, + "src": "6859:6:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4512,32 +4483,32 @@ ], "expression": { "argumentTypes": null, - "id": 3810, + "id": 3915, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3516, - "src": "6842:12:15", + "referencedDeclaration": 3621, + "src": "6842:12:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 3811, + "id": 3916, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 3230, - "src": "6842:16:15", + "referencedDeclaration": 3335, + "src": "6842:16:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 3813, + "id": 3918, "isConstant": false, "isLValue": false, "isPure": false, @@ -4545,21 +4516,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6842:24:15", + "src": "6842:24:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "6827:39:15", + "src": "6827:39:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 3815, + "id": 3920, "nodeType": "ExpressionStatement", - "src": "6827:39:15" + "src": "6827:39:18" }, { "eventCall": { @@ -4567,12 +4538,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3817, + "id": 3922, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3783, - "src": "6890:7:15", + "referencedDeclaration": 3888, + "src": "6890:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4584,14 +4555,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 3819, + "id": 3924, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6907:1:15", + "src": "6907:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4607,20 +4578,20 @@ "typeString": "int_const 0" } ], - "id": 3818, + "id": 3923, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6899:7:15", + "src": "6899:7:18", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 3820, + "id": 3925, "isConstant": false, "isLValue": false, "isPure": true, @@ -4628,7 +4599,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6899:10:15", + "src": "6899:10:18", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -4636,12 +4607,12 @@ }, { "argumentTypes": null, - "id": 3821, + "id": 3926, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3785, - "src": "6911:6:15", + "referencedDeclaration": 3890, + "src": "6911:6:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4663,18 +4634,18 @@ "typeString": "uint256" } ], - "id": 3816, + "id": 3921, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4043, - "src": "6881:8:15", + "referencedDeclaration": 4148, + "src": "6881:8:18", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 3822, + "id": 3927, "isConstant": false, "isLValue": false, "isPure": false, @@ -4682,36 +4653,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6881:37:15", + "src": "6881:37:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3823, + "id": 3928, "nodeType": "EmitStatement", - "src": "6876:42:15" + "src": "6876:42:18" } ] }, "documentation": "@dev Destroys `amount` tokens from `account`, reducing the\ntotal supply.\n * Emits a {Transfer} event with `to` set to the zero address.\n * Requirements\n * - `account` cannot be the zero address.\n- `account` must have at least `amount` tokens.", - "id": 3825, + "id": 3930, "implemented": true, "kind": "function", "modifiers": [], "name": "_burn", "nodeType": "FunctionDefinition", "parameters": { - "id": 3786, + "id": 3891, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3783, + "id": 3888, "name": "account", "nodeType": "VariableDeclaration", - "scope": 3825, - "src": "6598:15:15", + "scope": 3930, + "src": "6598:15:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4719,10 +4690,10 @@ "typeString": "address" }, "typeName": { - "id": 3782, + "id": 3887, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6598:7:15", + "src": "6598:7:18", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4734,11 +4705,11 @@ }, { "constant": false, - "id": 3785, + "id": 3890, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 3825, - "src": "6615:14:15", + "scope": 3930, + "src": "6615:14:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4746,10 +4717,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3784, + "id": 3889, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6615:7:15", + "src": "6615:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4759,25 +4730,25 @@ "visibility": "internal" } ], - "src": "6597:33:15" + "src": "6597:33:18" }, "returnParameters": { - "id": 3787, + "id": 3892, "nodeType": "ParameterList", "parameters": [], - "src": "6640:0:15" + "src": "6640:0:18" }, - "scope": 3897, - "src": "6583:342:15", + "scope": 4002, + "src": "6583:342:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 3866, + "id": 3971, "nodeType": "Block", - "src": "7425:257:15", + "src": "7425:257:18", "statements": [ { "expression": { @@ -4789,19 +4760,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 3839, + "id": 3944, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3835, + "id": 3940, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3827, - "src": "7443:5:15", + "referencedDeclaration": 3932, + "src": "7443:5:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4815,14 +4786,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 3837, + "id": 3942, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7460:1:15", + "src": "7460:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4838,20 +4809,20 @@ "typeString": "int_const 0" } ], - "id": 3836, + "id": 3941, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "7452:7:15", + "src": "7452:7:18", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 3838, + "id": 3943, "isConstant": false, "isLValue": false, "isPure": true, @@ -4859,13 +4830,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7452:10:15", + "src": "7452:10:18", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "src": "7443:19:15", + "src": "7443:19:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4874,14 +4845,14 @@ { "argumentTypes": null, "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373", - "id": 3840, + "id": 3945, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "7464:38:15", + "src": "7464:38:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208", @@ -4901,21 +4872,21 @@ "typeString": "literal_string \"ERC20: approve from the zero address\"" } ], - "id": 3834, + "id": 3939, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "7435:7:15", + "referencedDeclaration": 4176, + "src": "7435:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 3841, + "id": 3946, "isConstant": false, "isLValue": false, "isPure": false, @@ -4923,15 +4894,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7435:68:15", + "src": "7435:68:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3842, + "id": 3947, "nodeType": "ExpressionStatement", - "src": "7435:68:15" + "src": "7435:68:18" }, { "expression": { @@ -4943,19 +4914,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 3848, + "id": 3953, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3844, + "id": 3949, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3829, - "src": "7521:7:15", + "referencedDeclaration": 3934, + "src": "7521:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4969,14 +4940,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 3846, + "id": 3951, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7540:1:15", + "src": "7540:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4992,20 +4963,20 @@ "typeString": "int_const 0" } ], - "id": 3845, + "id": 3950, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "7532:7:15", + "src": "7532:7:18", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 3847, + "id": 3952, "isConstant": false, "isLValue": false, "isPure": true, @@ -5013,13 +4984,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7532:10:15", + "src": "7532:10:18", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "src": "7521:21:15", + "src": "7521:21:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5028,14 +4999,14 @@ { "argumentTypes": null, "hexValue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373", - "id": 3849, + "id": 3954, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "7544:36:15", + "src": "7544:36:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029", @@ -5055,21 +5026,21 @@ "typeString": "literal_string \"ERC20: approve to the zero address\"" } ], - "id": 3843, + "id": 3948, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "7513:7:15", + "referencedDeclaration": 4176, + "src": "7513:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 3850, + "id": 3955, "isConstant": false, "isLValue": false, "isPure": false, @@ -5077,20 +5048,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7513:68:15", + "src": "7513:68:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3851, + "id": 3956, "nodeType": "ExpressionStatement", - "src": "7513:68:15" + "src": "7513:68:18" }, { "expression": { "argumentTypes": null, - "id": 3858, + "id": 3963, "isConstant": false, "isLValue": false, "isPure": false, @@ -5101,26 +5072,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 3852, + "id": 3957, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3514, - "src": "7592:11:15", + "referencedDeclaration": 3619, + "src": "7592:11:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, - "id": 3855, + "id": 3960, "indexExpression": { "argumentTypes": null, - "id": 3853, + "id": 3958, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3827, - "src": "7604:5:15", + "referencedDeclaration": 3932, + "src": "7604:5:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5131,21 +5102,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "7592:18:15", + "src": "7592:18:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 3856, + "id": 3961, "indexExpression": { "argumentTypes": null, - "id": 3854, + "id": 3959, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3829, - "src": "7611:7:15", + "referencedDeclaration": 3934, + "src": "7611:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5156,7 +5127,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "7592:27:15", + "src": "7592:27:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5166,26 +5137,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 3857, + "id": 3962, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3831, - "src": "7622:6:15", + "referencedDeclaration": 3936, + "src": "7622:6:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "7592:36:15", + "src": "7592:36:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 3859, + "id": 3964, "nodeType": "ExpressionStatement", - "src": "7592:36:15" + "src": "7592:36:18" }, { "eventCall": { @@ -5193,12 +5164,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3861, + "id": 3966, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3827, - "src": "7652:5:15", + "referencedDeclaration": 3932, + "src": "7652:5:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5206,12 +5177,12 @@ }, { "argumentTypes": null, - "id": 3862, + "id": 3967, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3829, - "src": "7659:7:15", + "referencedDeclaration": 3934, + "src": "7659:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5219,12 +5190,12 @@ }, { "argumentTypes": null, - "id": 3863, + "id": 3968, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3831, - "src": "7668:6:15", + "referencedDeclaration": 3936, + "src": "7668:6:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5246,18 +5217,18 @@ "typeString": "uint256" } ], - "id": 3860, + "id": 3965, "name": "Approval", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4051, - "src": "7643:8:15", + "referencedDeclaration": 4156, + "src": "7643:8:18", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 3864, + "id": 3969, "isConstant": false, "isLValue": false, "isPure": false, @@ -5265,36 +5236,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7643:32:15", + "src": "7643:32:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3865, + "id": 3970, "nodeType": "EmitStatement", - "src": "7638:37:15" + "src": "7638:37:18" } ] }, "documentation": "@dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\n * This is internal function is equivalent to `approve`, and can be used to\ne.g. set automatic allowances for certain subsystems, etc.\n * Emits an {Approval} event.\n * Requirements:\n * - `owner` cannot be the zero address.\n- `spender` cannot be the zero address.", - "id": 3867, + "id": 3972, "implemented": true, "kind": "function", "modifiers": [], "name": "_approve", "nodeType": "FunctionDefinition", "parameters": { - "id": 3832, + "id": 3937, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3827, + "id": 3932, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 3867, - "src": "7368:13:15", + "scope": 3972, + "src": "7368:13:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5302,10 +5273,10 @@ "typeString": "address" }, "typeName": { - "id": 3826, + "id": 3931, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7368:7:15", + "src": "7368:7:18", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5317,11 +5288,11 @@ }, { "constant": false, - "id": 3829, + "id": 3934, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 3867, - "src": "7383:15:15", + "scope": 3972, + "src": "7383:15:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5329,10 +5300,10 @@ "typeString": "address" }, "typeName": { - "id": 3828, + "id": 3933, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7383:7:15", + "src": "7383:7:18", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5344,11 +5315,11 @@ }, { "constant": false, - "id": 3831, + "id": 3936, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 3867, - "src": "7400:14:15", + "scope": 3972, + "src": "7400:14:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5356,10 +5327,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3830, + "id": 3935, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "7400:7:15", + "src": "7400:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5369,25 +5340,25 @@ "visibility": "internal" } ], - "src": "7367:48:15" + "src": "7367:48:18" }, "returnParameters": { - "id": 3833, + "id": 3938, "nodeType": "ParameterList", "parameters": [], - "src": "7425:0:15" + "src": "7425:0:18" }, - "scope": 3897, - "src": "7350:332:15", + "scope": 4002, + "src": "7350:332:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 3895, + "id": 4000, "nodeType": "Block", - "src": "7921:168:15", + "src": "7921:168:18", "statements": [ { "expression": { @@ -5395,12 +5366,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3875, + "id": 3980, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3869, - "src": "7937:7:15", + "referencedDeclaration": 3974, + "src": "7937:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5408,12 +5379,12 @@ }, { "argumentTypes": null, - "id": 3876, + "id": 3981, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3871, - "src": "7946:6:15", + "referencedDeclaration": 3976, + "src": "7946:6:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5431,18 +5402,18 @@ "typeString": "uint256" } ], - "id": 3874, + "id": 3979, "name": "_burn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3825, - "src": "7931:5:15", + "referencedDeclaration": 3930, + "src": "7931:5:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 3877, + "id": 3982, "isConstant": false, "isLValue": false, "isPure": false, @@ -5450,15 +5421,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7931:22:15", + "src": "7931:22:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3878, + "id": 3983, "nodeType": "ExpressionStatement", - "src": "7931:22:15" + "src": "7931:22:18" }, { "expression": { @@ -5466,12 +5437,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3880, + "id": 3985, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3869, - "src": "7972:7:15", + "referencedDeclaration": 3974, + "src": "7972:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5482,18 +5453,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 3881, + "id": 3986, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2987, - "src": "7981:10:15", + "referencedDeclaration": 3092, + "src": "7981:10:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 3882, + "id": 3987, "isConstant": false, "isLValue": false, "isPure": false, @@ -5501,7 +5472,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7981:12:15", + "src": "7981:12:18", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -5512,12 +5483,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3890, + "id": 3995, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3871, - "src": "8034:6:15", + "referencedDeclaration": 3976, + "src": "8034:6:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5526,14 +5497,14 @@ { "argumentTypes": null, "hexValue": "45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e6365", - "id": 3891, + "id": 3996, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "8042:38:15", + "src": "8042:38:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_a287c363786607a1457a2d9d12fa61c0073358e02d76b4035fc2c2d86a19c0db", @@ -5559,26 +5530,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 3883, + "id": 3988, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3514, - "src": "7995:11:15", + "referencedDeclaration": 3619, + "src": "7995:11:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, - "id": 3885, + "id": 3990, "indexExpression": { "argumentTypes": null, - "id": 3884, + "id": 3989, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3869, - "src": "8007:7:15", + "referencedDeclaration": 3974, + "src": "8007:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5589,30 +5560,30 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "7995:20:15", + "src": "7995:20:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 3888, + "id": 3993, "indexExpression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 3886, + "id": 3991, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2987, - "src": "8016:10:15", + "referencedDeclaration": 3092, + "src": "8016:10:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 3887, + "id": 3992, "isConstant": false, "isLValue": false, "isPure": false, @@ -5620,7 +5591,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8016:12:15", + "src": "8016:12:18", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -5631,27 +5602,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "7995:34:15", + "src": "7995:34:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 3889, + "id": 3994, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 3257, - "src": "7995:38:15", + "referencedDeclaration": 3362, + "src": "7995:38:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" } }, - "id": 3892, + "id": 3997, "isConstant": false, "isLValue": false, "isPure": false, @@ -5659,7 +5630,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7995:86:15", + "src": "7995:86:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5681,18 +5652,18 @@ "typeString": "uint256" } ], - "id": 3879, + "id": 3984, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3867, - "src": "7963:8:15", + "referencedDeclaration": 3972, + "src": "7963:8:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 3893, + "id": 3998, "isConstant": false, "isLValue": false, "isPure": false, @@ -5700,36 +5671,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7963:119:15", + "src": "7963:119:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3894, + "id": 3999, "nodeType": "ExpressionStatement", - "src": "7963:119:15" + "src": "7963:119:18" } ] }, "documentation": "@dev Destroys `amount` tokens from `account`.`amount` is then deducted\nfrom the caller's allowance.\n * See {_burn} and {_approve}.", - "id": 3896, + "id": 4001, "implemented": true, "kind": "function", "modifiers": [], "name": "_burnFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 3872, + "id": 3977, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3869, + "id": 3974, "name": "account", "nodeType": "VariableDeclaration", - "scope": 3896, - "src": "7879:15:15", + "scope": 4001, + "src": "7879:15:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5737,10 +5708,10 @@ "typeString": "address" }, "typeName": { - "id": 3868, + "id": 3973, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7879:7:15", + "src": "7879:7:18", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5752,11 +5723,11 @@ }, { "constant": false, - "id": 3871, + "id": 3976, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 3896, - "src": "7896:14:15", + "scope": 4001, + "src": "7896:14:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5764,10 +5735,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3870, + "id": 3975, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "7896:7:15", + "src": "7896:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5777,39 +5748,39 @@ "visibility": "internal" } ], - "src": "7878:33:15" + "src": "7878:33:18" }, "returnParameters": { - "id": 3873, + "id": 3978, "nodeType": "ParameterList", "parameters": [], - "src": "7921:0:15" + "src": "7921:0:18" }, - "scope": 3897, - "src": "7860:229:15", + "scope": 4002, + "src": "7860:229:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 3898, - "src": "1268:6823:15" + "scope": 4003, + "src": "1268:6823:18" } ], - "src": "0:8092:15" + "src": "0:8092:18" }, "legacyAST": { "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", "exportedSymbols": { "ERC20": [ - 3897 + 4002 ] }, - "id": 3898, + "id": 4003, "nodeType": "SourceUnit", "nodes": [ { - "id": 3494, + "id": 3599, "literals": [ "solidity", "^", @@ -5817,38 +5788,38 @@ ".0" ], "nodeType": "PragmaDirective", - "src": "0:23:15" + "src": "0:23:18" }, { "absolutePath": "openzeppelin-solidity/contracts/GSN/Context.sol", "file": "../../GSN/Context.sol", - "id": 3495, + "id": 3600, "nodeType": "ImportDirective", - "scope": 3898, - "sourceUnit": 3000, - "src": "25:31:15", + "scope": 4003, + "sourceUnit": 3105, + "src": "25:31:18", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "file": "./IERC20.sol", - "id": 3496, + "id": 3601, "nodeType": "ImportDirective", - "scope": 3898, - "sourceUnit": 4053, - "src": "57:22:15", + "scope": 4003, + "sourceUnit": 4158, + "src": "57:22:18", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", "file": "../../math/SafeMath.sol", - "id": 3497, + "id": 3602, "nodeType": "ImportDirective", - "scope": 3898, - "sourceUnit": 3375, - "src": "80:33:15", + "scope": 4003, + "sourceUnit": 3480, + "src": "80:33:18", "symbolAliases": [], "unitAlias": "" }, @@ -5858,76 +5829,76 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 3498, + "id": 3603, "name": "Context", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2999, - "src": "1286:7:15", + "referencedDeclaration": 3104, + "src": "1286:7:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_Context_$2999", + "typeIdentifier": "t_contract$_Context_$3104", "typeString": "contract Context" } }, - "id": 3499, + "id": 3604, "nodeType": "InheritanceSpecifier", - "src": "1286:7:15" + "src": "1286:7:18" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 3500, + "id": 3605, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 4052, - "src": "1295:6:15", + "referencedDeclaration": 4157, + "src": "1295:6:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$4052", + "typeIdentifier": "t_contract$_IERC20_$4157", "typeString": "contract IERC20" } }, - "id": 3501, + "id": 3606, "nodeType": "InheritanceSpecifier", - "src": "1295:6:15" + "src": "1295:6:18" } ], "contractDependencies": [ - 2999, - 4052 + 3104, + 4157 ], "contractKind": "contract", "documentation": "@dev Implementation of the {IERC20} interface.\n * This implementation is agnostic to the way tokens are created. This means\nthat a supply mechanism has to be added in a derived contract using {_mint}.\nFor a generic mechanism see {ERC20Mintable}.\n * TIP: For a detailed writeup see our guide\nhttps://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\nto implement supply mechanisms].\n * We have followed general OpenZeppelin guidelines: functions revert instead\nof returning `false` on failure. This behavior is nonetheless conventional\nand does not conflict with the expectations of ERC20 applications.\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\nThis allows applications to reconstruct the allowance for all accounts just\nby listening to said events. Other implementations of the EIP may not emit\nthese events, as it isn't required by the specification.\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\nfunctions have been added to mitigate the well-known issues around setting\nallowances. See {IERC20-approve}.", "fullyImplemented": true, - "id": 3897, + "id": 4002, "linearizedBaseContracts": [ - 3897, - 4052, - 2999 + 4002, + 4157, + 3104 ], "name": "ERC20", "nodeType": "ContractDefinition", "nodes": [ { - "id": 3504, + "id": 3609, "libraryName": { "contractScope": null, - "id": 3502, + "id": 3607, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3374, - "src": "1314:8:15", + "referencedDeclaration": 3479, + "src": "1314:8:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$3374", + "typeIdentifier": "t_contract$_SafeMath_$3479", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", - "src": "1308:27:15", + "src": "1308:27:18", "typeName": { - "id": 3503, + "id": 3608, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1327:7:15", + "src": "1327:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5936,11 +5907,11 @@ }, { "constant": false, - "id": 3508, + "id": 3613, "name": "_balances", "nodeType": "VariableDeclaration", - "scope": 3897, - "src": "1341:46:15", + "scope": 4002, + "src": "1341:46:18", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -5948,28 +5919,28 @@ "typeString": "mapping(address => uint256)" }, "typeName": { - "id": 3507, + "id": 3612, "keyType": { - "id": 3505, + "id": 3610, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1350:7:15", + "src": "1350:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "1341:28:15", + "src": "1341:28:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { - "id": 3506, + "id": 3611, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1361:7:15", + "src": "1361:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5981,11 +5952,11 @@ }, { "constant": false, - "id": 3514, + "id": 3619, "name": "_allowances", "nodeType": "VariableDeclaration", - "scope": 3897, - "src": "1394:69:15", + "scope": 4002, + "src": "1394:69:18", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -5993,46 +5964,46 @@ "typeString": "mapping(address => mapping(address => uint256))" }, "typeName": { - "id": 3513, + "id": 3618, "keyType": { - "id": 3509, + "id": 3614, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1403:7:15", + "src": "1403:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "1394:49:15", + "src": "1394:49:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" }, "valueType": { - "id": 3512, + "id": 3617, "keyType": { - "id": 3510, + "id": 3615, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1423:7:15", + "src": "1423:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "1414:28:15", + "src": "1414:28:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { - "id": 3511, + "id": 3616, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1434:7:15", + "src": "1434:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6045,11 +6016,11 @@ }, { "constant": false, - "id": 3516, + "id": 3621, "name": "_totalSupply", "nodeType": "VariableDeclaration", - "scope": 3897, - "src": "1470:28:15", + "scope": 4002, + "src": "1470:28:18", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -6057,10 +6028,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3515, + "id": 3620, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1470:7:15", + "src": "1470:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6071,55 +6042,55 @@ }, { "body": { - "id": 3523, + "id": 3628, "nodeType": "Block", - "src": "1612:36:15", + "src": "1612:36:18", "statements": [ { "expression": { "argumentTypes": null, - "id": 3521, + "id": 3626, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3516, - "src": "1629:12:15", + "referencedDeclaration": 3621, + "src": "1629:12:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 3520, - "id": 3522, + "functionReturnParameters": 3625, + "id": 3627, "nodeType": "Return", - "src": "1622:19:15" + "src": "1622:19:18" } ] }, "documentation": "@dev See {IERC20-totalSupply}.", - "id": 3524, + "id": 3629, "implemented": true, "kind": "function", "modifiers": [], "name": "totalSupply", "nodeType": "FunctionDefinition", "parameters": { - "id": 3517, + "id": 3622, "nodeType": "ParameterList", "parameters": [], - "src": "1579:2:15" + "src": "1579:2:18" }, "returnParameters": { - "id": 3520, + "id": 3625, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3519, + "id": 3624, "name": "", "nodeType": "VariableDeclaration", - "scope": 3524, - "src": "1603:7:15", + "scope": 3629, + "src": "1603:7:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6127,10 +6098,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3518, + "id": 3623, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1603:7:15", + "src": "1603:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6140,45 +6111,45 @@ "visibility": "internal" } ], - "src": "1602:9:15" + "src": "1602:9:18" }, - "scope": 3897, - "src": "1559:89:15", + "scope": 4002, + "src": "1559:89:18", "stateMutability": "view", - "superFunction": 3990, + "superFunction": 4095, "visibility": "public" }, { "body": { - "id": 3535, + "id": 3640, "nodeType": "Block", - "src": "1772:42:15", + "src": "1772:42:18", "statements": [ { "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 3531, + "id": 3636, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3508, - "src": "1789:9:15", + "referencedDeclaration": 3613, + "src": "1789:9:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 3533, + "id": 3638, "indexExpression": { "argumentTypes": null, - "id": 3532, + "id": 3637, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3526, - "src": "1799:7:15", + "referencedDeclaration": 3631, + "src": "1799:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6189,37 +6160,37 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1789:18:15", + "src": "1789:18:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 3530, - "id": 3534, + "functionReturnParameters": 3635, + "id": 3639, "nodeType": "Return", - "src": "1782:25:15" + "src": "1782:25:18" } ] }, "documentation": "@dev See {IERC20-balanceOf}.", - "id": 3536, + "id": 3641, "implemented": true, "kind": "function", "modifiers": [], "name": "balanceOf", "nodeType": "FunctionDefinition", "parameters": { - "id": 3527, + "id": 3632, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3526, + "id": 3631, "name": "account", "nodeType": "VariableDeclaration", - "scope": 3536, - "src": "1725:15:15", + "scope": 3641, + "src": "1725:15:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6227,10 +6198,10 @@ "typeString": "address" }, "typeName": { - "id": 3525, + "id": 3630, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1725:7:15", + "src": "1725:7:18", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -6241,19 +6212,19 @@ "visibility": "internal" } ], - "src": "1724:17:15" + "src": "1724:17:18" }, "returnParameters": { - "id": 3530, + "id": 3635, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3529, + "id": 3634, "name": "", "nodeType": "VariableDeclaration", - "scope": 3536, - "src": "1763:7:15", + "scope": 3641, + "src": "1763:7:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6261,10 +6232,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3528, + "id": 3633, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1763:7:15", + "src": "1763:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6274,19 +6245,19 @@ "visibility": "internal" } ], - "src": "1762:9:15" + "src": "1762:9:18" }, - "scope": 3897, - "src": "1706:108:15", + "scope": 4002, + "src": "1706:108:18", "stateMutability": "view", - "superFunction": 3997, + "superFunction": 4102, "visibility": "public" }, { "body": { - "id": 3554, + "id": 3659, "nodeType": "Block", - "src": "2092:80:15", + "src": "2092:80:18", "statements": [ { "expression": { @@ -6297,18 +6268,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 3546, + "id": 3651, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2987, - "src": "2112:10:15", + "referencedDeclaration": 3092, + "src": "2112:10:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 3547, + "id": 3652, "isConstant": false, "isLValue": false, "isPure": false, @@ -6316,7 +6287,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2112:12:15", + "src": "2112:12:18", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -6324,12 +6295,12 @@ }, { "argumentTypes": null, - "id": 3548, + "id": 3653, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3538, - "src": "2126:9:15", + "referencedDeclaration": 3643, + "src": "2126:9:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6337,12 +6308,12 @@ }, { "argumentTypes": null, - "id": 3549, + "id": 3654, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3540, - "src": "2137:6:15", + "referencedDeclaration": 3645, + "src": "2137:6:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6364,18 +6335,18 @@ "typeString": "uint256" } ], - "id": 3545, + "id": 3650, "name": "_transfer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3738, - "src": "2102:9:15", + "referencedDeclaration": 3843, + "src": "2102:9:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 3550, + "id": 3655, "isConstant": false, "isLValue": false, "isPure": false, @@ -6383,28 +6354,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2102:42:15", + "src": "2102:42:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3551, + "id": 3656, "nodeType": "ExpressionStatement", - "src": "2102:42:15" + "src": "2102:42:18" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 3552, + "id": 3657, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2161:4:15", + "src": "2161:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -6412,31 +6383,31 @@ }, "value": "true" }, - "functionReturnParameters": 3544, - "id": 3553, + "functionReturnParameters": 3649, + "id": 3658, "nodeType": "Return", - "src": "2154:11:15" + "src": "2154:11:18" } ] }, "documentation": "@dev See {IERC20-transfer}.\n * Requirements:\n * - `recipient` cannot be the zero address.\n- the caller must have a balance of at least `amount`.", - "id": 3555, + "id": 3660, "implemented": true, "kind": "function", "modifiers": [], "name": "transfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 3541, + "id": 3646, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3538, + "id": 3643, "name": "recipient", "nodeType": "VariableDeclaration", - "scope": 3555, - "src": "2035:17:15", + "scope": 3660, + "src": "2035:17:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6444,10 +6415,10 @@ "typeString": "address" }, "typeName": { - "id": 3537, + "id": 3642, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2035:7:15", + "src": "2035:7:18", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -6459,11 +6430,11 @@ }, { "constant": false, - "id": 3540, + "id": 3645, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 3555, - "src": "2054:14:15", + "scope": 3660, + "src": "2054:14:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6471,10 +6442,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3539, + "id": 3644, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2054:7:15", + "src": "2054:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6484,19 +6455,19 @@ "visibility": "internal" } ], - "src": "2034:35:15" + "src": "2034:35:18" }, "returnParameters": { - "id": 3544, + "id": 3649, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3543, + "id": 3648, "name": "", "nodeType": "VariableDeclaration", - "scope": 3555, - "src": "2086:4:15", + "scope": 3660, + "src": "2086:4:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6504,10 +6475,10 @@ "typeString": "bool" }, "typeName": { - "id": 3542, + "id": 3647, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2086:4:15", + "src": "2086:4:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6517,19 +6488,19 @@ "visibility": "internal" } ], - "src": "2085:6:15" + "src": "2085:6:18" }, - "scope": 3897, - "src": "2017:155:15", + "scope": 4002, + "src": "2017:155:18", "stateMutability": "nonpayable", - "superFunction": 4006, + "superFunction": 4111, "visibility": "public" }, { "body": { - "id": 3570, + "id": 3675, "nodeType": "Block", - "src": "2311:51:15", + "src": "2311:51:18", "statements": [ { "expression": { @@ -6538,26 +6509,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 3564, + "id": 3669, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3514, - "src": "2328:11:15", + "referencedDeclaration": 3619, + "src": "2328:11:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, - "id": 3566, + "id": 3671, "indexExpression": { "argumentTypes": null, - "id": 3565, + "id": 3670, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3557, - "src": "2340:5:15", + "referencedDeclaration": 3662, + "src": "2340:5:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6568,21 +6539,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2328:18:15", + "src": "2328:18:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 3568, + "id": 3673, "indexExpression": { "argumentTypes": null, - "id": 3567, + "id": 3672, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3559, - "src": "2347:7:15", + "referencedDeclaration": 3664, + "src": "2347:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6593,37 +6564,37 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2328:27:15", + "src": "2328:27:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 3563, - "id": 3569, + "functionReturnParameters": 3668, + "id": 3674, "nodeType": "Return", - "src": "2321:34:15" + "src": "2321:34:18" } ] }, "documentation": "@dev See {IERC20-allowance}.", - "id": 3571, + "id": 3676, "implemented": true, "kind": "function", "modifiers": [], "name": "allowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 3560, + "id": 3665, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3557, + "id": 3662, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 3571, - "src": "2249:13:15", + "scope": 3676, + "src": "2249:13:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6631,10 +6602,10 @@ "typeString": "address" }, "typeName": { - "id": 3556, + "id": 3661, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2249:7:15", + "src": "2249:7:18", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -6646,11 +6617,11 @@ }, { "constant": false, - "id": 3559, + "id": 3664, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 3571, - "src": "2264:15:15", + "scope": 3676, + "src": "2264:15:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6658,10 +6629,10 @@ "typeString": "address" }, "typeName": { - "id": 3558, + "id": 3663, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2264:7:15", + "src": "2264:7:18", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -6672,19 +6643,19 @@ "visibility": "internal" } ], - "src": "2248:32:15" + "src": "2248:32:18" }, "returnParameters": { - "id": 3563, + "id": 3668, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3562, + "id": 3667, "name": "", "nodeType": "VariableDeclaration", - "scope": 3571, - "src": "2302:7:15", + "scope": 3676, + "src": "2302:7:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6692,10 +6663,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3561, + "id": 3666, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2302:7:15", + "src": "2302:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6705,19 +6676,19 @@ "visibility": "internal" } ], - "src": "2301:9:15" + "src": "2301:9:18" }, - "scope": 3897, - "src": "2230:132:15", + "scope": 4002, + "src": "2230:132:18", "stateMutability": "view", - "superFunction": 4015, + "superFunction": 4120, "visibility": "public" }, { "body": { - "id": 3589, + "id": 3694, "nodeType": "Block", - "src": "2572:77:15", + "src": "2572:77:18", "statements": [ { "expression": { @@ -6728,18 +6699,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 3581, + "id": 3686, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2987, - "src": "2591:10:15", + "referencedDeclaration": 3092, + "src": "2591:10:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 3582, + "id": 3687, "isConstant": false, "isLValue": false, "isPure": false, @@ -6747,7 +6718,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2591:12:15", + "src": "2591:12:18", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -6755,12 +6726,12 @@ }, { "argumentTypes": null, - "id": 3583, + "id": 3688, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3573, - "src": "2605:7:15", + "referencedDeclaration": 3678, + "src": "2605:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6768,12 +6739,12 @@ }, { "argumentTypes": null, - "id": 3584, + "id": 3689, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3575, - "src": "2614:6:15", + "referencedDeclaration": 3680, + "src": "2614:6:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6795,18 +6766,18 @@ "typeString": "uint256" } ], - "id": 3580, + "id": 3685, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3867, - "src": "2582:8:15", + "referencedDeclaration": 3972, + "src": "2582:8:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 3585, + "id": 3690, "isConstant": false, "isLValue": false, "isPure": false, @@ -6814,28 +6785,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2582:39:15", + "src": "2582:39:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3586, + "id": 3691, "nodeType": "ExpressionStatement", - "src": "2582:39:15" + "src": "2582:39:18" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 3587, + "id": 3692, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2638:4:15", + "src": "2638:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -6843,31 +6814,31 @@ }, "value": "true" }, - "functionReturnParameters": 3579, - "id": 3588, + "functionReturnParameters": 3684, + "id": 3693, "nodeType": "Return", - "src": "2631:11:15" + "src": "2631:11:18" } ] }, "documentation": "@dev See {IERC20-approve}.\n * Requirements:\n * - `spender` cannot be the zero address.", - "id": 3590, + "id": 3695, "implemented": true, "kind": "function", "modifiers": [], "name": "approve", "nodeType": "FunctionDefinition", "parameters": { - "id": 3576, + "id": 3681, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3573, + "id": 3678, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 3590, - "src": "2517:15:15", + "scope": 3695, + "src": "2517:15:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6875,10 +6846,10 @@ "typeString": "address" }, "typeName": { - "id": 3572, + "id": 3677, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2517:7:15", + "src": "2517:7:18", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -6890,11 +6861,11 @@ }, { "constant": false, - "id": 3575, + "id": 3680, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 3590, - "src": "2534:14:15", + "scope": 3695, + "src": "2534:14:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6902,10 +6873,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3574, + "id": 3679, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2534:7:15", + "src": "2534:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6915,19 +6886,19 @@ "visibility": "internal" } ], - "src": "2516:33:15" + "src": "2516:33:18" }, "returnParameters": { - "id": 3579, + "id": 3684, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3578, + "id": 3683, "name": "", "nodeType": "VariableDeclaration", - "scope": 3590, - "src": "2566:4:15", + "scope": 3695, + "src": "2566:4:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6935,10 +6906,10 @@ "typeString": "bool" }, "typeName": { - "id": 3577, + "id": 3682, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2566:4:15", + "src": "2566:4:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6948,19 +6919,19 @@ "visibility": "internal" } ], - "src": "2565:6:15" + "src": "2565:6:18" }, - "scope": 3897, - "src": "2500:149:15", + "scope": 4002, + "src": "2500:149:18", "stateMutability": "nonpayable", - "superFunction": 4024, + "superFunction": 4129, "visibility": "public" }, { "body": { - "id": 3625, + "id": 3730, "nodeType": "Block", - "src": "3202:205:15", + "src": "3202:205:18", "statements": [ { "expression": { @@ -6968,12 +6939,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3602, + "id": 3707, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3592, - "src": "3222:6:15", + "referencedDeclaration": 3697, + "src": "3222:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6981,12 +6952,12 @@ }, { "argumentTypes": null, - "id": 3603, + "id": 3708, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3594, - "src": "3230:9:15", + "referencedDeclaration": 3699, + "src": "3230:9:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6994,12 +6965,12 @@ }, { "argumentTypes": null, - "id": 3604, + "id": 3709, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3596, - "src": "3241:6:15", + "referencedDeclaration": 3701, + "src": "3241:6:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7021,18 +6992,18 @@ "typeString": "uint256" } ], - "id": 3601, + "id": 3706, "name": "_transfer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3738, - "src": "3212:9:15", + "referencedDeclaration": 3843, + "src": "3212:9:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 3605, + "id": 3710, "isConstant": false, "isLValue": false, "isPure": false, @@ -7040,15 +7011,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3212:36:15", + "src": "3212:36:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3606, + "id": 3711, "nodeType": "ExpressionStatement", - "src": "3212:36:15" + "src": "3212:36:18" }, { "expression": { @@ -7056,12 +7027,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3608, + "id": 3713, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3592, - "src": "3267:6:15", + "referencedDeclaration": 3697, + "src": "3267:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7072,18 +7043,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 3609, + "id": 3714, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2987, - "src": "3275:10:15", + "referencedDeclaration": 3092, + "src": "3275:10:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 3610, + "id": 3715, "isConstant": false, "isLValue": false, "isPure": false, @@ -7091,7 +7062,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3275:12:15", + "src": "3275:12:18", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -7102,12 +7073,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3618, + "id": 3723, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3596, - "src": "3327:6:15", + "referencedDeclaration": 3701, + "src": "3327:6:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7116,14 +7087,14 @@ { "argumentTypes": null, "hexValue": "45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365", - "id": 3619, + "id": 3724, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3335:42:15", + "src": "3335:42:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330", @@ -7149,26 +7120,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 3611, + "id": 3716, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3514, - "src": "3289:11:15", + "referencedDeclaration": 3619, + "src": "3289:11:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, - "id": 3613, + "id": 3718, "indexExpression": { "argumentTypes": null, - "id": 3612, + "id": 3717, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3592, - "src": "3301:6:15", + "referencedDeclaration": 3697, + "src": "3301:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7179,30 +7150,30 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3289:19:15", + "src": "3289:19:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 3616, + "id": 3721, "indexExpression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 3614, + "id": 3719, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2987, - "src": "3309:10:15", + "referencedDeclaration": 3092, + "src": "3309:10:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 3615, + "id": 3720, "isConstant": false, "isLValue": false, "isPure": false, @@ -7210,7 +7181,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3309:12:15", + "src": "3309:12:18", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -7221,27 +7192,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3289:33:15", + "src": "3289:33:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 3617, + "id": 3722, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 3257, - "src": "3289:37:15", + "referencedDeclaration": 3362, + "src": "3289:37:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" } }, - "id": 3620, + "id": 3725, "isConstant": false, "isLValue": false, "isPure": false, @@ -7249,7 +7220,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3289:89:15", + "src": "3289:89:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7271,18 +7242,18 @@ "typeString": "uint256" } ], - "id": 3607, + "id": 3712, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3867, - "src": "3258:8:15", + "referencedDeclaration": 3972, + "src": "3258:8:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 3621, + "id": 3726, "isConstant": false, "isLValue": false, "isPure": false, @@ -7290,28 +7261,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3258:121:15", + "src": "3258:121:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3622, + "id": 3727, "nodeType": "ExpressionStatement", - "src": "3258:121:15" + "src": "3258:121:18" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 3623, + "id": 3728, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3396:4:15", + "src": "3396:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -7319,31 +7290,31 @@ }, "value": "true" }, - "functionReturnParameters": 3600, - "id": 3624, + "functionReturnParameters": 3705, + "id": 3729, "nodeType": "Return", - "src": "3389:11:15" + "src": "3389:11:18" } ] }, "documentation": "@dev See {IERC20-transferFrom}.\n * Emits an {Approval} event indicating the updated allowance. This is not\nrequired by the EIP. See the note at the beginning of {ERC20};\n * Requirements:\n- `sender` and `recipient` cannot be the zero address.\n- `sender` must have a balance of at least `amount`.\n- the caller must have allowance for `sender`'s tokens of at least\n`amount`.", - "id": 3626, + "id": 3731, "implemented": true, "kind": "function", "modifiers": [], "name": "transferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 3597, + "id": 3702, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3592, + "id": 3697, "name": "sender", "nodeType": "VariableDeclaration", - "scope": 3626, - "src": "3129:14:15", + "scope": 3731, + "src": "3129:14:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7351,10 +7322,10 @@ "typeString": "address" }, "typeName": { - "id": 3591, + "id": 3696, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3129:7:15", + "src": "3129:7:18", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -7366,11 +7337,11 @@ }, { "constant": false, - "id": 3594, + "id": 3699, "name": "recipient", "nodeType": "VariableDeclaration", - "scope": 3626, - "src": "3145:17:15", + "scope": 3731, + "src": "3145:17:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7378,10 +7349,10 @@ "typeString": "address" }, "typeName": { - "id": 3593, + "id": 3698, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3145:7:15", + "src": "3145:7:18", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -7393,11 +7364,11 @@ }, { "constant": false, - "id": 3596, + "id": 3701, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 3626, - "src": "3164:14:15", + "scope": 3731, + "src": "3164:14:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7405,10 +7376,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3595, + "id": 3700, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3164:7:15", + "src": "3164:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7418,19 +7389,19 @@ "visibility": "internal" } ], - "src": "3128:51:15" + "src": "3128:51:18" }, "returnParameters": { - "id": 3600, + "id": 3705, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3599, + "id": 3704, "name": "", "nodeType": "VariableDeclaration", - "scope": 3626, - "src": "3196:4:15", + "scope": 3731, + "src": "3196:4:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7438,10 +7409,10 @@ "typeString": "bool" }, "typeName": { - "id": 3598, + "id": 3703, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3196:4:15", + "src": "3196:4:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7451,19 +7422,19 @@ "visibility": "internal" } ], - "src": "3195:6:15" + "src": "3195:6:18" }, - "scope": 3897, - "src": "3107:300:15", + "scope": 4002, + "src": "3107:300:18", "stateMutability": "nonpayable", - "superFunction": 4035, + "superFunction": 4140, "visibility": "public" }, { "body": { - "id": 3652, + "id": 3757, "nodeType": "Block", - "src": "3888:121:15", + "src": "3888:121:18", "statements": [ { "expression": { @@ -7474,18 +7445,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 3636, + "id": 3741, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2987, - "src": "3907:10:15", + "referencedDeclaration": 3092, + "src": "3907:10:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 3637, + "id": 3742, "isConstant": false, "isLValue": false, "isPure": false, @@ -7493,7 +7464,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3907:12:15", + "src": "3907:12:18", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -7501,12 +7472,12 @@ }, { "argumentTypes": null, - "id": 3638, + "id": 3743, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3628, - "src": "3921:7:15", + "referencedDeclaration": 3733, + "src": "3921:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7517,12 +7488,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3646, + "id": 3751, "name": "addedValue", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3630, - "src": "3969:10:15", + "referencedDeclaration": 3735, + "src": "3969:10:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7542,35 +7513,35 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 3639, + "id": 3744, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3514, - "src": "3930:11:15", + "referencedDeclaration": 3619, + "src": "3930:11:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, - "id": 3642, + "id": 3747, "indexExpression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 3640, + "id": 3745, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2987, - "src": "3942:10:15", + "referencedDeclaration": 3092, + "src": "3942:10:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 3641, + "id": 3746, "isConstant": false, "isLValue": false, "isPure": false, @@ -7578,7 +7549,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3942:12:15", + "src": "3942:12:18", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -7589,21 +7560,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3930:25:15", + "src": "3930:25:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 3644, + "id": 3749, "indexExpression": { "argumentTypes": null, - "id": 3643, + "id": 3748, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3628, - "src": "3956:7:15", + "referencedDeclaration": 3733, + "src": "3956:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7614,27 +7585,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3930:34:15", + "src": "3930:34:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 3645, + "id": 3750, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 3214, - "src": "3930:38:15", + "referencedDeclaration": 3319, + "src": "3930:38:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 3647, + "id": 3752, "isConstant": false, "isLValue": false, "isPure": false, @@ -7642,7 +7613,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3930:50:15", + "src": "3930:50:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7664,18 +7635,18 @@ "typeString": "uint256" } ], - "id": 3635, + "id": 3740, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3867, - "src": "3898:8:15", + "referencedDeclaration": 3972, + "src": "3898:8:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 3648, + "id": 3753, "isConstant": false, "isLValue": false, "isPure": false, @@ -7683,28 +7654,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3898:83:15", + "src": "3898:83:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3649, + "id": 3754, "nodeType": "ExpressionStatement", - "src": "3898:83:15" + "src": "3898:83:18" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 3650, + "id": 3755, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3998:4:15", + "src": "3998:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -7712,31 +7683,31 @@ }, "value": "true" }, - "functionReturnParameters": 3634, - "id": 3651, + "functionReturnParameters": 3739, + "id": 3756, "nodeType": "Return", - "src": "3991:11:15" + "src": "3991:11:18" } ] }, "documentation": "@dev Atomically increases the allowance granted to `spender` by the caller.\n * This is an alternative to {approve} that can be used as a mitigation for\nproblems described in {IERC20-approve}.\n * Emits an {Approval} event indicating the updated allowance.\n * Requirements:\n * - `spender` cannot be the zero address.", - "id": 3653, + "id": 3758, "implemented": true, "kind": "function", "modifiers": [], "name": "increaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 3631, + "id": 3736, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3628, + "id": 3733, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 3653, - "src": "3829:15:15", + "scope": 3758, + "src": "3829:15:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7744,10 +7715,10 @@ "typeString": "address" }, "typeName": { - "id": 3627, + "id": 3732, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3829:7:15", + "src": "3829:7:18", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -7759,11 +7730,11 @@ }, { "constant": false, - "id": 3630, + "id": 3735, "name": "addedValue", "nodeType": "VariableDeclaration", - "scope": 3653, - "src": "3846:18:15", + "scope": 3758, + "src": "3846:18:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7771,10 +7742,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3629, + "id": 3734, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3846:7:15", + "src": "3846:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7784,19 +7755,19 @@ "visibility": "internal" } ], - "src": "3828:37:15" + "src": "3828:37:18" }, "returnParameters": { - "id": 3634, + "id": 3739, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3633, + "id": 3738, "name": "", "nodeType": "VariableDeclaration", - "scope": 3653, - "src": "3882:4:15", + "scope": 3758, + "src": "3882:4:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7804,10 +7775,10 @@ "typeString": "bool" }, "typeName": { - "id": 3632, + "id": 3737, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3882:4:15", + "src": "3882:4:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7817,19 +7788,19 @@ "visibility": "internal" } ], - "src": "3881:6:15" + "src": "3881:6:18" }, - "scope": 3897, - "src": "3802:207:15", + "scope": 4002, + "src": "3802:207:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 3680, + "id": 3785, "nodeType": "Block", - "src": "4587:167:15", + "src": "4587:167:18", "statements": [ { "expression": { @@ -7840,18 +7811,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 3663, + "id": 3768, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2987, - "src": "4606:10:15", + "referencedDeclaration": 3092, + "src": "4606:10:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 3664, + "id": 3769, "isConstant": false, "isLValue": false, "isPure": false, @@ -7859,7 +7830,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4606:12:15", + "src": "4606:12:18", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -7867,12 +7838,12 @@ }, { "argumentTypes": null, - "id": 3665, + "id": 3770, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3655, - "src": "4620:7:15", + "referencedDeclaration": 3760, + "src": "4620:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7883,12 +7854,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3673, + "id": 3778, "name": "subtractedValue", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3657, - "src": "4668:15:15", + "referencedDeclaration": 3762, + "src": "4668:15:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7897,14 +7868,14 @@ { "argumentTypes": null, "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f", - "id": 3674, + "id": 3779, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4685:39:15", + "src": "4685:39:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8", @@ -7930,35 +7901,35 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 3666, + "id": 3771, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3514, - "src": "4629:11:15", + "referencedDeclaration": 3619, + "src": "4629:11:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, - "id": 3669, + "id": 3774, "indexExpression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 3667, + "id": 3772, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2987, - "src": "4641:10:15", + "referencedDeclaration": 3092, + "src": "4641:10:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 3668, + "id": 3773, "isConstant": false, "isLValue": false, "isPure": false, @@ -7966,7 +7937,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4641:12:15", + "src": "4641:12:18", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -7977,21 +7948,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4629:25:15", + "src": "4629:25:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 3671, + "id": 3776, "indexExpression": { "argumentTypes": null, - "id": 3670, + "id": 3775, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3655, - "src": "4655:7:15", + "referencedDeclaration": 3760, + "src": "4655:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8002,27 +7973,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4629:34:15", + "src": "4629:34:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 3672, + "id": 3777, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 3257, - "src": "4629:38:15", + "referencedDeclaration": 3362, + "src": "4629:38:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" } }, - "id": 3675, + "id": 3780, "isConstant": false, "isLValue": false, "isPure": false, @@ -8030,7 +8001,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4629:96:15", + "src": "4629:96:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8052,18 +8023,18 @@ "typeString": "uint256" } ], - "id": 3662, + "id": 3767, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3867, - "src": "4597:8:15", + "referencedDeclaration": 3972, + "src": "4597:8:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 3676, + "id": 3781, "isConstant": false, "isLValue": false, "isPure": false, @@ -8071,28 +8042,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4597:129:15", + "src": "4597:129:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3677, + "id": 3782, "nodeType": "ExpressionStatement", - "src": "4597:129:15" + "src": "4597:129:18" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 3678, + "id": 3783, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "4743:4:15", + "src": "4743:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -8100,31 +8071,31 @@ }, "value": "true" }, - "functionReturnParameters": 3661, - "id": 3679, + "functionReturnParameters": 3766, + "id": 3784, "nodeType": "Return", - "src": "4736:11:15" + "src": "4736:11:18" } ] }, "documentation": "@dev Atomically decreases the allowance granted to `spender` by the caller.\n * This is an alternative to {approve} that can be used as a mitigation for\nproblems described in {IERC20-approve}.\n * Emits an {Approval} event indicating the updated allowance.\n * Requirements:\n * - `spender` cannot be the zero address.\n- `spender` must have allowance for the caller of at least\n`subtractedValue`.", - "id": 3681, + "id": 3786, "implemented": true, "kind": "function", "modifiers": [], "name": "decreaseAllowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 3658, + "id": 3763, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3655, + "id": 3760, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 3681, - "src": "4523:15:15", + "scope": 3786, + "src": "4523:15:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8132,10 +8103,10 @@ "typeString": "address" }, "typeName": { - "id": 3654, + "id": 3759, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4523:7:15", + "src": "4523:7:18", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8147,11 +8118,11 @@ }, { "constant": false, - "id": 3657, + "id": 3762, "name": "subtractedValue", "nodeType": "VariableDeclaration", - "scope": 3681, - "src": "4540:23:15", + "scope": 3786, + "src": "4540:23:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8159,10 +8130,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3656, + "id": 3761, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4540:7:15", + "src": "4540:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8172,19 +8143,19 @@ "visibility": "internal" } ], - "src": "4522:42:15" + "src": "4522:42:18" }, "returnParameters": { - "id": 3661, + "id": 3766, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3660, + "id": 3765, "name": "", "nodeType": "VariableDeclaration", - "scope": 3681, - "src": "4581:4:15", + "scope": 3786, + "src": "4581:4:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8192,10 +8163,10 @@ "typeString": "bool" }, "typeName": { - "id": 3659, + "id": 3764, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4581:4:15", + "src": "4581:4:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8205,19 +8176,19 @@ "visibility": "internal" } ], - "src": "4580:6:15" + "src": "4580:6:18" }, - "scope": 3897, - "src": "4496:258:15", + "scope": 4002, + "src": "4496:258:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 3737, + "id": 3842, "nodeType": "Block", - "src": "5307:385:15", + "src": "5307:385:18", "statements": [ { "expression": { @@ -8229,19 +8200,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 3695, + "id": 3800, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3691, + "id": 3796, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3683, - "src": "5325:6:15", + "referencedDeclaration": 3788, + "src": "5325:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8255,14 +8226,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 3693, + "id": 3798, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5343:1:15", + "src": "5343:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -8278,20 +8249,20 @@ "typeString": "int_const 0" } ], - "id": 3692, + "id": 3797, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "5335:7:15", + "src": "5335:7:18", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 3694, + "id": 3799, "isConstant": false, "isLValue": false, "isPure": true, @@ -8299,13 +8270,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5335:10:15", + "src": "5335:10:18", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "src": "5325:20:15", + "src": "5325:20:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8314,14 +8285,14 @@ { "argumentTypes": null, "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373", - "id": 3696, + "id": 3801, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5347:39:15", + "src": "5347:39:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea", @@ -8341,21 +8312,21 @@ "typeString": "literal_string \"ERC20: transfer from the zero address\"" } ], - "id": 3690, + "id": 3795, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "5317:7:15", + "referencedDeclaration": 4176, + "src": "5317:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 3697, + "id": 3802, "isConstant": false, "isLValue": false, "isPure": false, @@ -8363,15 +8334,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5317:70:15", + "src": "5317:70:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3698, + "id": 3803, "nodeType": "ExpressionStatement", - "src": "5317:70:15" + "src": "5317:70:18" }, { "expression": { @@ -8383,19 +8354,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 3704, + "id": 3809, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3700, + "id": 3805, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3685, - "src": "5405:9:15", + "referencedDeclaration": 3790, + "src": "5405:9:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8409,14 +8380,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 3702, + "id": 3807, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5426:1:15", + "src": "5426:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -8432,20 +8403,20 @@ "typeString": "int_const 0" } ], - "id": 3701, + "id": 3806, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "5418:7:15", + "src": "5418:7:18", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 3703, + "id": 3808, "isConstant": false, "isLValue": false, "isPure": true, @@ -8453,13 +8424,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5418:10:15", + "src": "5418:10:18", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "src": "5405:23:15", + "src": "5405:23:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8468,14 +8439,14 @@ { "argumentTypes": null, "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373", - "id": 3705, + "id": 3810, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5430:37:15", + "src": "5430:37:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f", @@ -8495,21 +8466,21 @@ "typeString": "literal_string \"ERC20: transfer to the zero address\"" } ], - "id": 3699, + "id": 3804, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "5397:7:15", + "referencedDeclaration": 4176, + "src": "5397:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 3706, + "id": 3811, "isConstant": false, "isLValue": false, "isPure": false, @@ -8517,20 +8488,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5397:71:15", + "src": "5397:71:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3707, + "id": 3812, "nodeType": "ExpressionStatement", - "src": "5397:71:15" + "src": "5397:71:18" }, { "expression": { "argumentTypes": null, - "id": 3718, + "id": 3823, "isConstant": false, "isLValue": false, "isPure": false, @@ -8539,26 +8510,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 3708, + "id": 3813, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3508, - "src": "5479:9:15", + "referencedDeclaration": 3613, + "src": "5479:9:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 3710, + "id": 3815, "indexExpression": { "argumentTypes": null, - "id": 3709, + "id": 3814, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3683, - "src": "5489:6:15", + "referencedDeclaration": 3788, + "src": "5489:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8569,7 +8540,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "5479:17:15", + "src": "5479:17:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8582,12 +8553,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3715, + "id": 3820, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3687, - "src": "5521:6:15", + "referencedDeclaration": 3792, + "src": "5521:6:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8596,14 +8567,14 @@ { "argumentTypes": null, "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365", - "id": 3716, + "id": 3821, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "5529:40:15", + "src": "5529:40:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6", @@ -8627,26 +8598,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 3711, + "id": 3816, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3508, - "src": "5499:9:15", + "referencedDeclaration": 3613, + "src": "5499:9:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 3713, + "id": 3818, "indexExpression": { "argumentTypes": null, - "id": 3712, + "id": 3817, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3683, - "src": "5509:6:15", + "referencedDeclaration": 3788, + "src": "5509:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8657,27 +8628,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5499:17:15", + "src": "5499:17:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 3714, + "id": 3819, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 3257, - "src": "5499:21:15", + "referencedDeclaration": 3362, + "src": "5499:21:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" } }, - "id": 3717, + "id": 3822, "isConstant": false, "isLValue": false, "isPure": false, @@ -8685,26 +8656,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5499:71:15", + "src": "5499:71:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5479:91:15", + "src": "5479:91:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 3719, + "id": 3824, "nodeType": "ExpressionStatement", - "src": "5479:91:15" + "src": "5479:91:18" }, { "expression": { "argumentTypes": null, - "id": 3729, + "id": 3834, "isConstant": false, "isLValue": false, "isPure": false, @@ -8713,26 +8684,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 3720, + "id": 3825, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3508, - "src": "5580:9:15", + "referencedDeclaration": 3613, + "src": "5580:9:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 3722, + "id": 3827, "indexExpression": { "argumentTypes": null, - "id": 3721, + "id": 3826, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3685, - "src": "5590:9:15", + "referencedDeclaration": 3790, + "src": "5590:9:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8743,7 +8714,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "5580:20:15", + "src": "5580:20:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8756,12 +8727,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3727, + "id": 3832, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3687, - "src": "5628:6:15", + "referencedDeclaration": 3792, + "src": "5628:6:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8779,26 +8750,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 3723, + "id": 3828, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3508, - "src": "5603:9:15", + "referencedDeclaration": 3613, + "src": "5603:9:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 3725, + "id": 3830, "indexExpression": { "argumentTypes": null, - "id": 3724, + "id": 3829, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3685, - "src": "5613:9:15", + "referencedDeclaration": 3790, + "src": "5613:9:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8809,27 +8780,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5603:20:15", + "src": "5603:20:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 3726, + "id": 3831, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 3214, - "src": "5603:24:15", + "referencedDeclaration": 3319, + "src": "5603:24:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 3728, + "id": 3833, "isConstant": false, "isLValue": false, "isPure": false, @@ -8837,21 +8808,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5603:32:15", + "src": "5603:32:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5580:55:15", + "src": "5580:55:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 3730, + "id": 3835, "nodeType": "ExpressionStatement", - "src": "5580:55:15" + "src": "5580:55:18" }, { "eventCall": { @@ -8859,12 +8830,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3732, + "id": 3837, "name": "sender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3683, - "src": "5659:6:15", + "referencedDeclaration": 3788, + "src": "5659:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8872,12 +8843,12 @@ }, { "argumentTypes": null, - "id": 3733, + "id": 3838, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3685, - "src": "5667:9:15", + "referencedDeclaration": 3790, + "src": "5667:9:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8885,12 +8856,12 @@ }, { "argumentTypes": null, - "id": 3734, + "id": 3839, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3687, - "src": "5678:6:15", + "referencedDeclaration": 3792, + "src": "5678:6:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8912,18 +8883,18 @@ "typeString": "uint256" } ], - "id": 3731, + "id": 3836, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4043, - "src": "5650:8:15", + "referencedDeclaration": 4148, + "src": "5650:8:18", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 3735, + "id": 3840, "isConstant": false, "isLValue": false, "isPure": false, @@ -8931,36 +8902,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5650:35:15", + "src": "5650:35:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3736, + "id": 3841, "nodeType": "EmitStatement", - "src": "5645:40:15" + "src": "5645:40:18" } ] }, "documentation": "@dev Moves tokens `amount` from `sender` to `recipient`.\n * This is internal function is equivalent to {transfer}, and can be used to\ne.g. implement automatic token fees, slashing mechanisms, etc.\n * Emits a {Transfer} event.\n * Requirements:\n * - `sender` cannot be the zero address.\n- `recipient` cannot be the zero address.\n- `sender` must have a balance of at least `amount`.", - "id": 3738, + "id": 3843, "implemented": true, "kind": "function", "modifiers": [], "name": "_transfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 3688, + "id": 3793, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3683, + "id": 3788, "name": "sender", "nodeType": "VariableDeclaration", - "scope": 3738, - "src": "5247:14:15", + "scope": 3843, + "src": "5247:14:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8968,10 +8939,10 @@ "typeString": "address" }, "typeName": { - "id": 3682, + "id": 3787, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5247:7:15", + "src": "5247:7:18", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8983,11 +8954,11 @@ }, { "constant": false, - "id": 3685, + "id": 3790, "name": "recipient", "nodeType": "VariableDeclaration", - "scope": 3738, - "src": "5263:17:15", + "scope": 3843, + "src": "5263:17:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8995,10 +8966,10 @@ "typeString": "address" }, "typeName": { - "id": 3684, + "id": 3789, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5263:7:15", + "src": "5263:7:18", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9010,11 +8981,11 @@ }, { "constant": false, - "id": 3687, + "id": 3792, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 3738, - "src": "5282:14:15", + "scope": 3843, + "src": "5282:14:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9022,10 +8993,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3686, + "id": 3791, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5282:7:15", + "src": "5282:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9035,25 +9006,25 @@ "visibility": "internal" } ], - "src": "5246:51:15" + "src": "5246:51:18" }, "returnParameters": { - "id": 3689, + "id": 3794, "nodeType": "ParameterList", "parameters": [], - "src": "5307:0:15" + "src": "5307:0:18" }, - "scope": 3897, - "src": "5228:464:15", + "scope": 4002, + "src": "5228:464:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 3780, + "id": 3885, "nodeType": "Block", - "src": "6019:245:15", + "src": "6019:245:18", "statements": [ { "expression": { @@ -9065,19 +9036,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 3750, + "id": 3855, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3746, + "id": 3851, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3740, - "src": "6037:7:15", + "referencedDeclaration": 3845, + "src": "6037:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9091,14 +9062,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 3748, + "id": 3853, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6056:1:15", + "src": "6056:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -9114,20 +9085,20 @@ "typeString": "int_const 0" } ], - "id": 3747, + "id": 3852, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6048:7:15", + "src": "6048:7:18", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 3749, + "id": 3854, "isConstant": false, "isLValue": false, "isPure": true, @@ -9135,13 +9106,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6048:10:15", + "src": "6048:10:18", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "src": "6037:21:15", + "src": "6037:21:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9150,14 +9121,14 @@ { "argumentTypes": null, "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373", - "id": 3751, + "id": 3856, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "6060:33:15", + "src": "6060:33:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e", @@ -9177,21 +9148,21 @@ "typeString": "literal_string \"ERC20: mint to the zero address\"" } ], - "id": 3745, + "id": 3850, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "6029:7:15", + "referencedDeclaration": 4176, + "src": "6029:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 3752, + "id": 3857, "isConstant": false, "isLValue": false, "isPure": false, @@ -9199,32 +9170,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6029:65:15", + "src": "6029:65:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3753, + "id": 3858, "nodeType": "ExpressionStatement", - "src": "6029:65:15" + "src": "6029:65:18" }, { "expression": { "argumentTypes": null, - "id": 3759, + "id": 3864, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 3754, + "id": 3859, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3516, - "src": "6105:12:15", + "referencedDeclaration": 3621, + "src": "6105:12:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9237,12 +9208,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3757, + "id": 3862, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3742, - "src": "6137:6:15", + "referencedDeclaration": 3847, + "src": "6137:6:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9258,32 +9229,32 @@ ], "expression": { "argumentTypes": null, - "id": 3755, + "id": 3860, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3516, - "src": "6120:12:15", + "referencedDeclaration": 3621, + "src": "6120:12:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 3756, + "id": 3861, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 3214, - "src": "6120:16:15", + "referencedDeclaration": 3319, + "src": "6120:16:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 3758, + "id": 3863, "isConstant": false, "isLValue": false, "isPure": false, @@ -9291,26 +9262,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6120:24:15", + "src": "6120:24:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "6105:39:15", + "src": "6105:39:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 3760, + "id": 3865, "nodeType": "ExpressionStatement", - "src": "6105:39:15" + "src": "6105:39:18" }, { "expression": { "argumentTypes": null, - "id": 3770, + "id": 3875, "isConstant": false, "isLValue": false, "isPure": false, @@ -9319,26 +9290,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 3761, + "id": 3866, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3508, - "src": "6154:9:15", + "referencedDeclaration": 3613, + "src": "6154:9:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 3763, + "id": 3868, "indexExpression": { "argumentTypes": null, - "id": 3762, + "id": 3867, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3740, - "src": "6164:7:15", + "referencedDeclaration": 3845, + "src": "6164:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9349,7 +9320,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "6154:18:15", + "src": "6154:18:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9362,12 +9333,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3768, + "id": 3873, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3742, - "src": "6198:6:15", + "referencedDeclaration": 3847, + "src": "6198:6:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9385,26 +9356,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 3764, + "id": 3869, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3508, - "src": "6175:9:15", + "referencedDeclaration": 3613, + "src": "6175:9:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 3766, + "id": 3871, "indexExpression": { "argumentTypes": null, - "id": 3765, + "id": 3870, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3740, - "src": "6185:7:15", + "referencedDeclaration": 3845, + "src": "6185:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9415,27 +9386,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "6175:18:15", + "src": "6175:18:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 3767, + "id": 3872, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 3214, - "src": "6175:22:15", + "referencedDeclaration": 3319, + "src": "6175:22:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 3769, + "id": 3874, "isConstant": false, "isLValue": false, "isPure": false, @@ -9443,21 +9414,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6175:30:15", + "src": "6175:30:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "6154:51:15", + "src": "6154:51:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 3771, + "id": 3876, "nodeType": "ExpressionStatement", - "src": "6154:51:15" + "src": "6154:51:18" }, { "eventCall": { @@ -9469,14 +9440,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 3774, + "id": 3879, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6237:1:15", + "src": "6237:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -9492,20 +9463,20 @@ "typeString": "int_const 0" } ], - "id": 3773, + "id": 3878, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6229:7:15", + "src": "6229:7:18", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 3775, + "id": 3880, "isConstant": false, "isLValue": false, "isPure": true, @@ -9513,7 +9484,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6229:10:15", + "src": "6229:10:18", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -9521,12 +9492,12 @@ }, { "argumentTypes": null, - "id": 3776, + "id": 3881, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3740, - "src": "6241:7:15", + "referencedDeclaration": 3845, + "src": "6241:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9534,12 +9505,12 @@ }, { "argumentTypes": null, - "id": 3777, + "id": 3882, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3742, - "src": "6250:6:15", + "referencedDeclaration": 3847, + "src": "6250:6:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9561,18 +9532,18 @@ "typeString": "uint256" } ], - "id": 3772, + "id": 3877, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4043, - "src": "6220:8:15", + "referencedDeclaration": 4148, + "src": "6220:8:18", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 3778, + "id": 3883, "isConstant": false, "isLValue": false, "isPure": false, @@ -9580,36 +9551,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6220:37:15", + "src": "6220:37:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3779, + "id": 3884, "nodeType": "EmitStatement", - "src": "6215:42:15" + "src": "6215:42:18" } ] }, "documentation": "@dev Creates `amount` tokens and assigns them to `account`, increasing\nthe total supply.\n * Emits a {Transfer} event with `from` set to the zero address.\n * Requirements\n * - `to` cannot be the zero address.", - "id": 3781, + "id": 3886, "implemented": true, "kind": "function", "modifiers": [], "name": "_mint", "nodeType": "FunctionDefinition", "parameters": { - "id": 3743, + "id": 3848, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3740, + "id": 3845, "name": "account", "nodeType": "VariableDeclaration", - "scope": 3781, - "src": "5977:15:15", + "scope": 3886, + "src": "5977:15:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9617,10 +9588,10 @@ "typeString": "address" }, "typeName": { - "id": 3739, + "id": 3844, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5977:7:15", + "src": "5977:7:18", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9632,11 +9603,11 @@ }, { "constant": false, - "id": 3742, + "id": 3847, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 3781, - "src": "5994:14:15", + "scope": 3886, + "src": "5994:14:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9644,10 +9615,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3741, + "id": 3846, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5994:7:15", + "src": "5994:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9657,25 +9628,25 @@ "visibility": "internal" } ], - "src": "5976:33:15" + "src": "5976:33:18" }, "returnParameters": { - "id": 3744, + "id": 3849, "nodeType": "ParameterList", "parameters": [], - "src": "6019:0:15" + "src": "6019:0:18" }, - "scope": 3897, - "src": "5962:302:15", + "scope": 4002, + "src": "5962:302:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 3824, + "id": 3929, "nodeType": "Block", - "src": "6640:285:15", + "src": "6640:285:18", "statements": [ { "expression": { @@ -9687,19 +9658,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 3793, + "id": 3898, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3789, + "id": 3894, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3783, - "src": "6658:7:15", + "referencedDeclaration": 3888, + "src": "6658:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9713,14 +9684,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 3791, + "id": 3896, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6677:1:15", + "src": "6677:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -9736,20 +9707,20 @@ "typeString": "int_const 0" } ], - "id": 3790, + "id": 3895, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6669:7:15", + "src": "6669:7:18", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 3792, + "id": 3897, "isConstant": false, "isLValue": false, "isPure": true, @@ -9757,13 +9728,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6669:10:15", + "src": "6669:10:18", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "src": "6658:21:15", + "src": "6658:21:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9772,14 +9743,14 @@ { "argumentTypes": null, "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373", - "id": 3794, + "id": 3899, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "6681:35:15", + "src": "6681:35:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f", @@ -9799,21 +9770,21 @@ "typeString": "literal_string \"ERC20: burn from the zero address\"" } ], - "id": 3788, + "id": 3893, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "6650:7:15", + "referencedDeclaration": 4176, + "src": "6650:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 3795, + "id": 3900, "isConstant": false, "isLValue": false, "isPure": false, @@ -9821,20 +9792,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6650:67:15", + "src": "6650:67:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3796, + "id": 3901, "nodeType": "ExpressionStatement", - "src": "6650:67:15" + "src": "6650:67:18" }, { "expression": { "argumentTypes": null, - "id": 3807, + "id": 3912, "isConstant": false, "isLValue": false, "isPure": false, @@ -9843,26 +9814,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 3797, + "id": 3902, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3508, - "src": "6728:9:15", + "referencedDeclaration": 3613, + "src": "6728:9:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 3799, + "id": 3904, "indexExpression": { "argumentTypes": null, - "id": 3798, + "id": 3903, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3783, - "src": "6738:7:15", + "referencedDeclaration": 3888, + "src": "6738:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9873,7 +9844,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "6728:18:15", + "src": "6728:18:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9886,12 +9857,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3804, + "id": 3909, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3785, - "src": "6772:6:15", + "referencedDeclaration": 3890, + "src": "6772:6:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9900,14 +9871,14 @@ { "argumentTypes": null, "hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365", - "id": 3805, + "id": 3910, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "6780:36:15", + "src": "6780:36:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd", @@ -9931,26 +9902,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 3800, + "id": 3905, "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3508, - "src": "6749:9:15", + "referencedDeclaration": 3613, + "src": "6749:9:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 3802, + "id": 3907, "indexExpression": { "argumentTypes": null, - "id": 3801, + "id": 3906, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3783, - "src": "6759:7:15", + "referencedDeclaration": 3888, + "src": "6759:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9961,27 +9932,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "6749:18:15", + "src": "6749:18:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 3803, + "id": 3908, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 3257, - "src": "6749:22:15", + "referencedDeclaration": 3362, + "src": "6749:22:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" } }, - "id": 3806, + "id": 3911, "isConstant": false, "isLValue": false, "isPure": false, @@ -9989,38 +9960,38 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6749:68:15", + "src": "6749:68:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "6728:89:15", + "src": "6728:89:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 3808, + "id": 3913, "nodeType": "ExpressionStatement", - "src": "6728:89:15" + "src": "6728:89:18" }, { "expression": { "argumentTypes": null, - "id": 3814, + "id": 3919, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 3809, + "id": 3914, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3516, - "src": "6827:12:15", + "referencedDeclaration": 3621, + "src": "6827:12:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10033,12 +10004,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3812, + "id": 3917, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3785, - "src": "6859:6:15", + "referencedDeclaration": 3890, + "src": "6859:6:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10054,32 +10025,32 @@ ], "expression": { "argumentTypes": null, - "id": 3810, + "id": 3915, "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3516, - "src": "6842:12:15", + "referencedDeclaration": 3621, + "src": "6842:12:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 3811, + "id": 3916, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 3230, - "src": "6842:16:15", + "referencedDeclaration": 3335, + "src": "6842:16:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 3813, + "id": 3918, "isConstant": false, "isLValue": false, "isPure": false, @@ -10087,21 +10058,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6842:24:15", + "src": "6842:24:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "6827:39:15", + "src": "6827:39:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 3815, + "id": 3920, "nodeType": "ExpressionStatement", - "src": "6827:39:15" + "src": "6827:39:18" }, { "eventCall": { @@ -10109,12 +10080,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3817, + "id": 3922, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3783, - "src": "6890:7:15", + "referencedDeclaration": 3888, + "src": "6890:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10126,14 +10097,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 3819, + "id": 3924, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6907:1:15", + "src": "6907:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -10149,20 +10120,20 @@ "typeString": "int_const 0" } ], - "id": 3818, + "id": 3923, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6899:7:15", + "src": "6899:7:18", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 3820, + "id": 3925, "isConstant": false, "isLValue": false, "isPure": true, @@ -10170,7 +10141,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6899:10:15", + "src": "6899:10:18", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -10178,12 +10149,12 @@ }, { "argumentTypes": null, - "id": 3821, + "id": 3926, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3785, - "src": "6911:6:15", + "referencedDeclaration": 3890, + "src": "6911:6:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10205,18 +10176,18 @@ "typeString": "uint256" } ], - "id": 3816, + "id": 3921, "name": "Transfer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4043, - "src": "6881:8:15", + "referencedDeclaration": 4148, + "src": "6881:8:18", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 3822, + "id": 3927, "isConstant": false, "isLValue": false, "isPure": false, @@ -10224,36 +10195,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6881:37:15", + "src": "6881:37:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3823, + "id": 3928, "nodeType": "EmitStatement", - "src": "6876:42:15" + "src": "6876:42:18" } ] }, "documentation": "@dev Destroys `amount` tokens from `account`, reducing the\ntotal supply.\n * Emits a {Transfer} event with `to` set to the zero address.\n * Requirements\n * - `account` cannot be the zero address.\n- `account` must have at least `amount` tokens.", - "id": 3825, + "id": 3930, "implemented": true, "kind": "function", "modifiers": [], "name": "_burn", "nodeType": "FunctionDefinition", "parameters": { - "id": 3786, + "id": 3891, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3783, + "id": 3888, "name": "account", "nodeType": "VariableDeclaration", - "scope": 3825, - "src": "6598:15:15", + "scope": 3930, + "src": "6598:15:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10261,10 +10232,10 @@ "typeString": "address" }, "typeName": { - "id": 3782, + "id": 3887, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6598:7:15", + "src": "6598:7:18", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -10276,11 +10247,11 @@ }, { "constant": false, - "id": 3785, + "id": 3890, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 3825, - "src": "6615:14:15", + "scope": 3930, + "src": "6615:14:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10288,10 +10259,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3784, + "id": 3889, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6615:7:15", + "src": "6615:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10301,25 +10272,25 @@ "visibility": "internal" } ], - "src": "6597:33:15" + "src": "6597:33:18" }, "returnParameters": { - "id": 3787, + "id": 3892, "nodeType": "ParameterList", "parameters": [], - "src": "6640:0:15" + "src": "6640:0:18" }, - "scope": 3897, - "src": "6583:342:15", + "scope": 4002, + "src": "6583:342:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 3866, + "id": 3971, "nodeType": "Block", - "src": "7425:257:15", + "src": "7425:257:18", "statements": [ { "expression": { @@ -10331,19 +10302,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 3839, + "id": 3944, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3835, + "id": 3940, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3827, - "src": "7443:5:15", + "referencedDeclaration": 3932, + "src": "7443:5:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10357,14 +10328,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 3837, + "id": 3942, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7460:1:15", + "src": "7460:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -10380,20 +10351,20 @@ "typeString": "int_const 0" } ], - "id": 3836, + "id": 3941, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "7452:7:15", + "src": "7452:7:18", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 3838, + "id": 3943, "isConstant": false, "isLValue": false, "isPure": true, @@ -10401,13 +10372,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7452:10:15", + "src": "7452:10:18", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "src": "7443:19:15", + "src": "7443:19:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10416,14 +10387,14 @@ { "argumentTypes": null, "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373", - "id": 3840, + "id": 3945, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "7464:38:15", + "src": "7464:38:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208", @@ -10443,21 +10414,21 @@ "typeString": "literal_string \"ERC20: approve from the zero address\"" } ], - "id": 3834, + "id": 3939, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "7435:7:15", + "referencedDeclaration": 4176, + "src": "7435:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 3841, + "id": 3946, "isConstant": false, "isLValue": false, "isPure": false, @@ -10465,15 +10436,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7435:68:15", + "src": "7435:68:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3842, + "id": 3947, "nodeType": "ExpressionStatement", - "src": "7435:68:15" + "src": "7435:68:18" }, { "expression": { @@ -10485,19 +10456,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 3848, + "id": 3953, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3844, + "id": 3949, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3829, - "src": "7521:7:15", + "referencedDeclaration": 3934, + "src": "7521:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10511,14 +10482,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 3846, + "id": 3951, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7540:1:15", + "src": "7540:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -10534,20 +10505,20 @@ "typeString": "int_const 0" } ], - "id": 3845, + "id": 3950, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "7532:7:15", + "src": "7532:7:18", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 3847, + "id": 3952, "isConstant": false, "isLValue": false, "isPure": true, @@ -10555,13 +10526,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7532:10:15", + "src": "7532:10:18", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "src": "7521:21:15", + "src": "7521:21:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -10570,14 +10541,14 @@ { "argumentTypes": null, "hexValue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373", - "id": 3849, + "id": 3954, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "7544:36:15", + "src": "7544:36:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029", @@ -10597,21 +10568,21 @@ "typeString": "literal_string \"ERC20: approve to the zero address\"" } ], - "id": 3843, + "id": 3948, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "7513:7:15", + "referencedDeclaration": 4176, + "src": "7513:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 3850, + "id": 3955, "isConstant": false, "isLValue": false, "isPure": false, @@ -10619,20 +10590,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7513:68:15", + "src": "7513:68:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3851, + "id": 3956, "nodeType": "ExpressionStatement", - "src": "7513:68:15" + "src": "7513:68:18" }, { "expression": { "argumentTypes": null, - "id": 3858, + "id": 3963, "isConstant": false, "isLValue": false, "isPure": false, @@ -10643,26 +10614,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 3852, + "id": 3957, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3514, - "src": "7592:11:15", + "referencedDeclaration": 3619, + "src": "7592:11:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, - "id": 3855, + "id": 3960, "indexExpression": { "argumentTypes": null, - "id": 3853, + "id": 3958, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3827, - "src": "7604:5:15", + "referencedDeclaration": 3932, + "src": "7604:5:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10673,21 +10644,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "7592:18:15", + "src": "7592:18:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 3856, + "id": 3961, "indexExpression": { "argumentTypes": null, - "id": 3854, + "id": 3959, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3829, - "src": "7611:7:15", + "referencedDeclaration": 3934, + "src": "7611:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10698,7 +10669,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "7592:27:15", + "src": "7592:27:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10708,26 +10679,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 3857, + "id": 3962, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3831, - "src": "7622:6:15", + "referencedDeclaration": 3936, + "src": "7622:6:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "7592:36:15", + "src": "7592:36:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 3859, + "id": 3964, "nodeType": "ExpressionStatement", - "src": "7592:36:15" + "src": "7592:36:18" }, { "eventCall": { @@ -10735,12 +10706,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3861, + "id": 3966, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3827, - "src": "7652:5:15", + "referencedDeclaration": 3932, + "src": "7652:5:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10748,12 +10719,12 @@ }, { "argumentTypes": null, - "id": 3862, + "id": 3967, "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3829, - "src": "7659:7:15", + "referencedDeclaration": 3934, + "src": "7659:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10761,12 +10732,12 @@ }, { "argumentTypes": null, - "id": 3863, + "id": 3968, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3831, - "src": "7668:6:15", + "referencedDeclaration": 3936, + "src": "7668:6:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10788,18 +10759,18 @@ "typeString": "uint256" } ], - "id": 3860, + "id": 3965, "name": "Approval", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4051, - "src": "7643:8:15", + "referencedDeclaration": 4156, + "src": "7643:8:18", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 3864, + "id": 3969, "isConstant": false, "isLValue": false, "isPure": false, @@ -10807,36 +10778,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7643:32:15", + "src": "7643:32:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3865, + "id": 3970, "nodeType": "EmitStatement", - "src": "7638:37:15" + "src": "7638:37:18" } ] }, "documentation": "@dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\n * This is internal function is equivalent to `approve`, and can be used to\ne.g. set automatic allowances for certain subsystems, etc.\n * Emits an {Approval} event.\n * Requirements:\n * - `owner` cannot be the zero address.\n- `spender` cannot be the zero address.", - "id": 3867, + "id": 3972, "implemented": true, "kind": "function", "modifiers": [], "name": "_approve", "nodeType": "FunctionDefinition", "parameters": { - "id": 3832, + "id": 3937, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3827, + "id": 3932, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 3867, - "src": "7368:13:15", + "scope": 3972, + "src": "7368:13:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10844,10 +10815,10 @@ "typeString": "address" }, "typeName": { - "id": 3826, + "id": 3931, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7368:7:15", + "src": "7368:7:18", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -10859,11 +10830,11 @@ }, { "constant": false, - "id": 3829, + "id": 3934, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 3867, - "src": "7383:15:15", + "scope": 3972, + "src": "7383:15:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10871,10 +10842,10 @@ "typeString": "address" }, "typeName": { - "id": 3828, + "id": 3933, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7383:7:15", + "src": "7383:7:18", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -10886,11 +10857,11 @@ }, { "constant": false, - "id": 3831, + "id": 3936, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 3867, - "src": "7400:14:15", + "scope": 3972, + "src": "7400:14:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10898,10 +10869,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3830, + "id": 3935, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "7400:7:15", + "src": "7400:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10911,25 +10882,25 @@ "visibility": "internal" } ], - "src": "7367:48:15" + "src": "7367:48:18" }, "returnParameters": { - "id": 3833, + "id": 3938, "nodeType": "ParameterList", "parameters": [], - "src": "7425:0:15" + "src": "7425:0:18" }, - "scope": 3897, - "src": "7350:332:15", + "scope": 4002, + "src": "7350:332:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 3895, + "id": 4000, "nodeType": "Block", - "src": "7921:168:15", + "src": "7921:168:18", "statements": [ { "expression": { @@ -10937,12 +10908,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3875, + "id": 3980, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3869, - "src": "7937:7:15", + "referencedDeclaration": 3974, + "src": "7937:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -10950,12 +10921,12 @@ }, { "argumentTypes": null, - "id": 3876, + "id": 3981, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3871, - "src": "7946:6:15", + "referencedDeclaration": 3976, + "src": "7946:6:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10973,18 +10944,18 @@ "typeString": "uint256" } ], - "id": 3874, + "id": 3979, "name": "_burn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3825, - "src": "7931:5:15", + "referencedDeclaration": 3930, + "src": "7931:5:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 3877, + "id": 3982, "isConstant": false, "isLValue": false, "isPure": false, @@ -10992,15 +10963,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7931:22:15", + "src": "7931:22:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3878, + "id": 3983, "nodeType": "ExpressionStatement", - "src": "7931:22:15" + "src": "7931:22:18" }, { "expression": { @@ -11008,12 +10979,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3880, + "id": 3985, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3869, - "src": "7972:7:15", + "referencedDeclaration": 3974, + "src": "7972:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11024,18 +10995,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 3881, + "id": 3986, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2987, - "src": "7981:10:15", + "referencedDeclaration": 3092, + "src": "7981:10:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 3882, + "id": 3987, "isConstant": false, "isLValue": false, "isPure": false, @@ -11043,7 +11014,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7981:12:15", + "src": "7981:12:18", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -11054,12 +11025,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3890, + "id": 3995, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3871, - "src": "8034:6:15", + "referencedDeclaration": 3976, + "src": "8034:6:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11068,14 +11039,14 @@ { "argumentTypes": null, "hexValue": "45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e6365", - "id": 3891, + "id": 3996, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "8042:38:15", + "src": "8042:38:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_a287c363786607a1457a2d9d12fa61c0073358e02d76b4035fc2c2d86a19c0db", @@ -11101,26 +11072,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 3883, + "id": 3988, "name": "_allowances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3514, - "src": "7995:11:15", + "referencedDeclaration": 3619, + "src": "7995:11:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(address => mapping(address => uint256))" } }, - "id": 3885, + "id": 3990, "indexExpression": { "argumentTypes": null, - "id": 3884, + "id": 3989, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3869, - "src": "8007:7:15", + "referencedDeclaration": 3974, + "src": "8007:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11131,30 +11102,30 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "7995:20:15", + "src": "7995:20:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 3888, + "id": 3993, "indexExpression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 3886, + "id": 3991, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2987, - "src": "8016:10:15", + "referencedDeclaration": 3092, + "src": "8016:10:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 3887, + "id": 3992, "isConstant": false, "isLValue": false, "isPure": false, @@ -11162,7 +11133,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "8016:12:15", + "src": "8016:12:18", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -11173,27 +11144,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "7995:34:15", + "src": "7995:34:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 3889, + "id": 3994, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 3257, - "src": "7995:38:15", + "referencedDeclaration": 3362, + "src": "7995:38:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" } }, - "id": 3892, + "id": 3997, "isConstant": false, "isLValue": false, "isPure": false, @@ -11201,7 +11172,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7995:86:15", + "src": "7995:86:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11223,18 +11194,18 @@ "typeString": "uint256" } ], - "id": 3879, + "id": 3984, "name": "_approve", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3867, - "src": "7963:8:15", + "referencedDeclaration": 3972, + "src": "7963:8:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 3893, + "id": 3998, "isConstant": false, "isLValue": false, "isPure": false, @@ -11242,36 +11213,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "7963:119:15", + "src": "7963:119:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3894, + "id": 3999, "nodeType": "ExpressionStatement", - "src": "7963:119:15" + "src": "7963:119:18" } ] }, "documentation": "@dev Destroys `amount` tokens from `account`.`amount` is then deducted\nfrom the caller's allowance.\n * See {_burn} and {_approve}.", - "id": 3896, + "id": 4001, "implemented": true, "kind": "function", "modifiers": [], "name": "_burnFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 3872, + "id": 3977, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3869, + "id": 3974, "name": "account", "nodeType": "VariableDeclaration", - "scope": 3896, - "src": "7879:15:15", + "scope": 4001, + "src": "7879:15:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11279,10 +11250,10 @@ "typeString": "address" }, "typeName": { - "id": 3868, + "id": 3973, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7879:7:15", + "src": "7879:7:18", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -11294,11 +11265,11 @@ }, { "constant": false, - "id": 3871, + "id": 3976, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 3896, - "src": "7896:14:15", + "scope": 4001, + "src": "7896:14:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11306,10 +11277,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3870, + "id": 3975, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "7896:7:15", + "src": "7896:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11319,34 +11290,34 @@ "visibility": "internal" } ], - "src": "7878:33:15" + "src": "7878:33:18" }, "returnParameters": { - "id": 3873, + "id": 3978, "nodeType": "ParameterList", "parameters": [], - "src": "7921:0:15" + "src": "7921:0:18" }, - "scope": 3897, - "src": "7860:229:15", + "scope": 4002, + "src": "7860:229:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 3898, - "src": "1268:6823:15" + "scope": 4003, + "src": "1268:6823:18" } ], - "src": "0:8092:15" + "src": "0:8092:18" }, "compiler": { "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" + "version": "0.5.2+commit.1df8f40c.Emscripten.clang" }, "networks": {}, - "schemaVersion": "3.0.23", - "updatedAt": "2020-02-16T12:52:29.822Z", + "schemaVersion": "3.0.1", + "updatedAt": "2020-02-16T14:54:14.905Z", "devdoc": { "details": "Implementation of the {IERC20} interface. * This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20Mintable}. * TIP: For a detailed writeup see our guide https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. * We have followed general OpenZeppelin guidelines: functions revert instead of returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. * Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.", "methods": { diff --git a/truffle/build/contracts/ERC20ContinuousToken.json b/truffle/build/contracts/ERC20ContinuousToken.json index 6a82966..a1e5637 100644 --- a/truffle/build/contracts/ERC20ContinuousToken.json +++ b/truffle/build/contracts/ERC20ContinuousToken.json @@ -2,186 +2,50 @@ "contractName": "ERC20ContinuousToken", "abi": [ { - "inputs": [ - { - "internalType": "string", - "name": "_name", - "type": "string" - }, + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ { - "internalType": "string", - "name": "_symbol", + "name": "", "type": "string" - }, - { - "internalType": "uint8", - "name": "_decimals", - "type": "uint8" - }, - { - "internalType": "uint256", - "name": "_initialSupply", - "type": "uint256" - }, - { - "internalType": "uint32", - "name": "_reserveRatio", - "type": "uint32" - }, - { - "internalType": "contract ERC20", - "name": "_reserveToken", - "type": "address" } ], "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" + "stateMutability": "view", + "type": "function" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", "name": "spender", "type": "address" }, { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", "name": "amount", "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "refund", - "type": "uint256" } ], - "name": "Burned", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "deposit", - "type": "uint256" - } - ], - "name": "Minted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, + "name": "approve", + "outputs": [ { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" + "name": "", + "type": "bool" } ], - "name": "Transfer", - "type": "event" - }, - { "payable": false, "stateMutability": "nonpayable", - "type": "fallback" + "type": "function" }, { "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", + "inputs": [], + "name": "reserveRatio", "outputs": [ { - "internalType": "uint256", "name": "", - "type": "uint256" + "type": "uint32" } ], "payable": false, @@ -189,44 +53,30 @@ "type": "function" }, { - "constant": false, + "constant": true, "inputs": [ { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", + "name": "_reserveTokenAmount", "type": "uint256" } ], - "name": "approve", + "name": "getContinuousMintReward", "outputs": [ { - "internalType": "bool", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function" }, { "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", + "inputs": [], + "name": "totalSupply", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -236,84 +86,55 @@ "type": "function" }, { - "constant": true, + "constant": false, "inputs": [ { - "internalType": "uint256", - "name": "_supply", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_reserveBalance", - "type": "uint256" + "name": "sender", + "type": "address" }, { - "internalType": "uint32", - "name": "_reserveRatio", - "type": "uint32" + "name": "recipient", + "type": "address" }, { - "internalType": "uint256", - "name": "_depositAmount", + "name": "amount", "type": "uint256" } ], - "name": "calculatePurchaseReturn", + "name": "transferFrom", "outputs": [ { - "internalType": "uint256", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { - "internalType": "uint256", "name": "_supply", "type": "uint256" }, { - "internalType": "uint256", "name": "_reserveBalance", "type": "uint256" }, { - "internalType": "uint32", "name": "_reserveRatio", "type": "uint32" }, { - "internalType": "uint256", - "name": "_sellAmount", - "type": "uint256" - } - ], - "name": "calculateSaleReturn", - "outputs": [ - { - "internalType": "uint256", - "name": "", + "name": "_depositAmount", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "continuousSupply", + "name": "calculatePurchaseReturn", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -328,7 +149,6 @@ "name": "decimals", "outputs": [ { - "internalType": "uint8", "name": "", "type": "uint8" } @@ -341,20 +161,17 @@ "constant": false, "inputs": [ { - "internalType": "address", "name": "spender", "type": "address" }, { - "internalType": "uint256", - "name": "subtractedValue", + "name": "addedValue", "type": "uint256" } ], - "name": "decreaseAllowance", + "name": "increaseAllowance", "outputs": [ { - "internalType": "bool", "name": "", "type": "bool" } @@ -365,17 +182,10 @@ }, { "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "_continuousTokenAmount", - "type": "uint256" - } - ], - "name": "getContinuousBurnRefund", + "inputs": [], + "name": "maxGasPrice", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -388,58 +198,41 @@ "constant": true, "inputs": [ { - "internalType": "uint256", - "name": "_reserveTokenAmount", + "name": "_supply", "type": "uint256" - } - ], - "name": "getContinuousMintReward", - "outputs": [ + }, { - "internalType": "uint256", - "name": "", + "name": "_reserveBalance", "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ + }, { - "internalType": "address", - "name": "spender", - "type": "address" + "name": "_reserveRatio", + "type": "uint32" }, { - "internalType": "uint256", - "name": "addedValue", + "name": "_sellAmount", "type": "uint256" } ], - "name": "increaseAllowance", + "name": "calculateSaleReturn", "outputs": [ { - "internalType": "bool", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], - "name": "isOwner", + "name": "version", "outputs": [ { - "internalType": "bool", "name": "", - "type": "bool" + "type": "string" } ], "payable": false, @@ -448,11 +241,15 @@ }, { "constant": true, - "inputs": [], - "name": "maxGasPrice", + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -462,14 +259,27 @@ "type": "function" }, { - "constant": true, + "constant": false, "inputs": [], - "name": "name", + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_continuousTokenAmount", + "type": "uint256" + } + ], + "name": "getContinuousBurnRefund", "outputs": [ { - "internalType": "string", "name": "", - "type": "string" + "type": "uint256" } ], "payable": false, @@ -482,33 +292,22 @@ "name": "owner", "outputs": [ { - "internalType": "address", "name": "", "type": "address" } ], "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], - "name": "reserveRatio", + "name": "isOwner", "outputs": [ { - "internalType": "uint32", "name": "", - "type": "uint32" + "type": "bool" } ], "payable": false, @@ -518,12 +317,11 @@ { "constant": true, "inputs": [], - "name": "reserveToken", + "name": "symbol", "outputs": [ { - "internalType": "contract ERC20", "name": "", - "type": "address" + "type": "string" } ], "payable": false, @@ -534,12 +332,11 @@ "constant": false, "inputs": [ { - "internalType": "uint256", - "name": "newPrice", + "name": "_amount", "type": "uint256" } ], - "name": "setMaxGasPrice", + "name": "sponsoredBurn", "outputs": [], "payable": false, "stateMutability": "nonpayable", @@ -549,13 +346,44 @@ "constant": false, "inputs": [ { - "internalType": "uint256", - "name": "_amount", + "name": "spender", + "type": "address" + }, + { + "name": "subtractedValue", "type": "uint256" } ], - "name": "sponsoredBurn", - "outputs": [], + "name": "decreaseAllowance", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "recipient", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], "payable": false, "stateMutability": "nonpayable", "type": "function" @@ -564,12 +392,10 @@ "constant": false, "inputs": [ { - "internalType": "address", "name": "_from", "type": "address" }, { - "internalType": "uint256", "name": "_amount", "type": "uint256" } @@ -580,15 +406,28 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "constant": false, + "inputs": [ + { + "name": "newPrice", + "type": "uint256" + } + ], + "name": "setMaxGasPrice", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, { "constant": true, "inputs": [], - "name": "symbol", + "name": "continuousSupply", "outputs": [ { - "internalType": "string", "name": "", - "type": "string" + "type": "uint256" } ], "payable": false, @@ -597,11 +436,19 @@ }, { "constant": true, - "inputs": [], - "name": "totalSupply", + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "spender", + "type": "address" + } + ], + "name": "allowance", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -614,94 +461,175 @@ "constant": false, "inputs": [ { - "internalType": "address", - "name": "recipient", + "name": "newOwner", "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" } ], - "name": "transfer", + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "reserveToken", "outputs": [ { - "internalType": "bool", "name": "", - "type": "bool" + "type": "address" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function" }, { - "constant": false, "inputs": [ { - "internalType": "address", + "name": "_name", + "type": "string" + }, + { + "name": "_symbol", + "type": "string" + }, + { + "name": "_decimals", + "type": "uint8" + }, + { + "name": "_initialSupply", + "type": "uint256" + }, + { + "name": "_reserveRatio", + "type": "uint32" + }, + { + "name": "_reserveToken", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "payable": false, + "stateMutability": "nonpayable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, "name": "sender", "type": "address" }, { - "internalType": "address", - "name": "recipient", + "indexed": false, + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "name": "deposit", + "type": "uint256" + } + ], + "name": "Minted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "sender", "type": "address" }, { - "internalType": "uint256", + "indexed": false, "name": "amount", "type": "uint256" + }, + { + "indexed": false, + "name": "refund", + "type": "uint256" } ], - "name": "transferFrom", - "outputs": [ + "name": "Burned", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ { - "internalType": "bool", - "name": "", - "type": "bool" + "indexed": true, + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "name": "newOwner", + "type": "address" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" + "name": "OwnershipTransferred", + "type": "event" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "internalType": "address", - "name": "newOwner", + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" } ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" + "name": "Transfer", + "type": "event" }, { - "constant": true, - "inputs": [], - "name": "version", - "outputs": [ + "anonymous": false, + "inputs": [ { - "internalType": "string", - "name": "", - "type": "string" + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function" + "name": "Approval", + "type": "event" }, { "constant": false, "inputs": [ { - "internalType": "uint256", "name": "_amount", "type": "uint256" } @@ -716,7 +644,6 @@ "constant": false, "inputs": [ { - "internalType": "uint256", "name": "_amount", "type": "uint256" } @@ -733,7 +660,6 @@ "name": "reserveBalance", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -743,25 +669,24 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"_decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"_initialSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_reserveRatio\",\"type\":\"uint32\"},{\"internalType\":\"contract ERC20\",\"name\":\"_reserveToken\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"refund\",\"type\":\"uint256\"}],\"name\":\"Burned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"fallback\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_supply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_reserveBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_reserveRatio\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_depositAmount\",\"type\":\"uint256\"}],\"name\":\"calculatePurchaseReturn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_supply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_reserveBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_reserveRatio\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_sellAmount\",\"type\":\"uint256\"}],\"name\":\"calculateSaleReturn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"continuousSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_continuousTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getContinuousBurnRefund\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_reserveTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getContinuousMintReward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"maxGasPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"reserveBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"reserveRatio\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"reserveToken\",\"outputs\":[{\"internalType\":\"contract ERC20\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPrice\",\"type\":\"uint256\"}],\"name\":\"setMaxGasPrice\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"sponsoredBurn\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"sponsoredBurnFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. * Requirements: * - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"calculatePurchaseReturn(uint256,uint256,uint32,uint256)\":{\"details\":\"given a continuous token supply, reserve token balance, reserve ratio, and a deposit amount (in the reserve token), calculates the return for a given conversion (in the continuous token) * Formula: Return = _supply * ((1 + _depositAmount / _reserveBalance) ^ (_reserveRatio / MAX_RESERVE_RATIO) - 1)\",\"params\":{\"_depositAmount\":\"deposit amount, in reserve token\",\"_reserveBalance\":\"total reserve token balance\",\"_reserveRatio\":\"reserve ratio, represented in ppm, 1-1000000\",\"_supply\":\"continuous token total supply\"},\"return\":\"purchase return amount\"},\"calculateSaleReturn(uint256,uint256,uint32,uint256)\":{\"details\":\"given a continuous token supply, reserve token balance, reserve ratio and a sell amount (in the continuous token), calculates the return for a given conversion (in the reserve token) * Formula: Return = _reserveBalance * (1 - (1 - _sellAmount / _supply) ^ (1 / (_reserveRatio / MAX_RESERVE_RATIO)))\",\"params\":{\"_reserveBalance\":\"total reserve token balance\",\"_reserveRatio\":\"constant reserve ratio, represented in ppm, 1-1000000\",\"_sellAmount\":\"sell amount, in the continuous token itself\",\"_supply\":\"continuous token total supply\"},\"return\":\"sale return amount\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). * Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. * NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address.\"},\"isOwner()\":{\"details\":\"Returns true if the caller is the current owner.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. * Requirements: * - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. * Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; * Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for `sender`'s tokens of at least `amount`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/token/ERC20ContinuousToken.sol\":\"ERC20ContinuousToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":1500},\"remappings\":[]},\"sources\":{\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/curves/BancorBondingCurve.sol\":{\"keccak256\":\"0x687e9719bd334feff47289702610167b7278722ca2e3d1f10476d6fb4b3fac18\",\"urls\":[\"bzz-raw://3c8d354545c355f99e5851dfc99e48e988ff6b49b2482b535c82b4c28baec784\",\"dweb:/ipfs/QmZwfpQL6f5YVtAWNKrSJXKB2V1Mz7zYy3fGsFLt618ZHd\"]},\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/interfaces/IBondingCurve.sol\":{\"keccak256\":\"0x27a335544bca7d89b45438988419e4e3d5c6639dee6ff7e1e7da585db3f90b7b\",\"urls\":[\"bzz-raw://5caa54449bbd492dc880b1c3f2162614ce0483a886675df79c8c539909f29cf5\",\"dweb:/ipfs/QmfThvDW3d9L2Bjip74854Y1g1FdYaP5Eyj7PdjJy5LjEM\"]},\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/lib/ValidGasPrice.sol\":{\"keccak256\":\"0xab0eb602f0bd70cd9390021ec9d1e0b2a32f91b6c0af55fb6ea0b138f19be9fe\",\"urls\":[\"bzz-raw://153c896e4996d59fe5b747a28d8e8682f6afbae210587d7b7e2ae35ced2f1592\",\"dweb:/ipfs/QmReY8Thw4XDSKFdpLfvkEphdzBtbNr325DARGVSY9sUFc\"]},\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/math/BancorFormula.sol\":{\"keccak256\":\"0x07a5fc80f984d99091b528c4095e1c7b0a60ead97c05e3d6a5e06475e7a39e99\",\"urls\":[\"bzz-raw://efdd8da4c3c0ccbb02fcbd24fac4e8ca1e531d4d1b176f21410eb31432a93259\",\"dweb:/ipfs/Qme2dNAS3tdbLkKiH9qcJrNPi3s5kdtd5aLAZWEMAvEn2p\"]},\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/math/Power.sol\":{\"keccak256\":\"0x5a8b28886de5cede9e5be377a3649c13ac595eb996691ead28d0e8affc8bfe46\",\"urls\":[\"bzz-raw://bc28265d289fe49e251a7d12f399603ac3250cead55fed84107ff99aaeb46a32\",\"dweb:/ipfs/QmRxG1RDnaWwTzVpX12F4ECWyDZ1Kvonvm7hzJjVbWGuXE\"]},\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/token/ContinuousToken.sol\":{\"keccak256\":\"0x34325e4d749cb7ef49fa3384cb05d31094f14f8fa541d15a73be1f3f32f222f8\",\"urls\":[\"bzz-raw://12642ec5cb0b082a914e7e83bdae9e9a61430f827802f53a7459e35031375611\",\"dweb:/ipfs/QmaLNn8R3WvbXJhQMGFihNQ9eMp5BTV1ERYRcbBU9TuLpM\"]},\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/token/ERC20ContinuousToken.sol\":{\"keccak256\":\"0xc8602e4260008dcb311c56ec43ae2815c7f9598feb7f6cb628eb66a9759f601f\",\"urls\":[\"bzz-raw://fae9433a47e52c2c27741b1fb8b6c6bac78b1d51e36baa0cca2428f8669e9450\",\"dweb:/ipfs/QmX7vfvtGL8PR3ocsgjGbByB249nPEa5m7e1VU4GVRtWhu\"]},\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"keccak256\":\"0x90a3995645af7562d84b9d69363ffa5ae7217714ab61e951bf7bc450f40e4061\",\"urls\":[\"bzz-raw://216ef9d6b614db4eb46970b4e84903f2534a45572dd30a79f0041f1a5830f436\",\"dweb:/ipfs/QmNPrJ4MWKUAWzKXpUqeyKRUfosaoANZAqXgvepdrCwZAG\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0x6fb9d7889769d7cc161225f9ef7a90e468ba9788b253816f8d8b6894d3472c24\",\"urls\":[\"bzz-raw://cf4c00fc3c37cc5acf0c82ec6fd97bab67d72c2567fdc0ebf023d9c09b30a08e\",\"dweb:/ipfs/Qmb7TChG6DsEDX7LooJ4vmxot19f7VXX8S1zUGPeJTWbwZ\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xb15af804e2bc97db51e4e103f13de9fe13f87e6b835d7a88c897966c0e58506e\",\"urls\":[\"bzz-raw://1e8cff8437557fc915a3bed968fcd8f2df9809599e665ef69c2c9ce628548055\",\"dweb:/ipfs/QmP5spYP8vs2jvLF8zNrXUbqB79hMsoEvMHiLcBxerWKcm\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol\":{\"keccak256\":\"0x4a3a810b7ebe742e897e1fd428b3eeed2196d3acea58eaf9c566ed10d545d2ed\",\"urls\":[\"bzz-raw://28d03f328e19e4099d5013de0649afaeaabac1a614e130767ab1cb4aca9775b6\",\"dweb:/ipfs/Qmb9iW7yNuYehB2NfhRMs9TakqbLVQhBhmGMkaDZ5g1Eb4\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]}},\"version\":1}", - "bytecode": "0x60c06040526003608081905262302e3360e81b60a090815262000026916007919062000b7d565b50670de0b6b3a76400006089553480156200004057600080fd5b50604051620038c3380380620038c3833981810160405260c08110156200006657600080fd5b81019080805160405193929190846401000000008211156200008757600080fd5b9083019060208201858111156200009d57600080fd5b8251640100000000811182820188101715620000b857600080fd5b82525081516020918201929091019080838360005b83811015620000e7578181015183820152602001620000cd565b50505050905090810190601f168015620001155780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200013957600080fd5b9083019060208201858111156200014f57600080fd5b82516401000000008111828201881017156200016a57600080fd5b82525081516020918201929091019080838360005b83811015620001995781810151838201526020016200017f565b50505050905090810190601f168015620001c75780820380516001836020036101000a031916815260200191505b506040908152602082015190820151606083015160809093015191945092508585858585808585856000620002046001600160e01b0362000a1116565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35082516200026390600490602086019062000b7d565b5081516200027990600590602085019062000b7d565b506006805460ff191660ff9290921691909117905550506001641c35fedd1560601b036028556001646c3390ecc9605e1b036029556001640cf801476160611b03602a5560016431bdb23e1d605f1b03602b5560016502fb1d8fe083605b1b03602c5560016505b771955b37605a1b03602d556001650af67a93bb5160591b03602e5560016515060c256cb360581b03602f556001651428a2f98d7360581b036030556001654d515663970960561b03603155600165944620b0e70f60551b03603255600166011c592761c66760541b0360335560016602214d10d014eb60531b03603455600166020ade36b7dbef60531b0360355560016603eab73b3bbfe360521b036036556001660782ee3593f6d760511b036037556001661ccf4b44bb4821604f1b0360385560016606e7f88ad8a77760511b0360395560016669f3d1c921891d604d1b03603a55600166cb2ff529eb71e5604c1b03603b55600166c2d415c3db974b604c1b03603c5560016702eb40f9f620fda7604a1b03603d5560016705990681d961a1eb60491b03603e55600167055e12902701414760491b03603f5560016714962dee9dc9764160471b0360405560016704ef57b9b560fab560491b0360415560016712ed7b32a58f552b60471b036042556001679131271922eaa60760441b036043556001678b380f3558668c4760441b036044556001680215f77c045fbe885760421b036045556001600160831b036046556001670f577eded5773a1160471b036047556001680eb5ec597592befbf5603f1b036048556001681c35fedd14b861eb05603e1b036049556001683619c87664579bc94b603d1b03604a5560016867c00a3b07ffc01fd7603c1b03604b55600168c6f6c8f8739773a7a5603b1b03604c55600168bec763f8209b7a72b1603b1b03604d5560016902dbb8caad9b7097b91b60391b03604e55600169057b3d49dda84556d6f760381b03604f55600169054183095b2c8ececf3160381b036050556001690a14517cc6b9457111ef60371b0360515560016913545598e5c23276ccf160361b036052556001692511882c39c3adea96ff60351b03605355600169471649d87199aa99075760341b036054557004429a21a029d4c1457cfbffffffffffff605555700415bc6d6fb7dd71af2cb3ffffffffffff6056557003eab73b3bbfe282243ce1ffffffffffff6057557003c1771ac9fb6b4c18e229ffffffffffff605855700399e96897690418f785257fffffffffff605955700373fc456c53bb779bf0ea9fffffffffff605a5570034f9e8e490c48e67e6ab8bfffffffffff605b5570032cbfd4a7adc790560b3337ffffffffff605c5570030b50570f6e5d2acca94613ffffffffff605d557002eb40f9f620fda6b56c2861ffffffffff605e557002cc8340ecb0d0f520a6af58ffffffffff605f557002af09481380a0a35cf1ba02ffffffffff606055700292c5bdd3b92ec810287b1b3fffffffff606155700277abdcdab07d5a77ac6d6b9fffffffff60625570025daf6654b1eaa55fd64df5efffffffff606355700244c49c648baa98192dce88b7ffffffff60645570022ce03cd5619a311b2471268bffffffff606555700215f77c045fbe885654a44a0fffffffff6066556001600160811b036067557001eaefdbdaaee7421fc4d3ede5ffffffff6068557001d6bd8b2eb257df7e8ca57b09bfffffff6069557001c35fedd14b861eb0443f7f133fffffff606a557001b0ce43b322bcde4a56e8ada5afffffff606b5570019f0028ec1fff007f5a195a39dfffffff606c5570018ded91f0e72ee74f49b15ba527ffffff606d5570017d8ec7f04136f4e5615fd41a63ffffff606e5570016ddc6556cdb84bdc8d12d22e6fffffff606f5570015ecf52776a1155b5bd8395814f7fffff60705570015060c256cb23b3b3cc3754cf40ffffff6071557001428a2f98d728ae223ddab715be3fffff60725570013545598e5c23276ccf0ede68034fffff6073557001288c4161ce1d6f54b7f61081194fffff60745570011c592761c666aa641d5a01a40f17ffff607555700110a688680a7530515f3e6e6cfdcdffff6076557001056f1b5bedf75c6bcb2ce8aed428ffff6077556ffaadceceeff8a0890f3875f008277fff6078556ff05dc6b27edad306388a600f6ba0bfff6079556fe67a5a25da41063de1495d5b18cdbfff607a556fdcff115b14eedde6fc3aa5353f2e4fff607b556fd3e7a3924312399f9aae2e0f868f8fff607c556fcb2ff529eb71e41582cccd5a1ee26fff607d556fc2d415c3db974ab32a51840c0b67edff607e556fbad03e7d883f69ad5b0a186184e06bff607f556fb320d03b2c343d4829abd6075f0cc5ff6080556fabc25204e02828d73c6e80bcdb1a95bf6081556fa4b16f74ee4bb2040a1ec6c15fbbf2df6082556f9deaf736ac1f569deb1b5ae3f36c130f6083556f976bd9952c7aa957f5937d790ef650376084556f9131271922eaa6064b73a22d0bd4f2bf6085556f8b380f3558668c46c91c49a2f8e967b96086556f857ddf0117efa215952912839f6473e66087556088805463ffffffff191663ffffffff92909216919091179055620009df338362000a16565b5050608a80546001600160a01b0319166001600160a01b0395909516949094179093555062000c1f9650505050505050565b335b90565b6001600160a01b03821662000a72576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b62000a8e8160035462000b1b60201b620014ac1790919060201c565b6003556001600160a01b03821660009081526001602090815260409091205462000ac3918390620014ac62000b1b821b17901c565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008282018381101562000b76576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000bc057805160ff191683800117855562000bf0565b8280016001018555821562000bf0579182015b8281111562000bf057825182559160200191906001019062000bd3565b5062000bfe92915062000c02565b5090565b62000a1391905b8082111562000bfe576000815560010162000c09565b612c948062000c2f6000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80637cbed3e011610104578063a457c2d7116100a2578063da12457a11610071578063da12457a146105b7578063dd62ed3e146105bf578063f2fde38b146105ed578063f4325d6714610613576101da565b8063a457c2d714610516578063a9059cbb14610542578063b265c7021461056e578063d2fa635e1461059a576101da565b806395d89b41116100de57806395d89b41146104cc57806396343886146104d4578063a0712d68146104f1578063a10954fe1461050e576101da565b80637cbed3e0146104835780638da5cb5b146104a05780638f32d59b146104c4576101da565b8063313ce5671161017c57806349f9b0f71161014b57806349f9b0f71461041857806354fd4d501461044d57806370a0823114610455578063715018a61461047b576101da565b8063313ce567146103a757806339509351146103c55780633de39c11146103f157806342966c68146103f9576101da565b80630d8f9f7f116101b85780630d8f9f7f1461030557806318160ddd1461033457806323b872dd1461033c57806329a00e7c14610372576101da565b806306fdde0314610227578063095ea7b3146102a45780630c7d5cd8146102e4575b6040805162461bcd60e51b815260206004820152601e60248201527f43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2e0000604482015290519081900360640190fd5b61022f61061b565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610269578181015183820152602001610251565b50505050905090810190601f1680156102965780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102d0600480360360408110156102ba57600080fd5b506001600160a01b0381351690602001356106b1565b604080519115158252519081900360200190f35b6102ec6106cf565b6040805163ffffffff9092168252519081900360200190f35b6103226004803603602081101561031b57600080fd5b50356106db565b60408051918252519081900360200190f35b610322610707565b6102d06004803603606081101561035257600080fd5b506001600160a01b0381358116916020810135909116906040013561070d565b6103226004803603608081101561038857600080fd5b5080359060208101359063ffffffff604082013516906060013561079a565b6103af6108cb565b6040805160ff9092168252519081900360200190f35b6102d0600480360360408110156103db57600080fd5b506001600160a01b0381351690602001356108d4565b610322610928565b6104166004803603602081101561040f57600080fd5b503561092e565b005b6103226004803603608081101561042e57600080fd5b5080359060208101359063ffffffff6040820135169060600135610a2a565b61022f610b67565b6103226004803603602081101561046b57600080fd5b50356001600160a01b0316610bf5565b610416610c10565b6103226004803603602081101561049957600080fd5b5035610ccb565b6104a8610cef565b604080516001600160a01b039092168252519081900360200190f35b6102d0610cfe565b61022f610d22565b610416600480360360208110156104ea57600080fd5b5035610d83565b6104166004803603602081101561050757600080fd5b5035610dd0565b610322610eb7565b6102d06004803603604081101561052c57600080fd5b506001600160a01b038135169060200135610f4c565b6102d06004803603604081101561055857600080fd5b506001600160a01b038135169060200135610fba565b6104166004803603604081101561058457600080fd5b506001600160a01b038135169060200135610fce565b610416600480360360208110156105b057600080fd5b503561101c565b61032261107a565b610322600480360360408110156105d557600080fd5b506001600160a01b0381358116916020013516611089565b6104166004803603602081101561060357600080fd5b50356001600160a01b03166110b4565b6104a8611116565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106a75780601f1061067c576101008083540402835291602001916106a7565b820191906000526020600020905b81548152906001019060200180831161068a57829003601f168201915b5050505050905090565b60006106c56106be611125565b8484611129565b5060015b92915050565b60885463ffffffff1681565b60006106ff6106e861107a565b6106f0610eb7565b60885463ffffffff168561079a565b90505b919050565b60035490565b600061071a848484611215565b61079084610726611125565b61078b85604051806060016040528060288152602001612b85602891396001600160a01b038a16600090815260026020526040812090610764611125565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61137316565b611129565b5060019392505050565b600080851180156107ab5750600084115b80156107bd575060008363ffffffff16115b80156107d25750620f424063ffffffff841611155b610823576040805162461bcd60e51b815260206004820152600f60248201527f496e76616c696420696e707574732e0000000000000000000000000000000000604482015290519081900360640190fd5b81610830575060006108c3565b63ffffffff8316620f424014156108685761086184610855878563ffffffff61140a16565b9063ffffffff61146a16565b90506108c3565b6000808061087c858863ffffffff6114ac16565b905061088d818888620f4240611506565b9093509150600060ff83166108a88a8663ffffffff61140a16565b901c90506108bc818a63ffffffff61168f16565b9450505050505b949350505050565b60065460ff1690565b60006106c56108e1611125565b8461078b85600260006108f2611125565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6114ac16565b60895481565b6000610939826116d1565b608a54604080517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810184905290519293506001600160a01b039091169163a9059cbb916044808201926020929091908290030181600087803b1580156109a957600080fd5b505af11580156109bd573d6000803e3d6000fd5b505050506040513d60208110156109d357600080fd5b5051610a26576040805162461bcd60e51b815260206004820152601d60248201527f6275726e28292045524332302e7472616e73666572206661696c65642e000000604482015290519081900360640190fd5b5050565b60008085118015610a3b5750600084115b8015610a4d575060008363ffffffff16115b8015610a625750620f424063ffffffff841611155b8015610a6e5750848211155b610abf576040805162461bcd60e51b815260206004820152600f60248201527f496e76616c696420696e707574732e0000000000000000000000000000000000604482015290519081900360640190fd5b81610acc575060006108c3565b84821415610adb5750826108c3565b63ffffffff8316620f42401415610b005761086185610855868563ffffffff61140a16565b60008080610b14888663ffffffff61168f16565b9050610b258882620f424089611506565b90935091506000610b3c888563ffffffff61140a16565b905060ff831688901b610b5985610855848463ffffffff61168f16565b9a9950505050505050505050565b6007805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610bed5780601f10610bc257610100808354040283529160200191610bed565b820191906000526020600020905b815481529060010190602001808311610bd057829003601f168201915b505050505081565b6001600160a01b031660009081526001602052604090205490565b610c18610cfe565b610c69576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60006106ff610cd861107a565b610ce0610eb7565b60885463ffffffff1685610a2a565b6000546001600160a01b031690565b600080546001600160a01b0316610d13611125565b6001600160a01b031614905090565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106a75780601f1061067c576101008083540402835291602001916106a7565b610d8d3382611823565b604080513381526020810183905260008183015290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a150565b610dd98161191f565b50608a54604080517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b158015610e4d57600080fd5b505af1158015610e61573d6000803e3d6000fd5b505050506040513d6020811015610e7757600080fd5b5051610eb45760405162461bcd60e51b8152600401808060200182810382526021815260200180612a6b6021913960400191505060405180910390fd5b50565b608a54604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610f1b57600080fd5b505afa158015610f2f573d6000803e3d6000fd5b505050506040513d6020811015610f4557600080fd5b5051905090565b60006106c5610f59611125565b8461078b85604051806060016040528060258152602001612c3b6025913960026000610f83611125565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61137316565b60006106c5610fc7611125565b8484611215565b610fd88282611a14565b604080513381526020810183905260008183015290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a15050565b611024610cfe565b611075576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b608955565b6000611084610707565b905090565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6110bc610cfe565b61110d576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610eb481611a68565b608a546001600160a01b031681565b3390565b6001600160a01b03831661116e5760405162461bcd60e51b8152600401808060200182810382526024815260200180612c176024913960400191505060405180910390fd5b6001600160a01b0382166111b35760405162461bcd60e51b8152600401808060200182810382526022815260200180612ad46022913960400191505060405180910390fd5b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b03831661125a5760405162461bcd60e51b8152600401808060200182810382526025815260200180612bf26025913960400191505060405180910390fd5b6001600160a01b03821661129f5760405162461bcd60e51b8152600401808060200182810382526023815260200180612a486023913960400191505060405180910390fd5b6112e281604051806060016040528060268152602001612b3e602691396001600160a01b038616600090815260016020526040902054919063ffffffff61137316565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611317908263ffffffff6114ac16565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156114025760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156113c75781810151838201526020016113af565b50505050905090810190601f1680156113f45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082611419575060006106c9565b8282028284828161142657fe5b04146114635760405162461bcd60e51b8152600401808060200182810382526021815260200180612b646021913960400191505060405180910390fd5b9392505050565b600061146383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611b20565b600082820183811015611463576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600080700200000000000000000000000000000000861061156e576040805162461bcd60e51b815260206004820152601860248201527f626173654e2065786365656473206d61782076616c75652e0000000000000000604482015290519081900360640190fd5b848610156115c3576040805162461bcd60e51b815260206004820152601c60248201527f4261736573203c203120617265206e6f7420737570706f727465642e00000000604482015290519081900360640190fd5b600080866001607f1b8902816115d557fe5b04905070015bf0a8b1457695355fb8ac404e7a79e3811015611601576115fa81611b85565b915061160d565b61160a81612030565b91505b60008563ffffffff168763ffffffff1684028161162657fe5b0490507008000000000000000000000000000000008110156116595761164b816120e0565b607f94509450505050611686565b6000611664826124c2565b905061167981607f0360ff1683901c82612554565b9550935061168692505050565b94509492505050565b600061146383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611373565b60006089543a11156117145760405162461bcd60e51b8152600401808060200182810382526048815260200180612af66048913960600191505060405180910390fd5b60008211611769576040805162461bcd60e51b815260206004820152601860248201527f416d6f756e74206d757374206265206e6f6e2d7a65726f2e0000000000000000604482015290519081900360640190fd5b8161177333610bf5565b10156117c6576040805162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e7420746f6b656e7320746f206275726e2e00000000604482015290519081900360640190fd5b60006117d183610ccb565b90506117dd3384611823565b604080513381526020810185905280820183905290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a192915050565b6001600160a01b0382166118685760405162461bcd60e51b8152600401808060200182810382526021815260200180612bd16021913960400191505060405180910390fd5b6118ab81604051806060016040528060228152602001612a8c602291396001600160a01b038516600090815260016020526040902054919063ffffffff61137316565b6001600160a01b0383166000908152600160205260409020556003546118d7908263ffffffff61168f16565b6003556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60006089543a11156119625760405162461bcd60e51b8152600401808060200182810382526048815260200180612af66048913960600191505060405180910390fd5b600082116119b7576040805162461bcd60e51b815260206004820152601960248201527f4465706f736974206d757374206265206e6f6e2d7a65726f2e00000000000000604482015290519081900360640190fd5b60006119c2836106db565b90506119ce33826128f1565b604080513381526020810183905280820185905290517f25b428dfde728ccfaddad7e29e4ac23c24ed7fd1a6e3e3f91894a9a073f5dfff9181900360600190a192915050565b611a1e8282611823565b610a2682611a2a611125565b61078b84604051806060016040528060248152602001612bad602491396001600160a01b038816600090815260026020526040812090610764611125565b6001600160a01b038116611aad5760405162461bcd60e51b8152600401808060200182810382526026815260200180612aae6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008183611b6f5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156113c75781810151838201526020016113af565b506000838581611b7b57fe5b0495945050505050565b6000808080806fd3094c70f034de4b96ff7d5b6f99fcd88610611bda576f40000000000000000000000000000000840193506fd3094c70f034de4b96ff7d5b6f99fcd86001607f1b870281611bd657fe5b0495505b6fa45af1e1f40c333b3de1db4dd55f29a78610611c29576f20000000000000000000000000000000840193506fa45af1e1f40c333b3de1db4dd55f29a76001607f1b870281611c2557fe5b0495505b6f910b022db7ae67ce76b441c27035c6a18610611c78576f10000000000000000000000000000000840193506f910b022db7ae67ce76b441c27035c6a16001607f1b870281611c7457fe5b0495505b6f88415abbe9a76bead8d00cf112e4d4a88610611cc7576f08000000000000000000000000000000840193506f88415abbe9a76bead8d00cf112e4d4a86001607f1b870281611cc357fe5b0495505b6f84102b00893f64c705e841d5d4064bd38610611d16576f04000000000000000000000000000000840193506f84102b00893f64c705e841d5d4064bd36001607f1b870281611d1257fe5b0495505b6f8204055aaef1c8bd5c3259f4822735a28610611d65576f02000000000000000000000000000000840193506f8204055aaef1c8bd5c3259f4822735a26001607f1b870281611d6157fe5b0495505b6f810100ab00222d861931c15e39b44e998610611db4576f01000000000000000000000000000000840193506f810100ab00222d861931c15e39b44e996001607f1b870281611db057fe5b0495505b6f808040155aabbbe9451521693554f7338610611e02576e800000000000000000000000000000840193506f808040155aabbbe9451521693554f7336001607f1b870281611dfe57fe5b0495505b7fffffffffffffffffffffffffffffffff80000000000000000000000000000000860192508291506001607f1b828002049050600160801b838103830204840193506001607f1b81830281611e5357fe5b049150700200000000000000000000000000000000836faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa03830281611e8457fe5b04840193506001607f1b81830281611e9857fe5b049150700300000000000000000000000000000000836f9999999999999999999999999999999903830281611ec957fe5b04840193506001607f1b81830281611edd57fe5b049150700400000000000000000000000000000000836f9249249249249249249249249249249203830281611f0e57fe5b04840193506001607f1b81830281611f2257fe5b049150700500000000000000000000000000000000836f8e38e38e38e38e38e38e38e38e38e38e03830281611f5357fe5b04840193506001607f1b81830281611f6757fe5b049150700600000000000000000000000000000000836f8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8b03830281611f9857fe5b04840193506001607f1b81830281611fac57fe5b049150700700000000000000000000000000000000836f89d89d89d89d89d89d89d89d89d89d8903830281611fdd57fe5b04840193506001607f1b81830281611ff157fe5b049150700800000000000000000000000000000000836f888888888888888888888888888888880383028161202257fe5b049390930195945050505050565b60008082600160801b81106120635760006120506001607f1b83046129e3565b60ff166001607f1b810293509190911c90505b6001607f1b8111156120b357607f5b60ff8116156120b1576001607f1b828002049150600160801b82106120a857600182901c91506001810360ff166001901b830192505b60001901612072565b505b6f05b9de1d10bf4103d647b0955897ba806f03f80fe03f80fe03f80fe03f80fe03f8830204949350505050565b6000670168244fdac780006001607f1b6f0fffffffffffffffffffffffffffffff84168080028290048082028390048083028490049485026710e1b3be415a00009092026705a0913f6b1e000091909102010192909181830204905080664807432bc1800002830192506001607f1b8282028161215957fe5b04905080660c0135dca0400002830192506001607f1b8282028161217957fe5b049050806601b707b1cdc00002830192506001607f1b8282028161219957fe5b049050806536e0f639b80002830192506001607f1b828202816121b857fe5b04905080650618fee9f80002830192506001607f1b828202816121d757fe5b04905080649c197dcc0002830192506001607f1b828202816121f557fe5b04905080640e30dce40002830192506001607f1b8282028161221357fe5b0490508064012ebd130002830192506001607f1b8282028161223157fe5b049050806317499f0002830192506001607f1b8282028161224e57fe5b049050806301a9d48002830192506001607f1b8282028161226b57fe5b04905080621c638002830192506001607f1b8282028161228757fe5b049050806201c63802830192506001607f1b828202816122a357fe5b04905080611ab802830192506001607f1b828202816122be57fe5b0490508061017c02830192506001607f1b828202816122d957fe5b04905080601402830192506001607f1b828202816122f357fe5b6721c3677c82b400009190049384010482016001607f1b019290506f100000000000000000000000000000008516156123505770018ebef9eac820ae8682b9793ac6d1e7767001c3d6a24ed82218787d624d3e5eba95f984020492505b6f20000000000000000000000000000000851615612392577001368b2fc6f9609fe7aceb46aa619baed470018ebef9eac820ae8682b9793ac6d1e77884020492505b6f400000000000000000000000000000008516156123d3576fbc5ab1b16779be3575bd8f0520a9f21f7001368b2fc6f9609fe7aceb46aa619baed584020492505b6001607f1b851615612407576f454aaa8efe072e7f6ddbab84b40a55c96fbc5ab1b16779be3575bd8f0520a9f21e84020492505b600160801b85161561243b576f0960aadc109e7a3bf4578099615711ea6f454aaa8efe072e7f6ddbab84b40a55c584020492505b70020000000000000000000000000000000085161561247b576e2bf84208204f5977f9a8cf01fdce3d6f0960aadc109e7a3bf4578099615711d784020492505b7004000000000000000000000000000000008516156124b9576d03c6ab775dd0b95b4cbee7e65d116e2bf84208204f5977f9a8cf01fdc30784020492505b50909392505050565b60006020607f5b8060ff168260010160ff161015612511576000600260ff848401160490508460088260ff16608081106124f857fe5b0154106125075780925061250b565b8091505b506124c9565b8360088260ff166080811061252257fe5b0154106125325791506107029050565b8360088360ff166080811061254357fe5b01541061255257509050610702565bfe5b60008083905060008090508360ff16858302901c9150816f03442c4e6074a82f1797f72ac000000002810190508360ff16858302901c9150816f0116b96f757c380fb287fd0e4000000002810190508360ff16858302901c9150816e45ae5bdd5f0e03eca1ff439000000002810190508360ff16858302901c9150816e0defabf91302cd95b9ffda5000000002810190508360ff16858302901c9150816e02529ca9832b22439efff9b800000002810190508360ff16858302901c9150816d54f1cf12bd04e516b6da8800000002810190508360ff16858302901c9150816d0a9e39e257a09ca2d6db5100000002810190508360ff16858302901c9150816d012e066e7b839fa050c30900000002810190508360ff16858302901c9150816c1e33d7d926c329a1ad1a80000002810190508360ff16858302901c9150816c02bee513bdb4a6b19b5f80000002810190508360ff16858302901c9150816b3a9316fa79b88eccf2a0000002810190508360ff16858302901c9150816b048177ebe1fa81237520000002810190508360ff16858302901c9150816a5263fe90242dcbacf0000002810190508360ff16858302901c9150816a057e22099c030d9410000002810190508360ff16858302901c9150816957e22099c030d941000002810190508360ff16858302901c91508169052b6b5456997631000002810190508360ff16858302901c915081684985f67696bf74800002810190508360ff16858302901c9150816803dea12ea99e49800002810190508360ff16858302901c9150816731880f2214b6e00002810190508360ff16858302901c91508167025bcff56eb3600002810190508360ff16858302901c915081661b722e10ab100002810190508360ff16858302901c9150816601317c7007700002810190508360ff16858302901c915081650cba84aafa0002810190508360ff16858302901c9150816482573a0a0002810190508360ff16858302901c9150816405035ad90002810190508360ff16858302901c915081632f881b0002810190508360ff16858302901c9150816301b2934002810190508360ff16858302901c915081620efc4002810190508360ff16858302901c915081617fe002810190508360ff16858302901c91508161042002810190508360ff16858302901c915081602102810190508360ff16858302901c915081600102810190508360ff166001901b856f0688589cc0e9505e2f2fee558000000083816128e557fe5b04010195945050505050565b6001600160a01b03821661294c576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60035461295f908263ffffffff6114ac16565b6003556001600160a01b03821660009081526001602052604090205461298b908263ffffffff6114ac16565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008082610100811015612a0c575b6001811115612a07576001918201911c6129f2565b612a40565b60805b60ff811615612a3e57600160ff82161b8210612a33579182179160ff81169190911c905b60011c607f16612a0f565b505b509291505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573736d696e7428292045524332302e7472616e7366657246726f6d206661696c65642e45524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373476173207072696365206d757374206265203c3d206d6178696d756d2067617320707269636520746f2070726576656e742066726f6e742072756e6e696e672061747461636b732e45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158202ba11c32916c02de48dabacc6ea5e156ef54208dc78675592d0b3ca307828b2a64736f6c63430005100032", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80637cbed3e011610104578063a457c2d7116100a2578063da12457a11610071578063da12457a146105b7578063dd62ed3e146105bf578063f2fde38b146105ed578063f4325d6714610613576101da565b8063a457c2d714610516578063a9059cbb14610542578063b265c7021461056e578063d2fa635e1461059a576101da565b806395d89b41116100de57806395d89b41146104cc57806396343886146104d4578063a0712d68146104f1578063a10954fe1461050e576101da565b80637cbed3e0146104835780638da5cb5b146104a05780638f32d59b146104c4576101da565b8063313ce5671161017c57806349f9b0f71161014b57806349f9b0f71461041857806354fd4d501461044d57806370a0823114610455578063715018a61461047b576101da565b8063313ce567146103a757806339509351146103c55780633de39c11146103f157806342966c68146103f9576101da565b80630d8f9f7f116101b85780630d8f9f7f1461030557806318160ddd1461033457806323b872dd1461033c57806329a00e7c14610372576101da565b806306fdde0314610227578063095ea7b3146102a45780630c7d5cd8146102e4575b6040805162461bcd60e51b815260206004820152601e60248201527f43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2e0000604482015290519081900360640190fd5b61022f61061b565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610269578181015183820152602001610251565b50505050905090810190601f1680156102965780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102d0600480360360408110156102ba57600080fd5b506001600160a01b0381351690602001356106b1565b604080519115158252519081900360200190f35b6102ec6106cf565b6040805163ffffffff9092168252519081900360200190f35b6103226004803603602081101561031b57600080fd5b50356106db565b60408051918252519081900360200190f35b610322610707565b6102d06004803603606081101561035257600080fd5b506001600160a01b0381358116916020810135909116906040013561070d565b6103226004803603608081101561038857600080fd5b5080359060208101359063ffffffff604082013516906060013561079a565b6103af6108cb565b6040805160ff9092168252519081900360200190f35b6102d0600480360360408110156103db57600080fd5b506001600160a01b0381351690602001356108d4565b610322610928565b6104166004803603602081101561040f57600080fd5b503561092e565b005b6103226004803603608081101561042e57600080fd5b5080359060208101359063ffffffff6040820135169060600135610a2a565b61022f610b67565b6103226004803603602081101561046b57600080fd5b50356001600160a01b0316610bf5565b610416610c10565b6103226004803603602081101561049957600080fd5b5035610ccb565b6104a8610cef565b604080516001600160a01b039092168252519081900360200190f35b6102d0610cfe565b61022f610d22565b610416600480360360208110156104ea57600080fd5b5035610d83565b6104166004803603602081101561050757600080fd5b5035610dd0565b610322610eb7565b6102d06004803603604081101561052c57600080fd5b506001600160a01b038135169060200135610f4c565b6102d06004803603604081101561055857600080fd5b506001600160a01b038135169060200135610fba565b6104166004803603604081101561058457600080fd5b506001600160a01b038135169060200135610fce565b610416600480360360208110156105b057600080fd5b503561101c565b61032261107a565b610322600480360360408110156105d557600080fd5b506001600160a01b0381358116916020013516611089565b6104166004803603602081101561060357600080fd5b50356001600160a01b03166110b4565b6104a8611116565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106a75780601f1061067c576101008083540402835291602001916106a7565b820191906000526020600020905b81548152906001019060200180831161068a57829003601f168201915b5050505050905090565b60006106c56106be611125565b8484611129565b5060015b92915050565b60885463ffffffff1681565b60006106ff6106e861107a565b6106f0610eb7565b60885463ffffffff168561079a565b90505b919050565b60035490565b600061071a848484611215565b61079084610726611125565b61078b85604051806060016040528060288152602001612b85602891396001600160a01b038a16600090815260026020526040812090610764611125565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61137316565b611129565b5060019392505050565b600080851180156107ab5750600084115b80156107bd575060008363ffffffff16115b80156107d25750620f424063ffffffff841611155b610823576040805162461bcd60e51b815260206004820152600f60248201527f496e76616c696420696e707574732e0000000000000000000000000000000000604482015290519081900360640190fd5b81610830575060006108c3565b63ffffffff8316620f424014156108685761086184610855878563ffffffff61140a16565b9063ffffffff61146a16565b90506108c3565b6000808061087c858863ffffffff6114ac16565b905061088d818888620f4240611506565b9093509150600060ff83166108a88a8663ffffffff61140a16565b901c90506108bc818a63ffffffff61168f16565b9450505050505b949350505050565b60065460ff1690565b60006106c56108e1611125565b8461078b85600260006108f2611125565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6114ac16565b60895481565b6000610939826116d1565b608a54604080517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810184905290519293506001600160a01b039091169163a9059cbb916044808201926020929091908290030181600087803b1580156109a957600080fd5b505af11580156109bd573d6000803e3d6000fd5b505050506040513d60208110156109d357600080fd5b5051610a26576040805162461bcd60e51b815260206004820152601d60248201527f6275726e28292045524332302e7472616e73666572206661696c65642e000000604482015290519081900360640190fd5b5050565b60008085118015610a3b5750600084115b8015610a4d575060008363ffffffff16115b8015610a625750620f424063ffffffff841611155b8015610a6e5750848211155b610abf576040805162461bcd60e51b815260206004820152600f60248201527f496e76616c696420696e707574732e0000000000000000000000000000000000604482015290519081900360640190fd5b81610acc575060006108c3565b84821415610adb5750826108c3565b63ffffffff8316620f42401415610b005761086185610855868563ffffffff61140a16565b60008080610b14888663ffffffff61168f16565b9050610b258882620f424089611506565b90935091506000610b3c888563ffffffff61140a16565b905060ff831688901b610b5985610855848463ffffffff61168f16565b9a9950505050505050505050565b6007805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610bed5780601f10610bc257610100808354040283529160200191610bed565b820191906000526020600020905b815481529060010190602001808311610bd057829003601f168201915b505050505081565b6001600160a01b031660009081526001602052604090205490565b610c18610cfe565b610c69576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60006106ff610cd861107a565b610ce0610eb7565b60885463ffffffff1685610a2a565b6000546001600160a01b031690565b600080546001600160a01b0316610d13611125565b6001600160a01b031614905090565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106a75780601f1061067c576101008083540402835291602001916106a7565b610d8d3382611823565b604080513381526020810183905260008183015290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a150565b610dd98161191f565b50608a54604080517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b158015610e4d57600080fd5b505af1158015610e61573d6000803e3d6000fd5b505050506040513d6020811015610e7757600080fd5b5051610eb45760405162461bcd60e51b8152600401808060200182810382526021815260200180612a6b6021913960400191505060405180910390fd5b50565b608a54604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610f1b57600080fd5b505afa158015610f2f573d6000803e3d6000fd5b505050506040513d6020811015610f4557600080fd5b5051905090565b60006106c5610f59611125565b8461078b85604051806060016040528060258152602001612c3b6025913960026000610f83611125565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61137316565b60006106c5610fc7611125565b8484611215565b610fd88282611a14565b604080513381526020810183905260008183015290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a15050565b611024610cfe565b611075576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b608955565b6000611084610707565b905090565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6110bc610cfe565b61110d576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610eb481611a68565b608a546001600160a01b031681565b3390565b6001600160a01b03831661116e5760405162461bcd60e51b8152600401808060200182810382526024815260200180612c176024913960400191505060405180910390fd5b6001600160a01b0382166111b35760405162461bcd60e51b8152600401808060200182810382526022815260200180612ad46022913960400191505060405180910390fd5b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b03831661125a5760405162461bcd60e51b8152600401808060200182810382526025815260200180612bf26025913960400191505060405180910390fd5b6001600160a01b03821661129f5760405162461bcd60e51b8152600401808060200182810382526023815260200180612a486023913960400191505060405180910390fd5b6112e281604051806060016040528060268152602001612b3e602691396001600160a01b038616600090815260016020526040902054919063ffffffff61137316565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611317908263ffffffff6114ac16565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156114025760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156113c75781810151838201526020016113af565b50505050905090810190601f1680156113f45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082611419575060006106c9565b8282028284828161142657fe5b04146114635760405162461bcd60e51b8152600401808060200182810382526021815260200180612b646021913960400191505060405180910390fd5b9392505050565b600061146383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611b20565b600082820183811015611463576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600080700200000000000000000000000000000000861061156e576040805162461bcd60e51b815260206004820152601860248201527f626173654e2065786365656473206d61782076616c75652e0000000000000000604482015290519081900360640190fd5b848610156115c3576040805162461bcd60e51b815260206004820152601c60248201527f4261736573203c203120617265206e6f7420737570706f727465642e00000000604482015290519081900360640190fd5b600080866001607f1b8902816115d557fe5b04905070015bf0a8b1457695355fb8ac404e7a79e3811015611601576115fa81611b85565b915061160d565b61160a81612030565b91505b60008563ffffffff168763ffffffff1684028161162657fe5b0490507008000000000000000000000000000000008110156116595761164b816120e0565b607f94509450505050611686565b6000611664826124c2565b905061167981607f0360ff1683901c82612554565b9550935061168692505050565b94509492505050565b600061146383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611373565b60006089543a11156117145760405162461bcd60e51b8152600401808060200182810382526048815260200180612af66048913960600191505060405180910390fd5b60008211611769576040805162461bcd60e51b815260206004820152601860248201527f416d6f756e74206d757374206265206e6f6e2d7a65726f2e0000000000000000604482015290519081900360640190fd5b8161177333610bf5565b10156117c6576040805162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e7420746f6b656e7320746f206275726e2e00000000604482015290519081900360640190fd5b60006117d183610ccb565b90506117dd3384611823565b604080513381526020810185905280820183905290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a192915050565b6001600160a01b0382166118685760405162461bcd60e51b8152600401808060200182810382526021815260200180612bd16021913960400191505060405180910390fd5b6118ab81604051806060016040528060228152602001612a8c602291396001600160a01b038516600090815260016020526040902054919063ffffffff61137316565b6001600160a01b0383166000908152600160205260409020556003546118d7908263ffffffff61168f16565b6003556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60006089543a11156119625760405162461bcd60e51b8152600401808060200182810382526048815260200180612af66048913960600191505060405180910390fd5b600082116119b7576040805162461bcd60e51b815260206004820152601960248201527f4465706f736974206d757374206265206e6f6e2d7a65726f2e00000000000000604482015290519081900360640190fd5b60006119c2836106db565b90506119ce33826128f1565b604080513381526020810183905280820185905290517f25b428dfde728ccfaddad7e29e4ac23c24ed7fd1a6e3e3f91894a9a073f5dfff9181900360600190a192915050565b611a1e8282611823565b610a2682611a2a611125565b61078b84604051806060016040528060248152602001612bad602491396001600160a01b038816600090815260026020526040812090610764611125565b6001600160a01b038116611aad5760405162461bcd60e51b8152600401808060200182810382526026815260200180612aae6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008183611b6f5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156113c75781810151838201526020016113af565b506000838581611b7b57fe5b0495945050505050565b6000808080806fd3094c70f034de4b96ff7d5b6f99fcd88610611bda576f40000000000000000000000000000000840193506fd3094c70f034de4b96ff7d5b6f99fcd86001607f1b870281611bd657fe5b0495505b6fa45af1e1f40c333b3de1db4dd55f29a78610611c29576f20000000000000000000000000000000840193506fa45af1e1f40c333b3de1db4dd55f29a76001607f1b870281611c2557fe5b0495505b6f910b022db7ae67ce76b441c27035c6a18610611c78576f10000000000000000000000000000000840193506f910b022db7ae67ce76b441c27035c6a16001607f1b870281611c7457fe5b0495505b6f88415abbe9a76bead8d00cf112e4d4a88610611cc7576f08000000000000000000000000000000840193506f88415abbe9a76bead8d00cf112e4d4a86001607f1b870281611cc357fe5b0495505b6f84102b00893f64c705e841d5d4064bd38610611d16576f04000000000000000000000000000000840193506f84102b00893f64c705e841d5d4064bd36001607f1b870281611d1257fe5b0495505b6f8204055aaef1c8bd5c3259f4822735a28610611d65576f02000000000000000000000000000000840193506f8204055aaef1c8bd5c3259f4822735a26001607f1b870281611d6157fe5b0495505b6f810100ab00222d861931c15e39b44e998610611db4576f01000000000000000000000000000000840193506f810100ab00222d861931c15e39b44e996001607f1b870281611db057fe5b0495505b6f808040155aabbbe9451521693554f7338610611e02576e800000000000000000000000000000840193506f808040155aabbbe9451521693554f7336001607f1b870281611dfe57fe5b0495505b7fffffffffffffffffffffffffffffffff80000000000000000000000000000000860192508291506001607f1b828002049050600160801b838103830204840193506001607f1b81830281611e5357fe5b049150700200000000000000000000000000000000836faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa03830281611e8457fe5b04840193506001607f1b81830281611e9857fe5b049150700300000000000000000000000000000000836f9999999999999999999999999999999903830281611ec957fe5b04840193506001607f1b81830281611edd57fe5b049150700400000000000000000000000000000000836f9249249249249249249249249249249203830281611f0e57fe5b04840193506001607f1b81830281611f2257fe5b049150700500000000000000000000000000000000836f8e38e38e38e38e38e38e38e38e38e38e03830281611f5357fe5b04840193506001607f1b81830281611f6757fe5b049150700600000000000000000000000000000000836f8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8b03830281611f9857fe5b04840193506001607f1b81830281611fac57fe5b049150700700000000000000000000000000000000836f89d89d89d89d89d89d89d89d89d89d8903830281611fdd57fe5b04840193506001607f1b81830281611ff157fe5b049150700800000000000000000000000000000000836f888888888888888888888888888888880383028161202257fe5b049390930195945050505050565b60008082600160801b81106120635760006120506001607f1b83046129e3565b60ff166001607f1b810293509190911c90505b6001607f1b8111156120b357607f5b60ff8116156120b1576001607f1b828002049150600160801b82106120a857600182901c91506001810360ff166001901b830192505b60001901612072565b505b6f05b9de1d10bf4103d647b0955897ba806f03f80fe03f80fe03f80fe03f80fe03f8830204949350505050565b6000670168244fdac780006001607f1b6f0fffffffffffffffffffffffffffffff84168080028290048082028390048083028490049485026710e1b3be415a00009092026705a0913f6b1e000091909102010192909181830204905080664807432bc1800002830192506001607f1b8282028161215957fe5b04905080660c0135dca0400002830192506001607f1b8282028161217957fe5b049050806601b707b1cdc00002830192506001607f1b8282028161219957fe5b049050806536e0f639b80002830192506001607f1b828202816121b857fe5b04905080650618fee9f80002830192506001607f1b828202816121d757fe5b04905080649c197dcc0002830192506001607f1b828202816121f557fe5b04905080640e30dce40002830192506001607f1b8282028161221357fe5b0490508064012ebd130002830192506001607f1b8282028161223157fe5b049050806317499f0002830192506001607f1b8282028161224e57fe5b049050806301a9d48002830192506001607f1b8282028161226b57fe5b04905080621c638002830192506001607f1b8282028161228757fe5b049050806201c63802830192506001607f1b828202816122a357fe5b04905080611ab802830192506001607f1b828202816122be57fe5b0490508061017c02830192506001607f1b828202816122d957fe5b04905080601402830192506001607f1b828202816122f357fe5b6721c3677c82b400009190049384010482016001607f1b019290506f100000000000000000000000000000008516156123505770018ebef9eac820ae8682b9793ac6d1e7767001c3d6a24ed82218787d624d3e5eba95f984020492505b6f20000000000000000000000000000000851615612392577001368b2fc6f9609fe7aceb46aa619baed470018ebef9eac820ae8682b9793ac6d1e77884020492505b6f400000000000000000000000000000008516156123d3576fbc5ab1b16779be3575bd8f0520a9f21f7001368b2fc6f9609fe7aceb46aa619baed584020492505b6001607f1b851615612407576f454aaa8efe072e7f6ddbab84b40a55c96fbc5ab1b16779be3575bd8f0520a9f21e84020492505b600160801b85161561243b576f0960aadc109e7a3bf4578099615711ea6f454aaa8efe072e7f6ddbab84b40a55c584020492505b70020000000000000000000000000000000085161561247b576e2bf84208204f5977f9a8cf01fdce3d6f0960aadc109e7a3bf4578099615711d784020492505b7004000000000000000000000000000000008516156124b9576d03c6ab775dd0b95b4cbee7e65d116e2bf84208204f5977f9a8cf01fdc30784020492505b50909392505050565b60006020607f5b8060ff168260010160ff161015612511576000600260ff848401160490508460088260ff16608081106124f857fe5b0154106125075780925061250b565b8091505b506124c9565b8360088260ff166080811061252257fe5b0154106125325791506107029050565b8360088360ff166080811061254357fe5b01541061255257509050610702565bfe5b60008083905060008090508360ff16858302901c9150816f03442c4e6074a82f1797f72ac000000002810190508360ff16858302901c9150816f0116b96f757c380fb287fd0e4000000002810190508360ff16858302901c9150816e45ae5bdd5f0e03eca1ff439000000002810190508360ff16858302901c9150816e0defabf91302cd95b9ffda5000000002810190508360ff16858302901c9150816e02529ca9832b22439efff9b800000002810190508360ff16858302901c9150816d54f1cf12bd04e516b6da8800000002810190508360ff16858302901c9150816d0a9e39e257a09ca2d6db5100000002810190508360ff16858302901c9150816d012e066e7b839fa050c30900000002810190508360ff16858302901c9150816c1e33d7d926c329a1ad1a80000002810190508360ff16858302901c9150816c02bee513bdb4a6b19b5f80000002810190508360ff16858302901c9150816b3a9316fa79b88eccf2a0000002810190508360ff16858302901c9150816b048177ebe1fa81237520000002810190508360ff16858302901c9150816a5263fe90242dcbacf0000002810190508360ff16858302901c9150816a057e22099c030d9410000002810190508360ff16858302901c9150816957e22099c030d941000002810190508360ff16858302901c91508169052b6b5456997631000002810190508360ff16858302901c915081684985f67696bf74800002810190508360ff16858302901c9150816803dea12ea99e49800002810190508360ff16858302901c9150816731880f2214b6e00002810190508360ff16858302901c91508167025bcff56eb3600002810190508360ff16858302901c915081661b722e10ab100002810190508360ff16858302901c9150816601317c7007700002810190508360ff16858302901c915081650cba84aafa0002810190508360ff16858302901c9150816482573a0a0002810190508360ff16858302901c9150816405035ad90002810190508360ff16858302901c915081632f881b0002810190508360ff16858302901c9150816301b2934002810190508360ff16858302901c915081620efc4002810190508360ff16858302901c915081617fe002810190508360ff16858302901c91508161042002810190508360ff16858302901c915081602102810190508360ff16858302901c915081600102810190508360ff166001901b856f0688589cc0e9505e2f2fee558000000083816128e557fe5b04010195945050505050565b6001600160a01b03821661294c576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60035461295f908263ffffffff6114ac16565b6003556001600160a01b03821660009081526001602052604090205461298b908263ffffffff6114ac16565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008082610100811015612a0c575b6001811115612a07576001918201911c6129f2565b612a40565b60805b60ff811615612a3e57600160ff82161b8210612a33579182179160ff81169190911c905b60011c607f16612a0f565b505b509291505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573736d696e7428292045524332302e7472616e7366657246726f6d206661696c65642e45524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373476173207072696365206d757374206265203c3d206d6178696d756d2067617320707269636520746f2070726576656e742066726f6e742072756e6e696e672061747461636b732e45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158202ba11c32916c02de48dabacc6ea5e156ef54208dc78675592d0b3ca307828b2a64736f6c63430005100032", - "sourceMap": "562:29:5:-;58:998:8;562:29:5;;58:998:8;562:29:5;;;-1:-1:-1;;;562:29:5;;;;;;;;;;:::i;:::-;;160:10:3;131:39;;145:317:8;8:9:-1;5:2;;;30:1;27;20:12;5:2;145:317:8;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;145:317:8;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;145:317:8;;420:4:-1;411:14;;;;145:317:8;;;;;411:14:-1;145:317:8;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;145:317:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;145:317:8;;420:4:-1;411:14;;;;145:317:8;;;;;411:14:-1;145:317:8;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;145:317:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;145:317:8;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;145:317:8;-1:-1:-1;359:5:8;366:7;145:317;;;;359:5;366:7;145:317;698:17:14;718:12;-1:-1:-1;;;;;718:10:14;:12;:::i;:::-;740:6;:18;;-1:-1:-1;;;;;;740:18:14;-1:-1:-1;;;;;740:18:14;;;;;;;773:43;;740:18;;-1:-1:-1;740:18:14;773:43;;740:6;;773:43;-1:-1:-1;504:12:16;;;;:5;;:12;;;;;:::i;:::-;-1:-1:-1;526:16:16;;;;:7;;:16;;;;;:::i;:::-;-1:-1:-1;552:9:16;:20;;-1:-1:-1;;552:20:16;;;;;;;;;;;;-1:-1:-1;;;;;;;4049:15:5;:54;-1:-1:-1;;;;;4113:15:5;:54;-1:-1:-1;;;;;4177:15:5;:54;-1:-1:-1;;;;;4241:15:5;:54;-1:-1:-1;;;;;4305:15:5;:54;-1:-1:-1;;;;;4369:15:5;:54;-1:-1:-1;;;;;4433:15:5;:54;-1:-1:-1;;;;;4497:15:5;:54;-1:-1:-1;;;;;4561:15:5;:54;-1:-1:-1;;;;;4625:15:5;:54;-1:-1:-1;;;;;4689:15:5;:54;-1:-1:-1;;;;;4753:15:5;:54;-1:-1:-1;;;;;4817:15:5;:54;-1:-1:-1;;;;;4881:15:5;:54;-1:-1:-1;;;;;4945:15:5;:54;-1:-1:-1;;;;;5009:15:5;:54;-1:-1:-1;;;;;5073:15:5;:54;-1:-1:-1;;;;;5137:15:5;:54;-1:-1:-1;;;;;5201:15:5;:54;-1:-1:-1;;;;;5265:15:5;:54;-1:-1:-1;;;;;5329:15:5;:54;-1:-1:-1;;;;;5393:15:5;:54;-1:-1:-1;;;;;5457:15:5;:54;-1:-1:-1;;;;;5521:15:5;:54;-1:-1:-1;;;;;5585:15:5;:54;-1:-1:-1;;;;;5649:15:5;:54;-1:-1:-1;;;;;5713:15:5;:54;-1:-1:-1;;;;;5777:15:5;:54;-1:-1:-1;;;;;5841:15:5;:54;-1:-1:-1;;;;;5905:15:5;:54;-1:-1:-1;;;;;5969:15:5;:54;-1:-1:-1;;;;;6033:15:5;:54;-1:-1:-1;;;;;6097:15:5;:54;-1:-1:-1;;;;;6161:15:5;:54;-1:-1:-1;;;;;6225:15:5;:54;-1:-1:-1;;;;;6289:15:5;:54;-1:-1:-1;;;;;6353:15:5;:54;-1:-1:-1;;;;;6417:15:5;:54;-1:-1:-1;;;;;6481:15:5;:54;-1:-1:-1;;;;;6545:15:5;:54;-1:-1:-1;;;;;6609:15:5;:54;-1:-1:-1;;;;;6673:15:5;:54;-1:-1:-1;;;;;6737:15:5;:54;-1:-1:-1;;;;;6801:15:5;:54;-1:-1:-1;;;;;6865:15:5;:54;6947:36;6929:15;:54;7011:36;6993:15;:54;7075:36;7057:15;:54;7139:36;7121:15;:54;7203:36;7185:15;:54;7267:36;7249:15;:54;7331:36;7313:15;:54;7395:36;7377:15;:54;7459:36;7441:15;:54;7523:36;7505:15;:54;7587:36;7569:15;:54;7651:36;7633:15;:54;7715:36;7697:15;:54;7779:36;7761:15;:54;7843:36;7825:15;:54;7907:36;7889:15;:54;7971:36;7953:15;:54;8035:36;8017:15;:54;-1:-1:-1;;;;;8081:15:5;:54;8163:36;8145:15;:54;8227:36;8209:15;:54;8291:36;8273:15;:54;8355:36;8337:15;:54;8420:36;8401:16;:55;8485:36;8466:16;:55;8550:36;8531:16;:55;8615:36;8596:16;:55;8680:36;8661:16;:55;8745:36;8726:16;:55;8810:36;8791:16;:55;8875:36;8856:16;:55;8940:36;8921:16;:55;9005:36;8986:16;:55;9070:36;9051:16;:55;9135:36;9116:16;:55;9200:36;9181:16;:55;9265:36;9246:16;:55;9330:36;9311:16;:55;9395:36;9376:16;:55;9460:36;9441:16;:55;9525:36;9506:16;:55;9590:36;9571:16;:55;9655:36;9636:16;:55;9720:36;9701:16;:55;9785:36;9766:16;:55;9850:36;9831:16;:55;9915:36;9896:16;:55;9980:36;9961:16;:55;10045:36;10026:16;:55;10110:36;10091:16;:55;10175:36;10156:16;:55;492:12:1;:28;;-1:-1:-1;;492:28:1;;;;;;;;;;;;871:33:7;877:10;889:14;871:5;:33::i;:::-;-1:-1:-1;;427:12:8;:28;;-1:-1:-1;;;;;;427:28:8;-1:-1:-1;;;;;427:28:8;;;;;;;;;;;-1:-1:-1;58:998:8;;-1:-1:-1;;;;;;;58:998:8;788:96:10;867:10;788:96;;:::o;5962:302:15:-;-1:-1:-1;;;;;6037:21:15;;6029:65;;;;;-1:-1:-1;;;6029:65:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;6120:24;6137:6;6120:12;;:16;;;;;;:24;;;;:::i;:::-;6105:12;:39;-1:-1:-1;;;;;6175:18:15;;;;;;:9;:18;;;;;;;;;:30;;6198:6;;6175:22;;;;;:30;;:::i;:::-;-1:-1:-1;;;;;6154:18:15;;;;;;:9;:18;;;;;;;;:51;;;;6220:37;;;;;;;6154:18;;;;6220:37;;;;;;;;;;5962:302;;:::o;834:176:13:-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:13:o;58:998:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;58:998:8;;;-1:-1:-1;58:998:8;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;", - "deployedSourceMap": "58:998:8:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;58:998:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;491:40;;;-1:-1:-1;;;491:40:8;;;;;;;;;;;;;;;;;;;;;;;;;;;644:81:16;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;644:81:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2500:149:15;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2500:149:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;408:26:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;533:206;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;533:206:1;;:::i;:::-;;;;;;;;;;;;;;;;1559:89:15;;;:::i;3107:300::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3107:300:15;;;;;;;;;;;;;;;;;:::i;1129:975:4:-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;1129:975:4;;;;;;;;;;;;;;;;;;;:::i;1472:81:16:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3802:207:15;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3802:207:15;;;;;;;;:::i;131:39:3:-;;;:::i;739:195:8:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;739:195:8;;:::i;:::-;;2789:1165:4;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;2789:1165:4;;;;;;;;;;;;;;;;;;;:::i;562:29:5:-;;;:::i;1706:108:15:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1706:108:15;-1:-1:-1;;;;;1706:108:15;;:::i;1684:137:14:-;;;:::i;745:208:1:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;745:208:1;;:::i;899:77:14:-;;;:::i;:::-;;;;-1:-1:-1;;;;;899:77:14;;;;;;;;;;;;;;1250:92;;;:::i;838:85:16:-;;;:::i;1805:132:7:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1805:132:7;;:::i;540:193:8:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;540:193:8;;:::i;940:114::-;;;:::i;4496:258:15:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4496:258:15;;;;;;;;:::i;2017:155::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2017:155:15;;;;;;;;:::i;1943:150:7:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1943:150:7;;;;;;;;:::i;347:98:3:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;347:98:3;;:::i;917:125:7:-;;;:::i;2230:132:15:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2230:132:15;;;;;;;;;;:::i;1970:107:14:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1970:107:14;-1:-1:-1;;;;;1970:107:14;;:::i;113:25:8:-;;;:::i;644:81:16:-;713:5;706:12;;;;;;;;-1:-1:-1;;706:12:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;681:13;;706:12;;713:5;;706:12;;713:5;706:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:81;:::o;2500:149:15:-;2566:4;2582:39;2591:12;:10;:12::i;:::-;2605:7;2614:6;2582:8;:39::i;:::-;-1:-1:-1;2638:4:15;2500:149;;;;;:::o;408:26:1:-;;;;;;:::o;533:206::-;613:4;636:96;660:18;:16;:18::i;:::-;680:16;:14;:16::i;:::-;698:12;;;;712:19;636:23;:96::i;:::-;629:103;;533:206;;;;:::o;1559:89:15:-;1629:12;;1559:89;:::o;3107:300::-;3196:4;3212:36;3222:6;3230:9;3241:6;3212:9;:36::i;:::-;3258:121;3267:6;3275:12;:10;:12::i;:::-;3289:89;3327:6;3289:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3289:19:15;;;;;;:11;:19;;;;;;3309:12;:10;:12::i;:::-;-1:-1:-1;;;;;3289:33:15;;;;;;;;;;;;-1:-1:-1;3289:33:15;;;:89;;:37;:89;:::i;:::-;3258:8;:121::i;:::-;-1:-1:-1;3396:4:15;3107:300;;;;;:::o;1129:975:4:-;1304:7;1371:1;1361:7;:11;:34;;;;;1394:1;1376:15;:19;1361:34;:55;;;;;1415:1;1399:13;:17;;;1361:55;:93;;;;-1:-1:-1;450:7:4;1420:34;;;;;1361:93;1353:121;;;;;-1:-1:-1;;;1353:121:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;1533:19;1529:58;;-1:-1:-1;1575:1:4;1568:8;;1529:58;1644:34;;;450:7;1644:34;1640:120;;;1701:48;1733:15;1701:27;:7;1713:14;1701:27;:11;:27;:::i;:::-;:31;:48;:31;:48;:::i;:::-;1694:55;;;;1640:120;1769:14;;;1834:35;:14;1853:15;1834:35;:18;:35;:::i;:::-;1818:51;;1901:85;1920:5;1927:15;1944:13;450:7;1901:5;:85::i;:::-;1879:107;;-1:-1:-1;1879:107:4;-1:-1:-1;1996:22:4;2021:32;;;:19;:7;1879:107;2021:19;:11;:19;:::i;:::-;:32;;;-1:-1:-1;2070:27:4;2021:32;2089:7;2070:27;:18;:27;:::i;:::-;2063:34;;;;;;1129:975;;;;;;;:::o;1472:81:16:-;1537:9;;;;1472:81;:::o;3802:207:15:-;3882:4;3898:83;3907:12;:10;:12::i;:::-;3921:7;3930:50;3969:10;3930:11;:25;3942:12;:10;:12::i;:::-;-1:-1:-1;;;;;3930:25:15;;;;;;;;;;;;;;;;;-1:-1:-1;3930:25:15;;;:34;;;;;;;;;;;:50;:38;:50;:::i;131:39:3:-;;;;:::o;739:195:8:-;784:17;804:24;820:7;804:15;:24::i;:::-;846:12;;:47;;;;;;868:10;846:47;;;;;;;;;;;;784:44;;-1:-1:-1;;;;;;846:12:8;;;;:21;;:47;;;;;;;;;;;;;;;:12;;:47;;;5:2:-1;;;;30:1;27;20:12;5:2;846:47:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;846:47:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;846:47:8;838:89;;;;;-1:-1:-1;;;838:89:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;739:195;;:::o;2789:1165:4:-;2957:7;3024:1;3014:7;:11;:34;;;;;3047:1;3029:15;:19;3014:34;:55;;;;;3068:1;3052:13;:17;;;3014:55;:93;;;;-1:-1:-1;450:7:4;3073:34;;;;;3014:93;:119;;;;;3126:7;3111:11;:22;;3014:119;3006:147;;;;;-1:-1:-1;;;3006:147:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;3209:16;3205:55;;-1:-1:-1;3248:1:4;3241:8;;3205:55;3342:7;3327:11;:22;3323:75;;;-1:-1:-1;3372:15:4;3365:22;;3323:75;3455:34;;;450:7;3455:34;3451:117;;;3512:45;3549:7;3512:32;:15;3532:11;3512:32;:19;:32;:::i;3451:117::-;3577:14;;;3642:24;:7;3654:11;3642:24;:11;:24;:::i;:::-;3626:40;;3698:77;3717:7;3726:5;450:7;3752:13;3698:5;:77::i;:::-;3676:99;;-1:-1:-1;3676:99:4;-1:-1:-1;3785:18:4;3806:27;:15;3676:99;3806:27;:19;:27;:::i;:::-;3785:48;-1:-1:-1;3864:28:4;;;;;;3909:38;3940:6;3909:26;3785:48;3864:28;3909:26;:14;:26;:::i;:38::-;3902:45;2789:1165;-1:-1:-1;;;;;;;;;;2789:1165:4:o;562:29:5:-;;;;;;;;;;;;;;;-1:-1:-1;;562:29:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1706:108:15:-;-1:-1:-1;;;;;1789:18:15;1763:7;1789:18;;;:9;:18;;;;;;;1706:108::o;1684:137:14:-;1103:9;:7;:9::i;:::-;1095:54;;;;;-1:-1:-1;;;1095:54:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1782:1;1766:6;;1745:40;;-1:-1:-1;;;;;1766:6:14;;;;1745:40;;1782:1;;1745:40;1812:1;1795:19;;;;;;1684:137::o;745:208:1:-;828:4;851:95;871:18;:16;:18::i;:::-;891:16;:14;:16::i;:::-;909:12;;;;923:22;851:19;:95::i;899:77:14:-;937:7;963:6;-1:-1:-1;;;;;963:6:14;899:77;:::o;1250:92::-;1290:4;1329:6;;-1:-1:-1;;;;;1329:6:14;1313:12;:10;:12::i;:::-;-1:-1:-1;;;;;1313:22:14;;1306:29;;1250:92;:::o;838:85:16:-;909:7;902:14;;;;;;;;-1:-1:-1;;902:14:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;877:13;;902:14;;909:7;;902:14;;909:7;902:14;;;;;;;;;;;;;;;;;;;;;;;;1805:132:7;1859:26;1865:10;1877:7;1859:5;:26::i;:::-;1900:30;;;1907:10;1900:30;;;;;;;;1928:1;1900:30;;;;;;;;;;;;;;;1805:132;:::o;540:193:8:-;585:24;601:7;585:15;:24::i;:::-;-1:-1:-1;627:12:8;;:61;;;;;;653:10;627:61;;;;673:4;627:61;;;;;;;;;;;;-1:-1:-1;;;;;627:12:8;;;;:25;;:61;;;;;;;;;;;;;;;:12;;:61;;;5:2:-1;;;;30:1;27;20:12;5:2;627:61:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;627:61:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;627:61:8;619:107;;;;-1:-1:-1;;;619:107:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;540:193;:::o;940:114::-;1010:12;;:37;;;;;;1041:4;1010:37;;;;;;987:4;;-1:-1:-1;;;;;1010:12:8;;:22;;:37;;;;;;;;;;;;;;:12;:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1010:37:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1010:37:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1010:37:8;;-1:-1:-1;940:114:8;:::o;4496:258:15:-;4581:4;4597:129;4606:12;:10;:12::i;:::-;4620:7;4629:96;4668:15;4629:96;;;;;;;;;;;;;;;;;:11;:25;4641:12;:10;:12::i;:::-;-1:-1:-1;;;;;4629:25:15;;;;;;;;;;;;;;;;;-1:-1:-1;4629:25:15;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;2017:155::-;2086:4;2102:42;2112:12;:10;:12::i;:::-;2126:9;2137:6;2102:9;:42::i;1943:150:7:-;2016:25;2026:5;2033:7;2016:9;:25::i;:::-;2056:30;;;2063:10;2056:30;;;;;;;;2084:1;2056:30;;;;;;;;;;;;;;;1943:150;;:::o;347:98:3:-;1103:9:14;:7;:9::i;:::-;1095:54;;;;;-1:-1:-1;;;1095:54:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;416:11:3;:22;347:98::o;917:125:7:-;966:4;989:13;:11;:13::i;:::-;982:20;;917:125;:::o;2230:132:15:-;-1:-1:-1;;;;;2328:18:15;;;2302:7;2328:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2230:132::o;1970:107:14:-;1103:9;:7;:9::i;:::-;1095:54;;;;;-1:-1:-1;;;1095:54:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2042:28;2061:8;2042:18;:28::i;113:25:8:-;;;-1:-1:-1;;;;;113:25:8;;:::o;788:96:10:-;867:10;788:96;:::o;7350:332:15:-;-1:-1:-1;;;;;7443:19:15;;7435:68;;;;-1:-1:-1;;;7435:68:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7521:21:15;;7513:68;;;;-1:-1:-1;;;7513:68:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7592:18:15;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7643:32;;;;;;;;;;;;;;;;;7350:332;;;:::o;5228:464::-;-1:-1:-1;;;;;5325:20:15;;5317:70;;;;-1:-1:-1;;;5317:70:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5405:23:15;;5397:71;;;;-1:-1:-1;;;5397:71:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5499;5521:6;5499:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5499:17:15;;;;;;:9;:17;;;;;;;:71;;:21;:71;:::i;:::-;-1:-1:-1;;;;;5479:17:15;;;;;;;:9;:17;;;;;;:91;;;;5603:20;;;;;;;:32;;5628:6;5603:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;5580:20:15;;;;;;;:9;:20;;;;;;;;;:55;;;;5650:35;;;;;;;5580:20;;5650:35;;;;;;;;;;;;;5228:464;;;:::o;1732:187:13:-;1818:7;1853:12;1845:6;;;;1837:29;;;;-1:-1:-1;;;1837:29:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1837:29:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1888:5:13;;;1732:187::o;2159:459::-;2217:7;2458:6;2454:45;;-1:-1:-1;2487:1:13;2480:8;;2454:45;2521:5;;;2525:1;2521;:5;:1;2544:5;;;;;:10;2536:56;;;;-1:-1:-1;;;2536:56:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2610:1;2159:459;-1:-1:-1;;;2159:459:13:o;3073:130::-;3131:7;3157:39;3161:1;3164;3157:39;;;;;;;;;;;;;;;;;:3;:39::i;834:176::-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:13;;;;;;;;;;;;;;;;;;;;;;;;;;;11604:892:5;11740:7;11749:5;1161:35;11778:6;:16;11770:53;;;;;-1:-1:-1;;;11770:53:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;11851:6;11841;:16;;11833:57;;;;;-1:-1:-1;;;11833:57:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;11901:15;11926:12;11960:6;-1:-1:-1;;;11941:6:5;:16;:25;;;;;;11926:40;;1585:35;11980:4;:22;11976:136;;;12028:16;12039:4;12028:10;:16::i;:::-;12018:26;;11976:136;;;12085:16;12096:4;12085:10;:16::i;:::-;12075:26;;11976:136;12122:23;12166:5;12148:23;;12158:5;12148:15;;:7;:15;:23;;;;;;12122:49;;1669:35;12185:15;:33;12181:309;;;12242:27;12253:15;12242:10;:27::i;:::-;772:3;12234:51;;;;;;;;;12181:309;12316:15;12334:42;12360:15;12334:25;:42::i;:::-;12316:60;;12398:69;12445:9;772:3;12429:25;12409:46;;:15;:46;;12457:9;12398:10;:69::i;:::-;12390:89;-1:-1:-1;12469:9:5;-1:-1:-1;12390:89:5;;-1:-1:-1;;;12390:89:5;11604:892;;;;;;;;:::o;1274:134:13:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;1390:409:7:-;1461:4;235:11:3;;220;:26;;212:111;;;;-1:-1:-1;;;212:111:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1495:1:7;1485:7;:11;1477:48;;;;;-1:-1:-1;;;1477:48:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;1568:7;1543:21;1553:10;1543:9;:21::i;:::-;:32;;1535:73;;;;;-1:-1:-1;;;1535:73:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;1619:17;1639:32;1663:7;1639:23;:32::i;:::-;1619:52;;1681:26;1687:10;1699:7;1681:5;:26::i;:::-;1722:41;;;1729:10;1722:41;;;;;;;;;;;;;;;;;;;;;;;;;1780:12;1390:409;-1:-1:-1;;1390:409:7:o;6583:342:15:-;-1:-1:-1;;;;;6658:21:15;;6650:67;;;;-1:-1:-1;;;6650:67:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6749:68;6772:6;6749:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6749:18:15;;;;;;:9;:18;;;;;;;:68;;:22;:68;:::i;:::-;-1:-1:-1;;;;;6728:18:15;;;;;;:9;:18;;;;;:89;6842:12;;:24;;6859:6;6842:24;:16;:24;:::i;:::-;6827:12;:39;6881:37;;;;;;;;6907:1;;-1:-1:-1;;;;;6881:37:15;;;;;;;;;;;;6583:342;;:::o;1048:336:7:-;1120:4;235:11:3;;220;:26;;212:111;;;;-1:-1:-1;;;212:111:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1155:1:7;1144:8;:12;1136:50;;;;;-1:-1:-1;;;1136:50:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;1197:17;1217:33;1241:8;1217:23;:33::i;:::-;1197:53;;1260:31;1266:10;1278:12;1260:5;:31::i;:::-;1306:42;;;1313:10;1306:42;;;;;;;;;;;;;;;;;;;;;;;;;1365:12;1048:336;-1:-1:-1;;1048:336:7:o;7860:229:15:-;7931:22;7937:7;7946:6;7931:5;:22::i;:::-;7963:119;7972:7;7981:12;:10;:12::i;:::-;7995:86;8034:6;7995:86;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7995:20:15;;;;;;:11;:20;;;;;;8016:12;:10;:12::i;2178:225:14:-;-1:-1:-1;;;;;2251:22:14;;2243:73;;;;-1:-1:-1;;;2243:73:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2352:6;;;2331:38;;-1:-1:-1;;;;;2331:38:14;;;;2352:6;;;2331:38;;;2379:6;:17;;;;-1:-1:-1;;;;;2379:17:14;;;;;;;;;;2178:225::o;3718:338:13:-;3804:7;3904:12;3897:5;3889:28;;;;-1:-1:-1;;;3889:28:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3889:28:13;;3927:9;3943:1;3939;:5;;;;;;;3718:338;-1:-1:-1;;;;;3718:338:13:o;19589:2397:5:-;19643:7;;;;;19755:34;19750:39;;19746:143;;19799:34;19792:41;;;;19853:34;-1:-1:-1;;;19839:1:5;:11;:48;;;;;;19835:52;;19746:143;19907:34;19902:1;:39;19898:143;;19951:34;19944:41;;;;20005:34;-1:-1:-1;;;19991:1:5;:11;:48;;;;;;19987:52;;19898:143;20059:34;20054:1;:39;20050:143;;20103:34;20096:41;;;;20157:34;-1:-1:-1;;;20143:1:5;:11;:48;;;;;;20139:52;;20050:143;20211:34;20206:1;:39;20202:143;;20255:34;20248:41;;;;20309:34;-1:-1:-1;;;20295:1:5;:11;:48;;;;;;20291:52;;20202:143;20363:34;20358:1;:39;20354:143;;20407:34;20400:41;;;;20461:34;-1:-1:-1;;;20447:1:5;:11;:48;;;;;;20443:52;;20354:143;20515:34;20510:1;:39;20506:143;;20559:34;20552:41;;;;20613:34;-1:-1:-1;;;20599:1:5;:11;:48;;;;;;20595:52;;20506:143;20667:34;20662:1;:39;20658:143;;20711:34;20704:41;;;;20765:34;-1:-1:-1;;;20751:1:5;:11;:48;;;;;;20747:52;;20658:143;20819:34;20814:1;:39;20810:143;;20863:34;20856:41;;;;20917:34;-1:-1:-1;;;20903:1:5;:11;:48;;;;;;20899:52;;20810:143;20971:11;;;;-1:-1:-1;20971:11:5;;-1:-1:-1;;;;20996:5:5;;;:15;;-1:-1:-1;;;;21033:39:5;;;21028:45;;:83;21021:90;;;;-1:-1:-1;;;21121:1:5;21117;:5;:15;;;;;;21113:19;;21197:35;21192:1;21154:35;:39;21149:1;:45;:83;;;;;;21142:90;;;;-1:-1:-1;;;21242:1:5;21238;:5;:15;;;;;;21234:19;;21318:35;21313:1;21275:35;:39;21270:1;:45;:83;;;;;;21263:90;;;;-1:-1:-1;;;21363:1:5;21359;:5;:15;;;;;;21355:19;;21439:35;21434:1;21396:35;:39;21391:1;:45;:83;;;;;;21384:90;;;;-1:-1:-1;;;21484:1:5;21480;:5;:15;;;;;;21476:19;;21560:35;21555:1;21517:35;:39;21512:1;:45;:83;;;;;;21505:90;;;;-1:-1:-1;;;21605:1:5;21601;:5;:15;;;;;;21597:19;;21681:35;21676:1;21638:35;:39;21633:1;:45;:83;;;;;;21626:90;;;;-1:-1:-1;;;21726:1:5;21722;:5;:15;;;;;;21718:19;;21802:35;21797:1;21759:35;:39;21754:1;:45;:83;;;;;;21747:90;;;;-1:-1:-1;;;21847:1:5;21843;:5;:15;;;;;;21839:19;;21923:35;21918:1;21880:35;:39;21875:1;:45;:83;;;;;;21868:90;;;;;19589:2397;-1:-1:-1;;;;;19589:2397:5:o;12661:826::-;12716:7;;12772:2;-1:-1:-1;;;12880:12:5;;12876:152;;12908:11;12922:22;-1:-1:-1;;;12932:1:5;:11;12922:9;:22::i;:::-;12958:11;;-1:-1:-1;;;13002:15:5;;;-1:-1:-1;12958:11:5;;;;;-1:-1:-1;12876:152:5;-1:-1:-1;;;13133:1:5;:11;13129:297;;;772:3;13160:256;13190:5;;;;13160:256;;-1:-1:-1;;;13225:5:5;;;13224:17;13220:21;;-1:-1:-1;;;13280:1:5;:12;13276:126;;13322:1;13316:7;;;;;13381:1;13377;:5;13369:14;;629:1;13369:14;;13362:21;;;;13276:126;-1:-1:-1;;13197:3:5;13160:256;;;;13129:297;1398:33;1316;13443:19;;:37;;12661:826;-1:-1:-1;;;;12661:826:5:o;22157:2980::-;22211:7;22555:18;-1:-1:-1;;;22303:38:5;;;22355:5;;;:15;;;22441:5;;;:15;;;22527:5;;;:15;;;22551:22;;;22383:18;22379:22;;;22469:18;22465:22;;;;22458:29;22544;;22303:38;;22613:5;;;:15;22609:19;;22637:1;22641:18;22637:22;22630:29;;;;-1:-1:-1;;;22703:1:5;22699;:5;:15;;;;;;22695:19;;22723:1;22727:18;22723:22;22716:29;;;;-1:-1:-1;;;22789:1:5;22785;:5;:15;;;;;;22781:19;;22809:1;22813:18;22809:22;22802:29;;;;-1:-1:-1;;;22875:1:5;22871;:5;:15;;;;;;22867:19;;22895:1;22899:18;22895:22;22888:29;;;;-1:-1:-1;;;22961:1:5;22957;:5;:15;;;;;;22953:19;;22981:1;22985:18;22981:22;22974:29;;;;-1:-1:-1;;;23047:1:5;23043;:5;:15;;;;;;23039:19;;23067:1;23071:18;23067:22;23060:29;;;;-1:-1:-1;;;23133:1:5;23129;:5;:15;;;;;;23125:19;;23153:1;23157:18;23153:22;23146:29;;;;-1:-1:-1;;;23219:1:5;23215;:5;:15;;;;;;23211:19;;23239:1;23243:18;23239:22;23232:29;;;;-1:-1:-1;;;23305:1:5;23301;:5;:15;;;;;;23297:19;;23325:1;23329:18;23325:22;23318:29;;;;-1:-1:-1;;;23391:1:5;23387;:5;:15;;;;;;23383:19;;23411:1;23415:18;23411:22;23404:29;;;;-1:-1:-1;;;23477:1:5;23473;:5;:15;;;;;;23469:19;;23497:1;23501:18;23497:22;23490:29;;;;-1:-1:-1;;;23563:1:5;23559;:5;:15;;;;;;23555:19;;23583:1;23587:18;23583:22;23576:29;;;;-1:-1:-1;;;23649:1:5;23645;:5;:15;;;;;;23641:19;;23669:1;23673:18;23669:22;23662:29;;;;-1:-1:-1;;;23735:1:5;23731;:5;:15;;;;;;23727:19;;23755:1;23759:18;23755:22;23748:29;;;;-1:-1:-1;;;23821:1:5;23817;:5;:15;;;;;;23813:19;;23841:1;23845:18;23841:22;23834:29;;;;-1:-1:-1;;;23907:1:5;23903;:5;:15;;;;;23997:18;23903:15;;;23920:29;;;23991:24;:28;;-1:-1:-1;;;23991:38:5;;23903:15;-1:-1:-1;24099:35:5;24095:39;;24094:46;24090:137;;24192:35;24154;24148:41;;:79;24142:85;;24090:137;24246:35;24242:39;;24241:46;24237:137;;24339:35;24301;24295:41;;:79;24289:85;;24237:137;24393:35;24389:39;;24388:46;24384:137;;24486:35;24448;24442:41;;:79;24436:85;;24384:137;-1:-1:-1;;;24536:39:5;;24535:46;24531:137;;24633:35;24595;24589:41;;:79;24583:85;;24531:137;-1:-1:-1;;;24683:39:5;;24682:46;24678:137;;24780:35;24742;24736:41;;:79;24730:85;;24678:137;24834:35;24830:39;;24829:46;24825:137;;24927:35;24889;24883:41;;:79;24877:85;;24825:137;24981:35;24977:39;;24976:46;24972:137;;25074:35;25036;25030:41;;:79;25024:85;;24972:137;-1:-1:-1;25127:3:5;;22157:2980;-1:-1:-1;;;22157:2980:5:o;14495:508::-;14569:5;725:2;772:3;14659:179;14675:2;14666:11;;:2;14671:1;14666:6;:11;;;14659:179;;;14693:9;14717:1;14705:13;14706:7;;;14705:13;;14693:25;;14756:2;14736:11;14748:3;14736:16;;;;;;;;;;;:22;14732:95;;14781:3;14776:8;;14732:95;;;14824:3;14819:8;;14732:95;14659:179;;;;14871:2;14852:11;14864:2;14852:15;;;;;;;;;;;:21;14848:48;;14894:2;-1:-1:-1;14887:9:5;;-1:-1:-1;14887:9:5;14848:48;14929:2;14910:11;14922:2;14910:15;;;;;;;;;;;:21;14906:48;;-1:-1:-1;14952:2:5;-1:-1:-1;14945:9:5;;14906:48;14965:13;15587:3826;15660:7;15679:10;15692:2;15679:15;;15704:11;15718:1;15704:15;;15748:10;15735:23;;15741:2;15736;:7;15735:23;;15730:28;;15767:2;15772:33;15767:38;15760:45;;;;15859:10;15846:23;;15852:2;15847;:7;15846:23;;15841:28;;15878:2;15883:33;15878:38;15871:45;;;;15970:10;15957:23;;15963:2;15958;:7;15957:23;;15952:28;;15989:2;15994:33;15989:38;15982:45;;;;16081:10;16068:23;;16074:2;16069;:7;16068:23;;16063:28;;16100:2;16105:33;16100:38;16093:45;;;;16192:10;16179:23;;16185:2;16180;:7;16179:23;;16174:28;;16211:2;16216:33;16211:38;16204:45;;;;16303:10;16290:23;;16296:2;16291;:7;16290:23;;16285:28;;16322:2;16327:33;16322:38;16315:45;;;;16414:10;16401:23;;16407:2;16402;:7;16401:23;;16396:28;;16433:2;16438:33;16433:38;16426:45;;;;16525:10;16512:23;;16518:2;16513;:7;16512:23;;16507:28;;16544:2;16549:33;16544:38;16537:45;;;;16636:10;16623:23;;16629:2;16624;:7;16623:23;;16618:28;;16655:2;16660:33;16655:38;16648:45;;;;16747:10;16734:23;;16740:2;16735;:7;16734:23;;16729:28;;16766:2;16771:33;16766:38;16759:45;;;;16858:10;16845:23;;16851:2;16846;:7;16845:23;;16840:28;;16877:2;16882:33;16877:38;16870:45;;;;16969:10;16956:23;;16962:2;16957;:7;16956:23;;16951:28;;16988:2;16993:33;16988:38;16981:45;;;;17080:10;17067:23;;17073:2;17068;:7;17067:23;;17062:28;;17099:2;17104:33;17099:38;17092:45;;;;17191:10;17178:23;;17184:2;17179;:7;17178:23;;17173:28;;17210:2;17215:33;17210:38;17203:45;;;;17302:10;17289:23;;17295:2;17290;:7;17289:23;;17284:28;;17321:2;17326:33;17321:38;17314:45;;;;17413:10;17400:23;;17406:2;17401;:7;17400:23;;17395:28;;17432:2;17437:33;17432:38;17425:45;;;;17524:10;17511:23;;17517:2;17512;:7;17511:23;;17506:28;;17543:2;17548:33;17543:38;17536:45;;;;17635:10;17622:23;;17628:2;17623;:7;17622:23;;17617:28;;17654:2;17659:33;17654:38;17647:45;;;;17746:10;17733:23;;17739:2;17734;:7;17733:23;;17728:28;;17765:2;17770:33;17765:38;17758:45;;;;17857:10;17844:23;;17850:2;17845;:7;17844:23;;17839:28;;17876:2;17881:33;17876:38;17869:45;;;;17968:10;17955:23;;17961:2;17956;:7;17955:23;;17950:28;;17987:2;17992:33;17987:38;17980:45;;;;18079:10;18066:23;;18072:2;18067;:7;18066:23;;18061:28;;18098:2;18103:33;18098:38;18091:45;;;;18190:10;18177:23;;18183:2;18178;:7;18177:23;;18172:28;;18209:2;18214:33;18209:38;18202:45;;;;18301:10;18288:23;;18294:2;18289;:7;18288:23;;18283:28;;18320:2;18325:33;18320:38;18313:45;;;;18412:10;18399:23;;18405:2;18400;:7;18399:23;;18394:28;;18431:2;18436:33;18431:38;18424:45;;;;18523:10;18510:23;;18516:2;18511;:7;18510:23;;18505:28;;18542:2;18547:33;18542:38;18535:45;;;;18634:10;18621:23;;18627:2;18622;:7;18621:23;;18616:28;;18653:2;18658:33;18653:38;18646:45;;;;18745:10;18732:23;;18738:2;18733;:7;18732:23;;18727:28;;18764:2;18769:33;18764:38;18757:45;;;;18856:10;18843:23;;18849:2;18844;:7;18843:23;;18838:28;;18875:2;18880:33;18875:38;18868:45;;;;18967:10;18954:23;;18960:2;18955;:7;18954:23;;18949:28;;18986:2;18991:33;18986:38;18979:45;;;;19078:10;19065:23;;19071:2;19066;:7;19065:23;;19060:28;;19097:2;19102:33;19097:38;19090:45;;;;19189:10;19176:23;;19182:2;19177;:7;19176:23;;19171:28;;19208:2;19213:33;19208:38;19201:45;;;;19345:10;19338:17;;629:1;19338:17;;19332:2;19296:33;19290:3;:39;;;;;;:44;:66;;15587:3826;-1:-1:-1;;;;;15587:3826:5:o;5962:302:15:-;-1:-1:-1;;;;;6037:21:15;;6029:65;;;;;-1:-1:-1;;;6029:65:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;6120:12;;:24;;6137:6;6120:24;:16;:24;:::i;:::-;6105:12;:39;-1:-1:-1;;;;;6175:18:15;;;;;;:9;:18;;;;;;:30;;6198:6;6175:30;:22;:30;:::i;:::-;-1:-1:-1;;;;;6154:18:15;;;;;;:9;:18;;;;;;;;:51;;;;6220:37;;;;;;;6154:18;;;;6220:37;;;;;;;;;;5962:302;;:::o;13602:532:5:-;13656:5;;13708:2;13729:3;13725:7;;13721:386;;;13784:80;13795:1;13791;:5;13784:80;;;13822:1;13841:8;;;;13816:7;13784:80;;;13721:386;;;13945:3;13930:167;13950:5;;;;13930:167;;629:1;13994:8;;;;13988:15;;13984:99;;14056:8;;;;14027:7;;;;;;;;13984:99;13963:1;13957:7;;;13930:167;;;;13721:386;-1:-1:-1;14124:3:5;13602:532;-1:-1:-1;;13602:532:5:o", + "bytecode": "0x60c0604052600360808190527f302e33000000000000000000000000000000000000000000000000000000000060a090815262000040916007919062000b84565b50670de0b6b3a76400006089553480156200005a57600080fd5b5060405162003ef338038062003ef3833981018060405260c08110156200008057600080fd5b8101908080516401000000008111156200009957600080fd5b82016020810184811115620000ad57600080fd5b8151640100000000811182820187101715620000c857600080fd5b50509291906020018051640100000000811115620000e557600080fd5b82016020810184811115620000f957600080fd5b81516401000000008111828201871017156200011457600080fd5b50506020820151604083015160608401516080909401519295509093509190858585858580858585600062000151640100000000620009e0810204565b60008054600160a060020a031916600160a060020a0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508251620001b090600490602086019062000b84565b508151620001c690600590602085019062000b84565b506006805460ff191660ff9290921691909117905550506001606060020a641c35fedd1502036028556001605e60020a646c3390ecc902036029556001606160020a640cf80147610203602a556001605f60020a6431bdb23e1d0203602b556001605b60020a6502fb1d8fe0830203602c556001605a60020a6505b771955b370203602d556001605960020a650af67a93bb510203602e556001605860020a6515060c256cb30203602f556001605860020a651428a2f98d7302036030556001605660020a654d515663970902036031556001605560020a65944620b0e70f02036032557011c592761c666fffffffffffffffffffff60335570110a688680a757ffffffffffffffffffff603455701056f1b5bedf77ffffffffffffffffffff603555700faadceceeff8bffffffffffffffffffff603655700f05dc6b27edadffffffffffffffffffff603755700e67a5a25da4107fffffffffffffffffff603855700dcff115b14eedffffffffffffffffffff603955700d3e7a392431239fffffffffffffffffff603a55700cb2ff529eb71e4fffffffffffffffffff603b55700c2d415c3db974afffffffffffffffffff603c55700bad03e7d883f69bffffffffffffffffff603d55700b320d03b2c343d5ffffffffffffffffff603e55700abc25204e02828dffffffffffffffffff603f55700a4b16f74ee4bb207fffffffffffffffff6040557009deaf736ac1f569ffffffffffffffffff604155700976bd9952c7aa957fffffffffffffffff6042557009131271922eaa606fffffffffffffffff6043557008b380f3558668c46fffffffffffffffff604455700857ddf0117efa215bffffffffffffffff6045556001608360020a036046557007abbf6f6abb9d087fffffffffffffffff60475570075af62cbac95f7dfa7fffffffffffffff60485570070d7fb7452e187ac13fffffffffffffff6049557006c3390ecc8af379295fffffffffffffff604a5570067c00a3b07ffc01fd6fffffffffffffff604b55700637b647c39cbb9d3d27ffffffffffffff604c557005f63b1fc104dbd39587ffffffffffffff604d557005b771955b36e12f7235ffffffffffffff604e5570057b3d49dda84556d6f6ffffffffffffff604f5570054183095b2c8ececf30ffffffffffffff60505570050a28be635ca2b888f77fffffffffffff6051557004d5156639708c9db33c3fffffffffffff6052557004a23105873875bd52dfdfffffffffffff605355700471649d87199aa990756fffffffffffff6054557004429a21a029d4c1457cfbffffffffffff605555700415bc6d6fb7dd71af2cb3ffffffffffff6056557003eab73b3bbfe282243ce1ffffffffffff6057557003c1771ac9fb6b4c18e229ffffffffffff605855700399e96897690418f785257fffffffffff605955700373fc456c53bb779bf0ea9fffffffffff605a5570034f9e8e490c48e67e6ab8bfffffffffff605b5570032cbfd4a7adc790560b3337ffffffffff605c5570030b50570f6e5d2acca94613ffffffffff605d557002eb40f9f620fda6b56c2861ffffffffff605e557002cc8340ecb0d0f520a6af58ffffffffff605f557002af09481380a0a35cf1ba02ffffffffff606055700292c5bdd3b92ec810287b1b3fffffffff606155700277abdcdab07d5a77ac6d6b9fffffffff60625570025daf6654b1eaa55fd64df5efffffffff606355700244c49c648baa98192dce88b7ffffffff60645570022ce03cd5619a311b2471268bffffffff606555700215f77c045fbe885654a44a0fffffffff6066556001608160020a036067557001eaefdbdaaee7421fc4d3ede5ffffffff6068557001d6bd8b2eb257df7e8ca57b09bfffffff6069557001c35fedd14b861eb0443f7f133fffffff606a557001b0ce43b322bcde4a56e8ada5afffffff606b5570019f0028ec1fff007f5a195a39dfffffff606c5570018ded91f0e72ee74f49b15ba527ffffff606d5570017d8ec7f04136f4e5615fd41a63ffffff606e5570016ddc6556cdb84bdc8d12d22e6fffffff606f5570015ecf52776a1155b5bd8395814f7fffff60705570015060c256cb23b3b3cc3754cf40ffffff6071557001428a2f98d728ae223ddab715be3fffff60725570013545598e5c23276ccf0ede68034fffff6073557001288c4161ce1d6f54b7f61081194fffff60745570011c592761c666aa641d5a01a40f17ffff607555700110a688680a7530515f3e6e6cfdcdffff6076557001056f1b5bedf75c6bcb2ce8aed428ffff6077556ffaadceceeff8a0890f3875f008277fff6078556ff05dc6b27edad306388a600f6ba0bfff6079556fe67a5a25da41063de1495d5b18cdbfff607a556fdcff115b14eedde6fc3aa5353f2e4fff607b556fd3e7a3924312399f9aae2e0f868f8fff607c556fcb2ff529eb71e41582cccd5a1ee26fff607d556fc2d415c3db974ab32a51840c0b67edff607e556fbad03e7d883f69ad5b0a186184e06bff607f556fb320d03b2c343d4829abd6075f0cc5ff6080556fabc25204e02828d73c6e80bcdb1a95bf6081556fa4b16f74ee4bb2040a1ec6c15fbbf2df6082556f9deaf736ac1f569deb1b5ae3f36c130f6083556f976bd9952c7aa957f5937d790ef650376084556f9131271922eaa6064b73a22d0bd4f2bf6085556f8b380f3558668c46c91c49a2f8e967b96086556f857ddf0117efa215952912839f6473e66087556088805463ffffffff191663ffffffff92909216919091179055620009ae3383640100000000620009e5810204565b5050608a8054600160a060020a031916600160a060020a0395909516949094179093555062000c269650505050505050565b335b90565b600160a060020a038216151562000a5d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60035462000a7a90826401000000006200170262000b0882021704565b600355600160a060020a03821660009081526001602052604090205462000ab090826401000000006200170262000b0882021704565b600160a060020a03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008282018381101562000b7d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000bc757805160ff191683800117855562000bf7565b8280016001018555821562000bf7579182015b8281111562000bf757825182559160200191906001019062000bda565b5062000c0592915062000c09565b5090565b620009e291905b8082111562000c05576000815560010162000c10565b6132bd8062000c366000396000f3fe608060405234801561001057600080fd5b50600436106101f7576000357c0100000000000000000000000000000000000000000000000000000000900480637cbed3e011610121578063a457c2d7116100bf578063da12457a1161008e578063da12457a14610644578063dd62ed3e1461064c578063f2fde38b14610687578063f4325d67146106ba576101f7565b8063a457c2d71461057c578063a9059cbb146105b5578063b265c702146105ee578063d2fa635e14610627576101f7565b806395d89b41116100fb57806395d89b4114610532578063963438861461053a578063a0712d6814610557578063a10954fe14610574576101f7565b80637cbed3e0146104dc5780638da5cb5b146104f95780638f32d59b1461052a576101f7565b8063313ce5671161019957806349f9b0f71161016857806349f9b0f71461046457806354fd4d501461049957806370a08231146104a1578063715018a6146104d4576101f7565b8063313ce567146103e657806339509351146104045780633de39c111461043d57806342966c6814610445576101f7565b80630d8f9f7f116101d55780630d8f9f7f1461033757806318160ddd1461036657806323b872dd1461036e57806329a00e7c146103b1576101f7565b806306fdde031461024c578063095ea7b3146102c95780630c7d5cd814610316575b60408051600080516020613176833981519152815260206004820152601e60248201527f43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2e0000604482015290519081900360640190fd5b6102546106c2565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561028e578181015183820152602001610276565b50505050905090810190601f1680156102bb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610302600480360360408110156102df57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610758565b604080519115158252519081900360200190f35b61031e610776565b6040805163ffffffff9092168252519081900360200190f35b6103546004803603602081101561034d57600080fd5b5035610782565b60408051918252519081900360200190f35b6103546107ae565b6103026004803603606081101561038457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356107b4565b610354600480360360808110156103c757600080fd5b5080359060208101359063ffffffff604082013516906060013561085c565b6103ee61099f565b6040805160ff9092168252519081900360200190f35b6103026004803603604081101561041a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356109a8565b610354610a09565b6104626004803603602081101561045b57600080fd5b5035610a0f565b005b6103546004803603608081101561047a57600080fd5b5080359060208101359063ffffffff6040820135169060600135610b22565b610254610c6d565b610354600480360360208110156104b757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610cfb565b610462610d23565b610354600480360360208110156104f257600080fd5b5035610df5565b610501610e19565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610302610e35565b610254610e73565b6104626004803603602081101561055057600080fd5b5035610ed4565b6104626004803603602081101561056d57600080fd5b5035610f21565b61035461101f565b6103026004803603604081101561059257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356110c1565b610302600480360360408110156105cb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561113d565b6104626004803603604081101561060457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611151565b6104626004803603602081101561063d57600080fd5b503561119f565b610354611207565b6103546004803603604081101561066257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611216565b6104626004803603602081101561069d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661124e565b6105016112ba565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561074e5780601f106107235761010080835404028352916020019161074e565b820191906000526020600020905b81548152906001019060200180831161073157829003601f168201915b5050505050905090565b600061076c6107656112d6565b84846112da565b5060015b92915050565b60885463ffffffff1681565b60006107a661078f611207565b61079761101f565b60885463ffffffff168561085c565b90505b919050565b60035490565b60006107c1848484611401565b610852846107cd6112d6565b61084d85606060405190810160405280602881526020016131b76028913973ffffffffffffffffffffffffffffffffffffffff8a166000908152600260205260408120906108196112d6565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002054919063ffffffff6115b516565b6112da565b5060019392505050565b6000808511801561086d5750600084115b801561087f575060008363ffffffff16115b80156108945750620f424063ffffffff841611155b15156108ef5760408051600080516020613176833981519152815260206004820152600f60248201527f496e76616c696420696e707574732e0000000000000000000000000000000000604482015290519081900360640190fd5b8115156108fe57506000610997565b63ffffffff8316620f424014156109365761092f84610923878563ffffffff61165416565b9063ffffffff6116c016565b9050610997565b6000808061094a858863ffffffff61170216565b905061095b818888620f4240611764565b9093509150600060ff83166109768a8663ffffffff61165416565b60029190910a90049050610990818a63ffffffff61191016565b9450505050505b949350505050565b60065460ff1690565b600061076c6109b56112d6565b8461084d85600260006109c66112d6565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61170216565b60895481565b6000610a1a82611952565b608a54604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815233600482015260248101849052905192935073ffffffffffffffffffffffffffffffffffffffff9091169163a9059cbb916044808201926020929091908290030181600087803b158015610a9757600080fd5b505af1158015610aab573d6000803e3d6000fd5b505050506040513d6020811015610ac157600080fd5b50511515610b1e5760408051600080516020613176833981519152815260206004820152601d60248201527f6275726e28292045524332302e7472616e73666572206661696c65642e000000604482015290519081900360640190fd5b5050565b60008085118015610b335750600084115b8015610b45575060008363ffffffff16115b8015610b5a5750620f424063ffffffff841611155b8015610b665750848211155b1515610bc15760408051600080516020613176833981519152815260206004820152600f60248201527f496e76616c696420696e707574732e0000000000000000000000000000000000604482015290519081900360640190fd5b811515610bd057506000610997565b84821415610bdf575082610997565b63ffffffff8316620f42401415610c045761092f85610923868563ffffffff61165416565b60008080610c18888663ffffffff61191016565b9050610c298882620f424089611764565b90935091506000610c40888563ffffffff61165416565b905060ff831660020a8802610c5f85610923848463ffffffff61191016565b9a9950505050505050505050565b6007805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610cf35780601f10610cc857610100808354040283529160200191610cf3565b820191906000526020600020905b815481529060010190602001808311610cd657829003601f168201915b505050505081565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b610d2b610e35565b1515610d865760408051600080516020613176833981519152815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60006107a6610e02611207565b610e0a61101f565b60885463ffffffff1685610b22565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6000805473ffffffffffffffffffffffffffffffffffffffff16610e576112d6565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b60058054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561074e5780601f106107235761010080835404028352916020019161074e565b610ede3382611abd565b604080513381526020810183905260008183015290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a150565b610f2a81611bf8565b50608a54604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101849052905173ffffffffffffffffffffffffffffffffffffffff909216916323b872dd916064808201926020929091908290030181600087803b158015610fab57600080fd5b505af1158015610fbf573d6000803e3d6000fd5b505050506040513d6020811015610fd557600080fd5b5051151561101c57604051600080516020613176833981519152815260040180806020018281038252602181526020018061307d6021913960400191505060405180910390fd5b50565b608a54604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b15801561109057600080fd5b505afa1580156110a4573d6000803e3d6000fd5b505050506040513d60208110156110ba57600080fd5b5051905090565b600061076c6110ce6112d6565b8461084d856060604051908101604052806025815260200161326d60259139600260006110f96112d6565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6115b516565b600061076c61114a6112d6565b8484611401565b61115b8282611cfe565b604080513381526020810183905260008183015290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a15050565b6111a7610e35565b15156112025760408051600080516020613176833981519152815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b608955565b60006112116107ae565b905090565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b611256610e35565b15156112b15760408051600080516020613176833981519152815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61101c81611d60565b608a5473ffffffffffffffffffffffffffffffffffffffff1681565b3390565b73ffffffffffffffffffffffffffffffffffffffff831615156113365760405160008051602061317683398151915281526004018080602001828103825260248152602001806132496024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821615156113925760405160008051602061317683398151915281526004018080602001828103825260228152602001806130e66022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316151561145d5760405160008051602061317683398151915281526004018080602001828103825260258152602001806132246025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821615156114b957604051600080516020613176833981519152815260040180806020018281038252602381526020018061305a6023913960400191505060405180910390fd5b61150a81606060405190810160405280602681526020016131506026913973ffffffffffffffffffffffffffffffffffffffff8616600090815260016020526040902054919063ffffffff6115b516565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559084168152205461154c908263ffffffff61170216565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561164c5760405160008051602061317683398151915281526004018080602001828103825283818151815260200191508051906020019080838360005b838110156116115781810151838201526020016115f9565b50505050905090810190601f16801561163e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082151561166557506000610770565b82820282848281151561167457fe5b04146116b95760405160008051602061317683398151915281526004018080602001828103825260218152602001806131966021913960400191505060405180910390fd5b9392505050565b60006116b983836040805190810160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e49565b6000828201838110156116b95760408051600080516020613176833981519152815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008070020000000000000000000000000000000086106117d45760408051600080516020613176833981519152815260206004820152601860248201527f626173654e2065786365656473206d61782076616c75652e0000000000000000604482015290519081900360640190fd5b848610156118315760408051600080516020613176833981519152815260206004820152601c60248201527f4261736573203c203120617265206e6f7420737570706f727465642e00000000604482015290519081900360640190fd5b600080866f80000000000000000000000000000000890281151561185157fe5b04905070015bf0a8b1457695355fb8ac404e7a79e381101561187d5761187681611ebb565b9150611889565b611886816123af565b91505b60008563ffffffff168763ffffffff1684028115156118a457fe5b0490507008000000000000000000000000000000008110156118d7576118c9816124ae565b607f94509450505050611907565b60006118e282612993565b90506118fa60ff607f8390031660020a830482612a25565b9550935061190792505050565b94509492505050565b60006116b983836040805190810160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506115b5565b6089546000903a111561199e5760405160008051602061317683398151915281526004018080602001828103825260488152602001806131086048913960600191505060405180910390fd5b600082116119fb5760408051600080516020613176833981519152815260206004820152601860248201527f416d6f756e74206d757374206265206e6f6e2d7a65726f2e0000000000000000604482015290519081900360640190fd5b81611a0533610cfb565b1015611a605760408051600080516020613176833981519152815260206004820152601c60248201527f496e73756666696369656e7420746f6b656e7320746f206275726e2e00000000604482015290519081900360640190fd5b6000611a6b83610df5565b9050611a773384611abd565b604080513381526020810185905280820183905290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a192915050565b73ffffffffffffffffffffffffffffffffffffffff82161515611b195760405160008051602061317683398151915281526004018080602001828103825260218152602001806132036021913960400191505060405180910390fd5b611b6a816060604051908101604052806022815260200161309e6022913973ffffffffffffffffffffffffffffffffffffffff8516600090815260016020526040902054919063ffffffff6115b516565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902055600354611ba3908263ffffffff61191016565b60035560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6089546000903a1115611c445760405160008051602061317683398151915281526004018080602001828103825260488152602001806131086048913960600191505060405180910390fd5b60008211611ca15760408051600080516020613176833981519152815260206004820152601960248201527f4465706f736974206d757374206265206e6f6e2d7a65726f2e00000000000000604482015290519081900360640190fd5b6000611cac83610782565b9050611cb83382612ec7565b604080513381526020810183905280820185905290517f25b428dfde728ccfaddad7e29e4ac23c24ed7fd1a6e3e3f91894a9a073f5dfff9181900360600190a192915050565b611d088282611abd565b610b1e82611d146112d6565b61084d84606060405190810160405280602481526020016131df6024913973ffffffffffffffffffffffffffffffffffffffff88166000908152600260205260408120906108196112d6565b73ffffffffffffffffffffffffffffffffffffffff81161515611dbc5760405160008051602061317683398151915281526004018080602001828103825260268152602001806130c06026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600081818411611ea3576040516000805160206131768339815191528152600401808060200182810382528381815181526020019150805190602001908083836000838110156116115781810151838201526020016115f9565b5060008385811515611eb157fe5b0495945050505050565b6000808080806fd3094c70f034de4b96ff7d5b6f99fcd88610611f16576f4000000000000000000000000000000093909301926fd3094c70f034de4b96ff7d5b6f99fcd86f8000000000000000000000000000000087020495505b6fa45af1e1f40c333b3de1db4dd55f29a78610611f6b576f2000000000000000000000000000000093909301926fa45af1e1f40c333b3de1db4dd55f29a76f8000000000000000000000000000000087020495505b6f910b022db7ae67ce76b441c27035c6a18610611fc0576f1000000000000000000000000000000093909301926f910b022db7ae67ce76b441c27035c6a16f8000000000000000000000000000000087020495505b6f88415abbe9a76bead8d00cf112e4d4a88610612015576f0800000000000000000000000000000093909301926f88415abbe9a76bead8d00cf112e4d4a86f8000000000000000000000000000000087020495505b6f84102b00893f64c705e841d5d4064bd3861061206a576f0400000000000000000000000000000093909301926f84102b00893f64c705e841d5d4064bd36f8000000000000000000000000000000087020495505b6f8204055aaef1c8bd5c3259f4822735a286106120bf576f0200000000000000000000000000000093909301926f8204055aaef1c8bd5c3259f4822735a26f8000000000000000000000000000000087020495505b6f810100ab00222d861931c15e39b44e998610612114576f0100000000000000000000000000000093909301926f810100ab00222d861931c15e39b44e996f8000000000000000000000000000000087020495505b6f808040155aabbbe9451521693554f7338610612168576e80000000000000000000000000000093909301926f808040155aabbbe9451521693554f7336f8000000000000000000000000000000087020495505b7fffffffffffffffffffffffffffffffff80000000000000000000000000000000860192508291506f8000000000000000000000000000000082800204905070010000000000000000000000000000000083810383020493909301926f800000000000000000000000000000008282020491507002000000000000000000000000000000006faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa84900383020493909301926f800000000000000000000000000000008282020491507003000000000000000000000000000000006f9999999999999999999999999999999984900383020493909301926f800000000000000000000000000000008282020491507004000000000000000000000000000000006f9249249249249249249249249249249284900383020493909301926f800000000000000000000000000000008282020491507005000000000000000000000000000000006f8e38e38e38e38e38e38e38e38e38e38e84900383020493909301926f800000000000000000000000000000008282020491507006000000000000000000000000000000006f8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8b84900383020493909301926f800000000000000000000000000000008282020491507007000000000000000000000000000000006f89d89d89d89d89d89d89d89d89d89d8984900383020493909301926f800000000000000000000000000000008282020491507008000000000000000000000000000000006f888888888888888888888888888888888490038302049390930195945050505050565b6000808270010000000000000000000000000000000081106124095760006123e86f800000000000000000000000000000008304612fea565b60ff166f800000000000000000000000000000008102935060020a90910490505b6f8000000000000000000000000000000081111561248157607f5b60008160ff16111561247f576f8000000000000000000000000000000082800204915070010000000000000000000000000000000082106124765760ff600019820116600290810a9390930192909104905b60001901612424565b505b6f05b9de1d10bf4103d647b0955897ba806f03f80fe03f80fe03f80fe03f80fe03f8830204949350505050565b6000670168244fdac780006f800000000000000000000000000000006f0fffffffffffffffffffffffffffffff84168080028290048082028390048083028490049485026710e1b3be415a00009092026705a0913f6b1e000091909102010192909181830204905080664807432bc1800002830192506f8000000000000000000000000000000082820281151561254157fe5b04905080660c0135dca0400002830192506f8000000000000000000000000000000082820281151561256f57fe5b049050806601b707b1cdc00002830192506f8000000000000000000000000000000082820281151561259d57fe5b049050806536e0f639b80002830192506f800000000000000000000000000000008282028115156125ca57fe5b04905080650618fee9f80002830192506f800000000000000000000000000000008282028115156125f757fe5b04905080649c197dcc0002830192506f8000000000000000000000000000000082820281151561262357fe5b04905080640e30dce40002830192506f8000000000000000000000000000000082820281151561264f57fe5b0490508064012ebd130002830192506f8000000000000000000000000000000082820281151561267b57fe5b049050806317499f0002830192506f800000000000000000000000000000008282028115156126a657fe5b049050806301a9d48002830192506f800000000000000000000000000000008282028115156126d157fe5b04905080621c638002830192506f800000000000000000000000000000008282028115156126fb57fe5b049050806201c63802830192506f8000000000000000000000000000000082820281151561272557fe5b04905080611ab802830192506f8000000000000000000000000000000082820281151561274e57fe5b0490508061017c02830192506f8000000000000000000000000000000082820281151561277757fe5b04905080601402830192506f8000000000000000000000000000000082820281151561279f57fe5b6721c3677c82b400009190049384010482016f80000000000000000000000000000000019290506f100000000000000000000000000000008516156128085770018ebef9eac820ae8682b9793ac6d1e7767001c3d6a24ed82218787d624d3e5eba95f984020492505b6f2000000000000000000000000000000085161561284a577001368b2fc6f9609fe7aceb46aa619baed470018ebef9eac820ae8682b9793ac6d1e77884020492505b6f4000000000000000000000000000000085161561288b576fbc5ab1b16779be3575bd8f0520a9f21f7001368b2fc6f9609fe7aceb46aa619baed584020492505b6f800000000000000000000000000000008516156128cb576f454aaa8efe072e7f6ddbab84b40a55c96fbc5ab1b16779be3575bd8f0520a9f21e84020492505b70010000000000000000000000000000000085161561290c576f0960aadc109e7a3bf4578099615711ea6f454aaa8efe072e7f6ddbab84b40a55c584020492505b70020000000000000000000000000000000085161561294c576e2bf84208204f5977f9a8cf01fdce3d6f0960aadc109e7a3bf4578099615711d784020492505b70040000000000000000000000000000000085161561298a576d03c6ab775dd0b95b4cbee7e65d116e2bf84208204f5977f9a8cf01fdc30784020492505b50909392505050565b60006020607f5b8060ff168260010160ff1610156129e2576000600260ff8484011604905084600860ff8316608081106129c957fe5b0154106129d8578092506129dc565b8091505b5061299a565b83600860ff8316608081106129f357fe5b015410612a035791506107a99050565b83600860ff841660808110612a1457fe5b015410612a23575090506107a9565bfe5b60008083905060008090508360ff16858302908060020a82049150509150816f03442c4e6074a82f1797f72ac000000002810190508360ff16858302908060020a82049150509150816f0116b96f757c380fb287fd0e4000000002810190508360ff16858302908060020a82049150509150816e45ae5bdd5f0e03eca1ff439000000002810190508360ff16858302908060020a82049150509150816e0defabf91302cd95b9ffda5000000002810190508360ff16858302908060020a82049150509150816e02529ca9832b22439efff9b800000002810190508360ff16858302908060020a82049150509150816d54f1cf12bd04e516b6da8800000002810190508360ff16858302908060020a82049150509150816d0a9e39e257a09ca2d6db5100000002810190508360ff16858302908060020a82049150509150816d012e066e7b839fa050c30900000002810190508360ff16858302908060020a82049150509150816c1e33d7d926c329a1ad1a80000002810190508360ff16858302908060020a82049150509150816c02bee513bdb4a6b19b5f80000002810190508360ff16858302908060020a82049150509150816b3a9316fa79b88eccf2a0000002810190508360ff16858302908060020a82049150509150816b048177ebe1fa81237520000002810190508360ff16858302908060020a82049150509150816a5263fe90242dcbacf0000002810190508360ff16858302908060020a82049150509150816a057e22099c030d9410000002810190508360ff16858302908060020a82049150509150816957e22099c030d941000002810190508360ff16858302908060020a820491505091508169052b6b5456997631000002810190508360ff16858302908060020a8204915050915081684985f67696bf74800002810190508360ff16858302908060020a82049150509150816803dea12ea99e49800002810190508360ff16858302908060020a82049150509150816731880f2214b6e00002810190508360ff16858302908060020a820491505091508167025bcff56eb3600002810190508360ff16858302908060020a8204915050915081661b722e10ab100002810190508360ff16858302908060020a82049150509150816601317c7007700002810190508360ff16858302908060020a8204915050915081650cba84aafa0002810190508360ff16858302908060020a82049150509150816482573a0a0002810190508360ff16858302908060020a82049150509150816405035ad90002810190508360ff16858302908060020a8204915050915081632f881b0002810190508360ff16858302908060020a82049150509150816301b2934002810190508360ff16858302908060020a8204915050915081620efc4002810190508360ff16858302908060020a8204915050915081617fe002810190508360ff16858302908060020a820491505091508161042002810190508360ff16858302908060020a8204915050915081602102810190508360ff16858302908060020a8204915050915081600102810190508360ff1660019060020a02856f0688589cc0e9505e2f2fee558000000083811515612ebb57fe5b04010195945050505050565b73ffffffffffffffffffffffffffffffffffffffff82161515612f395760408051600080516020613176833981519152815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600354612f4c908263ffffffff61170216565b60035573ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054612f85908263ffffffff61170216565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008082610100811015613017575b6001811115613012576001919091019060029004612ff9565b613052565b60805b60008160ff1611156130505760ff811660020a8210613043579182179160ff811660020a909104905b600260ff9091160461301a565b505b509291505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573736d696e7428292045524332302e7472616e7366657246726f6d206661696c65642e45524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373476173207072696365206d757374206265203c3d206d6178696d756d2067617320707269636520746f2070726576656e742066726f6e742072756e6e696e672061747461636b732e45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636508c379a000000000000000000000000000000000000000000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa165627a7a7230582048b8634933940c04e0743dcd972149b229224a98634b5cb048de6c2e28c6e9ca0029", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101f7576000357c0100000000000000000000000000000000000000000000000000000000900480637cbed3e011610121578063a457c2d7116100bf578063da12457a1161008e578063da12457a14610644578063dd62ed3e1461064c578063f2fde38b14610687578063f4325d67146106ba576101f7565b8063a457c2d71461057c578063a9059cbb146105b5578063b265c702146105ee578063d2fa635e14610627576101f7565b806395d89b41116100fb57806395d89b4114610532578063963438861461053a578063a0712d6814610557578063a10954fe14610574576101f7565b80637cbed3e0146104dc5780638da5cb5b146104f95780638f32d59b1461052a576101f7565b8063313ce5671161019957806349f9b0f71161016857806349f9b0f71461046457806354fd4d501461049957806370a08231146104a1578063715018a6146104d4576101f7565b8063313ce567146103e657806339509351146104045780633de39c111461043d57806342966c6814610445576101f7565b80630d8f9f7f116101d55780630d8f9f7f1461033757806318160ddd1461036657806323b872dd1461036e57806329a00e7c146103b1576101f7565b806306fdde031461024c578063095ea7b3146102c95780630c7d5cd814610316575b60408051600080516020613176833981519152815260206004820152601e60248201527f43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2e0000604482015290519081900360640190fd5b6102546106c2565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561028e578181015183820152602001610276565b50505050905090810190601f1680156102bb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610302600480360360408110156102df57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610758565b604080519115158252519081900360200190f35b61031e610776565b6040805163ffffffff9092168252519081900360200190f35b6103546004803603602081101561034d57600080fd5b5035610782565b60408051918252519081900360200190f35b6103546107ae565b6103026004803603606081101561038457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356107b4565b610354600480360360808110156103c757600080fd5b5080359060208101359063ffffffff604082013516906060013561085c565b6103ee61099f565b6040805160ff9092168252519081900360200190f35b6103026004803603604081101561041a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356109a8565b610354610a09565b6104626004803603602081101561045b57600080fd5b5035610a0f565b005b6103546004803603608081101561047a57600080fd5b5080359060208101359063ffffffff6040820135169060600135610b22565b610254610c6d565b610354600480360360208110156104b757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610cfb565b610462610d23565b610354600480360360208110156104f257600080fd5b5035610df5565b610501610e19565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610302610e35565b610254610e73565b6104626004803603602081101561055057600080fd5b5035610ed4565b6104626004803603602081101561056d57600080fd5b5035610f21565b61035461101f565b6103026004803603604081101561059257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356110c1565b610302600480360360408110156105cb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561113d565b6104626004803603604081101561060457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611151565b6104626004803603602081101561063d57600080fd5b503561119f565b610354611207565b6103546004803603604081101561066257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611216565b6104626004803603602081101561069d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661124e565b6105016112ba565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561074e5780601f106107235761010080835404028352916020019161074e565b820191906000526020600020905b81548152906001019060200180831161073157829003601f168201915b5050505050905090565b600061076c6107656112d6565b84846112da565b5060015b92915050565b60885463ffffffff1681565b60006107a661078f611207565b61079761101f565b60885463ffffffff168561085c565b90505b919050565b60035490565b60006107c1848484611401565b610852846107cd6112d6565b61084d85606060405190810160405280602881526020016131b76028913973ffffffffffffffffffffffffffffffffffffffff8a166000908152600260205260408120906108196112d6565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002054919063ffffffff6115b516565b6112da565b5060019392505050565b6000808511801561086d5750600084115b801561087f575060008363ffffffff16115b80156108945750620f424063ffffffff841611155b15156108ef5760408051600080516020613176833981519152815260206004820152600f60248201527f496e76616c696420696e707574732e0000000000000000000000000000000000604482015290519081900360640190fd5b8115156108fe57506000610997565b63ffffffff8316620f424014156109365761092f84610923878563ffffffff61165416565b9063ffffffff6116c016565b9050610997565b6000808061094a858863ffffffff61170216565b905061095b818888620f4240611764565b9093509150600060ff83166109768a8663ffffffff61165416565b60029190910a90049050610990818a63ffffffff61191016565b9450505050505b949350505050565b60065460ff1690565b600061076c6109b56112d6565b8461084d85600260006109c66112d6565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61170216565b60895481565b6000610a1a82611952565b608a54604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815233600482015260248101849052905192935073ffffffffffffffffffffffffffffffffffffffff9091169163a9059cbb916044808201926020929091908290030181600087803b158015610a9757600080fd5b505af1158015610aab573d6000803e3d6000fd5b505050506040513d6020811015610ac157600080fd5b50511515610b1e5760408051600080516020613176833981519152815260206004820152601d60248201527f6275726e28292045524332302e7472616e73666572206661696c65642e000000604482015290519081900360640190fd5b5050565b60008085118015610b335750600084115b8015610b45575060008363ffffffff16115b8015610b5a5750620f424063ffffffff841611155b8015610b665750848211155b1515610bc15760408051600080516020613176833981519152815260206004820152600f60248201527f496e76616c696420696e707574732e0000000000000000000000000000000000604482015290519081900360640190fd5b811515610bd057506000610997565b84821415610bdf575082610997565b63ffffffff8316620f42401415610c045761092f85610923868563ffffffff61165416565b60008080610c18888663ffffffff61191016565b9050610c298882620f424089611764565b90935091506000610c40888563ffffffff61165416565b905060ff831660020a8802610c5f85610923848463ffffffff61191016565b9a9950505050505050505050565b6007805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610cf35780601f10610cc857610100808354040283529160200191610cf3565b820191906000526020600020905b815481529060010190602001808311610cd657829003601f168201915b505050505081565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b610d2b610e35565b1515610d865760408051600080516020613176833981519152815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60006107a6610e02611207565b610e0a61101f565b60885463ffffffff1685610b22565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6000805473ffffffffffffffffffffffffffffffffffffffff16610e576112d6565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b60058054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561074e5780601f106107235761010080835404028352916020019161074e565b610ede3382611abd565b604080513381526020810183905260008183015290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a150565b610f2a81611bf8565b50608a54604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101849052905173ffffffffffffffffffffffffffffffffffffffff909216916323b872dd916064808201926020929091908290030181600087803b158015610fab57600080fd5b505af1158015610fbf573d6000803e3d6000fd5b505050506040513d6020811015610fd557600080fd5b5051151561101c57604051600080516020613176833981519152815260040180806020018281038252602181526020018061307d6021913960400191505060405180910390fd5b50565b608a54604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b15801561109057600080fd5b505afa1580156110a4573d6000803e3d6000fd5b505050506040513d60208110156110ba57600080fd5b5051905090565b600061076c6110ce6112d6565b8461084d856060604051908101604052806025815260200161326d60259139600260006110f96112d6565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6115b516565b600061076c61114a6112d6565b8484611401565b61115b8282611cfe565b604080513381526020810183905260008183015290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a15050565b6111a7610e35565b15156112025760408051600080516020613176833981519152815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b608955565b60006112116107ae565b905090565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b611256610e35565b15156112b15760408051600080516020613176833981519152815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61101c81611d60565b608a5473ffffffffffffffffffffffffffffffffffffffff1681565b3390565b73ffffffffffffffffffffffffffffffffffffffff831615156113365760405160008051602061317683398151915281526004018080602001828103825260248152602001806132496024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821615156113925760405160008051602061317683398151915281526004018080602001828103825260228152602001806130e66022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316151561145d5760405160008051602061317683398151915281526004018080602001828103825260258152602001806132246025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821615156114b957604051600080516020613176833981519152815260040180806020018281038252602381526020018061305a6023913960400191505060405180910390fd5b61150a81606060405190810160405280602681526020016131506026913973ffffffffffffffffffffffffffffffffffffffff8616600090815260016020526040902054919063ffffffff6115b516565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559084168152205461154c908263ffffffff61170216565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561164c5760405160008051602061317683398151915281526004018080602001828103825283818151815260200191508051906020019080838360005b838110156116115781810151838201526020016115f9565b50505050905090810190601f16801561163e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082151561166557506000610770565b82820282848281151561167457fe5b04146116b95760405160008051602061317683398151915281526004018080602001828103825260218152602001806131966021913960400191505060405180910390fd5b9392505050565b60006116b983836040805190810160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e49565b6000828201838110156116b95760408051600080516020613176833981519152815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008070020000000000000000000000000000000086106117d45760408051600080516020613176833981519152815260206004820152601860248201527f626173654e2065786365656473206d61782076616c75652e0000000000000000604482015290519081900360640190fd5b848610156118315760408051600080516020613176833981519152815260206004820152601c60248201527f4261736573203c203120617265206e6f7420737570706f727465642e00000000604482015290519081900360640190fd5b600080866f80000000000000000000000000000000890281151561185157fe5b04905070015bf0a8b1457695355fb8ac404e7a79e381101561187d5761187681611ebb565b9150611889565b611886816123af565b91505b60008563ffffffff168763ffffffff1684028115156118a457fe5b0490507008000000000000000000000000000000008110156118d7576118c9816124ae565b607f94509450505050611907565b60006118e282612993565b90506118fa60ff607f8390031660020a830482612a25565b9550935061190792505050565b94509492505050565b60006116b983836040805190810160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506115b5565b6089546000903a111561199e5760405160008051602061317683398151915281526004018080602001828103825260488152602001806131086048913960600191505060405180910390fd5b600082116119fb5760408051600080516020613176833981519152815260206004820152601860248201527f416d6f756e74206d757374206265206e6f6e2d7a65726f2e0000000000000000604482015290519081900360640190fd5b81611a0533610cfb565b1015611a605760408051600080516020613176833981519152815260206004820152601c60248201527f496e73756666696369656e7420746f6b656e7320746f206275726e2e00000000604482015290519081900360640190fd5b6000611a6b83610df5565b9050611a773384611abd565b604080513381526020810185905280820183905290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a192915050565b73ffffffffffffffffffffffffffffffffffffffff82161515611b195760405160008051602061317683398151915281526004018080602001828103825260218152602001806132036021913960400191505060405180910390fd5b611b6a816060604051908101604052806022815260200161309e6022913973ffffffffffffffffffffffffffffffffffffffff8516600090815260016020526040902054919063ffffffff6115b516565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902055600354611ba3908263ffffffff61191016565b60035560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6089546000903a1115611c445760405160008051602061317683398151915281526004018080602001828103825260488152602001806131086048913960600191505060405180910390fd5b60008211611ca15760408051600080516020613176833981519152815260206004820152601960248201527f4465706f736974206d757374206265206e6f6e2d7a65726f2e00000000000000604482015290519081900360640190fd5b6000611cac83610782565b9050611cb83382612ec7565b604080513381526020810183905280820185905290517f25b428dfde728ccfaddad7e29e4ac23c24ed7fd1a6e3e3f91894a9a073f5dfff9181900360600190a192915050565b611d088282611abd565b610b1e82611d146112d6565b61084d84606060405190810160405280602481526020016131df6024913973ffffffffffffffffffffffffffffffffffffffff88166000908152600260205260408120906108196112d6565b73ffffffffffffffffffffffffffffffffffffffff81161515611dbc5760405160008051602061317683398151915281526004018080602001828103825260268152602001806130c06026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600081818411611ea3576040516000805160206131768339815191528152600401808060200182810382528381815181526020019150805190602001908083836000838110156116115781810151838201526020016115f9565b5060008385811515611eb157fe5b0495945050505050565b6000808080806fd3094c70f034de4b96ff7d5b6f99fcd88610611f16576f4000000000000000000000000000000093909301926fd3094c70f034de4b96ff7d5b6f99fcd86f8000000000000000000000000000000087020495505b6fa45af1e1f40c333b3de1db4dd55f29a78610611f6b576f2000000000000000000000000000000093909301926fa45af1e1f40c333b3de1db4dd55f29a76f8000000000000000000000000000000087020495505b6f910b022db7ae67ce76b441c27035c6a18610611fc0576f1000000000000000000000000000000093909301926f910b022db7ae67ce76b441c27035c6a16f8000000000000000000000000000000087020495505b6f88415abbe9a76bead8d00cf112e4d4a88610612015576f0800000000000000000000000000000093909301926f88415abbe9a76bead8d00cf112e4d4a86f8000000000000000000000000000000087020495505b6f84102b00893f64c705e841d5d4064bd3861061206a576f0400000000000000000000000000000093909301926f84102b00893f64c705e841d5d4064bd36f8000000000000000000000000000000087020495505b6f8204055aaef1c8bd5c3259f4822735a286106120bf576f0200000000000000000000000000000093909301926f8204055aaef1c8bd5c3259f4822735a26f8000000000000000000000000000000087020495505b6f810100ab00222d861931c15e39b44e998610612114576f0100000000000000000000000000000093909301926f810100ab00222d861931c15e39b44e996f8000000000000000000000000000000087020495505b6f808040155aabbbe9451521693554f7338610612168576e80000000000000000000000000000093909301926f808040155aabbbe9451521693554f7336f8000000000000000000000000000000087020495505b7fffffffffffffffffffffffffffffffff80000000000000000000000000000000860192508291506f8000000000000000000000000000000082800204905070010000000000000000000000000000000083810383020493909301926f800000000000000000000000000000008282020491507002000000000000000000000000000000006faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa84900383020493909301926f800000000000000000000000000000008282020491507003000000000000000000000000000000006f9999999999999999999999999999999984900383020493909301926f800000000000000000000000000000008282020491507004000000000000000000000000000000006f9249249249249249249249249249249284900383020493909301926f800000000000000000000000000000008282020491507005000000000000000000000000000000006f8e38e38e38e38e38e38e38e38e38e38e84900383020493909301926f800000000000000000000000000000008282020491507006000000000000000000000000000000006f8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8b84900383020493909301926f800000000000000000000000000000008282020491507007000000000000000000000000000000006f89d89d89d89d89d89d89d89d89d89d8984900383020493909301926f800000000000000000000000000000008282020491507008000000000000000000000000000000006f888888888888888888888888888888888490038302049390930195945050505050565b6000808270010000000000000000000000000000000081106124095760006123e86f800000000000000000000000000000008304612fea565b60ff166f800000000000000000000000000000008102935060020a90910490505b6f8000000000000000000000000000000081111561248157607f5b60008160ff16111561247f576f8000000000000000000000000000000082800204915070010000000000000000000000000000000082106124765760ff600019820116600290810a9390930192909104905b60001901612424565b505b6f05b9de1d10bf4103d647b0955897ba806f03f80fe03f80fe03f80fe03f80fe03f8830204949350505050565b6000670168244fdac780006f800000000000000000000000000000006f0fffffffffffffffffffffffffffffff84168080028290048082028390048083028490049485026710e1b3be415a00009092026705a0913f6b1e000091909102010192909181830204905080664807432bc1800002830192506f8000000000000000000000000000000082820281151561254157fe5b04905080660c0135dca0400002830192506f8000000000000000000000000000000082820281151561256f57fe5b049050806601b707b1cdc00002830192506f8000000000000000000000000000000082820281151561259d57fe5b049050806536e0f639b80002830192506f800000000000000000000000000000008282028115156125ca57fe5b04905080650618fee9f80002830192506f800000000000000000000000000000008282028115156125f757fe5b04905080649c197dcc0002830192506f8000000000000000000000000000000082820281151561262357fe5b04905080640e30dce40002830192506f8000000000000000000000000000000082820281151561264f57fe5b0490508064012ebd130002830192506f8000000000000000000000000000000082820281151561267b57fe5b049050806317499f0002830192506f800000000000000000000000000000008282028115156126a657fe5b049050806301a9d48002830192506f800000000000000000000000000000008282028115156126d157fe5b04905080621c638002830192506f800000000000000000000000000000008282028115156126fb57fe5b049050806201c63802830192506f8000000000000000000000000000000082820281151561272557fe5b04905080611ab802830192506f8000000000000000000000000000000082820281151561274e57fe5b0490508061017c02830192506f8000000000000000000000000000000082820281151561277757fe5b04905080601402830192506f8000000000000000000000000000000082820281151561279f57fe5b6721c3677c82b400009190049384010482016f80000000000000000000000000000000019290506f100000000000000000000000000000008516156128085770018ebef9eac820ae8682b9793ac6d1e7767001c3d6a24ed82218787d624d3e5eba95f984020492505b6f2000000000000000000000000000000085161561284a577001368b2fc6f9609fe7aceb46aa619baed470018ebef9eac820ae8682b9793ac6d1e77884020492505b6f4000000000000000000000000000000085161561288b576fbc5ab1b16779be3575bd8f0520a9f21f7001368b2fc6f9609fe7aceb46aa619baed584020492505b6f800000000000000000000000000000008516156128cb576f454aaa8efe072e7f6ddbab84b40a55c96fbc5ab1b16779be3575bd8f0520a9f21e84020492505b70010000000000000000000000000000000085161561290c576f0960aadc109e7a3bf4578099615711ea6f454aaa8efe072e7f6ddbab84b40a55c584020492505b70020000000000000000000000000000000085161561294c576e2bf84208204f5977f9a8cf01fdce3d6f0960aadc109e7a3bf4578099615711d784020492505b70040000000000000000000000000000000085161561298a576d03c6ab775dd0b95b4cbee7e65d116e2bf84208204f5977f9a8cf01fdc30784020492505b50909392505050565b60006020607f5b8060ff168260010160ff1610156129e2576000600260ff8484011604905084600860ff8316608081106129c957fe5b0154106129d8578092506129dc565b8091505b5061299a565b83600860ff8316608081106129f357fe5b015410612a035791506107a99050565b83600860ff841660808110612a1457fe5b015410612a23575090506107a9565bfe5b60008083905060008090508360ff16858302908060020a82049150509150816f03442c4e6074a82f1797f72ac000000002810190508360ff16858302908060020a82049150509150816f0116b96f757c380fb287fd0e4000000002810190508360ff16858302908060020a82049150509150816e45ae5bdd5f0e03eca1ff439000000002810190508360ff16858302908060020a82049150509150816e0defabf91302cd95b9ffda5000000002810190508360ff16858302908060020a82049150509150816e02529ca9832b22439efff9b800000002810190508360ff16858302908060020a82049150509150816d54f1cf12bd04e516b6da8800000002810190508360ff16858302908060020a82049150509150816d0a9e39e257a09ca2d6db5100000002810190508360ff16858302908060020a82049150509150816d012e066e7b839fa050c30900000002810190508360ff16858302908060020a82049150509150816c1e33d7d926c329a1ad1a80000002810190508360ff16858302908060020a82049150509150816c02bee513bdb4a6b19b5f80000002810190508360ff16858302908060020a82049150509150816b3a9316fa79b88eccf2a0000002810190508360ff16858302908060020a82049150509150816b048177ebe1fa81237520000002810190508360ff16858302908060020a82049150509150816a5263fe90242dcbacf0000002810190508360ff16858302908060020a82049150509150816a057e22099c030d9410000002810190508360ff16858302908060020a82049150509150816957e22099c030d941000002810190508360ff16858302908060020a820491505091508169052b6b5456997631000002810190508360ff16858302908060020a8204915050915081684985f67696bf74800002810190508360ff16858302908060020a82049150509150816803dea12ea99e49800002810190508360ff16858302908060020a82049150509150816731880f2214b6e00002810190508360ff16858302908060020a820491505091508167025bcff56eb3600002810190508360ff16858302908060020a8204915050915081661b722e10ab100002810190508360ff16858302908060020a82049150509150816601317c7007700002810190508360ff16858302908060020a8204915050915081650cba84aafa0002810190508360ff16858302908060020a82049150509150816482573a0a0002810190508360ff16858302908060020a82049150509150816405035ad90002810190508360ff16858302908060020a8204915050915081632f881b0002810190508360ff16858302908060020a82049150509150816301b2934002810190508360ff16858302908060020a8204915050915081620efc4002810190508360ff16858302908060020a8204915050915081617fe002810190508360ff16858302908060020a820491505091508161042002810190508360ff16858302908060020a8204915050915081602102810190508360ff16858302908060020a8204915050915081600102810190508360ff1660019060020a02856f0688589cc0e9505e2f2fee558000000083811515612ebb57fe5b04010195945050505050565b73ffffffffffffffffffffffffffffffffffffffff82161515612f395760408051600080516020613176833981519152815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600354612f4c908263ffffffff61170216565b60035573ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054612f85908263ffffffff61170216565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008082610100811015613017575b6001811115613012576001919091019060029004612ff9565b613052565b60805b60008160ff1611156130505760ff811660020a8210613043579182179160ff811660020a909104905b600260ff9091160461301a565b505b509291505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573736d696e7428292045524332302e7472616e7366657246726f6d206661696c65642e45524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373476173207072696365206d757374206265203c3d206d6178696d756d2067617320707269636520746f2070726576656e742066726f6e742072756e6e696e672061747461636b732e45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636508c379a000000000000000000000000000000000000000000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa165627a7a7230582048b8634933940c04e0743dcd972149b229224a98634b5cb048de6c2e28c6e9ca0029", + "sourceMap": "562:29:5:-;58:998:11;562:29:5;;58:998:11;562:29:5;;;;;;;;;;;;;;:::i;:::-;;160:10:3;131:39;;145:317:11;8:9:-1;5:2;;;30:1;27;20:12;5:2;145:317:11;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;145:317:11;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;0:372;;145:317:11;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;-1:-1;;145:317:11;;;;;;;;;;;;;;;;;;;-1:-1:-1;145:317:11;;-1:-1:-1;145:317:11;;359:5;145:317;;;;;359:5;145:317;;698:17:17;718:12;:10;;;;:12;:::i;:::-;740:6;:18;;-1:-1:-1;;;;;;740:18:17;-1:-1:-1;;;;;740:18:17;;;;;;;773:43;;740:18;;-1:-1:-1;740:18:17;773:43;;740:6;;773:43;-1:-1:-1;504:12:19;;;;:5;;:12;;;;;:::i;:::-;-1:-1:-1;526:16:19;;;;:7;;:16;;;;;:::i;:::-;-1:-1:-1;552:9:19;:20;;-1:-1:-1;;552:20:19;;;;;;;;;;;;-1:-1:-1;;;;;;;;;4049:15:5;:54;-1:-1:-1;;;;;;;4113:15:5;:54;-1:-1:-1;;;;;;;4177:15:5;:54;-1:-1:-1;;;;;;;4241:15:5;:54;-1:-1:-1;;;;;;;4305:15:5;:54;-1:-1:-1;;;;;;;4369:15:5;:54;-1:-1:-1;;;;;;;4433:15:5;:54;-1:-1:-1;;;;;;;4497:15:5;:54;-1:-1:-1;;;;;;;4561:15:5;:54;-1:-1:-1;;;;;;;4625:15:5;:54;-1:-1:-1;;;;;;;4689:15:5;:54;4771:36;4753:15;:54;4835:36;4817:15;:54;4899:36;4881:15;:54;4963:36;4945:15;:54;5027:36;5009:15;:54;5091:36;5073:15;:54;5155:36;5137:15;:54;5219:36;5201:15;:54;5283:36;5265:15;:54;5347:36;5329:15;:54;5411:36;5393:15;:54;5475:36;5457:15;:54;5539:36;5521:15;:54;5603:36;5585:15;:54;5667:36;5649:15;:54;5731:36;5713:15;:54;5795:36;5777:15;:54;5859:36;5841:15;:54;5923:36;5905:15;:54;-1:-1:-1;;;;;5969:15:5;:54;6051:36;6033:15;:54;6115:36;6097:15;:54;6179:36;6161:15;:54;6243:36;6225:15;:54;6307:36;6289:15;:54;6371:36;6353:15;:54;6435:36;6417:15;:54;6499:36;6481:15;:54;6563:36;6545:15;:54;6627:36;6609:15;:54;6691:36;6673:15;:54;6755:36;6737:15;:54;6819:36;6801:15;:54;6883:36;6865:15;:54;6947:36;6929:15;:54;7011:36;6993:15;:54;7075:36;7057:15;:54;7139:36;7121:15;:54;7203:36;7185:15;:54;7267:36;7249:15;:54;7331:36;7313:15;:54;7395:36;7377:15;:54;7459:36;7441:15;:54;7523:36;7505:15;:54;7587:36;7569:15;:54;7651:36;7633:15;:54;7715:36;7697:15;:54;7779:36;7761:15;:54;7843:36;7825:15;:54;7907:36;7889:15;:54;7971:36;7953:15;:54;8035:36;8017:15;:54;-1:-1:-1;;;;;8081:15:5;:54;8163:36;8145:15;:54;8227:36;8209:15;:54;8291:36;8273:15;:54;8355:36;8337:15;:54;8420:36;8401:16;:55;8485:36;8466:16;:55;8550:36;8531:16;:55;8615:36;8596:16;:55;8680:36;8661:16;:55;8745:36;8726:16;:55;8810:36;8791:16;:55;8875:36;8856:16;:55;8940:36;8921:16;:55;9005:36;8986:16;:55;9070:36;9051:16;:55;9135:36;9116:16;:55;9200:36;9181:16;:55;9265:36;9246:16;:55;9330:36;9311:16;:55;9395:36;9376:16;:55;9460:36;9441:16;:55;9525:36;9506:16;:55;9590:36;9571:16;:55;9655:36;9636:16;:55;9720:36;9701:16;:55;9785:36;9766:16;:55;9850:36;9831:16;:55;9915:36;9896:16;:55;9980:36;9961:16;:55;10045:36;10026:16;:55;10110:36;10091:16;:55;10175:36;10156:16;:55;492:12:1;:28;;-1:-1:-1;;492:28:1;;;;;;;;;;;;871:33:10;877:10;889:14;871:5;;;;:33;:::i;:::-;-1:-1:-1;;427:12:11;:28;;-1:-1:-1;;;;;;427:28:11;-1:-1:-1;;;;;427:28:11;;;;;;;;;;;-1:-1:-1;58:998:11;;-1:-1:-1;;;;;;;58:998:11;788:96:13;867:10;788:96;;:::o;5962:302:18:-;-1:-1:-1;;;;;6037:21:18;;;;6029:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6120:12;;:24;;6137:6;6120:16;;;;;;:24;:::i;:::-;6105:12;:39;-1:-1:-1;;;;;6175:18:18;;;;;;:9;:18;;;;;;:30;;6198:6;6175:22;;;;;;:30;:::i;:::-;-1:-1:-1;;;;;6154:18:18;;;;;;:9;:18;;;;;;;;:51;;;;6220:37;;;;;;;6154:18;;;;6220:37;;;;;;;;;;5962:302;;:::o;834:176:16:-;892:7;923:5;;;946:6;;;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:16:o;58:998:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;58:998:11;;;-1:-1:-1;58:998:11;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "58:998:11:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;58:998:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;491:40;;;-1:-1:-1;;;;;;;;;;;491:40:11;;;;;;;;;;;;;;;;;;;;;;;;;;;644:81:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;644:81:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2500:149:18;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2500:149:18;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;408:26:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;533:206;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;533:206:1;;:::i;:::-;;;;;;;;;;;;;;;;1559:89:18;;;:::i;3107:300::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3107:300:18;;;;;;;;;;;;;;;;;;:::i;1129:975:4:-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;1129:975:4;;;;;;;;;;;;;;;;;;;:::i;1472:81:19:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3802:207:18;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3802:207:18;;;;;;;;;:::i;131:39:3:-;;;:::i;739:195:11:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;739:195:11;;:::i;:::-;;2789:1165:4;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;2789:1165:4;;;;;;;;;;;;;;;;;;;:::i;562:29:5:-;;;:::i;1706:108:18:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1706:108:18;;;;:::i;1684:137:17:-;;;:::i;745:208:1:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;745:208:1;;:::i;899:77:17:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1250:92;;;:::i;838:85:19:-;;;:::i;1805:132:10:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1805:132:10;;:::i;540:193:11:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;540:193:11;;:::i;940:114::-;;;:::i;4496:258:18:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4496:258:18;;;;;;;;;:::i;2017:155::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2017:155:18;;;;;;;;;:::i;1943:150:10:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1943:150:10;;;;;;;;;:::i;347:98:3:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;347:98:3;;:::i;917:125:10:-;;;:::i;2230:132:18:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2230:132:18;;;;;;;;;;;:::i;1970:107:17:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1970:107:17;;;;:::i;113:25:11:-;;;:::i;644:81:19:-;713:5;706:12;;;;;;;;-1:-1:-1;;706:12:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;681:13;;706:12;;713:5;;706:12;;713:5;706:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:81;:::o;2500:149:18:-;2566:4;2582:39;2591:12;:10;:12::i;:::-;2605:7;2614:6;2582:8;:39::i;:::-;-1:-1:-1;2638:4:18;2500:149;;;;;:::o;408:26:1:-;;;;;;:::o;533:206::-;613:4;636:96;660:18;:16;:18::i;:::-;680:16;:14;:16::i;:::-;698:12;;;;712:19;636:23;:96::i;:::-;629:103;;533:206;;;;:::o;1559:89:18:-;1629:12;;1559:89;:::o;3107:300::-;3196:4;3212:36;3222:6;3230:9;3241:6;3212:9;:36::i;:::-;3258:121;3267:6;3275:12;:10;:12::i;:::-;3289:89;3327:6;3289:89;;;;;;;;;;;;;;;;;;:19;;;;;;;:11;:19;;;;;;3309:12;:10;:12::i;:::-;3289:33;;;;;;;;;;;;;-1:-1:-1;3289:33:18;;;:89;;:37;:89;:::i;:::-;3258:8;:121::i;:::-;-1:-1:-1;3396:4:18;3107:300;;;;;:::o;1129:975:4:-;1304:7;1371:1;1361:7;:11;:34;;;;;1394:1;1376:15;:19;1361:34;:55;;;;;1415:1;1399:13;:17;;;1361:55;:93;;;;-1:-1:-1;450:7:4;1420:34;;;;;1361:93;1353:121;;;;;;;-1:-1:-1;;;;;;;;;;;1353:121:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;1533:19;;1529:58;;;-1:-1:-1;1575:1:4;1568:8;;1529:58;1644:34;;;450:7;1644:34;1640:120;;;1701:48;1733:15;1701:27;:7;1713:14;1701:27;:11;:27;:::i;:::-;:31;:48;:31;:48;:::i;:::-;1694:55;;;;1640:120;1769:14;;;1834:35;:14;1853:15;1834:35;:18;:35;:::i;:::-;1818:51;;1901:85;1920:5;1927:15;1944:13;450:7;1901:5;:85::i;:::-;1879:107;;-1:-1:-1;1879:107:4;-1:-1:-1;1996:22:4;2021:32;;;:19;:7;1879:107;2021:19;:11;:19;:::i;:::-;49:1:-1;45:20;;;;25:41;;;-1:-1;2070:27:4;25:41:-1;2089:7:4;2070:27;:18;:27;:::i;:::-;2063:34;;;;;;1129:975;;;;;;;:::o;1472:81:19:-;1537:9;;;;1472:81;:::o;3802:207:18:-;3882:4;3898:83;3907:12;:10;:12::i;:::-;3921:7;3930:50;3969:10;3930:11;:25;3942:12;:10;:12::i;:::-;3930:25;;;;;;;;;;;;;;;;;;-1:-1:-1;3930:25:18;;;:34;;;;;;;;;;;:50;:38;:50;:::i;131:39:3:-;;;;:::o;739:195:11:-;784:17;804:24;820:7;804:15;:24::i;:::-;846:12;;:47;;;;;;868:10;846:47;;;;;;;;;;;;784:44;;-1:-1:-1;846:12:11;;;;;:21;;:47;;;;;;;;;;;;;;;:12;;:47;;;5:2:-1;;;;30:1;27;20:12;5:2;846:47:11;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;846:47:11;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;846:47:11;838:89;;;;;;;-1:-1:-1;;;;;;;;;;;838:89:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;739:195;;:::o;2789:1165:4:-;2957:7;3024:1;3014:7;:11;:34;;;;;3047:1;3029:15;:19;3014:34;:55;;;;;3068:1;3052:13;:17;;;3014:55;:93;;;;-1:-1:-1;450:7:4;3073:34;;;;;3014:93;:119;;;;;3126:7;3111:11;:22;;3014:119;3006:147;;;;;;;-1:-1:-1;;;;;;;;;;;3006:147:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;3209:16;;3205:55;;;-1:-1:-1;3248:1:4;3241:8;;3205:55;3342:7;3327:11;:22;3323:75;;;-1:-1:-1;3372:15:4;3365:22;;3323:75;3455:34;;;450:7;3455:34;3451:117;;;3512:45;3549:7;3512:32;:15;3532:11;3512:32;:19;:32;:::i;3451:117::-;3577:14;;;3642:24;:7;3654:11;3642:24;:11;:24;:::i;:::-;3626:40;;3698:77;3717:7;3726:5;450:7;3752:13;3698:5;:77::i;:::-;3676:99;;-1:-1:-1;3676:99:4;-1:-1:-1;3785:18:4;3806:27;:15;3676:99;3806:27;:19;:27;:::i;:::-;3785:48;-1:-1:-1;3864:28:4;;;;;;;3909:38;3940:6;3909:26;3785:48;3864:28;3909:26;:14;:26;:::i;:38::-;3902:45;2789:1165;-1:-1:-1;;;;;;;;;;2789:1165:4:o;562:29:5:-;;;;;;;;;;;;;;;-1:-1:-1;;562:29:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1706:108:18:-;1789:18;;1763:7;1789:18;;;:9;:18;;;;;;;1706:108::o;1684:137:17:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;-1:-1:-1;;;;;;;;;;;1095:54:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1782:1;1766:6;;1745:40;;;1766:6;;;;1745:40;;1782:1;;1745:40;1812:1;1795:19;;;;;;1684:137::o;745:208:1:-;828:4;851:95;871:18;:16;:18::i;:::-;891:16;:14;:16::i;:::-;909:12;;;;923:22;851:19;:95::i;899:77:17:-;937:7;963:6;;;899:77;:::o;1250:92::-;1290:4;1329:6;;;;1313:12;:10;:12::i;:::-;:22;;;1306:29;;1250:92;:::o;838:85:19:-;909:7;902:14;;;;;;;;-1:-1:-1;;902:14:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;877:13;;902:14;;909:7;;902:14;;909:7;902:14;;;;;;;;;;;;;;;;;;;;;;;;1805:132:10;1859:26;1865:10;1877:7;1859:5;:26::i;:::-;1900:30;;;1907:10;1900:30;;;;;;;;1928:1;1900:30;;;;;;;;;;;;;;;1805:132;:::o;540:193:11:-;585:24;601:7;585:15;:24::i;:::-;-1:-1:-1;627:12:11;;:61;;;;;;653:10;627:61;;;;673:4;627:61;;;;;;;;;;;;:12;;;;;:25;;:61;;;;;;;;;;;;;;;:12;;:61;;;5:2:-1;;;;30:1;27;20:12;5:2;627:61:11;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;627:61:11;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;627:61:11;619:107;;;;;;-1:-1:-1;;;;;;;;;;;619:107:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;540:193;:::o;940:114::-;1010:12;;:37;;;;;;1041:4;1010:37;;;;;;987:4;;1010:12;;;:22;;:37;;;;;;;;;;;;;;:12;:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1010:37:11;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1010:37:11;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1010:37:11;;-1:-1:-1;940:114:11;:::o;4496:258:18:-;4581:4;4597:129;4606:12;:10;:12::i;:::-;4620:7;4629:96;4668:15;4629:96;;;;;;;;;;;;;;;;;;:11;:25;4641:12;:10;:12::i;:::-;4629:25;;;;;;;;;;;;;;;;;;-1:-1:-1;4629:25:18;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;2017:155::-;2086:4;2102:42;2112:12;:10;:12::i;:::-;2126:9;2137:6;2102:9;:42::i;1943:150:10:-;2016:25;2026:5;2033:7;2016:9;:25::i;:::-;2056:30;;;2063:10;2056:30;;;;;;;;2084:1;2056:30;;;;;;;;;;;;;;;1943:150;;:::o;347:98:3:-;1103:9:17;:7;:9::i;:::-;1095:54;;;;;;;-1:-1:-1;;;;;;;;;;;1095:54:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;416:11:3;:22;347:98::o;917:125:10:-;966:4;989:13;:11;:13::i;:::-;982:20;;917:125;:::o;2230:132:18:-;2328:18;;;;2302:7;2328:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2230:132::o;1970:107:17:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;-1:-1:-1;;;;;;;;;;;1095:54:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2042:28;2061:8;2042:18;:28::i;113:25:11:-;;;;;;:::o;788:96:13:-;867:10;788:96;:::o;7350:332:18:-;7443:19;;;;;7435:68;;;;-1:-1:-1;;;;;;;;;;;7435:68:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7521:21;;;;;7513:68;;;;-1:-1:-1;;;;;;;;;;;7513:68:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7592:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7643:32;;;;;;;;;;;;;;;;;7350:332;;;:::o;5228:464::-;5325:20;;;;;5317:70;;;;-1:-1:-1;;;;;;;;;;;5317:70:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5405:23;;;;;5397:71;;;;-1:-1:-1;;;;;;;;;;;5397:71:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5499;5521:6;5499:71;;;;;;;;;;;;;;;;;;:17;;;;;;;:9;:17;;;;;;;:71;;:21;:71;:::i;:::-;5479:17;;;;;;;;:9;:17;;;;;;:91;;;;5603:20;;;;;;;:32;;5628:6;5603:32;:24;:32;:::i;:::-;5580:20;;;;;;;;:9;:20;;;;;;;;;:55;;;;5650:35;;;;;;;5580:20;;5650:35;;;;;;;;;;;;;5228:464;;;:::o;1732:187:16:-;1818:7;1853:12;1845:6;;;;1837:29;;;;-1:-1:-1;;;;;;;;;;;1837:29:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1837:29:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1888:5:16;;;1732:187::o;2159:459::-;2217:7;2458:6;;2454:45;;;-1:-1:-1;2487:1:16;2480:8;;2454:45;2521:5;;;2525:1;2521;:5;2544;;;;;;;;:10;2536:56;;;;-1:-1:-1;;;;;;;;;;;2536:56:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2610:1;2159:459;-1:-1:-1;;;2159:459:16:o;3073:130::-;3131:7;3157:39;3161:1;3164;3157:39;;;;;;;;;;;;;;;;;;:3;:39::i;834:176::-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;;;;;;;;;938:46:16;;;;;;;;;;;;;;;;;;;;;;;;;;;11604:892:5;11740:7;;1161:35;11778:16;;11770:53;;;;;-1:-1:-1;;;;;;;;;;;11770:53:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;11841:16;;;;11833:57;;;;;-1:-1:-1;;;;;;;;;;;11833:57:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;11901:15;11926:12;11960:6;1009:35;11941:6;:16;:25;;;;;;;;11926:40;;1585:35;11980:4;:22;11976:136;;;12028:16;12039:4;12028:10;:16::i;:::-;12018:26;;11976:136;;;12085:16;12096:4;12085:10;:16::i;:::-;12075:26;;11976:136;12122:23;12166:5;12148:23;;12158:5;12148:15;;:7;:15;:23;;;;;;;;12122:49;;1669:35;12185:15;:33;12181:309;;;12242:27;12253:15;12242:10;:27::i;:::-;772:3;12234:51;;;;;;;;;12181:309;12316:15;12334:42;12360:15;12334:25;:42::i;:::-;12316:60;-1:-1:-1;12398:69:5;12409:46;772:3;12429:25;;;12409:46;49:1:-1;45:20;25:41;;12316:60:5;12398:10;:69::i;:::-;12390:89;-1:-1:-1;12469:9:5;-1:-1:-1;12390:89:5;;-1:-1:-1;;;12390:89:5;11604:892;;;;;;;;:::o;1274:134:16:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;;:3;:43::i;1390:409:10:-;235:11:3;;1461:4:10;;220:11:3;:26;;212:111;;;;-1:-1:-1;;;;;;;;;;;212:111:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1495:1:10;1485:11;;1477:48;;;;;-1:-1:-1;;;;;;;;;;;1477:48:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;1568:7;1543:21;1553:10;1543:9;:21::i;:::-;:32;;1535:73;;;;;-1:-1:-1;;;;;;;;;;;1535:73:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;1619:17;1639:32;1663:7;1639:23;:32::i;:::-;1619:52;;1681:26;1687:10;1699:7;1681:5;:26::i;:::-;1722:41;;;1729:10;1722:41;;;;;;;;;;;;;;;;;;;;;;;;;1780:12;1390:409;-1:-1:-1;;1390:409:10:o;6583:342:18:-;6658:21;;;;;6650:67;;;;-1:-1:-1;;;;;;;;;;;6650:67:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6749:68;6772:6;6749:68;;;;;;;;;;;;;;;;;;:18;;;;;;;:9;:18;;;;;;;:68;;:22;:68;:::i;:::-;6728:18;;;;;;;:9;:18;;;;;:89;6842:12;;:24;;6859:6;6842:24;:16;:24;:::i;:::-;6827:12;:39;6881:37;;;;;;;;6907:1;;6881:37;;;;;;;;;;;;;6583:342;;:::o;1048:336:10:-;235:11:3;;1120:4:10;;220:11:3;:26;;212:111;;;;-1:-1:-1;;;;;;;;;;;212:111:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1155:1:10;1144:12;;1136:50;;;;;-1:-1:-1;;;;;;;;;;;1136:50:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;1197:17;1217:33;1241:8;1217:23;:33::i;:::-;1197:53;;1260:31;1266:10;1278:12;1260:5;:31::i;:::-;1306:42;;;1313:10;1306:42;;;;;;;;;;;;;;;;;;;;;;;;;1365:12;1048:336;-1:-1:-1;;1048:336:10:o;7860:229:18:-;7931:22;7937:7;7946:6;7931:5;:22::i;:::-;7963:119;7972:7;7981:12;:10;:12::i;:::-;7995:86;8034:6;7995:86;;;;;;;;;;;;;;;;;;:20;;;;;;;:11;:20;;;;;;8016:12;:10;:12::i;2178:225:17:-;2251:22;;;;;2243:73;;;;-1:-1:-1;;;;;;;;;;;2243:73:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2352:6;;;2331:38;;;;;;;2352:6;;;2331:38;;;2379:6;:17;;;;;;;;;;;;;;;2178:225::o;3718:338:16:-;3804:7;3904:12;3897:5;;;3889:28;;;;-1:-1:-1;;;;;;;;;;;3889:28:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3889:28:16;;3927:9;3943:1;3939;:5;;;;;;;;;3718:338;-1:-1:-1;;;;;3718:338:16:o;19589:2397:5:-;19643:7;;;;;19755:34;19750:39;;19746:143;;19799:34;19792:41;;;;;19853:34;1009:35;19839:11;;:48;19835:52;;19746:143;19907:34;19902:39;;19898:143;;19951:34;19944:41;;;;;20005:34;1009:35;19991:11;;:48;19987:52;;19898:143;20059:34;20054:39;;20050:143;;20103:34;20096:41;;;;;20157:34;1009:35;20143:11;;:48;20139:52;;20050:143;20211:34;20206:39;;20202:143;;20255:34;20248:41;;;;;20309:34;1009:35;20295:11;;:48;20291:52;;20202:143;20363:34;20358:39;;20354:143;;20407:34;20400:41;;;;;20461:34;1009:35;20447:11;;:48;20443:52;;20354:143;20515:34;20510:39;;20506:143;;20559:34;20552:41;;;;;20613:34;1009:35;20599:11;;:48;20595:52;;20506:143;20667:34;20662:39;;20658:143;;20711:34;20704:41;;;;;20765:34;1009:35;20751:11;;:48;20747:52;;20658:143;20819:34;20814:39;;20810:143;;20863:34;20856:41;;;;;20917:34;1009:35;20903:11;;:48;20899:52;;20810:143;20971:11;;;;-1:-1:-1;20971:11:5;;-1:-1:-1;1009:35:5;20996:5;;;:15;;-1:-1:-1;21076:35:5;21033:39;;;21028:45;;:83;21021:90;;;;;1009:35;21117:5;;;:15;;-1:-1:-1;21197:35:5;21154;:39;;;21149:45;;:83;21142:90;;;;;1009:35;21238:5;;;:15;;-1:-1:-1;21318:35:5;21275;:39;;;21270:45;;:83;21263:90;;;;;1009:35;21359:5;;;:15;;-1:-1:-1;21439:35:5;21396;:39;;;21391:45;;:83;21384:90;;;;;1009:35;21480:5;;;:15;;-1:-1:-1;21560:35:5;21517;:39;;;21512:45;;:83;21505:90;;;;;1009:35;21601:5;;;:15;;-1:-1:-1;21681:35:5;21638;:39;;;21633:45;;:83;21626:90;;;;;1009:35;21722:5;;;:15;;-1:-1:-1;21802:35:5;21759;:39;;;21754:45;;:83;21747:90;;;;;1009:35;21843:5;;;:15;;-1:-1:-1;21923:35:5;21880;:39;;;21875:45;;:83;21868:90;;;;;19589:2397;-1:-1:-1;;;;;19589:2397:5:o;12661:826::-;12716:7;;12772:2;1085:35;12880:12;;12876:152;;12908:11;12922:22;1009:35;12932:1;:11;12922:9;:22::i;:::-;12958:11;;1009:35;13002:15;;;-1:-1:-1;49:1;45:20;25:41;;;;-1:-1;12876:152:5;1009:35;13133:1;:11;13129:297;;;772:3;13160:256;13194:1;13190;:5;;;13160:256;;;1009:35;13225:5;;;13224:17;;-1:-1:-1;1085:35:5;13280:12;;13276:126;;13369:14;-1:-1:-1;;13377:5:5;;13369:14;49:1:-1;13369:14:5;;;13362:21;;;;;25:41:-1;;;;13276:126:5;-1:-1:-1;;13197:3:5;13160:256;;;;13129:297;1398:33;1316;13443:19;;:37;;12661:826;-1:-1:-1;;;;12661:826:5:o;22157:2980::-;22211:7;22555:18;1009:35;22303:38;;;22355:5;;;:15;;;22441:5;;;:15;;;22527:5;;;:15;;;22551:22;;;22383:18;22379:22;;;22469:18;22465:22;;;;22458:29;22544;;22303:38;;22613:5;;;:15;22609:19;;22637:1;22641:18;22637:22;22630:29;;;;1009:35;22703:1;22699;:5;:15;;;;;;;;22695:19;;22723:1;22727:18;22723:22;22716:29;;;;1009:35;22789:1;22785;:5;:15;;;;;;;;22781:19;;22809:1;22813:18;22809:22;22802:29;;;;1009:35;22875:1;22871;:5;:15;;;;;;;;22867:19;;22895:1;22899:18;22895:22;22888:29;;;;1009:35;22961:1;22957;:5;:15;;;;;;;;22953:19;;22981:1;22985:18;22981:22;22974:29;;;;1009:35;23047:1;23043;:5;:15;;;;;;;;23039:19;;23067:1;23071:18;23067:22;23060:29;;;;1009:35;23133:1;23129;:5;:15;;;;;;;;23125:19;;23153:1;23157:18;23153:22;23146:29;;;;1009:35;23219:1;23215;:5;:15;;;;;;;;23211:19;;23239:1;23243:18;23239:22;23232:29;;;;1009:35;23305:1;23301;:5;:15;;;;;;;;23297:19;;23325:1;23329:18;23325:22;23318:29;;;;1009:35;23391:1;23387;:5;:15;;;;;;;;23383:19;;23411:1;23415:18;23411:22;23404:29;;;;1009:35;23477:1;23473;:5;:15;;;;;;;;23469:19;;23497:1;23501:18;23497:22;23490:29;;;;1009:35;23563:1;23559;:5;:15;;;;;;;;23555:19;;23583:1;23587:18;23583:22;23576:29;;;;1009:35;23649:1;23645;:5;:15;;;;;;;;23641:19;;23669:1;23673:18;23669:22;23662:29;;;;1009:35;23735:1;23731;:5;:15;;;;;;;;23727:19;;23755:1;23759:18;23755:22;23748:29;;;;1009:35;23821:1;23817;:5;:15;;;;;;;;23813:19;;23841:1;23845:18;23841:22;23834:29;;;;1009:35;23907:1;23903;:5;:15;;;;;;;23997:18;23903:15;;;23920:29;;;23991:24;:28;;1009:35;23991:38;;23903:15;-1:-1:-1;24099:35:5;24095:39;;24094:46;24090:137;;24192:35;24154;24148:41;;:79;24142:85;;24090:137;24246:35;24242:39;;24241:46;24237:137;;24339:35;24301;24295:41;;:79;24289:85;;24237:137;24393:35;24389:39;;24388:46;24384:137;;24486:35;24448;24442:41;;:79;24436:85;;24384:137;24540:35;24536:39;;24535:46;24531:137;;24633:35;24595;24589:41;;:79;24583:85;;24531:137;24687:35;24683:39;;24682:46;24678:137;;24780:35;24742;24736:41;;:79;24730:85;;24678:137;24834:35;24830:39;;24829:46;24825:137;;24927:35;24889;24883:41;;:79;24877:85;;24825:137;24981:35;24977:39;;24976:46;24972:137;;25074:35;25036;25030:41;;:79;25024:85;;24972:137;-1:-1:-1;25127:3:5;;22157:2980;-1:-1:-1;;;22157:2980:5:o;14495:508::-;14569:5;725:2;772:3;14659:179;14675:2;14666:11;;:2;14671:1;14666:6;:11;;;14659:179;;;14693:9;14717:1;14705:13;14706:7;;;14705:13;;;-1:-1:-1;14756:2:5;14736:11;:16;;;;;;;;;;;;:22;14732:95;;14781:3;14776:8;;14732:95;;;14824:3;14819:8;;14732:95;14659:179;;;;14871:2;14852:11;:15;;;;;;;;;;;;:21;14848:48;;14894:2;-1:-1:-1;14887:9:5;;-1:-1:-1;14887:9:5;14848:48;14929:2;14910:11;:15;;;;;;;;;;;;:21;14906:48;;-1:-1:-1;14952:2:5;-1:-1:-1;14945:9:5;;14906:48;14965:13;15587:3826;15660:7;15679:10;15692:2;15679:15;;15704:11;15718:1;15704:15;;15748:10;15735:23;;15741:2;15736;:7;15735:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;15735:23:5;15730:28;;15767:2;15772:33;15767:38;15760:45;;;;15859:10;15846:23;;15852:2;15847;:7;15846:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;15846:23:5;15841:28;;15878:2;15883:33;15878:38;15871:45;;;;15970:10;15957:23;;15963:2;15958;:7;15957:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;15957:23:5;15952:28;;15989:2;15994:33;15989:38;15982:45;;;;16081:10;16068:23;;16074:2;16069;:7;16068:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16068:23:5;16063:28;;16100:2;16105:33;16100:38;16093:45;;;;16192:10;16179:23;;16185:2;16180;:7;16179:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16179:23:5;16174:28;;16211:2;16216:33;16211:38;16204:45;;;;16303:10;16290:23;;16296:2;16291;:7;16290:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16290:23:5;16285:28;;16322:2;16327:33;16322:38;16315:45;;;;16414:10;16401:23;;16407:2;16402;:7;16401:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16401:23:5;16396:28;;16433:2;16438:33;16433:38;16426:45;;;;16525:10;16512:23;;16518:2;16513;:7;16512:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16512:23:5;16507:28;;16544:2;16549:33;16544:38;16537:45;;;;16636:10;16623:23;;16629:2;16624;:7;16623:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16623:23:5;16618:28;;16655:2;16660:33;16655:38;16648:45;;;;16747:10;16734:23;;16740:2;16735;:7;16734:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16734:23:5;16729:28;;16766:2;16771:33;16766:38;16759:45;;;;16858:10;16845:23;;16851:2;16846;:7;16845:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16845:23:5;16840:28;;16877:2;16882:33;16877:38;16870:45;;;;16969:10;16956:23;;16962:2;16957;:7;16956:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16956:23:5;16951:28;;16988:2;16993:33;16988:38;16981:45;;;;17080:10;17067:23;;17073:2;17068;:7;17067:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17067:23:5;17062:28;;17099:2;17104:33;17099:38;17092:45;;;;17191:10;17178:23;;17184:2;17179;:7;17178:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17178:23:5;17173:28;;17210:2;17215:33;17210:38;17203:45;;;;17302:10;17289:23;;17295:2;17290;:7;17289:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17289:23:5;17284:28;;17321:2;17326:33;17321:38;17314:45;;;;17413:10;17400:23;;17406:2;17401;:7;17400:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17400:23:5;17395:28;;17432:2;17437:33;17432:38;17425:45;;;;17524:10;17511:23;;17517:2;17512;:7;17511:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17511:23:5;17506:28;;17543:2;17548:33;17543:38;17536:45;;;;17635:10;17622:23;;17628:2;17623;:7;17622:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17622:23:5;17617:28;;17654:2;17659:33;17654:38;17647:45;;;;17746:10;17733:23;;17739:2;17734;:7;17733:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17733:23:5;17728:28;;17765:2;17770:33;17765:38;17758:45;;;;17857:10;17844:23;;17850:2;17845;:7;17844:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17844:23:5;17839:28;;17876:2;17881:33;17876:38;17869:45;;;;17968:10;17955:23;;17961:2;17956;:7;17955:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17955:23:5;17950:28;;17987:2;17992:33;17987:38;17980:45;;;;18079:10;18066:23;;18072:2;18067;:7;18066:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18066:23:5;18061:28;;18098:2;18103:33;18098:38;18091:45;;;;18190:10;18177:23;;18183:2;18178;:7;18177:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18177:23:5;18172:28;;18209:2;18214:33;18209:38;18202:45;;;;18301:10;18288:23;;18294:2;18289;:7;18288:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18288:23:5;18283:28;;18320:2;18325:33;18320:38;18313:45;;;;18412:10;18399:23;;18405:2;18400;:7;18399:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18399:23:5;18394:28;;18431:2;18436:33;18431:38;18424:45;;;;18523:10;18510:23;;18516:2;18511;:7;18510:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18510:23:5;18505:28;;18542:2;18547:33;18542:38;18535:45;;;;18634:10;18621:23;;18627:2;18622;:7;18621:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18621:23:5;18616:28;;18653:2;18658:33;18653:38;18646:45;;;;18745:10;18732:23;;18738:2;18733;:7;18732:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18732:23:5;18727:28;;18764:2;18769:33;18764:38;18757:45;;;;18856:10;18843:23;;18849:2;18844;:7;18843:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18843:23:5;18838:28;;18875:2;18880:33;18875:38;18868:45;;;;18967:10;18954:23;;18960:2;18955;:7;18954:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18954:23:5;18949:28;;18986:2;18991:33;18986:38;18979:45;;;;19078:10;19065:23;;19071:2;19066;:7;19065:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;19065:23:5;19060:28;;19097:2;19102:33;19097:38;19090:45;;;;19189:10;19176:23;;19182:2;19177;:7;19176:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;19176:23:5;19171:28;;19208:2;19213:33;19208:38;19201:45;;;;19345:10;19338:17;;629:1;19338:17;;;;19332:2;19296:33;19290:3;:39;;;;;;;;:44;:66;;15587:3826;-1:-1:-1;;;;;15587:3826:5:o;5962:302:18:-;6037:21;;;;;6029:65;;;;;-1:-1:-1;;;;;;;;;;;6029:65:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;6120:12;;:24;;6137:6;6120:24;:16;:24;:::i;:::-;6105:12;:39;6175:18;;;;;;;:9;:18;;;;;;:30;;6198:6;6175:30;:22;:30;:::i;:::-;6154:18;;;;;;;:9;:18;;;;;;;;:51;;;;6220:37;;;;;;;6154:18;;;;6220:37;;;;;;;;;;5962:302;;:::o;13602:532:5:-;13656:5;;13708:2;13729:3;13725:7;;13721:386;;;13784:80;13795:1;13791;:5;13784:80;;;13822:1;13841:8;;;;;49:1:-1;25:41;;13784:80:5;;;13721:386;;;13945:3;13930:167;13954:1;13950;:5;;;13930:167;;;13994:8;;;;;13988:15;;13984:99;;14056:8;;;;14027:7;;;49:1:-1;45:20;25:41;;;;13984:99:5;49:1:-1;13957:7:5;;;;25:41:-1;13930:167:5;;;;13721:386;-1:-1:-1;14124:3:5;13602:532;-1:-1:-1;;13602:532:5:o", "source": "pragma solidity ^0.5.2;\n\nimport \"./ContinuousToken.sol\";\n\ncontract ERC20ContinuousToken is ContinuousToken {\n ERC20 public reserveToken;\n\n constructor(\n string memory _name,\n string memory _symbol,\n uint8 _decimals,\n uint _initialSupply,\n uint32 _reserveRatio,\n ERC20 _reserveToken\n ) public ContinuousToken(_name, _symbol, _decimals, _initialSupply, _reserveRatio) {\n reserveToken = _reserveToken;\n }\n\n function () external { revert(\"Cannot call fallback function.\"); }\n\n function mint(uint _amount) public {\n _continuousMint(_amount);\n require(reserveToken.transferFrom(msg.sender, address(this), _amount), \"mint() ERC20.transferFrom failed.\");\n }\n\n function burn(uint _amount) public {\n uint returnAmount = _continuousBurn(_amount);\n require(reserveToken.transfer(msg.sender, returnAmount), \"burn() ERC20.transfer failed.\");\n }\n\n function reserveBalance() public view returns (uint) {\n return reserveToken.balanceOf(address(this));\n }\n}", - "sourcePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/token/ERC20ContinuousToken.sol", + "sourcePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/token/ERC20ContinuousToken.sol", "ast": { - "absolutePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/token/ERC20ContinuousToken.sol", + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/token/ERC20ContinuousToken.sol", "exportedSymbols": { "ERC20ContinuousToken": [ - 2876 + 2957 ] }, - "id": 2877, + "id": 2958, "nodeType": "SourceUnit", "nodes": [ { - "id": 2777, + "id": 2858, "literals": [ "solidity", "^", @@ -769,16 +694,16 @@ ".2" ], "nodeType": "PragmaDirective", - "src": "0:23:8" + "src": "0:23:11" }, { - "absolutePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/token/ContinuousToken.sol", + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/token/ContinuousToken.sol", "file": "./ContinuousToken.sol", - "id": 2778, + "id": 2859, "nodeType": "ImportDirective", - "scope": 2877, - "sourceUnit": 2776, - "src": "25:31:8", + "scope": 2958, + "sourceUnit": 2857, + "src": "25:31:11", "symbolAliases": [], "unitAlias": "" }, @@ -788,19 +713,19 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 2779, + "id": 2860, "name": "ContinuousToken", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2775, - "src": "91:15:8", + "referencedDeclaration": 2856, + "src": "91:15:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_ContinuousToken_$2775", + "typeIdentifier": "t_contract$_ContinuousToken_$2856", "typeString": "contract ContinuousToken" } }, - "id": 2780, + "id": 2861, "nodeType": "InheritanceSpecifier", - "src": "91:15:8" + "src": "91:15:11" } ], "contractDependencies": [ @@ -809,56 +734,56 @@ 176, 389, 2569, - 2775, - 2999, - 3492, - 3897, - 3955, - 4052 + 2856, + 3104, + 3597, + 4002, + 4060, + 4157 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 2876, + "id": 2957, "linearizedBaseContracts": [ - 2876, - 2775, + 2957, + 2856, 176, 122, 389, 2569, 139, - 3955, - 3897, - 3492, - 4052, - 2999 + 4060, + 4002, + 3597, + 4157, + 3104 ], "name": "ERC20ContinuousToken", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 2782, + "id": 2863, "name": "reserveToken", "nodeType": "VariableDeclaration", - "scope": 2876, - "src": "113:25:8", + "scope": 2957, + "src": "113:25:11", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$3897", + "typeIdentifier": "t_contract$_ERC20_$4002", "typeString": "contract ERC20" }, "typeName": { "contractScope": null, - "id": 2781, + "id": 2862, "name": "ERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3897, - "src": "113:5:8", + "referencedDeclaration": 4002, + "src": "113:5:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$3897", + "typeIdentifier": "t_contract$_ERC20_$4002", "typeString": "contract ERC20" } }, @@ -867,28 +792,28 @@ }, { "body": { - "id": 2808, + "id": 2889, "nodeType": "Block", - "src": "417:45:8", + "src": "417:45:11", "statements": [ { "expression": { "argumentTypes": null, - "id": 2806, + "id": 2887, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2804, + "id": 2885, "name": "reserveToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2782, - "src": "427:12:8", + "referencedDeclaration": 2863, + "src": "427:12:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$3897", + "typeIdentifier": "t_contract$_ERC20_$4002", "typeString": "contract ERC20" } }, @@ -896,31 +821,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 2805, + "id": 2886, "name": "_reserveToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2794, - "src": "442:13:8", + "referencedDeclaration": 2875, + "src": "442:13:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$3897", + "typeIdentifier": "t_contract$_ERC20_$4002", "typeString": "contract ERC20" } }, - "src": "427:28:8", + "src": "427:28:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$3897", + "typeIdentifier": "t_contract$_ERC20_$4002", "typeString": "contract ERC20" } }, - "id": 2807, + "id": 2888, "nodeType": "ExpressionStatement", - "src": "427:28:8" + "src": "427:28:11" } ] }, "documentation": null, - "id": 2809, + "id": 2890, "implemented": true, "kind": "constructor", "modifiers": [ @@ -928,12 +853,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2797, + "id": 2878, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2784, - "src": "359:5:8", + "referencedDeclaration": 2865, + "src": "359:5:11", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" @@ -941,12 +866,12 @@ }, { "argumentTypes": null, - "id": 2798, + "id": 2879, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2786, - "src": "366:7:8", + "referencedDeclaration": 2867, + "src": "366:7:11", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" @@ -954,12 +879,12 @@ }, { "argumentTypes": null, - "id": 2799, + "id": 2880, "name": "_decimals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2788, - "src": "375:9:8", + "referencedDeclaration": 2869, + "src": "375:9:11", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -967,12 +892,12 @@ }, { "argumentTypes": null, - "id": 2800, + "id": 2881, "name": "_initialSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2790, - "src": "386:14:8", + "referencedDeclaration": 2871, + "src": "386:14:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -980,49 +905,49 @@ }, { "argumentTypes": null, - "id": 2801, + "id": 2882, "name": "_reserveRatio", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2792, - "src": "402:13:8", + "referencedDeclaration": 2873, + "src": "402:13:11", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } } ], - "id": 2802, + "id": 2883, "modifierName": { "argumentTypes": null, - "id": 2796, + "id": 2877, "name": "ContinuousToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2775, - "src": "343:15:8", + "referencedDeclaration": 2856, + "src": "343:15:11", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ContinuousToken_$2775_$", + "typeIdentifier": "t_type$_t_contract$_ContinuousToken_$2856_$", "typeString": "type(contract ContinuousToken)" } }, "nodeType": "ModifierInvocation", - "src": "343:73:8" + "src": "343:73:11" } ], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 2795, + "id": 2876, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2784, + "id": 2865, "name": "_name", "nodeType": "VariableDeclaration", - "scope": 2809, - "src": "166:19:8", + "scope": 2890, + "src": "166:19:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -1030,10 +955,10 @@ "typeString": "string" }, "typeName": { - "id": 2783, + "id": 2864, "name": "string", "nodeType": "ElementaryTypeName", - "src": "166:6:8", + "src": "166:6:11", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -1044,11 +969,11 @@ }, { "constant": false, - "id": 2786, + "id": 2867, "name": "_symbol", "nodeType": "VariableDeclaration", - "scope": 2809, - "src": "195:21:8", + "scope": 2890, + "src": "195:21:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -1056,10 +981,10 @@ "typeString": "string" }, "typeName": { - "id": 2785, + "id": 2866, "name": "string", "nodeType": "ElementaryTypeName", - "src": "195:6:8", + "src": "195:6:11", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -1070,11 +995,11 @@ }, { "constant": false, - "id": 2788, + "id": 2869, "name": "_decimals", "nodeType": "VariableDeclaration", - "scope": 2809, - "src": "226:15:8", + "scope": 2890, + "src": "226:15:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1082,10 +1007,10 @@ "typeString": "uint8" }, "typeName": { - "id": 2787, + "id": 2868, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "226:5:8", + "src": "226:5:11", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1096,11 +1021,11 @@ }, { "constant": false, - "id": 2790, + "id": 2871, "name": "_initialSupply", "nodeType": "VariableDeclaration", - "scope": 2809, - "src": "251:19:8", + "scope": 2890, + "src": "251:19:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1108,10 +1033,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2789, + "id": 2870, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "251:4:8", + "src": "251:4:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1122,11 +1047,11 @@ }, { "constant": false, - "id": 2792, + "id": 2873, "name": "_reserveRatio", "nodeType": "VariableDeclaration", - "scope": 2809, - "src": "280:20:8", + "scope": 2890, + "src": "280:20:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1134,10 +1059,10 @@ "typeString": "uint32" }, "typeName": { - "id": 2791, + "id": 2872, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "280:6:8", + "src": "280:6:11", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -1148,26 +1073,26 @@ }, { "constant": false, - "id": 2794, + "id": 2875, "name": "_reserveToken", "nodeType": "VariableDeclaration", - "scope": 2809, - "src": "310:19:8", + "scope": 2890, + "src": "310:19:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$3897", + "typeIdentifier": "t_contract$_ERC20_$4002", "typeString": "contract ERC20" }, "typeName": { "contractScope": null, - "id": 2793, + "id": 2874, "name": "ERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3897, - "src": "310:5:8", + "referencedDeclaration": 4002, + "src": "310:5:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$3897", + "typeIdentifier": "t_contract$_ERC20_$4002", "typeString": "contract ERC20" } }, @@ -1175,25 +1100,25 @@ "visibility": "internal" } ], - "src": "156:179:8" + "src": "156:179:11" }, "returnParameters": { - "id": 2803, + "id": 2884, "nodeType": "ParameterList", "parameters": [], - "src": "417:0:8" + "src": "417:0:11" }, - "scope": 2876, - "src": "145:317:8", + "scope": 2957, + "src": "145:317:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2816, + "id": 2897, "nodeType": "Block", - "src": "489:45:8", + "src": "489:45:11", "statements": [ { "expression": { @@ -1202,14 +1127,14 @@ { "argumentTypes": null, "hexValue": "43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2e", - "id": 2813, + "id": 2894, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "498:32:8", + "src": "498:32:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_35adf5099068bfc19dbe57ce7e8bce94edb806b4913b286575991df24351ec00", @@ -1225,21 +1150,21 @@ "typeString": "literal_string \"Cannot call fallback function.\"" } ], - "id": 2812, + "id": 2893, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ - 4072, - 4073 + 4177, + 4178 ], - "referencedDeclaration": 4073, - "src": "491:6:8", + "referencedDeclaration": 4178, + "src": "491:6:11", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, - "id": 2814, + "id": 2895, "isConstant": false, "isLValue": false, "isPure": false, @@ -1247,48 +1172,48 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "491:40:8", + "src": "491:40:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2815, + "id": 2896, "nodeType": "ExpressionStatement", - "src": "491:40:8" + "src": "491:40:11" } ] }, "documentation": null, - "id": 2817, + "id": 2898, "implemented": true, "kind": "fallback", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 2810, + "id": 2891, "nodeType": "ParameterList", "parameters": [], - "src": "477:2:8" + "src": "477:2:11" }, "returnParameters": { - "id": 2811, + "id": 2892, "nodeType": "ParameterList", "parameters": [], - "src": "489:0:8" + "src": "489:0:11" }, - "scope": 2876, - "src": "468:66:8", + "scope": 2957, + "src": "468:66:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" }, { "body": { - "id": 2839, + "id": 2920, "nodeType": "Block", - "src": "575:158:8", + "src": "575:158:11", "statements": [ { "expression": { @@ -1296,12 +1221,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2823, + "id": 2904, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2819, - "src": "601:7:8", + "referencedDeclaration": 2900, + "src": "601:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1315,18 +1240,18 @@ "typeString": "uint256" } ], - "id": 2822, + "id": 2903, "name": "_continuousMint", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2687, - "src": "585:15:8", + "referencedDeclaration": 2768, + "src": "585:15:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) returns (uint256)" } }, - "id": 2824, + "id": 2905, "isConstant": false, "isLValue": false, "isPure": false, @@ -1334,15 +1259,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "585:24:8", + "src": "585:24:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 2825, + "id": 2906, "nodeType": "ExpressionStatement", - "src": "585:24:8" + "src": "585:24:11" }, { "expression": { @@ -1355,18 +1280,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2829, + "id": 2910, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4067, - "src": "653:3:8", + "referencedDeclaration": 4172, + "src": "653:3:11", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2830, + "id": 2911, "isConstant": false, "isLValue": false, "isPure": false, @@ -1374,7 +1299,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "653:10:8", + "src": "653:10:11", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -1385,14 +1310,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2832, + "id": 2913, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4115, - "src": "673:4:8", + "referencedDeclaration": 4227, + "src": "673:4:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20ContinuousToken_$2876", + "typeIdentifier": "t_contract$_ERC20ContinuousToken_$2957", "typeString": "contract ERC20ContinuousToken" } } @@ -1400,24 +1325,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ERC20ContinuousToken_$2876", + "typeIdentifier": "t_contract$_ERC20ContinuousToken_$2957", "typeString": "contract ERC20ContinuousToken" } ], - "id": 2831, + "id": 2912, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "665:7:8", + "src": "665:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 2833, + "id": 2914, "isConstant": false, "isLValue": false, "isPure": false, @@ -1425,7 +1350,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "665:13:8", + "src": "665:13:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1433,12 +1358,12 @@ }, { "argumentTypes": null, - "id": 2834, + "id": 2915, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2819, - "src": "680:7:8", + "referencedDeclaration": 2900, + "src": "680:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1462,32 +1387,32 @@ ], "expression": { "argumentTypes": null, - "id": 2827, + "id": 2908, "name": "reserveToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2782, - "src": "627:12:8", + "referencedDeclaration": 2863, + "src": "627:12:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$3897", + "typeIdentifier": "t_contract$_ERC20_$4002", "typeString": "contract ERC20" } }, - "id": 2828, + "id": 2909, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transferFrom", "nodeType": "MemberAccess", - "referencedDeclaration": 3626, - "src": "627:25:8", + "referencedDeclaration": 3731, + "src": "627:25:11", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)" } }, - "id": 2835, + "id": 2916, "isConstant": false, "isLValue": false, "isPure": false, @@ -1495,7 +1420,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "627:61:8", + "src": "627:61:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1504,14 +1429,14 @@ { "argumentTypes": null, "hexValue": "6d696e7428292045524332302e7472616e7366657246726f6d206661696c65642e", - "id": 2836, + "id": 2917, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "690:35:8", + "src": "690:35:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_0f78d036144c545e53b563b9c14b24232b4d2b68ec3423cd7c70d3540dab2545", @@ -1531,21 +1456,21 @@ "typeString": "literal_string \"mint() ERC20.transferFrom failed.\"" } ], - "id": 2826, + "id": 2907, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "619:7:8", + "referencedDeclaration": 4176, + "src": "619:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2837, + "id": 2918, "isConstant": false, "isLValue": false, "isPure": false, @@ -1553,36 +1478,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "619:107:8", + "src": "619:107:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2838, + "id": 2919, "nodeType": "ExpressionStatement", - "src": "619:107:8" + "src": "619:107:11" } ] }, "documentation": null, - "id": 2840, + "id": 2921, "implemented": true, "kind": "function", "modifiers": [], "name": "mint", "nodeType": "FunctionDefinition", "parameters": { - "id": 2820, + "id": 2901, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2819, + "id": 2900, "name": "_amount", "nodeType": "VariableDeclaration", - "scope": 2840, - "src": "554:12:8", + "scope": 2921, + "src": "554:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1590,10 +1515,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2818, + "id": 2899, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "554:4:8", + "src": "554:4:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1603,38 +1528,38 @@ "visibility": "internal" } ], - "src": "553:14:8" + "src": "553:14:11" }, "returnParameters": { - "id": 2821, + "id": 2902, "nodeType": "ParameterList", "parameters": [], - "src": "575:0:8" + "src": "575:0:11" }, - "scope": 2876, - "src": "540:193:8", + "scope": 2957, + "src": "540:193:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2861, + "id": 2942, "nodeType": "Block", - "src": "774:160:8", + "src": "774:160:11", "statements": [ { "assignments": [ - 2846 + 2927 ], "declarations": [ { "constant": false, - "id": 2846, + "id": 2927, "name": "returnAmount", "nodeType": "VariableDeclaration", - "scope": 2861, - "src": "784:17:8", + "scope": 2942, + "src": "784:17:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1642,10 +1567,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2845, + "id": 2926, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "784:4:8", + "src": "784:4:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1655,18 +1580,18 @@ "visibility": "internal" } ], - "id": 2850, + "id": 2931, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 2848, + "id": 2929, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2842, - "src": "820:7:8", + "referencedDeclaration": 2923, + "src": "820:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1680,18 +1605,18 @@ "typeString": "uint256" } ], - "id": 2847, + "id": 2928, "name": "_continuousBurn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2735, - "src": "804:15:8", + "referencedDeclaration": 2816, + "src": "804:15:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) returns (uint256)" } }, - "id": 2849, + "id": 2930, "isConstant": false, "isLValue": false, "isPure": false, @@ -1699,14 +1624,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "804:24:8", + "src": "804:24:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "784:44:8" + "src": "784:44:11" }, { "expression": { @@ -1719,18 +1644,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2854, + "id": 2935, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4067, - "src": "868:3:8", + "referencedDeclaration": 4172, + "src": "868:3:11", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2855, + "id": 2936, "isConstant": false, "isLValue": false, "isPure": false, @@ -1738,7 +1663,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "868:10:8", + "src": "868:10:11", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -1746,12 +1671,12 @@ }, { "argumentTypes": null, - "id": 2856, + "id": 2937, "name": "returnAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2846, - "src": "880:12:8", + "referencedDeclaration": 2927, + "src": "880:12:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1771,32 +1696,32 @@ ], "expression": { "argumentTypes": null, - "id": 2852, + "id": 2933, "name": "reserveToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2782, - "src": "846:12:8", + "referencedDeclaration": 2863, + "src": "846:12:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$3897", + "typeIdentifier": "t_contract$_ERC20_$4002", "typeString": "contract ERC20" } }, - "id": 2853, + "id": 2934, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", - "referencedDeclaration": 3555, - "src": "846:21:8", + "referencedDeclaration": 3660, + "src": "846:21:11", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 2857, + "id": 2938, "isConstant": false, "isLValue": false, "isPure": false, @@ -1804,7 +1729,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "846:47:8", + "src": "846:47:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1813,14 +1738,14 @@ { "argumentTypes": null, "hexValue": "6275726e28292045524332302e7472616e73666572206661696c65642e", - "id": 2858, + "id": 2939, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "895:31:8", + "src": "895:31:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_f34029d5c2760d692c7b8cd131aa9b926cc6b46904efb1b3fc5fa1ab65083926", @@ -1840,21 +1765,21 @@ "typeString": "literal_string \"burn() ERC20.transfer failed.\"" } ], - "id": 2851, + "id": 2932, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "838:7:8", + "referencedDeclaration": 4176, + "src": "838:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2859, + "id": 2940, "isConstant": false, "isLValue": false, "isPure": false, @@ -1862,36 +1787,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "838:89:8", + "src": "838:89:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2860, + "id": 2941, "nodeType": "ExpressionStatement", - "src": "838:89:8" + "src": "838:89:11" } ] }, "documentation": null, - "id": 2862, + "id": 2943, "implemented": true, "kind": "function", "modifiers": [], "name": "burn", "nodeType": "FunctionDefinition", "parameters": { - "id": 2843, + "id": 2924, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2842, + "id": 2923, "name": "_amount", "nodeType": "VariableDeclaration", - "scope": 2862, - "src": "753:12:8", + "scope": 2943, + "src": "753:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1899,10 +1824,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2841, + "id": 2922, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "753:4:8", + "src": "753:4:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1912,25 +1837,25 @@ "visibility": "internal" } ], - "src": "752:14:8" + "src": "752:14:11" }, "returnParameters": { - "id": 2844, + "id": 2925, "nodeType": "ParameterList", "parameters": [], - "src": "774:0:8" + "src": "774:0:11" }, - "scope": 2876, - "src": "739:195:8", + "scope": 2957, + "src": "739:195:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2874, + "id": 2955, "nodeType": "Block", - "src": "993:61:8", + "src": "993:61:11", "statements": [ { "expression": { @@ -1941,14 +1866,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2870, + "id": 2951, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4115, - "src": "1041:4:8", + "referencedDeclaration": 4227, + "src": "1041:4:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20ContinuousToken_$2876", + "typeIdentifier": "t_contract$_ERC20ContinuousToken_$2957", "typeString": "contract ERC20ContinuousToken" } } @@ -1956,24 +1881,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ERC20ContinuousToken_$2876", + "typeIdentifier": "t_contract$_ERC20ContinuousToken_$2957", "typeString": "contract ERC20ContinuousToken" } ], - "id": 2869, + "id": 2950, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1033:7:8", + "src": "1033:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 2871, + "id": 2952, "isConstant": false, "isLValue": false, "isPure": false, @@ -1981,7 +1906,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1033:13:8", + "src": "1033:13:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1997,32 +1922,32 @@ ], "expression": { "argumentTypes": null, - "id": 2867, + "id": 2948, "name": "reserveToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2782, - "src": "1010:12:8", + "referencedDeclaration": 2863, + "src": "1010:12:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$3897", + "typeIdentifier": "t_contract$_ERC20_$4002", "typeString": "contract ERC20" } }, - "id": 2868, + "id": 2949, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 3536, - "src": "1010:22:8", + "referencedDeclaration": 3641, + "src": "1010:22:11", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, - "id": 2872, + "id": 2953, "isConstant": false, "isLValue": false, "isPure": false, @@ -2030,43 +1955,43 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1010:37:8", + "src": "1010:37:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 2866, - "id": 2873, + "functionReturnParameters": 2947, + "id": 2954, "nodeType": "Return", - "src": "1003:44:8" + "src": "1003:44:11" } ] }, "documentation": null, - "id": 2875, + "id": 2956, "implemented": true, "kind": "function", "modifiers": [], "name": "reserveBalance", "nodeType": "FunctionDefinition", "parameters": { - "id": 2863, + "id": 2944, "nodeType": "ParameterList", "parameters": [], - "src": "963:2:8" + "src": "963:2:11" }, "returnParameters": { - "id": 2866, + "id": 2947, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2865, + "id": 2946, "name": "", "nodeType": "VariableDeclaration", - "scope": 2875, - "src": "987:4:8", + "scope": 2956, + "src": "987:4:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2074,10 +1999,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2864, + "id": 2945, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "987:4:8", + "src": "987:4:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2087,33 +2012,33 @@ "visibility": "internal" } ], - "src": "986:6:8" + "src": "986:6:11" }, - "scope": 2876, - "src": "940:114:8", + "scope": 2957, + "src": "940:114:11", "stateMutability": "view", "superFunction": 121, "visibility": "public" } ], - "scope": 2877, - "src": "58:998:8" + "scope": 2958, + "src": "58:998:11" } ], - "src": "0:1056:8" + "src": "0:1056:11" }, "legacyAST": { - "absolutePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/token/ERC20ContinuousToken.sol", + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/token/ERC20ContinuousToken.sol", "exportedSymbols": { "ERC20ContinuousToken": [ - 2876 + 2957 ] }, - "id": 2877, + "id": 2958, "nodeType": "SourceUnit", "nodes": [ { - "id": 2777, + "id": 2858, "literals": [ "solidity", "^", @@ -2121,16 +2046,16 @@ ".2" ], "nodeType": "PragmaDirective", - "src": "0:23:8" + "src": "0:23:11" }, { - "absolutePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/token/ContinuousToken.sol", + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/token/ContinuousToken.sol", "file": "./ContinuousToken.sol", - "id": 2778, + "id": 2859, "nodeType": "ImportDirective", - "scope": 2877, - "sourceUnit": 2776, - "src": "25:31:8", + "scope": 2958, + "sourceUnit": 2857, + "src": "25:31:11", "symbolAliases": [], "unitAlias": "" }, @@ -2140,19 +2065,19 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 2779, + "id": 2860, "name": "ContinuousToken", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2775, - "src": "91:15:8", + "referencedDeclaration": 2856, + "src": "91:15:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_ContinuousToken_$2775", + "typeIdentifier": "t_contract$_ContinuousToken_$2856", "typeString": "contract ContinuousToken" } }, - "id": 2780, + "id": 2861, "nodeType": "InheritanceSpecifier", - "src": "91:15:8" + "src": "91:15:11" } ], "contractDependencies": [ @@ -2161,56 +2086,56 @@ 176, 389, 2569, - 2775, - 2999, - 3492, - 3897, - 3955, - 4052 + 2856, + 3104, + 3597, + 4002, + 4060, + 4157 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 2876, + "id": 2957, "linearizedBaseContracts": [ - 2876, - 2775, + 2957, + 2856, 176, 122, 389, 2569, 139, - 3955, - 3897, - 3492, - 4052, - 2999 + 4060, + 4002, + 3597, + 4157, + 3104 ], "name": "ERC20ContinuousToken", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 2782, + "id": 2863, "name": "reserveToken", "nodeType": "VariableDeclaration", - "scope": 2876, - "src": "113:25:8", + "scope": 2957, + "src": "113:25:11", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$3897", + "typeIdentifier": "t_contract$_ERC20_$4002", "typeString": "contract ERC20" }, "typeName": { "contractScope": null, - "id": 2781, + "id": 2862, "name": "ERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3897, - "src": "113:5:8", + "referencedDeclaration": 4002, + "src": "113:5:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$3897", + "typeIdentifier": "t_contract$_ERC20_$4002", "typeString": "contract ERC20" } }, @@ -2219,28 +2144,28 @@ }, { "body": { - "id": 2808, + "id": 2889, "nodeType": "Block", - "src": "417:45:8", + "src": "417:45:11", "statements": [ { "expression": { "argumentTypes": null, - "id": 2806, + "id": 2887, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2804, + "id": 2885, "name": "reserveToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2782, - "src": "427:12:8", + "referencedDeclaration": 2863, + "src": "427:12:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$3897", + "typeIdentifier": "t_contract$_ERC20_$4002", "typeString": "contract ERC20" } }, @@ -2248,31 +2173,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 2805, + "id": 2886, "name": "_reserveToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2794, - "src": "442:13:8", + "referencedDeclaration": 2875, + "src": "442:13:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$3897", + "typeIdentifier": "t_contract$_ERC20_$4002", "typeString": "contract ERC20" } }, - "src": "427:28:8", + "src": "427:28:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$3897", + "typeIdentifier": "t_contract$_ERC20_$4002", "typeString": "contract ERC20" } }, - "id": 2807, + "id": 2888, "nodeType": "ExpressionStatement", - "src": "427:28:8" + "src": "427:28:11" } ] }, "documentation": null, - "id": 2809, + "id": 2890, "implemented": true, "kind": "constructor", "modifiers": [ @@ -2280,12 +2205,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2797, + "id": 2878, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2784, - "src": "359:5:8", + "referencedDeclaration": 2865, + "src": "359:5:11", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" @@ -2293,12 +2218,12 @@ }, { "argumentTypes": null, - "id": 2798, + "id": 2879, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2786, - "src": "366:7:8", + "referencedDeclaration": 2867, + "src": "366:7:11", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" @@ -2306,12 +2231,12 @@ }, { "argumentTypes": null, - "id": 2799, + "id": 2880, "name": "_decimals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2788, - "src": "375:9:8", + "referencedDeclaration": 2869, + "src": "375:9:11", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2319,12 +2244,12 @@ }, { "argumentTypes": null, - "id": 2800, + "id": 2881, "name": "_initialSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2790, - "src": "386:14:8", + "referencedDeclaration": 2871, + "src": "386:14:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2332,49 +2257,49 @@ }, { "argumentTypes": null, - "id": 2801, + "id": 2882, "name": "_reserveRatio", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2792, - "src": "402:13:8", + "referencedDeclaration": 2873, + "src": "402:13:11", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } } ], - "id": 2802, + "id": 2883, "modifierName": { "argumentTypes": null, - "id": 2796, + "id": 2877, "name": "ContinuousToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2775, - "src": "343:15:8", + "referencedDeclaration": 2856, + "src": "343:15:11", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ContinuousToken_$2775_$", + "typeIdentifier": "t_type$_t_contract$_ContinuousToken_$2856_$", "typeString": "type(contract ContinuousToken)" } }, "nodeType": "ModifierInvocation", - "src": "343:73:8" + "src": "343:73:11" } ], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 2795, + "id": 2876, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2784, + "id": 2865, "name": "_name", "nodeType": "VariableDeclaration", - "scope": 2809, - "src": "166:19:8", + "scope": 2890, + "src": "166:19:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -2382,10 +2307,10 @@ "typeString": "string" }, "typeName": { - "id": 2783, + "id": 2864, "name": "string", "nodeType": "ElementaryTypeName", - "src": "166:6:8", + "src": "166:6:11", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -2396,11 +2321,11 @@ }, { "constant": false, - "id": 2786, + "id": 2867, "name": "_symbol", "nodeType": "VariableDeclaration", - "scope": 2809, - "src": "195:21:8", + "scope": 2890, + "src": "195:21:11", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -2408,10 +2333,10 @@ "typeString": "string" }, "typeName": { - "id": 2785, + "id": 2866, "name": "string", "nodeType": "ElementaryTypeName", - "src": "195:6:8", + "src": "195:6:11", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -2422,11 +2347,11 @@ }, { "constant": false, - "id": 2788, + "id": 2869, "name": "_decimals", "nodeType": "VariableDeclaration", - "scope": 2809, - "src": "226:15:8", + "scope": 2890, + "src": "226:15:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2434,10 +2359,10 @@ "typeString": "uint8" }, "typeName": { - "id": 2787, + "id": 2868, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "226:5:8", + "src": "226:5:11", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2448,11 +2373,11 @@ }, { "constant": false, - "id": 2790, + "id": 2871, "name": "_initialSupply", "nodeType": "VariableDeclaration", - "scope": 2809, - "src": "251:19:8", + "scope": 2890, + "src": "251:19:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2460,10 +2385,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2789, + "id": 2870, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "251:4:8", + "src": "251:4:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2474,11 +2399,11 @@ }, { "constant": false, - "id": 2792, + "id": 2873, "name": "_reserveRatio", "nodeType": "VariableDeclaration", - "scope": 2809, - "src": "280:20:8", + "scope": 2890, + "src": "280:20:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2486,10 +2411,10 @@ "typeString": "uint32" }, "typeName": { - "id": 2791, + "id": 2872, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "280:6:8", + "src": "280:6:11", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -2500,26 +2425,26 @@ }, { "constant": false, - "id": 2794, + "id": 2875, "name": "_reserveToken", "nodeType": "VariableDeclaration", - "scope": 2809, - "src": "310:19:8", + "scope": 2890, + "src": "310:19:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$3897", + "typeIdentifier": "t_contract$_ERC20_$4002", "typeString": "contract ERC20" }, "typeName": { "contractScope": null, - "id": 2793, + "id": 2874, "name": "ERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3897, - "src": "310:5:8", + "referencedDeclaration": 4002, + "src": "310:5:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$3897", + "typeIdentifier": "t_contract$_ERC20_$4002", "typeString": "contract ERC20" } }, @@ -2527,25 +2452,25 @@ "visibility": "internal" } ], - "src": "156:179:8" + "src": "156:179:11" }, "returnParameters": { - "id": 2803, + "id": 2884, "nodeType": "ParameterList", "parameters": [], - "src": "417:0:8" + "src": "417:0:11" }, - "scope": 2876, - "src": "145:317:8", + "scope": 2957, + "src": "145:317:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2816, + "id": 2897, "nodeType": "Block", - "src": "489:45:8", + "src": "489:45:11", "statements": [ { "expression": { @@ -2554,14 +2479,14 @@ { "argumentTypes": null, "hexValue": "43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2e", - "id": 2813, + "id": 2894, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "498:32:8", + "src": "498:32:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_35adf5099068bfc19dbe57ce7e8bce94edb806b4913b286575991df24351ec00", @@ -2577,21 +2502,21 @@ "typeString": "literal_string \"Cannot call fallback function.\"" } ], - "id": 2812, + "id": 2893, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ - 4072, - 4073 + 4177, + 4178 ], - "referencedDeclaration": 4073, - "src": "491:6:8", + "referencedDeclaration": 4178, + "src": "491:6:11", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, - "id": 2814, + "id": 2895, "isConstant": false, "isLValue": false, "isPure": false, @@ -2599,48 +2524,48 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "491:40:8", + "src": "491:40:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2815, + "id": 2896, "nodeType": "ExpressionStatement", - "src": "491:40:8" + "src": "491:40:11" } ] }, "documentation": null, - "id": 2817, + "id": 2898, "implemented": true, "kind": "fallback", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 2810, + "id": 2891, "nodeType": "ParameterList", "parameters": [], - "src": "477:2:8" + "src": "477:2:11" }, "returnParameters": { - "id": 2811, + "id": 2892, "nodeType": "ParameterList", "parameters": [], - "src": "489:0:8" + "src": "489:0:11" }, - "scope": 2876, - "src": "468:66:8", + "scope": 2957, + "src": "468:66:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" }, { "body": { - "id": 2839, + "id": 2920, "nodeType": "Block", - "src": "575:158:8", + "src": "575:158:11", "statements": [ { "expression": { @@ -2648,12 +2573,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2823, + "id": 2904, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2819, - "src": "601:7:8", + "referencedDeclaration": 2900, + "src": "601:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2667,18 +2592,18 @@ "typeString": "uint256" } ], - "id": 2822, + "id": 2903, "name": "_continuousMint", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2687, - "src": "585:15:8", + "referencedDeclaration": 2768, + "src": "585:15:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) returns (uint256)" } }, - "id": 2824, + "id": 2905, "isConstant": false, "isLValue": false, "isPure": false, @@ -2686,15 +2611,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "585:24:8", + "src": "585:24:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 2825, + "id": 2906, "nodeType": "ExpressionStatement", - "src": "585:24:8" + "src": "585:24:11" }, { "expression": { @@ -2707,18 +2632,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2829, + "id": 2910, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4067, - "src": "653:3:8", + "referencedDeclaration": 4172, + "src": "653:3:11", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2830, + "id": 2911, "isConstant": false, "isLValue": false, "isPure": false, @@ -2726,7 +2651,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "653:10:8", + "src": "653:10:11", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -2737,14 +2662,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2832, + "id": 2913, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4115, - "src": "673:4:8", + "referencedDeclaration": 4227, + "src": "673:4:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20ContinuousToken_$2876", + "typeIdentifier": "t_contract$_ERC20ContinuousToken_$2957", "typeString": "contract ERC20ContinuousToken" } } @@ -2752,24 +2677,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ERC20ContinuousToken_$2876", + "typeIdentifier": "t_contract$_ERC20ContinuousToken_$2957", "typeString": "contract ERC20ContinuousToken" } ], - "id": 2831, + "id": 2912, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "665:7:8", + "src": "665:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 2833, + "id": 2914, "isConstant": false, "isLValue": false, "isPure": false, @@ -2777,7 +2702,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "665:13:8", + "src": "665:13:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2785,12 +2710,12 @@ }, { "argumentTypes": null, - "id": 2834, + "id": 2915, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2819, - "src": "680:7:8", + "referencedDeclaration": 2900, + "src": "680:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2814,32 +2739,32 @@ ], "expression": { "argumentTypes": null, - "id": 2827, + "id": 2908, "name": "reserveToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2782, - "src": "627:12:8", + "referencedDeclaration": 2863, + "src": "627:12:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$3897", + "typeIdentifier": "t_contract$_ERC20_$4002", "typeString": "contract ERC20" } }, - "id": 2828, + "id": 2909, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transferFrom", "nodeType": "MemberAccess", - "referencedDeclaration": 3626, - "src": "627:25:8", + "referencedDeclaration": 3731, + "src": "627:25:11", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,address,uint256) external returns (bool)" } }, - "id": 2835, + "id": 2916, "isConstant": false, "isLValue": false, "isPure": false, @@ -2847,7 +2772,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "627:61:8", + "src": "627:61:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2856,14 +2781,14 @@ { "argumentTypes": null, "hexValue": "6d696e7428292045524332302e7472616e7366657246726f6d206661696c65642e", - "id": 2836, + "id": 2917, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "690:35:8", + "src": "690:35:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_0f78d036144c545e53b563b9c14b24232b4d2b68ec3423cd7c70d3540dab2545", @@ -2883,21 +2808,21 @@ "typeString": "literal_string \"mint() ERC20.transferFrom failed.\"" } ], - "id": 2826, + "id": 2907, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "619:7:8", + "referencedDeclaration": 4176, + "src": "619:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2837, + "id": 2918, "isConstant": false, "isLValue": false, "isPure": false, @@ -2905,36 +2830,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "619:107:8", + "src": "619:107:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2838, + "id": 2919, "nodeType": "ExpressionStatement", - "src": "619:107:8" + "src": "619:107:11" } ] }, "documentation": null, - "id": 2840, + "id": 2921, "implemented": true, "kind": "function", "modifiers": [], "name": "mint", "nodeType": "FunctionDefinition", "parameters": { - "id": 2820, + "id": 2901, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2819, + "id": 2900, "name": "_amount", "nodeType": "VariableDeclaration", - "scope": 2840, - "src": "554:12:8", + "scope": 2921, + "src": "554:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2942,10 +2867,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2818, + "id": 2899, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "554:4:8", + "src": "554:4:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2955,38 +2880,38 @@ "visibility": "internal" } ], - "src": "553:14:8" + "src": "553:14:11" }, "returnParameters": { - "id": 2821, + "id": 2902, "nodeType": "ParameterList", "parameters": [], - "src": "575:0:8" + "src": "575:0:11" }, - "scope": 2876, - "src": "540:193:8", + "scope": 2957, + "src": "540:193:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2861, + "id": 2942, "nodeType": "Block", - "src": "774:160:8", + "src": "774:160:11", "statements": [ { "assignments": [ - 2846 + 2927 ], "declarations": [ { "constant": false, - "id": 2846, + "id": 2927, "name": "returnAmount", "nodeType": "VariableDeclaration", - "scope": 2861, - "src": "784:17:8", + "scope": 2942, + "src": "784:17:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2994,10 +2919,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2845, + "id": 2926, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "784:4:8", + "src": "784:4:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3007,18 +2932,18 @@ "visibility": "internal" } ], - "id": 2850, + "id": 2931, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 2848, + "id": 2929, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2842, - "src": "820:7:8", + "referencedDeclaration": 2923, + "src": "820:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3032,18 +2957,18 @@ "typeString": "uint256" } ], - "id": 2847, + "id": 2928, "name": "_continuousBurn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2735, - "src": "804:15:8", + "referencedDeclaration": 2816, + "src": "804:15:11", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) returns (uint256)" } }, - "id": 2849, + "id": 2930, "isConstant": false, "isLValue": false, "isPure": false, @@ -3051,14 +2976,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "804:24:8", + "src": "804:24:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "784:44:8" + "src": "784:44:11" }, { "expression": { @@ -3071,18 +2996,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2854, + "id": 2935, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4067, - "src": "868:3:8", + "referencedDeclaration": 4172, + "src": "868:3:11", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2855, + "id": 2936, "isConstant": false, "isLValue": false, "isPure": false, @@ -3090,7 +3015,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "868:10:8", + "src": "868:10:11", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -3098,12 +3023,12 @@ }, { "argumentTypes": null, - "id": 2856, + "id": 2937, "name": "returnAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2846, - "src": "880:12:8", + "referencedDeclaration": 2927, + "src": "880:12:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3123,32 +3048,32 @@ ], "expression": { "argumentTypes": null, - "id": 2852, + "id": 2933, "name": "reserveToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2782, - "src": "846:12:8", + "referencedDeclaration": 2863, + "src": "846:12:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$3897", + "typeIdentifier": "t_contract$_ERC20_$4002", "typeString": "contract ERC20" } }, - "id": 2853, + "id": 2934, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", - "referencedDeclaration": 3555, - "src": "846:21:8", + "referencedDeclaration": 3660, + "src": "846:21:11", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 2857, + "id": 2938, "isConstant": false, "isLValue": false, "isPure": false, @@ -3156,7 +3081,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "846:47:8", + "src": "846:47:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3165,14 +3090,14 @@ { "argumentTypes": null, "hexValue": "6275726e28292045524332302e7472616e73666572206661696c65642e", - "id": 2858, + "id": 2939, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "895:31:8", + "src": "895:31:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_f34029d5c2760d692c7b8cd131aa9b926cc6b46904efb1b3fc5fa1ab65083926", @@ -3192,21 +3117,21 @@ "typeString": "literal_string \"burn() ERC20.transfer failed.\"" } ], - "id": 2851, + "id": 2932, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "838:7:8", + "referencedDeclaration": 4176, + "src": "838:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 2859, + "id": 2940, "isConstant": false, "isLValue": false, "isPure": false, @@ -3214,36 +3139,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "838:89:8", + "src": "838:89:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2860, + "id": 2941, "nodeType": "ExpressionStatement", - "src": "838:89:8" + "src": "838:89:11" } ] }, "documentation": null, - "id": 2862, + "id": 2943, "implemented": true, "kind": "function", "modifiers": [], "name": "burn", "nodeType": "FunctionDefinition", "parameters": { - "id": 2843, + "id": 2924, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2842, + "id": 2923, "name": "_amount", "nodeType": "VariableDeclaration", - "scope": 2862, - "src": "753:12:8", + "scope": 2943, + "src": "753:12:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3251,10 +3176,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2841, + "id": 2922, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "753:4:8", + "src": "753:4:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3264,25 +3189,25 @@ "visibility": "internal" } ], - "src": "752:14:8" + "src": "752:14:11" }, "returnParameters": { - "id": 2844, + "id": 2925, "nodeType": "ParameterList", "parameters": [], - "src": "774:0:8" + "src": "774:0:11" }, - "scope": 2876, - "src": "739:195:8", + "scope": 2957, + "src": "739:195:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2874, + "id": 2955, "nodeType": "Block", - "src": "993:61:8", + "src": "993:61:11", "statements": [ { "expression": { @@ -3293,14 +3218,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2870, + "id": 2951, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4115, - "src": "1041:4:8", + "referencedDeclaration": 4227, + "src": "1041:4:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20ContinuousToken_$2876", + "typeIdentifier": "t_contract$_ERC20ContinuousToken_$2957", "typeString": "contract ERC20ContinuousToken" } } @@ -3308,24 +3233,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ERC20ContinuousToken_$2876", + "typeIdentifier": "t_contract$_ERC20ContinuousToken_$2957", "typeString": "contract ERC20ContinuousToken" } ], - "id": 2869, + "id": 2950, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1033:7:8", + "src": "1033:7:11", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 2871, + "id": 2952, "isConstant": false, "isLValue": false, "isPure": false, @@ -3333,7 +3258,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1033:13:8", + "src": "1033:13:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3349,32 +3274,32 @@ ], "expression": { "argumentTypes": null, - "id": 2867, + "id": 2948, "name": "reserveToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2782, - "src": "1010:12:8", + "referencedDeclaration": 2863, + "src": "1010:12:11", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$3897", + "typeIdentifier": "t_contract$_ERC20_$4002", "typeString": "contract ERC20" } }, - "id": 2868, + "id": 2949, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 3536, - "src": "1010:22:8", + "referencedDeclaration": 3641, + "src": "1010:22:11", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, - "id": 2872, + "id": 2953, "isConstant": false, "isLValue": false, "isPure": false, @@ -3382,43 +3307,43 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1010:37:8", + "src": "1010:37:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 2866, - "id": 2873, + "functionReturnParameters": 2947, + "id": 2954, "nodeType": "Return", - "src": "1003:44:8" + "src": "1003:44:11" } ] }, "documentation": null, - "id": 2875, + "id": 2956, "implemented": true, "kind": "function", "modifiers": [], "name": "reserveBalance", "nodeType": "FunctionDefinition", "parameters": { - "id": 2863, + "id": 2944, "nodeType": "ParameterList", "parameters": [], - "src": "963:2:8" + "src": "963:2:11" }, "returnParameters": { - "id": 2866, + "id": 2947, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2865, + "id": 2946, "name": "", "nodeType": "VariableDeclaration", - "scope": 2875, - "src": "987:4:8", + "scope": 2956, + "src": "987:4:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3426,10 +3351,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2864, + "id": 2945, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "987:4:8", + "src": "987:4:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3439,28 +3364,28 @@ "visibility": "internal" } ], - "src": "986:6:8" + "src": "986:6:11" }, - "scope": 2876, - "src": "940:114:8", + "scope": 2957, + "src": "940:114:11", "stateMutability": "view", "superFunction": 121, "visibility": "public" } ], - "scope": 2877, - "src": "58:998:8" + "scope": 2958, + "src": "58:998:11" } ], - "src": "0:1056:8" + "src": "0:1056:11" }, "compiler": { "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" + "version": "0.5.2+commit.1df8f40c.Emscripten.clang" }, "networks": {}, - "schemaVersion": "3.0.23", - "updatedAt": "2020-02-16T12:52:29.793Z", + "schemaVersion": "3.0.1", + "updatedAt": "2020-02-16T14:54:14.902Z", "devdoc": { "methods": { "allowance(address,address)": { diff --git a/truffle/build/contracts/ERC20Detailed.json b/truffle/build/contracts/ERC20Detailed.json index 0ea4ff3..7fbe377 100644 --- a/truffle/build/contracts/ERC20Detailed.json +++ b/truffle/build/contracts/ERC20Detailed.json @@ -2,95 +2,80 @@ "contractName": "ERC20Detailed", "abi": [ { + "constant": false, "inputs": [ { - "internalType": "string", - "name": "name", - "type": "string" + "name": "spender", + "type": "address" }, { - "internalType": "string", - "name": "symbol", - "type": "string" - }, + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ { - "internalType": "uint8", - "name": "decimals", - "type": "uint8" + "name": "", + "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", - "type": "constructor" + "type": "function" }, { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ { - "indexed": false, - "internalType": "uint256", - "name": "value", + "name": "", "type": "uint256" } ], - "name": "Approval", - "type": "event" + "payable": false, + "stateMutability": "view", + "type": "function" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": true, - "internalType": "address", - "name": "from", + "name": "sender", "type": "address" }, { - "indexed": true, - "internalType": "address", - "name": "to", + "name": "recipient", "type": "address" }, { - "indexed": false, - "internalType": "uint256", - "name": "value", + "name": "amount", "type": "uint256" } ], - "name": "Transfer", - "type": "event" + "name": "transferFrom", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" }, { "constant": true, "inputs": [ { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", + "name": "account", "type": "address" } ], - "name": "allowance", + "name": "balanceOf", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -103,20 +88,17 @@ "constant": false, "inputs": [ { - "internalType": "address", - "name": "spender", + "name": "recipient", "type": "address" }, { - "internalType": "uint256", "name": "amount", "type": "uint256" } ], - "name": "approve", + "name": "transfer", "outputs": [ { - "internalType": "bool", "name": "", "type": "bool" } @@ -129,15 +111,17 @@ "constant": true, "inputs": [ { - "internalType": "address", - "name": "account", + "name": "owner", + "type": "address" + }, + { + "name": "spender", "type": "address" } ], - "name": "balanceOf", + "name": "allowance", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -147,76 +131,67 @@ "type": "function" }, { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ + "inputs": [ { - "internalType": "uint256", - "name": "", - "type": "uint256" + "name": "name", + "type": "string" + }, + { + "name": "symbol", + "type": "string" + }, + { + "name": "decimals", + "type": "uint8" } ], "payable": false, - "stateMutability": "view", - "type": "function" + "stateMutability": "nonpayable", + "type": "constructor" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "internalType": "address", - "name": "recipient", + "indexed": true, + "name": "from", "type": "address" }, { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ + "indexed": true, + "name": "to", + "type": "address" + }, { - "internalType": "bool", - "name": "", - "type": "bool" + "indexed": false, + "name": "value", + "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" + "name": "Transfer", + "type": "event" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "internalType": "address", - "name": "sender", + "indexed": true, + "name": "owner", "type": "address" }, { - "internalType": "address", - "name": "recipient", + "indexed": true, + "name": "spender", "type": "address" }, { - "internalType": "uint256", - "name": "amount", + "indexed": false, + "name": "value", "type": "uint256" } ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" + "name": "Approval", + "type": "event" }, { "constant": true, @@ -224,7 +199,6 @@ "name": "name", "outputs": [ { - "internalType": "string", "name": "", "type": "string" } @@ -239,7 +213,6 @@ "name": "symbol", "outputs": [ { - "internalType": "string", "name": "", "type": "string" } @@ -254,7 +227,6 @@ "name": "decimals", "outputs": [ { - "internalType": "uint8", "name": "", "type": "uint8" } @@ -264,7 +236,6 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Optional functions from the ERC20 standard.\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. * This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. * Returns a boolean value indicating whether the operation succeeded. * IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"constructor\":{\"details\":\"Sets the values for `name`, `symbol`, and `decimals`. All three of these values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). * Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. * NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. * Returns a boolean value indicating whether the operation succeeded. * Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. * Returns a boolean value indicating whether the operation succeeded. * Emits a {Transfer} event.\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol\":\"ERC20Detailed\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":1500},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol\":{\"keccak256\":\"0x4a3a810b7ebe742e897e1fd428b3eeed2196d3acea58eaf9c566ed10d545d2ed\",\"urls\":[\"bzz-raw://28d03f328e19e4099d5013de0649afaeaabac1a614e130767ab1cb4aca9775b6\",\"dweb:/ipfs/Qmb9iW7yNuYehB2NfhRMs9TakqbLVQhBhmGMkaDZ5g1Eb4\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]}},\"version\":1}", "bytecode": "0x", "deployedBytecode": "0x", "sourceMap": "", @@ -275,14 +246,14 @@ "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol", "exportedSymbols": { "ERC20Detailed": [ - 3955 + 4060 ] }, - "id": 3956, + "id": 4061, "nodeType": "SourceUnit", "nodes": [ { - "id": 3899, + "id": 4004, "literals": [ "solidity", "^", @@ -290,16 +261,16 @@ ".0" ], "nodeType": "PragmaDirective", - "src": "0:23:16" + "src": "0:23:19" }, { "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "file": "./IERC20.sol", - "id": 3900, + "id": 4005, "nodeType": "ImportDirective", - "scope": 3956, - "sourceUnit": 4053, - "src": "25:22:16", + "scope": 4061, + "sourceUnit": 4158, + "src": "25:22:19", "symbolAliases": [], "unitAlias": "" }, @@ -309,42 +280,42 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 3901, + "id": 4006, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 4052, - "src": "135:6:16", + "referencedDeclaration": 4157, + "src": "135:6:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$4052", + "typeIdentifier": "t_contract$_IERC20_$4157", "typeString": "contract IERC20" } }, - "id": 3902, + "id": 4007, "nodeType": "InheritanceSpecifier", - "src": "135:6:16" + "src": "135:6:19" } ], "contractDependencies": [ - 4052 + 4157 ], "contractKind": "contract", "documentation": "@dev Optional functions from the ERC20 standard.", "fullyImplemented": false, - "id": 3955, + "id": 4060, "linearizedBaseContracts": [ - 3955, - 4052 + 4060, + 4157 ], "name": "ERC20Detailed", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 3904, + "id": 4009, "name": "_name", "nodeType": "VariableDeclaration", - "scope": 3955, - "src": "148:20:16", + "scope": 4060, + "src": "148:20:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -352,10 +323,10 @@ "typeString": "string" }, "typeName": { - "id": 3903, + "id": 4008, "name": "string", "nodeType": "ElementaryTypeName", - "src": "148:6:16", + "src": "148:6:19", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -366,11 +337,11 @@ }, { "constant": false, - "id": 3906, + "id": 4011, "name": "_symbol", "nodeType": "VariableDeclaration", - "scope": 3955, - "src": "174:22:16", + "scope": 4060, + "src": "174:22:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -378,10 +349,10 @@ "typeString": "string" }, "typeName": { - "id": 3905, + "id": 4010, "name": "string", "nodeType": "ElementaryTypeName", - "src": "174:6:16", + "src": "174:6:19", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -392,11 +363,11 @@ }, { "constant": false, - "id": 3908, + "id": 4013, "name": "_decimals", "nodeType": "VariableDeclaration", - "scope": 3955, - "src": "202:23:16", + "scope": 4060, + "src": "202:23:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -404,10 +375,10 @@ "typeString": "uint8" }, "typeName": { - "id": 3907, + "id": 4012, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "202:5:16", + "src": "202:5:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -418,26 +389,26 @@ }, { "body": { - "id": 3929, + "id": 4034, "nodeType": "Block", - "src": "494:85:16", + "src": "494:85:19", "statements": [ { "expression": { "argumentTypes": null, - "id": 3919, + "id": 4024, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 3917, + "id": 4022, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3904, - "src": "504:5:16", + "referencedDeclaration": 4009, + "src": "504:5:19", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" @@ -447,43 +418,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 3918, + "id": 4023, "name": "name", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3910, - "src": "512:4:16", + "referencedDeclaration": 4015, + "src": "512:4:19", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, - "src": "504:12:16", + "src": "504:12:19", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, - "id": 3920, + "id": 4025, "nodeType": "ExpressionStatement", - "src": "504:12:16" + "src": "504:12:19" }, { "expression": { "argumentTypes": null, - "id": 3923, + "id": 4028, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 3921, + "id": 4026, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3906, - "src": "526:7:16", + "referencedDeclaration": 4011, + "src": "526:7:19", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" @@ -493,43 +464,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 3922, + "id": 4027, "name": "symbol", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3912, - "src": "536:6:16", + "referencedDeclaration": 4017, + "src": "536:6:19", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, - "src": "526:16:16", + "src": "526:16:19", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, - "id": 3924, + "id": 4029, "nodeType": "ExpressionStatement", - "src": "526:16:16" + "src": "526:16:19" }, { "expression": { "argumentTypes": null, - "id": 3927, + "id": 4032, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 3925, + "id": 4030, "name": "_decimals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3908, - "src": "552:9:16", + "referencedDeclaration": 4013, + "src": "552:9:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -539,47 +510,47 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 3926, + "id": 4031, "name": "decimals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3914, - "src": "564:8:16", + "referencedDeclaration": 4019, + "src": "564:8:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "552:20:16", + "src": "552:20:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 3928, + "id": 4033, "nodeType": "ExpressionStatement", - "src": "552:20:16" + "src": "552:20:19" } ] }, "documentation": "@dev Sets the values for `name`, `symbol`, and `decimals`. All three of\nthese values are immutable: they can only be set once during\nconstruction.", - "id": 3930, + "id": 4035, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 3915, + "id": 4020, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3910, + "id": 4015, "name": "name", "nodeType": "VariableDeclaration", - "scope": 3930, - "src": "429:18:16", + "scope": 4035, + "src": "429:18:19", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -587,10 +558,10 @@ "typeString": "string" }, "typeName": { - "id": 3909, + "id": 4014, "name": "string", "nodeType": "ElementaryTypeName", - "src": "429:6:16", + "src": "429:6:19", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -601,11 +572,11 @@ }, { "constant": false, - "id": 3912, + "id": 4017, "name": "symbol", "nodeType": "VariableDeclaration", - "scope": 3930, - "src": "449:20:16", + "scope": 4035, + "src": "449:20:19", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -613,10 +584,10 @@ "typeString": "string" }, "typeName": { - "id": 3911, + "id": 4016, "name": "string", "nodeType": "ElementaryTypeName", - "src": "449:6:16", + "src": "449:6:19", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -627,11 +598,11 @@ }, { "constant": false, - "id": 3914, + "id": 4019, "name": "decimals", "nodeType": "VariableDeclaration", - "scope": 3930, - "src": "471:14:16", + "scope": 4035, + "src": "471:14:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -639,10 +610,10 @@ "typeString": "uint8" }, "typeName": { - "id": 3913, + "id": 4018, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "471:5:16", + "src": "471:5:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -652,71 +623,71 @@ "visibility": "internal" } ], - "src": "428:58:16" + "src": "428:58:19" }, "returnParameters": { - "id": 3916, + "id": 4021, "nodeType": "ParameterList", "parameters": [], - "src": "494:0:16" + "src": "494:0:19" }, - "scope": 3955, - "src": "416:163:16", + "scope": 4060, + "src": "416:163:19", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 3937, + "id": 4042, "nodeType": "Block", - "src": "696:29:16", + "src": "696:29:19", "statements": [ { "expression": { "argumentTypes": null, - "id": 3935, + "id": 4040, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3904, - "src": "713:5:16", + "referencedDeclaration": 4009, + "src": "713:5:19", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, - "functionReturnParameters": 3934, - "id": 3936, + "functionReturnParameters": 4039, + "id": 4041, "nodeType": "Return", - "src": "706:12:16" + "src": "706:12:19" } ] }, "documentation": "@dev Returns the name of the token.", - "id": 3938, + "id": 4043, "implemented": true, "kind": "function", "modifiers": [], "name": "name", "nodeType": "FunctionDefinition", "parameters": { - "id": 3931, + "id": 4036, "nodeType": "ParameterList", "parameters": [], - "src": "657:2:16" + "src": "657:2:19" }, "returnParameters": { - "id": 3934, + "id": 4039, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3933, + "id": 4038, "name": "", "nodeType": "VariableDeclaration", - "scope": 3938, - "src": "681:13:16", + "scope": 4043, + "src": "681:13:19", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -724,10 +695,10 @@ "typeString": "string" }, "typeName": { - "id": 3932, + "id": 4037, "name": "string", "nodeType": "ElementaryTypeName", - "src": "681:6:16", + "src": "681:6:19", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -737,65 +708,65 @@ "visibility": "internal" } ], - "src": "680:15:16" + "src": "680:15:19" }, - "scope": 3955, - "src": "644:81:16", + "scope": 4060, + "src": "644:81:19", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 3945, + "id": 4050, "nodeType": "Block", - "src": "892:31:16", + "src": "892:31:19", "statements": [ { "expression": { "argumentTypes": null, - "id": 3943, + "id": 4048, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3906, - "src": "909:7:16", + "referencedDeclaration": 4011, + "src": "909:7:19", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, - "functionReturnParameters": 3942, - "id": 3944, + "functionReturnParameters": 4047, + "id": 4049, "nodeType": "Return", - "src": "902:14:16" + "src": "902:14:19" } ] }, "documentation": "@dev Returns the symbol of the token, usually a shorter version of the\nname.", - "id": 3946, + "id": 4051, "implemented": true, "kind": "function", "modifiers": [], "name": "symbol", "nodeType": "FunctionDefinition", "parameters": { - "id": 3939, + "id": 4044, "nodeType": "ParameterList", "parameters": [], - "src": "853:2:16" + "src": "853:2:19" }, "returnParameters": { - "id": 3942, + "id": 4047, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3941, + "id": 4046, "name": "", "nodeType": "VariableDeclaration", - "scope": 3946, - "src": "877:13:16", + "scope": 4051, + "src": "877:13:19", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -803,10 +774,10 @@ "typeString": "string" }, "typeName": { - "id": 3940, + "id": 4045, "name": "string", "nodeType": "ElementaryTypeName", - "src": "877:6:16", + "src": "877:6:19", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -816,65 +787,65 @@ "visibility": "internal" } ], - "src": "876:15:16" + "src": "876:15:19" }, - "scope": 3955, - "src": "838:85:16", + "scope": 4060, + "src": "838:85:19", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 3953, + "id": 4058, "nodeType": "Block", - "src": "1520:33:16", + "src": "1520:33:19", "statements": [ { "expression": { "argumentTypes": null, - "id": 3951, + "id": 4056, "name": "_decimals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3908, - "src": "1537:9:16", + "referencedDeclaration": 4013, + "src": "1537:9:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "functionReturnParameters": 3950, - "id": 3952, + "functionReturnParameters": 4055, + "id": 4057, "nodeType": "Return", - "src": "1530:16:16" + "src": "1530:16:19" } ] }, "documentation": "@dev Returns the number of decimals used to get its user representation.\nFor example, if `decimals` equals `2`, a balance of `505` tokens should\nbe displayed to a user as `5,05` (`505 / 10 ** 2`).\n * Tokens usually opt for a value of 18, imitating the relationship between\nEther and Wei.\n * NOTE: This information is only used for _display_ purposes: it in\nno way affects any of the arithmetic of the contract, including\n{IERC20-balanceOf} and {IERC20-transfer}.", - "id": 3954, + "id": 4059, "implemented": true, "kind": "function", "modifiers": [], "name": "decimals", "nodeType": "FunctionDefinition", "parameters": { - "id": 3947, + "id": 4052, "nodeType": "ParameterList", "parameters": [], - "src": "1489:2:16" + "src": "1489:2:19" }, "returnParameters": { - "id": 3950, + "id": 4055, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3949, + "id": 4054, "name": "", "nodeType": "VariableDeclaration", - "scope": 3954, - "src": "1513:5:16", + "scope": 4059, + "src": "1513:5:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -882,10 +853,10 @@ "typeString": "uint8" }, "typeName": { - "id": 3948, + "id": 4053, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1513:5:16", + "src": "1513:5:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -895,33 +866,33 @@ "visibility": "internal" } ], - "src": "1512:7:16" + "src": "1512:7:19" }, - "scope": 3955, - "src": "1472:81:16", + "scope": 4060, + "src": "1472:81:19", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 3956, - "src": "109:1446:16" + "scope": 4061, + "src": "109:1446:19" } ], - "src": "0:1556:16" + "src": "0:1556:19" }, "legacyAST": { "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol", "exportedSymbols": { "ERC20Detailed": [ - 3955 + 4060 ] }, - "id": 3956, + "id": 4061, "nodeType": "SourceUnit", "nodes": [ { - "id": 3899, + "id": 4004, "literals": [ "solidity", "^", @@ -929,16 +900,16 @@ ".0" ], "nodeType": "PragmaDirective", - "src": "0:23:16" + "src": "0:23:19" }, { "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "file": "./IERC20.sol", - "id": 3900, + "id": 4005, "nodeType": "ImportDirective", - "scope": 3956, - "sourceUnit": 4053, - "src": "25:22:16", + "scope": 4061, + "sourceUnit": 4158, + "src": "25:22:19", "symbolAliases": [], "unitAlias": "" }, @@ -948,42 +919,42 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 3901, + "id": 4006, "name": "IERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 4052, - "src": "135:6:16", + "referencedDeclaration": 4157, + "src": "135:6:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$4052", + "typeIdentifier": "t_contract$_IERC20_$4157", "typeString": "contract IERC20" } }, - "id": 3902, + "id": 4007, "nodeType": "InheritanceSpecifier", - "src": "135:6:16" + "src": "135:6:19" } ], "contractDependencies": [ - 4052 + 4157 ], "contractKind": "contract", "documentation": "@dev Optional functions from the ERC20 standard.", "fullyImplemented": false, - "id": 3955, + "id": 4060, "linearizedBaseContracts": [ - 3955, - 4052 + 4060, + 4157 ], "name": "ERC20Detailed", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 3904, + "id": 4009, "name": "_name", "nodeType": "VariableDeclaration", - "scope": 3955, - "src": "148:20:16", + "scope": 4060, + "src": "148:20:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -991,10 +962,10 @@ "typeString": "string" }, "typeName": { - "id": 3903, + "id": 4008, "name": "string", "nodeType": "ElementaryTypeName", - "src": "148:6:16", + "src": "148:6:19", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -1005,11 +976,11 @@ }, { "constant": false, - "id": 3906, + "id": 4011, "name": "_symbol", "nodeType": "VariableDeclaration", - "scope": 3955, - "src": "174:22:16", + "scope": 4060, + "src": "174:22:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1017,10 +988,10 @@ "typeString": "string" }, "typeName": { - "id": 3905, + "id": 4010, "name": "string", "nodeType": "ElementaryTypeName", - "src": "174:6:16", + "src": "174:6:19", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -1031,11 +1002,11 @@ }, { "constant": false, - "id": 3908, + "id": 4013, "name": "_decimals", "nodeType": "VariableDeclaration", - "scope": 3955, - "src": "202:23:16", + "scope": 4060, + "src": "202:23:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1043,10 +1014,10 @@ "typeString": "uint8" }, "typeName": { - "id": 3907, + "id": 4012, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "202:5:16", + "src": "202:5:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1057,26 +1028,26 @@ }, { "body": { - "id": 3929, + "id": 4034, "nodeType": "Block", - "src": "494:85:16", + "src": "494:85:19", "statements": [ { "expression": { "argumentTypes": null, - "id": 3919, + "id": 4024, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 3917, + "id": 4022, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3904, - "src": "504:5:16", + "referencedDeclaration": 4009, + "src": "504:5:19", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" @@ -1086,43 +1057,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 3918, + "id": 4023, "name": "name", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3910, - "src": "512:4:16", + "referencedDeclaration": 4015, + "src": "512:4:19", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, - "src": "504:12:16", + "src": "504:12:19", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, - "id": 3920, + "id": 4025, "nodeType": "ExpressionStatement", - "src": "504:12:16" + "src": "504:12:19" }, { "expression": { "argumentTypes": null, - "id": 3923, + "id": 4028, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 3921, + "id": 4026, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3906, - "src": "526:7:16", + "referencedDeclaration": 4011, + "src": "526:7:19", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" @@ -1132,43 +1103,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 3922, + "id": 4027, "name": "symbol", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3912, - "src": "536:6:16", + "referencedDeclaration": 4017, + "src": "536:6:19", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, - "src": "526:16:16", + "src": "526:16:19", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, - "id": 3924, + "id": 4029, "nodeType": "ExpressionStatement", - "src": "526:16:16" + "src": "526:16:19" }, { "expression": { "argumentTypes": null, - "id": 3927, + "id": 4032, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 3925, + "id": 4030, "name": "_decimals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3908, - "src": "552:9:16", + "referencedDeclaration": 4013, + "src": "552:9:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1178,47 +1149,47 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 3926, + "id": 4031, "name": "decimals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3914, - "src": "564:8:16", + "referencedDeclaration": 4019, + "src": "564:8:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "552:20:16", + "src": "552:20:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 3928, + "id": 4033, "nodeType": "ExpressionStatement", - "src": "552:20:16" + "src": "552:20:19" } ] }, "documentation": "@dev Sets the values for `name`, `symbol`, and `decimals`. All three of\nthese values are immutable: they can only be set once during\nconstruction.", - "id": 3930, + "id": 4035, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 3915, + "id": 4020, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3910, + "id": 4015, "name": "name", "nodeType": "VariableDeclaration", - "scope": 3930, - "src": "429:18:16", + "scope": 4035, + "src": "429:18:19", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -1226,10 +1197,10 @@ "typeString": "string" }, "typeName": { - "id": 3909, + "id": 4014, "name": "string", "nodeType": "ElementaryTypeName", - "src": "429:6:16", + "src": "429:6:19", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -1240,11 +1211,11 @@ }, { "constant": false, - "id": 3912, + "id": 4017, "name": "symbol", "nodeType": "VariableDeclaration", - "scope": 3930, - "src": "449:20:16", + "scope": 4035, + "src": "449:20:19", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -1252,10 +1223,10 @@ "typeString": "string" }, "typeName": { - "id": 3911, + "id": 4016, "name": "string", "nodeType": "ElementaryTypeName", - "src": "449:6:16", + "src": "449:6:19", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -1266,11 +1237,11 @@ }, { "constant": false, - "id": 3914, + "id": 4019, "name": "decimals", "nodeType": "VariableDeclaration", - "scope": 3930, - "src": "471:14:16", + "scope": 4035, + "src": "471:14:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1278,10 +1249,10 @@ "typeString": "uint8" }, "typeName": { - "id": 3913, + "id": 4018, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "471:5:16", + "src": "471:5:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1291,71 +1262,71 @@ "visibility": "internal" } ], - "src": "428:58:16" + "src": "428:58:19" }, "returnParameters": { - "id": 3916, + "id": 4021, "nodeType": "ParameterList", "parameters": [], - "src": "494:0:16" + "src": "494:0:19" }, - "scope": 3955, - "src": "416:163:16", + "scope": 4060, + "src": "416:163:19", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 3937, + "id": 4042, "nodeType": "Block", - "src": "696:29:16", + "src": "696:29:19", "statements": [ { "expression": { "argumentTypes": null, - "id": 3935, + "id": 4040, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3904, - "src": "713:5:16", + "referencedDeclaration": 4009, + "src": "713:5:19", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, - "functionReturnParameters": 3934, - "id": 3936, + "functionReturnParameters": 4039, + "id": 4041, "nodeType": "Return", - "src": "706:12:16" + "src": "706:12:19" } ] }, "documentation": "@dev Returns the name of the token.", - "id": 3938, + "id": 4043, "implemented": true, "kind": "function", "modifiers": [], "name": "name", "nodeType": "FunctionDefinition", "parameters": { - "id": 3931, + "id": 4036, "nodeType": "ParameterList", "parameters": [], - "src": "657:2:16" + "src": "657:2:19" }, "returnParameters": { - "id": 3934, + "id": 4039, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3933, + "id": 4038, "name": "", "nodeType": "VariableDeclaration", - "scope": 3938, - "src": "681:13:16", + "scope": 4043, + "src": "681:13:19", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -1363,10 +1334,10 @@ "typeString": "string" }, "typeName": { - "id": 3932, + "id": 4037, "name": "string", "nodeType": "ElementaryTypeName", - "src": "681:6:16", + "src": "681:6:19", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -1376,65 +1347,65 @@ "visibility": "internal" } ], - "src": "680:15:16" + "src": "680:15:19" }, - "scope": 3955, - "src": "644:81:16", + "scope": 4060, + "src": "644:81:19", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 3945, + "id": 4050, "nodeType": "Block", - "src": "892:31:16", + "src": "892:31:19", "statements": [ { "expression": { "argumentTypes": null, - "id": 3943, + "id": 4048, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3906, - "src": "909:7:16", + "referencedDeclaration": 4011, + "src": "909:7:19", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, - "functionReturnParameters": 3942, - "id": 3944, + "functionReturnParameters": 4047, + "id": 4049, "nodeType": "Return", - "src": "902:14:16" + "src": "902:14:19" } ] }, "documentation": "@dev Returns the symbol of the token, usually a shorter version of the\nname.", - "id": 3946, + "id": 4051, "implemented": true, "kind": "function", "modifiers": [], "name": "symbol", "nodeType": "FunctionDefinition", "parameters": { - "id": 3939, + "id": 4044, "nodeType": "ParameterList", "parameters": [], - "src": "853:2:16" + "src": "853:2:19" }, "returnParameters": { - "id": 3942, + "id": 4047, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3941, + "id": 4046, "name": "", "nodeType": "VariableDeclaration", - "scope": 3946, - "src": "877:13:16", + "scope": 4051, + "src": "877:13:19", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -1442,10 +1413,10 @@ "typeString": "string" }, "typeName": { - "id": 3940, + "id": 4045, "name": "string", "nodeType": "ElementaryTypeName", - "src": "877:6:16", + "src": "877:6:19", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -1455,65 +1426,65 @@ "visibility": "internal" } ], - "src": "876:15:16" + "src": "876:15:19" }, - "scope": 3955, - "src": "838:85:16", + "scope": 4060, + "src": "838:85:19", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 3953, + "id": 4058, "nodeType": "Block", - "src": "1520:33:16", + "src": "1520:33:19", "statements": [ { "expression": { "argumentTypes": null, - "id": 3951, + "id": 4056, "name": "_decimals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3908, - "src": "1537:9:16", + "referencedDeclaration": 4013, + "src": "1537:9:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "functionReturnParameters": 3950, - "id": 3952, + "functionReturnParameters": 4055, + "id": 4057, "nodeType": "Return", - "src": "1530:16:16" + "src": "1530:16:19" } ] }, "documentation": "@dev Returns the number of decimals used to get its user representation.\nFor example, if `decimals` equals `2`, a balance of `505` tokens should\nbe displayed to a user as `5,05` (`505 / 10 ** 2`).\n * Tokens usually opt for a value of 18, imitating the relationship between\nEther and Wei.\n * NOTE: This information is only used for _display_ purposes: it in\nno way affects any of the arithmetic of the contract, including\n{IERC20-balanceOf} and {IERC20-transfer}.", - "id": 3954, + "id": 4059, "implemented": true, "kind": "function", "modifiers": [], "name": "decimals", "nodeType": "FunctionDefinition", "parameters": { - "id": 3947, + "id": 4052, "nodeType": "ParameterList", "parameters": [], - "src": "1489:2:16" + "src": "1489:2:19" }, "returnParameters": { - "id": 3950, + "id": 4055, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3949, + "id": 4054, "name": "", "nodeType": "VariableDeclaration", - "scope": 3954, - "src": "1513:5:16", + "scope": 4059, + "src": "1513:5:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1521,10 +1492,10 @@ "typeString": "uint8" }, "typeName": { - "id": 3948, + "id": 4053, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1513:5:16", + "src": "1513:5:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1534,28 +1505,28 @@ "visibility": "internal" } ], - "src": "1512:7:16" + "src": "1512:7:19" }, - "scope": 3955, - "src": "1472:81:16", + "scope": 4060, + "src": "1472:81:19", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 3956, - "src": "109:1446:16" + "scope": 4061, + "src": "109:1446:19" } ], - "src": "0:1556:16" + "src": "0:1556:19" }, "compiler": { "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" + "version": "0.5.2+commit.1df8f40c.Emscripten.clang" }, "networks": {}, - "schemaVersion": "3.0.23", - "updatedAt": "2020-02-16T12:52:29.828Z", + "schemaVersion": "3.0.1", + "updatedAt": "2020-02-16T14:54:14.907Z", "devdoc": { "details": "Optional functions from the ERC20 standard.", "methods": { diff --git a/truffle/build/contracts/ERC20Mintable.json b/truffle/build/contracts/ERC20Mintable.json index 28812b8..d202a6b 100644 --- a/truffle/build/contracts/ERC20Mintable.json +++ b/truffle/build/contracts/ERC20Mintable.json @@ -2,140 +2,84 @@ "contractName": "ERC20Mintable", "abi": [ { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", "name": "spender", "type": "address" }, { - "indexed": false, - "internalType": "uint256", - "name": "value", + "name": "amount", "type": "uint256" } ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "MinterAdded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ + "name": "approve", + "outputs": [ { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" + "name": "", + "type": "bool" } ], - "name": "MinterRemoved", - "type": "event" + "payable": false, + "stateMutability": "nonpayable", + "type": "function" }, { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ { - "indexed": false, - "internalType": "uint256", - "name": "value", + "name": "", "type": "uint256" } ], - "name": "Transfer", - "type": "event" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "addMinter", - "outputs": [], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function" }, { - "constant": true, + "constant": false, "inputs": [ { - "internalType": "address", - "name": "owner", + "name": "sender", "type": "address" }, { - "internalType": "address", - "name": "spender", + "name": "recipient", "type": "address" + }, + { + "name": "amount", + "type": "uint256" } ], - "name": "allowance", + "name": "transferFrom", "outputs": [ { - "internalType": "uint256", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { - "internalType": "address", "name": "spender", "type": "address" }, { - "internalType": "uint256", - "name": "amount", + "name": "addedValue", "type": "uint256" } ], - "name": "approve", + "name": "increaseAllowance", "outputs": [ { - "internalType": "bool", "name": "", "type": "bool" } @@ -148,7 +92,6 @@ "constant": true, "inputs": [ { - "internalType": "address", "name": "account", "type": "address" } @@ -156,7 +99,6 @@ "name": "balanceOf", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -169,12 +111,33 @@ "constant": false, "inputs": [ { - "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { "name": "spender", "type": "address" }, { - "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } @@ -182,7 +145,6 @@ "name": "decreaseAllowance", "outputs": [ { - "internalType": "bool", "name": "", "type": "bool" } @@ -195,20 +157,17 @@ "constant": false, "inputs": [ { - "internalType": "address", - "name": "spender", + "name": "recipient", "type": "address" }, { - "internalType": "uint256", - "name": "addedValue", + "name": "amount", "type": "uint256" } ], - "name": "increaseAllowance", + "name": "transfer", "outputs": [ { - "internalType": "bool", "name": "", "type": "bool" } @@ -221,7 +180,6 @@ "constant": true, "inputs": [ { - "internalType": "address", "name": "account", "type": "address" } @@ -229,7 +187,6 @@ "name": "isMinter", "outputs": [ { - "internalType": "bool", "name": "", "type": "bool" } @@ -238,22 +195,21 @@ "stateMutability": "view", "type": "function" }, - { - "constant": false, - "inputs": [], - "name": "renounceMinter", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { "constant": true, - "inputs": [], - "name": "totalSupply", + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "spender", + "type": "address" + } + ], + "name": "allowance", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -263,72 +219,81 @@ "type": "function" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "internalType": "address", - "name": "recipient", + "indexed": true, + "name": "account", "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" } ], - "name": "transfer", - "outputs": [ + "name": "MinterAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ { - "internalType": "bool", - "name": "", - "type": "bool" + "indexed": true, + "name": "account", + "type": "address" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" + "name": "MinterRemoved", + "type": "event" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "internalType": "address", - "name": "sender", + "indexed": true, + "name": "from", "type": "address" }, { - "internalType": "address", - "name": "recipient", + "indexed": true, + "name": "to", "type": "address" }, { - "internalType": "uint256", - "name": "amount", + "indexed": false, + "name": "value", "type": "uint256" } ], - "name": "transferFrom", - "outputs": [ + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ { - "internalType": "bool", - "name": "", - "type": "bool" + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" + "name": "Approval", + "type": "event" }, { "constant": false, "inputs": [ { - "internalType": "address", "name": "account", "type": "address" }, { - "internalType": "uint256", "name": "amount", "type": "uint256" } @@ -336,7 +301,6 @@ "name": "mint", "outputs": [ { - "internalType": "bool", "name": "", "type": "bool" } @@ -346,25 +310,24 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Extension of {ERC20} that adds a set of accounts with the {MinterRole}, which have permission to mint (create) new tokens as they see fit. * At construction, the deployer of the contract is the only minter.\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. * Requirements: * - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address.\"},\"mint(address,uint256)\":{\"details\":\"See {ERC20-_mint}. * Requirements: * - the caller must have the {MinterRole}.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. * Requirements: * - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. * Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; * Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for `sender`'s tokens of at least `amount`.\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"openzeppelin-solidity/contracts/token/ERC20/ERC20Mintable.sol\":\"ERC20Mintable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":1500},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"keccak256\":\"0x90a3995645af7562d84b9d69363ffa5ae7217714ab61e951bf7bc450f40e4061\",\"urls\":[\"bzz-raw://216ef9d6b614db4eb46970b4e84903f2534a45572dd30a79f0041f1a5830f436\",\"dweb:/ipfs/QmNPrJ4MWKUAWzKXpUqeyKRUfosaoANZAqXgvepdrCwZAG\"]},\"openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xb002c378d7b82a101bd659c341518953ca0919d342c0a400196982c0e7e7bcdb\",\"urls\":[\"bzz-raw://00a788c4631466c220b385bdd100c571d24b2deccd657615cfbcef6cadf669a4\",\"dweb:/ipfs/QmTEwDbjJNxmMNCDMqtuou3dyM8Wtp8Q9NFvn7SAVM7Jf3\"]},\"openzeppelin-solidity/contracts/access/roles/MinterRole.sol\":{\"keccak256\":\"0xbe8eef6f2cb4e427f5c5d8a76865ccd06e55a4f1d6671ba312d45bfa705aedbf\",\"urls\":[\"bzz-raw://badf338a5e22c8658c01fe2ce89b487d9dbf6d2d9d5eb49df7415383e2498765\",\"dweb:/ipfs/QmP5aMkvFwMJyuQjKE8ADh5tkWYqonb4KjgkAjgYEVVFAv\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xb15af804e2bc97db51e4e103f13de9fe13f87e6b835d7a88c897966c0e58506e\",\"urls\":[\"bzz-raw://1e8cff8437557fc915a3bed968fcd8f2df9809599e665ef69c2c9ce628548055\",\"dweb:/ipfs/QmP5spYP8vs2jvLF8zNrXUbqB79hMsoEvMHiLcBxerWKcm\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20Mintable.sol\":{\"keccak256\":\"0xa2b957cf89692c504962afb7506999155f83385373f808243246cd5879de5940\",\"urls\":[\"bzz-raw://c44ae0ad1bce141c33b962f8b4e9228bdf8df36c8ac363b4f0bf9498b8bfc32a\",\"dweb:/ipfs/QmcSBRdFwVvy2wFZrBwo5cvqNP4UHh9Eyzf8jnxBgnPqfe\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]}},\"version\":1}", - "bytecode": "0x60806040526100266100186001600160e01b0361002b16565b6001600160e01b0361002f16565b61016f565b3390565b61004781600361007e60201b610a8e1790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b61009182826001600160e01b0361010816565b156100e3576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b03821661014f5760405162461bcd60e51b8152600401808060200182810382526022815260200180610e9d6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b610d1f8061017e6000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c8063983b2d5611610081578063a9059cbb1161005b578063a9059cbb14610243578063aa271e1a1461026f578063dd62ed3e14610295576100d4565b8063983b2d56146101e7578063986502751461020f578063a457c2d714610217576100d4565b806339509351116100b2578063395093511461016957806340c10f191461019557806370a08231146101c1576100d4565b8063095ea7b3146100d957806318160ddd1461011957806323b872dd14610133575b600080fd5b610105600480360360408110156100ef57600080fd5b506001600160a01b0381351690602001356102c3565b604080519115158252519081900360200190f35b6101216102e0565b60408051918252519081900360200190f35b6101056004803603606081101561014957600080fd5b506001600160a01b038135811691602081013590911690604001356102e6565b6101056004803603604081101561017f57600080fd5b506001600160a01b038135169060200135610373565b610105600480360360408110156101ab57600080fd5b506001600160a01b0381351690602001356103c7565b610121600480360360208110156101d757600080fd5b50356001600160a01b031661041e565b61020d600480360360208110156101fd57600080fd5b50356001600160a01b0316610439565b005b61020d61048b565b6101056004803603604081101561022d57600080fd5b506001600160a01b03813516906020013561049d565b6101056004803603604081101561025957600080fd5b506001600160a01b03813516906020013561050b565b6101056004803603602081101561028557600080fd5b50356001600160a01b031661051f565b610121600480360360408110156102ab57600080fd5b506001600160a01b0381358116916020013516610538565b60006102d76102d0610563565b8484610567565b50600192915050565b60025490565b60006102f3848484610653565b610369846102ff610563565b61036485604051806060016040528060288152602001610c33602891396001600160a01b038a1660009081526001602052604081209061033d610563565b6001600160a01b03168152602081019190915260400160002054919063ffffffff6107af16565b610567565b5060019392505050565b60006102d7610380610563565b846103648560016000610391610563565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61084616565b60006103d96103d4610563565b61051f565b6104145760405162461bcd60e51b8152600401808060200182810382526030815260200180610be26030913960400191505060405180910390fd5b6102d783836108a7565b6001600160a01b031660009081526020819052604090205490565b6104446103d4610563565b61047f5760405162461bcd60e51b8152600401808060200182810382526030815260200180610be26030913960400191505060405180910390fd5b61048881610997565b50565b61049b610496610563565b6109df565b565b60006102d76104aa610563565b8461036485604051806060016040528060258152602001610cc660259139600160006104d4610563565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6107af16565b60006102d7610518610563565b8484610653565b600061053260038363ffffffff610a2716565b92915050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b0383166105ac5760405162461bcd60e51b8152600401808060200182810382526024815260200180610ca26024913960400191505060405180910390fd5b6001600160a01b0382166105f15760405162461bcd60e51b8152600401808060200182810382526022815260200180610b9a6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106985760405162461bcd60e51b8152600401808060200182810382526025815260200180610c7d6025913960400191505060405180910390fd5b6001600160a01b0382166106dd5760405162461bcd60e51b8152600401808060200182810382526023815260200180610b776023913960400191505060405180910390fd5b61072081604051806060016040528060268152602001610bbc602691396001600160a01b038616600090815260208190526040902054919063ffffffff6107af16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610755908263ffffffff61084616565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561083e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156108035781810151838201526020016107eb565b50505050905090810190601f1680156108305780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156108a0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216610902576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254610915908263ffffffff61084616565b6002556001600160a01b038216600090815260208190526040902054610941908263ffffffff61084616565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6109a860038263ffffffff610a8e16565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6109f060038263ffffffff610b0f16565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b038216610a6e5760405162461bcd60e51b8152600401808060200182810382526022815260200180610c5b6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b610a988282610a27565b15610aea576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610b198282610a27565b610b545760405162461bcd60e51b8152600401808060200182810382526021815260200180610c126021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff1916905556fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63654d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a7231582047a0ed9a02208ad3c580270b4b6c200a74640014963d0a50c60bccb2edf7d48464736f6c63430005100032526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100d45760003560e01c8063983b2d5611610081578063a9059cbb1161005b578063a9059cbb14610243578063aa271e1a1461026f578063dd62ed3e14610295576100d4565b8063983b2d56146101e7578063986502751461020f578063a457c2d714610217576100d4565b806339509351116100b2578063395093511461016957806340c10f191461019557806370a08231146101c1576100d4565b8063095ea7b3146100d957806318160ddd1461011957806323b872dd14610133575b600080fd5b610105600480360360408110156100ef57600080fd5b506001600160a01b0381351690602001356102c3565b604080519115158252519081900360200190f35b6101216102e0565b60408051918252519081900360200190f35b6101056004803603606081101561014957600080fd5b506001600160a01b038135811691602081013590911690604001356102e6565b6101056004803603604081101561017f57600080fd5b506001600160a01b038135169060200135610373565b610105600480360360408110156101ab57600080fd5b506001600160a01b0381351690602001356103c7565b610121600480360360208110156101d757600080fd5b50356001600160a01b031661041e565b61020d600480360360208110156101fd57600080fd5b50356001600160a01b0316610439565b005b61020d61048b565b6101056004803603604081101561022d57600080fd5b506001600160a01b03813516906020013561049d565b6101056004803603604081101561025957600080fd5b506001600160a01b03813516906020013561050b565b6101056004803603602081101561028557600080fd5b50356001600160a01b031661051f565b610121600480360360408110156102ab57600080fd5b506001600160a01b0381358116916020013516610538565b60006102d76102d0610563565b8484610567565b50600192915050565b60025490565b60006102f3848484610653565b610369846102ff610563565b61036485604051806060016040528060288152602001610c33602891396001600160a01b038a1660009081526001602052604081209061033d610563565b6001600160a01b03168152602081019190915260400160002054919063ffffffff6107af16565b610567565b5060019392505050565b60006102d7610380610563565b846103648560016000610391610563565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61084616565b60006103d96103d4610563565b61051f565b6104145760405162461bcd60e51b8152600401808060200182810382526030815260200180610be26030913960400191505060405180910390fd5b6102d783836108a7565b6001600160a01b031660009081526020819052604090205490565b6104446103d4610563565b61047f5760405162461bcd60e51b8152600401808060200182810382526030815260200180610be26030913960400191505060405180910390fd5b61048881610997565b50565b61049b610496610563565b6109df565b565b60006102d76104aa610563565b8461036485604051806060016040528060258152602001610cc660259139600160006104d4610563565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6107af16565b60006102d7610518610563565b8484610653565b600061053260038363ffffffff610a2716565b92915050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b0383166105ac5760405162461bcd60e51b8152600401808060200182810382526024815260200180610ca26024913960400191505060405180910390fd5b6001600160a01b0382166105f15760405162461bcd60e51b8152600401808060200182810382526022815260200180610b9a6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106985760405162461bcd60e51b8152600401808060200182810382526025815260200180610c7d6025913960400191505060405180910390fd5b6001600160a01b0382166106dd5760405162461bcd60e51b8152600401808060200182810382526023815260200180610b776023913960400191505060405180910390fd5b61072081604051806060016040528060268152602001610bbc602691396001600160a01b038616600090815260208190526040902054919063ffffffff6107af16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610755908263ffffffff61084616565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561083e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156108035781810151838201526020016107eb565b50505050905090810190601f1680156108305780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156108a0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216610902576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254610915908263ffffffff61084616565b6002556001600160a01b038216600090815260208190526040902054610941908263ffffffff61084616565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6109a860038263ffffffff610a8e16565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6109f060038263ffffffff610b0f16565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b038216610a6e5760405162461bcd60e51b8152600401808060200182810382526022815260200180610c5b6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b610a988282610a27565b15610aea576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610b198282610a27565b610b545760405162461bcd60e51b8152600401808060200182810382526021815260200180610c126021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff1916905556fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63654d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a7231582047a0ed9a02208ad3c580270b4b6c200a74640014963d0a50c60bccb2edf7d48464736f6c63430005100032", - "sourceMap": "322:322:17:-;;;318:24:12;329:12;-1:-1:-1;;;;;329:10:12;:12;:::i;:::-;-1:-1:-1;;;;;318:10:12;:24;:::i;:::-;322:322:17;;788:96:10;867:10;788:96;:::o;786:119:12:-;842:21;855:7;842:8;:12;;;;;;:21;;;;:::i;:::-;878:20;;-1:-1:-1;;;;;878:20:12;;;;;;;;786:119;:::o;260:175:11:-;337:18;341:4;347:7;-1:-1:-1;;;;;337:3:11;:18;:::i;:::-;336:19;328:63;;;;;-1:-1:-1;;;328:63:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;401:20:11;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;401:27:11;424:4;401:27;;;260:175::o;779:200::-;851:4;-1:-1:-1;;;;;875:21:11;;867:68;;;;-1:-1:-1;;;867:68:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;952:20:11;:11;:20;;;;;;;;;;;;;;;779:200::o;322:322:17:-;;;;;;;", - "deployedSourceMap": "322:322:17:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;322:322:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2500:149:15;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2500:149:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1559:89;;;:::i;:::-;;;;;;;;;;;;;;;;3107:300;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3107:300:15;;;;;;;;;;;;;;;;;:::i;3802:207::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3802:207:15;;;;;;;;:::i;502:140:17:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;502:140:17;;;;;;;;:::i;1706:108:15:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1706:108:15;-1:-1:-1;;;;;1706:108:15;;:::i;607:90:12:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;607:90:12;-1:-1:-1;;;;;607:90:12;;:::i;:::-;;703:77;;;:::i;4496:258:15:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4496:258:15;;;;;;;;:::i;2017:155::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2017:155:15;;;;;;;;:::i;494:107:12:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;494:107:12;-1:-1:-1;;;;;494:107:12;;:::i;2230:132:15:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2230:132:15;;;;;;;;;;:::i;2500:149::-;2566:4;2582:39;2591:12;:10;:12::i;:::-;2605:7;2614:6;2582:8;:39::i;:::-;-1:-1:-1;2638:4:15;2500:149;;;;:::o;1559:89::-;1629:12;;1559:89;:::o;3107:300::-;3196:4;3212:36;3222:6;3230:9;3241:6;3212:9;:36::i;:::-;3258:121;3267:6;3275:12;:10;:12::i;:::-;3289:89;3327:6;3289:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3289:19:15;;;;;;:11;:19;;;;;;3309:12;:10;:12::i;:::-;-1:-1:-1;;;;;3289:33:15;;;;;;;;;;;;-1:-1:-1;3289:33:15;;;:89;;:37;:89;:::i;:::-;3258:8;:121::i;:::-;-1:-1:-1;3396:4:15;3107:300;;;;;:::o;3802:207::-;3882:4;3898:83;3907:12;:10;:12::i;:::-;3921:7;3930:50;3969:10;3930:11;:25;3942:12;:10;:12::i;:::-;-1:-1:-1;;;;;3930:25:15;;;;;;;;;;;;;;;;;-1:-1:-1;3930:25:15;;;:34;;;;;;;;;;;:50;:38;:50;:::i;502:140:17:-;576:4;395:22:12;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;-1:-1:-1;;;387:83:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;592:22:17;598:7;607:6;592:5;:22::i;1706:108:15:-;-1:-1:-1;;;;;1789:18:15;1763:7;1789:18;;;;;;;;;;;;1706:108::o;607:90:12:-;395:22;404:12;:10;:12::i;395:22::-;387:83;;;;-1:-1:-1;;;387:83:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;671:19;682:7;671:10;:19::i;:::-;607:90;:::o;703:77::-;746:27;760:12;:10;:12::i;:::-;746:13;:27::i;:::-;703:77::o;4496:258:15:-;4581:4;4597:129;4606:12;:10;:12::i;:::-;4620:7;4629:96;4668:15;4629:96;;;;;;;;;;;;;;;;;:11;:25;4641:12;:10;:12::i;:::-;-1:-1:-1;;;;;4629:25:15;;;;;;;;;;;;;;;;;-1:-1:-1;4629:25:15;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;2017:155::-;2086:4;2102:42;2112:12;:10;:12::i;:::-;2126:9;2137:6;2102:9;:42::i;494:107:12:-;550:4;573:21;:8;586:7;573:21;:12;:21;:::i;:::-;566:28;494:107;-1:-1:-1;;494:107:12:o;2230:132:15:-;-1:-1:-1;;;;;2328:18:15;;;2302:7;2328:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2230:132::o;788:96:10:-;867:10;788:96;:::o;7350:332:15:-;-1:-1:-1;;;;;7443:19:15;;7435:68;;;;-1:-1:-1;;;7435:68:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7521:21:15;;7513:68;;;;-1:-1:-1;;;7513:68:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7592:18:15;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7643:32;;;;;;;;;;;;;;;;;7350:332;;;:::o;5228:464::-;-1:-1:-1;;;;;5325:20:15;;5317:70;;;;-1:-1:-1;;;5317:70:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5405:23:15;;5397:71;;;;-1:-1:-1;;;5397:71:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5499;5521:6;5499:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5499:17:15;;:9;:17;;;;;;;;;;;;:71;;:21;:71;:::i;:::-;-1:-1:-1;;;;;5479:17:15;;;:9;:17;;;;;;;;;;;:91;;;;5603:20;;;;;;;:32;;5628:6;5603:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;5580:20:15;;;:9;:20;;;;;;;;;;;;:55;;;;5650:35;;;;;;;5580:20;;5650:35;;;;;;;;;;;;;5228:464;;;:::o;1732:187:13:-;1818:7;1853:12;1845:6;;;;1837:29;;;;-1:-1:-1;;;1837:29:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1837:29:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1888:5:13;;;1732:187::o;834:176::-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:13:o;5962:302:15:-;-1:-1:-1;;;;;6037:21:15;;6029:65;;;;;-1:-1:-1;;;6029:65:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;6120:12;;:24;;6137:6;6120:24;:16;:24;:::i;:::-;6105:12;:39;-1:-1:-1;;;;;6175:18:15;;:9;:18;;;;;;;;;;;:30;;6198:6;6175:30;:22;:30;:::i;:::-;-1:-1:-1;;;;;6154:18:15;;:9;:18;;;;;;;;;;;:51;;;;6220:37;;;;;;;6154:18;;:9;;6220:37;;;;;;;;;;5962:302;;:::o;786:119:12:-;842:21;:8;855:7;842:21;:12;:21;:::i;:::-;878:20;;-1:-1:-1;;;;;878:20:12;;;;;;;;786:119;:::o;911:127::-;970:24;:8;986:7;970:24;:15;:24;:::i;:::-;1009:22;;-1:-1:-1;;;;;1009:22:12;;;;;;;;911:127;:::o;779:200:11:-;851:4;-1:-1:-1;;;;;875:21:11;;867:68;;;;-1:-1:-1;;;867:68:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;952:20:11;:11;:20;;;;;;;;;;;;;;;779:200::o;260:175::-;337:18;341:4;347:7;337:3;:18::i;:::-;336:19;328:63;;;;;-1:-1:-1;;;328:63:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;401:20:11;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;401:27:11;424:4;401:27;;;260:175::o;510:180::-;589:18;593:4;599:7;589:3;:18::i;:::-;581:64;;;;-1:-1:-1;;;581:64:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;655:20:11;678:5;655:20;;;;;;;;;;;:28;;-1:-1:-1;;655:28:11;;;510:180::o", + "bytecode": "0x608060405261002661001864010000000061002b810204565b64010000000061002f810204565b6101a5565b3390565b610047600382640100000000610d5561007e82021704565b604051600160a060020a038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6100918282640100000000610122810204565b156100fd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515610185576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806111e16022913960400191505060405180910390fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61102d806101b46000396000f3fe608060405234801561001057600080fd5b50600436106100f1576000357c010000000000000000000000000000000000000000000000000000000090048063983b2d561161009e578063a9059cbb11610078578063a9059cbb146102bb578063aa271e1a146102f4578063dd62ed3e14610327576100f1565b8063983b2d5614610245578063986502751461027a578063a457c2d714610282576100f1565b806339509351116100cf57806339509351146101a057806340c10f19146101d957806370a0823114610212576100f1565b8063095ea7b3146100f657806318160ddd1461014357806323b872dd1461015d575b600080fd5b61012f6004803603604081101561010c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610362565b604080519115158252519081900360200190f35b61014b61037f565b60408051918252519081900360200190f35b61012f6004803603606081101561017357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610385565b61012f600480360360408110156101b657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561042d565b61012f600480360360408110156101ef57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561048e565b61014b6004803603602081101561022857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610501565b6102786004803603602081101561025b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610529565b005b610278610597565b61012f6004803603604081101561029857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105a9565b61012f600480360360408110156102d157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610625565b61012f6004803603602081101561030a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610639565b61014b6004803603604081101561033d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610652565b600061037661036f61068a565b848461068e565b50600192915050565b60025490565b60006103928484846107d9565b6104238461039e61068a565b61041e8560606040519081016040528060288152602001610f4a6028913973ffffffffffffffffffffffffffffffffffffffff8a166000908152600160205260408120906103ea61068a565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002054919063ffffffff6109af16565b61068e565b5060019392505050565b600061037661043a61068a565b8461041e856001600061044b61068a565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff610a6016565b60006104a061049b61068a565b610639565b15156104f7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180610ef96030913960400191505060405180910390fd5b6103768383610adb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61053461049b61068a565b151561058b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180610ef96030913960400191505060405180910390fd5b61059481610c0e565b50565b6105a76105a261068a565b610c63565b565b60006103766105b661068a565b8461041e8560606040519081016040528060258152602001610fdd60259139600160006105e161068a565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6109af16565b600061037661063261068a565b84846107d9565b600061064c60038363ffffffff610cb816565b92915050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b3390565b73ffffffffffffffffffffffffffffffffffffffff831615156106fc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610fb96024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216151561076a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610eb16022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff83161515610847576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180610f946025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821615156108b5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610e8e6023913960400191505060405180910390fd5b6109068160606040519081016040528060268152602001610ed36026913973ffffffffffffffffffffffffffffffffffffffff8616600090815260208190526040902054919063ffffffff6109af16565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610948908263ffffffff610a6016565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610a58576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a1d578181015183820152602001610a05565b50505050905090810190601f168015610a4a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610ad457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82161515610b5f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254610b72908263ffffffff610a6016565b60025573ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610bab908263ffffffff610a6016565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b610c1f60038263ffffffff610d5516565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b610c7460038263ffffffff610dfd16565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b600073ffffffffffffffffffffffffffffffffffffffff82161515610d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610f726022913960400191505060405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff166000908152602091909152604090205460ff1690565b610d5f8282610cb8565b15610dcb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260209190915260409020805460ff19166001179055565b610e078282610cb8565b1515610e5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610f296021913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260209190915260409020805460ff1916905556fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63654d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa165627a7a72305820c7778fda38c20842b6041efcdc27ab42374a58d72526ca3f863cf397dc5ab2de0029526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f1576000357c010000000000000000000000000000000000000000000000000000000090048063983b2d561161009e578063a9059cbb11610078578063a9059cbb146102bb578063aa271e1a146102f4578063dd62ed3e14610327576100f1565b8063983b2d5614610245578063986502751461027a578063a457c2d714610282576100f1565b806339509351116100cf57806339509351146101a057806340c10f19146101d957806370a0823114610212576100f1565b8063095ea7b3146100f657806318160ddd1461014357806323b872dd1461015d575b600080fd5b61012f6004803603604081101561010c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610362565b604080519115158252519081900360200190f35b61014b61037f565b60408051918252519081900360200190f35b61012f6004803603606081101561017357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610385565b61012f600480360360408110156101b657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561042d565b61012f600480360360408110156101ef57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561048e565b61014b6004803603602081101561022857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610501565b6102786004803603602081101561025b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610529565b005b610278610597565b61012f6004803603604081101561029857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105a9565b61012f600480360360408110156102d157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610625565b61012f6004803603602081101561030a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610639565b61014b6004803603604081101561033d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610652565b600061037661036f61068a565b848461068e565b50600192915050565b60025490565b60006103928484846107d9565b6104238461039e61068a565b61041e8560606040519081016040528060288152602001610f4a6028913973ffffffffffffffffffffffffffffffffffffffff8a166000908152600160205260408120906103ea61068a565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002054919063ffffffff6109af16565b61068e565b5060019392505050565b600061037661043a61068a565b8461041e856001600061044b61068a565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff610a6016565b60006104a061049b61068a565b610639565b15156104f7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180610ef96030913960400191505060405180910390fd5b6103768383610adb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61053461049b61068a565b151561058b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180610ef96030913960400191505060405180910390fd5b61059481610c0e565b50565b6105a76105a261068a565b610c63565b565b60006103766105b661068a565b8461041e8560606040519081016040528060258152602001610fdd60259139600160006105e161068a565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6109af16565b600061037661063261068a565b84846107d9565b600061064c60038363ffffffff610cb816565b92915050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b3390565b73ffffffffffffffffffffffffffffffffffffffff831615156106fc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610fb96024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216151561076a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610eb16022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff83161515610847576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180610f946025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821615156108b5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610e8e6023913960400191505060405180910390fd5b6109068160606040519081016040528060268152602001610ed36026913973ffffffffffffffffffffffffffffffffffffffff8616600090815260208190526040902054919063ffffffff6109af16565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610948908263ffffffff610a6016565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610a58576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a1d578181015183820152602001610a05565b50505050905090810190601f168015610a4a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610ad457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82161515610b5f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254610b72908263ffffffff610a6016565b60025573ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610bab908263ffffffff610a6016565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b610c1f60038263ffffffff610d5516565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b610c7460038263ffffffff610dfd16565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b600073ffffffffffffffffffffffffffffffffffffffff82161515610d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610f726022913960400191505060405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff166000908152602091909152604090205460ff1690565b610d5f8282610cb8565b15610dcb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260209190915260409020805460ff19166001179055565b610e078282610cb8565b1515610e5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610f296021913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260209190915260409020805460ff1916905556fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63654d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa165627a7a72305820c7778fda38c20842b6041efcdc27ab42374a58d72526ca3f863cf397dc5ab2de0029", + "sourceMap": "322:322:20:-;;;318:24:15;329:12;:10;;;;:12;:::i;:::-;318:10;;;;:24;:::i;:::-;322:322:20;;788:96:13;867:10;788:96;:::o;786:119:15:-;842:21;:8;855:7;842:12;;;;;;:21;:::i;:::-;878:20;;-1:-1:-1;;;;;878:20:15;;;;;;;;786:119;:::o;260:175:14:-;337:18;341:4;347:7;337:3;;;;:18;:::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;401:20:14;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;401:27:14;424:4;401:27;;;260:175::o;779:200::-;851:4;-1:-1:-1;;;;;875:21:14;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;952:20:14;:11;:20;;;;;;;;;;;;;;;779:200::o;322:322:20:-;;;;;;;", + "deployedSourceMap": "322:322:20:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;322:322:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2500:149:18;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2500:149:18;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1559:89;;;:::i;:::-;;;;;;;;;;;;;;;;3107:300;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3107:300:18;;;;;;;;;;;;;;;;;;:::i;3802:207::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3802:207:18;;;;;;;;;:::i;502:140:20:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;502:140:20;;;;;;;;;:::i;1706:108:18:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1706:108:18;;;;:::i;607:90:15:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;607:90:15;;;;:::i;:::-;;703:77;;;:::i;4496:258:18:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4496:258:18;;;;;;;;;:::i;2017:155::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2017:155:18;;;;;;;;;:::i;494:107:15:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;494:107:15;;;;:::i;2230:132:18:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2230:132:18;;;;;;;;;;;:::i;2500:149::-;2566:4;2582:39;2591:12;:10;:12::i;:::-;2605:7;2614:6;2582:8;:39::i;:::-;-1:-1:-1;2638:4:18;2500:149;;;;:::o;1559:89::-;1629:12;;1559:89;:::o;3107:300::-;3196:4;3212:36;3222:6;3230:9;3241:6;3212:9;:36::i;:::-;3258:121;3267:6;3275:12;:10;:12::i;:::-;3289:89;3327:6;3289:89;;;;;;;;;;;;;;;;;;:19;;;;;;;:11;:19;;;;;;3309:12;:10;:12::i;:::-;3289:33;;;;;;;;;;;;;-1:-1:-1;3289:33:18;;;:89;;:37;:89;:::i;:::-;3258:8;:121::i;:::-;-1:-1:-1;3396:4:18;3107:300;;;;;:::o;3802:207::-;3882:4;3898:83;3907:12;:10;:12::i;:::-;3921:7;3930:50;3969:10;3930:11;:25;3942:12;:10;:12::i;:::-;3930:25;;;;;;;;;;;;;;;;;;-1:-1:-1;3930:25:18;;;:34;;;;;;;;;;;:50;:38;:50;:::i;502:140:20:-;576:4;395:22:15;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;592:22:20;598:7;607:6;592:5;:22::i;1706:108:18:-;1789:18;;1763:7;1789:18;;;;;;;;;;;;1706:108::o;607:90:15:-;395:22;404:12;:10;:12::i;395:22::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;671:19;682:7;671:10;:19::i;:::-;607:90;:::o;703:77::-;746:27;760:12;:10;:12::i;:::-;746:13;:27::i;:::-;703:77::o;4496:258:18:-;4581:4;4597:129;4606:12;:10;:12::i;:::-;4620:7;4629:96;4668:15;4629:96;;;;;;;;;;;;;;;;;;:11;:25;4641:12;:10;:12::i;:::-;4629:25;;;;;;;;;;;;;;;;;;-1:-1:-1;4629:25:18;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;2017:155::-;2086:4;2102:42;2112:12;:10;:12::i;:::-;2126:9;2137:6;2102:9;:42::i;494:107:15:-;550:4;573:21;:8;586:7;573:21;:12;:21;:::i;:::-;566:28;494:107;-1:-1:-1;;494:107:15:o;2230:132:18:-;2328:18;;;;2302:7;2328:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2230:132::o;788:96:13:-;867:10;788:96;:::o;7350:332:18:-;7443:19;;;;;7435:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7521:21;;;;;7513:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7592:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7643:32;;;;;;;;;;;;;;;;;7350:332;;;:::o;5228:464::-;5325:20;;;;;5317:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5405:23;;;;;5397:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5499;5521:6;5499:71;;;;;;;;;;;;;;;;;;:17;;;:9;:17;;;;;;;;;;;;:71;;:21;:71;:::i;:::-;5479:17;;;;:9;:17;;;;;;;;;;;:91;;;;5603:20;;;;;;;:32;;5628:6;5603:32;:24;:32;:::i;:::-;5580:20;;;;:9;:20;;;;;;;;;;;;:55;;;;5650:35;;;;;;;5580:20;;5650:35;;;;;;;;;;;;;5228:464;;;:::o;1732:187:16:-;1818:7;1853:12;1845:6;;;;1837:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1837:29:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1888:5:16;;;1732:187::o;834:176::-;892:7;923:5;;;946:6;;;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:16:o;5962:302:18:-;6037:21;;;;;6029:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6120:12;;:24;;6137:6;6120:24;:16;:24;:::i;:::-;6105:12;:39;6175:18;;;:9;:18;;;;;;;;;;;:30;;6198:6;6175:30;:22;:30;:::i;:::-;6154:18;;;:9;:18;;;;;;;;;;;:51;;;;6220:37;;;;;;;6154:18;;:9;;6220:37;;;;;;;;;;5962:302;;:::o;786:119:15:-;842:21;:8;855:7;842:21;:12;:21;:::i;:::-;878:20;;;;;;;;;;;786:119;:::o;911:127::-;970:24;:8;986:7;970:24;:15;:24;:::i;:::-;1009:22;;;;;;;;;;;911:127;:::o;779:200:14:-;851:4;875:21;;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;952:20:14;;:11;:20;;;;;;;;;;;;;;;779:200::o;260:175::-;337:18;341:4;347:7;337:3;:18::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;401:20;;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;401:27:14;424:4;401:27;;;260:175::o;510:180::-;589:18;593:4;599:7;589:3;:18::i;:::-;581:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;655:20;;678:5;655:20;;;;;;;;;;;:28;;-1:-1:-1;;655:28:14;;;510:180::o", "source": "pragma solidity ^0.5.0;\n\nimport \"./ERC20.sol\";\nimport \"../../access/roles/MinterRole.sol\";\n\n/**\n * @dev Extension of {ERC20} that adds a set of accounts with the {MinterRole},\n * which have permission to mint (create) new tokens as they see fit.\n *\n * At construction, the deployer of the contract is the only minter.\n */\ncontract ERC20Mintable is ERC20, MinterRole {\n /**\n * @dev See {ERC20-_mint}.\n *\n * Requirements:\n *\n * - the caller must have the {MinterRole}.\n */\n function mint(address account, uint256 amount) public onlyMinter returns (bool) {\n _mint(account, amount);\n return true;\n }\n}\n", "sourcePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20Mintable.sol", "ast": { "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20Mintable.sol", "exportedSymbols": { "ERC20Mintable": [ - 3983 + 4088 ] }, - "id": 3984, + "id": 4089, "nodeType": "SourceUnit", "nodes": [ { - "id": 3957, + "id": 4062, "literals": [ "solidity", "^", @@ -372,27 +335,27 @@ ".0" ], "nodeType": "PragmaDirective", - "src": "0:23:17" + "src": "0:23:20" }, { "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", "file": "./ERC20.sol", - "id": 3958, + "id": 4063, "nodeType": "ImportDirective", - "scope": 3984, - "sourceUnit": 3898, - "src": "25:21:17", + "scope": 4089, + "sourceUnit": 4003, + "src": "25:21:20", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "openzeppelin-solidity/contracts/access/roles/MinterRole.sol", "file": "../../access/roles/MinterRole.sol", - "id": 3959, + "id": 4064, "nodeType": "ImportDirective", - "scope": 3984, - "sourceUnit": 3188, - "src": "47:43:17", + "scope": 4089, + "sourceUnit": 3293, + "src": "47:43:20", "symbolAliases": [], "unitAlias": "" }, @@ -402,64 +365,64 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 3960, + "id": 4065, "name": "ERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3897, - "src": "348:5:17", + "referencedDeclaration": 4002, + "src": "348:5:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$3897", + "typeIdentifier": "t_contract$_ERC20_$4002", "typeString": "contract ERC20" } }, - "id": 3961, + "id": 4066, "nodeType": "InheritanceSpecifier", - "src": "348:5:17" + "src": "348:5:20" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 3962, + "id": 4067, "name": "MinterRole", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3187, - "src": "355:10:17", + "referencedDeclaration": 3292, + "src": "355:10:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_MinterRole_$3187", + "typeIdentifier": "t_contract$_MinterRole_$3292", "typeString": "contract MinterRole" } }, - "id": 3963, + "id": 4068, "nodeType": "InheritanceSpecifier", - "src": "355:10:17" + "src": "355:10:20" } ], "contractDependencies": [ - 2999, - 3187, - 3897, - 4052 + 3104, + 3292, + 4002, + 4157 ], "contractKind": "contract", "documentation": "@dev Extension of {ERC20} that adds a set of accounts with the {MinterRole},\nwhich have permission to mint (create) new tokens as they see fit.\n * At construction, the deployer of the contract is the only minter.", "fullyImplemented": true, - "id": 3983, + "id": 4088, "linearizedBaseContracts": [ - 3983, - 3187, - 3897, - 4052, - 2999 + 4088, + 3292, + 4002, + 4157, + 3104 ], "name": "ERC20Mintable", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 3981, + "id": 4086, "nodeType": "Block", - "src": "582:60:17", + "src": "582:60:20", "statements": [ { "expression": { @@ -467,12 +430,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3975, + "id": 4080, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3965, - "src": "598:7:17", + "referencedDeclaration": 4070, + "src": "598:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -480,12 +443,12 @@ }, { "argumentTypes": null, - "id": 3976, + "id": 4081, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3967, - "src": "607:6:17", + "referencedDeclaration": 4072, + "src": "607:6:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -503,18 +466,18 @@ "typeString": "uint256" } ], - "id": 3974, + "id": 4079, "name": "_mint", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3781, - "src": "592:5:17", + "referencedDeclaration": 3886, + "src": "592:5:20", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 3977, + "id": 4082, "isConstant": false, "isLValue": false, "isPure": false, @@ -522,28 +485,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "592:22:17", + "src": "592:22:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3978, + "id": 4083, "nodeType": "ExpressionStatement", - "src": "592:22:17" + "src": "592:22:20" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 3979, + "id": 4084, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "631:4:17", + "src": "631:4:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -551,51 +514,51 @@ }, "value": "true" }, - "functionReturnParameters": 3973, - "id": 3980, + "functionReturnParameters": 4078, + "id": 4085, "nodeType": "Return", - "src": "624:11:17" + "src": "624:11:20" } ] }, "documentation": "@dev See {ERC20-_mint}.\n * Requirements:\n * - the caller must have the {MinterRole}.", - "id": 3982, + "id": 4087, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, - "id": 3970, + "id": 4075, "modifierName": { "argumentTypes": null, - "id": 3969, + "id": 4074, "name": "onlyMinter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3120, - "src": "556:10:17", + "referencedDeclaration": 3225, + "src": "556:10:20", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "556:10:17" + "src": "556:10:20" } ], "name": "mint", "nodeType": "FunctionDefinition", "parameters": { - "id": 3968, + "id": 4073, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3965, + "id": 4070, "name": "account", "nodeType": "VariableDeclaration", - "scope": 3982, - "src": "516:15:17", + "scope": 4087, + "src": "516:15:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -603,10 +566,10 @@ "typeString": "address" }, "typeName": { - "id": 3964, + "id": 4069, "name": "address", "nodeType": "ElementaryTypeName", - "src": "516:7:17", + "src": "516:7:20", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -618,11 +581,11 @@ }, { "constant": false, - "id": 3967, + "id": 4072, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 3982, - "src": "533:14:17", + "scope": 4087, + "src": "533:14:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -630,10 +593,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3966, + "id": 4071, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "533:7:17", + "src": "533:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -643,19 +606,19 @@ "visibility": "internal" } ], - "src": "515:33:17" + "src": "515:33:20" }, "returnParameters": { - "id": 3973, + "id": 4078, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3972, + "id": 4077, "name": "", "nodeType": "VariableDeclaration", - "scope": 3982, - "src": "576:4:17", + "scope": 4087, + "src": "576:4:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -663,10 +626,10 @@ "typeString": "bool" }, "typeName": { - "id": 3971, + "id": 4076, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "576:4:17", + "src": "576:4:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -676,33 +639,33 @@ "visibility": "internal" } ], - "src": "575:6:17" + "src": "575:6:20" }, - "scope": 3983, - "src": "502:140:17", + "scope": 4088, + "src": "502:140:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 3984, - "src": "322:322:17" + "scope": 4089, + "src": "322:322:20" } ], - "src": "0:645:17" + "src": "0:645:20" }, "legacyAST": { "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20Mintable.sol", "exportedSymbols": { "ERC20Mintable": [ - 3983 + 4088 ] }, - "id": 3984, + "id": 4089, "nodeType": "SourceUnit", "nodes": [ { - "id": 3957, + "id": 4062, "literals": [ "solidity", "^", @@ -710,27 +673,27 @@ ".0" ], "nodeType": "PragmaDirective", - "src": "0:23:17" + "src": "0:23:20" }, { "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", "file": "./ERC20.sol", - "id": 3958, + "id": 4063, "nodeType": "ImportDirective", - "scope": 3984, - "sourceUnit": 3898, - "src": "25:21:17", + "scope": 4089, + "sourceUnit": 4003, + "src": "25:21:20", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "openzeppelin-solidity/contracts/access/roles/MinterRole.sol", "file": "../../access/roles/MinterRole.sol", - "id": 3959, + "id": 4064, "nodeType": "ImportDirective", - "scope": 3984, - "sourceUnit": 3188, - "src": "47:43:17", + "scope": 4089, + "sourceUnit": 3293, + "src": "47:43:20", "symbolAliases": [], "unitAlias": "" }, @@ -740,64 +703,64 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 3960, + "id": 4065, "name": "ERC20", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3897, - "src": "348:5:17", + "referencedDeclaration": 4002, + "src": "348:5:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$3897", + "typeIdentifier": "t_contract$_ERC20_$4002", "typeString": "contract ERC20" } }, - "id": 3961, + "id": 4066, "nodeType": "InheritanceSpecifier", - "src": "348:5:17" + "src": "348:5:20" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 3962, + "id": 4067, "name": "MinterRole", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3187, - "src": "355:10:17", + "referencedDeclaration": 3292, + "src": "355:10:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_MinterRole_$3187", + "typeIdentifier": "t_contract$_MinterRole_$3292", "typeString": "contract MinterRole" } }, - "id": 3963, + "id": 4068, "nodeType": "InheritanceSpecifier", - "src": "355:10:17" + "src": "355:10:20" } ], "contractDependencies": [ - 2999, - 3187, - 3897, - 4052 + 3104, + 3292, + 4002, + 4157 ], "contractKind": "contract", "documentation": "@dev Extension of {ERC20} that adds a set of accounts with the {MinterRole},\nwhich have permission to mint (create) new tokens as they see fit.\n * At construction, the deployer of the contract is the only minter.", "fullyImplemented": true, - "id": 3983, + "id": 4088, "linearizedBaseContracts": [ - 3983, - 3187, - 3897, - 4052, - 2999 + 4088, + 3292, + 4002, + 4157, + 3104 ], "name": "ERC20Mintable", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 3981, + "id": 4086, "nodeType": "Block", - "src": "582:60:17", + "src": "582:60:20", "statements": [ { "expression": { @@ -805,12 +768,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3975, + "id": 4080, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3965, - "src": "598:7:17", + "referencedDeclaration": 4070, + "src": "598:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -818,12 +781,12 @@ }, { "argumentTypes": null, - "id": 3976, + "id": 4081, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3967, - "src": "607:6:17", + "referencedDeclaration": 4072, + "src": "607:6:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -841,18 +804,18 @@ "typeString": "uint256" } ], - "id": 3974, + "id": 4079, "name": "_mint", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3781, - "src": "592:5:17", + "referencedDeclaration": 3886, + "src": "592:5:20", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 3977, + "id": 4082, "isConstant": false, "isLValue": false, "isPure": false, @@ -860,28 +823,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "592:22:17", + "src": "592:22:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3978, + "id": 4083, "nodeType": "ExpressionStatement", - "src": "592:22:17" + "src": "592:22:20" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 3979, + "id": 4084, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "631:4:17", + "src": "631:4:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -889,51 +852,51 @@ }, "value": "true" }, - "functionReturnParameters": 3973, - "id": 3980, + "functionReturnParameters": 4078, + "id": 4085, "nodeType": "Return", - "src": "624:11:17" + "src": "624:11:20" } ] }, "documentation": "@dev See {ERC20-_mint}.\n * Requirements:\n * - the caller must have the {MinterRole}.", - "id": 3982, + "id": 4087, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, - "id": 3970, + "id": 4075, "modifierName": { "argumentTypes": null, - "id": 3969, + "id": 4074, "name": "onlyMinter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3120, - "src": "556:10:17", + "referencedDeclaration": 3225, + "src": "556:10:20", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "556:10:17" + "src": "556:10:20" } ], "name": "mint", "nodeType": "FunctionDefinition", "parameters": { - "id": 3968, + "id": 4073, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3965, + "id": 4070, "name": "account", "nodeType": "VariableDeclaration", - "scope": 3982, - "src": "516:15:17", + "scope": 4087, + "src": "516:15:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -941,10 +904,10 @@ "typeString": "address" }, "typeName": { - "id": 3964, + "id": 4069, "name": "address", "nodeType": "ElementaryTypeName", - "src": "516:7:17", + "src": "516:7:20", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -956,11 +919,11 @@ }, { "constant": false, - "id": 3967, + "id": 4072, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 3982, - "src": "533:14:17", + "scope": 4087, + "src": "533:14:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -968,10 +931,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3966, + "id": 4071, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "533:7:17", + "src": "533:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -981,19 +944,19 @@ "visibility": "internal" } ], - "src": "515:33:17" + "src": "515:33:20" }, "returnParameters": { - "id": 3973, + "id": 4078, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3972, + "id": 4077, "name": "", "nodeType": "VariableDeclaration", - "scope": 3982, - "src": "576:4:17", + "scope": 4087, + "src": "576:4:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1001,10 +964,10 @@ "typeString": "bool" }, "typeName": { - "id": 3971, + "id": 4076, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "576:4:17", + "src": "576:4:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1014,28 +977,28 @@ "visibility": "internal" } ], - "src": "575:6:17" + "src": "575:6:20" }, - "scope": 3983, - "src": "502:140:17", + "scope": 4088, + "src": "502:140:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 3984, - "src": "322:322:17" + "scope": 4089, + "src": "322:322:20" } ], - "src": "0:645:17" + "src": "0:645:20" }, "compiler": { "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" + "version": "0.5.2+commit.1df8f40c.Emscripten.clang" }, "networks": {}, - "schemaVersion": "3.0.23", - "updatedAt": "2020-02-16T12:52:29.829Z", + "schemaVersion": "3.0.1", + "updatedAt": "2020-02-16T14:54:14.907Z", "devdoc": { "details": "Extension of {ERC20} that adds a set of accounts with the {MinterRole}, which have permission to mint (create) new tokens as they see fit. * At construction, the deployer of the contract is the only minter.", "methods": { diff --git a/truffle/build/contracts/ETHContinuousToken.json b/truffle/build/contracts/ETHContinuousToken.json index 86e7e2e..7c4ab6f 100644 --- a/truffle/build/contracts/ETHContinuousToken.json +++ b/truffle/build/contracts/ETHContinuousToken.json @@ -2,181 +2,50 @@ "contractName": "ETHContinuousToken", "abi": [ { - "inputs": [ - { - "internalType": "string", - "name": "_name", - "type": "string" - }, + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ { - "internalType": "string", - "name": "_symbol", + "name": "", "type": "string" - }, - { - "internalType": "uint8", - "name": "_decimals", - "type": "uint8" - }, - { - "internalType": "uint256", - "name": "_initialSupply", - "type": "uint256" - }, - { - "internalType": "uint32", - "name": "_reserveRatio", - "type": "uint32" } ], - "payable": true, - "stateMutability": "payable", - "type": "constructor" + "payable": false, + "stateMutability": "view", + "type": "function" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", "name": "spender", "type": "address" }, { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "refund", - "type": "uint256" - } - ], - "name": "Burned", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", "name": "amount", "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "deposit", - "type": "uint256" } ], - "name": "Minted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, + "name": "approve", + "outputs": [ { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" + "name": "", + "type": "bool" } ], - "name": "Transfer", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" + "payable": false, + "stateMutability": "nonpayable", + "type": "function" }, { "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", + "inputs": [], + "name": "reserveRatio", "outputs": [ { - "internalType": "uint256", "name": "", - "type": "uint256" + "type": "uint32" } ], "payable": false, @@ -184,44 +53,30 @@ "type": "function" }, { - "constant": false, + "constant": true, "inputs": [ { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", + "name": "_reserveTokenAmount", "type": "uint256" } ], - "name": "approve", + "name": "getContinuousMintReward", "outputs": [ { - "internalType": "bool", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function" }, { "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", + "inputs": [], + "name": "totalSupply", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -231,84 +86,55 @@ "type": "function" }, { - "constant": true, + "constant": false, "inputs": [ { - "internalType": "uint256", - "name": "_supply", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_reserveBalance", - "type": "uint256" + "name": "sender", + "type": "address" }, { - "internalType": "uint32", - "name": "_reserveRatio", - "type": "uint32" + "name": "recipient", + "type": "address" }, { - "internalType": "uint256", - "name": "_depositAmount", + "name": "amount", "type": "uint256" } ], - "name": "calculatePurchaseReturn", + "name": "transferFrom", "outputs": [ { - "internalType": "uint256", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { - "internalType": "uint256", "name": "_supply", "type": "uint256" }, { - "internalType": "uint256", "name": "_reserveBalance", "type": "uint256" }, { - "internalType": "uint32", "name": "_reserveRatio", "type": "uint32" }, { - "internalType": "uint256", - "name": "_sellAmount", - "type": "uint256" - } - ], - "name": "calculateSaleReturn", - "outputs": [ - { - "internalType": "uint256", - "name": "", + "name": "_depositAmount", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "continuousSupply", + "name": "calculatePurchaseReturn", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -323,7 +149,6 @@ "name": "decimals", "outputs": [ { - "internalType": "uint8", "name": "", "type": "uint8" } @@ -336,20 +161,17 @@ "constant": false, "inputs": [ { - "internalType": "address", "name": "spender", "type": "address" }, { - "internalType": "uint256", - "name": "subtractedValue", + "name": "addedValue", "type": "uint256" } ], - "name": "decreaseAllowance", + "name": "increaseAllowance", "outputs": [ { - "internalType": "bool", "name": "", "type": "bool" } @@ -360,17 +182,10 @@ }, { "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "_continuousTokenAmount", - "type": "uint256" - } - ], - "name": "getContinuousBurnRefund", + "inputs": [], + "name": "maxGasPrice", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -383,15 +198,25 @@ "constant": true, "inputs": [ { - "internalType": "uint256", - "name": "_reserveTokenAmount", + "name": "_supply", + "type": "uint256" + }, + { + "name": "_reserveBalance", + "type": "uint256" + }, + { + "name": "_reserveRatio", + "type": "uint32" + }, + { + "name": "_sellAmount", "type": "uint256" } ], - "name": "getContinuousMintReward", + "name": "calculateSaleReturn", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -401,40 +226,60 @@ "type": "function" }, { - "constant": false, + "constant": true, + "inputs": [], + "name": "version", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, "inputs": [ { - "internalType": "address", - "name": "spender", + "name": "account", "type": "address" - }, - { - "internalType": "uint256", - "name": "addedValue", - "type": "uint256" } ], - "name": "increaseAllowance", + "name": "balanceOf", "outputs": [ { - "internalType": "bool", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, - "inputs": [], - "name": "isOwner", + "inputs": [ + { + "name": "_continuousTokenAmount", + "type": "uint256" + } + ], + "name": "getContinuousBurnRefund", "outputs": [ { - "internalType": "bool", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, @@ -444,12 +289,11 @@ { "constant": true, "inputs": [], - "name": "maxGasPrice", + "name": "owner", "outputs": [ { - "internalType": "uint256", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, @@ -459,12 +303,11 @@ { "constant": true, "inputs": [], - "name": "name", + "name": "isOwner", "outputs": [ { - "internalType": "string", "name": "", - "type": "string" + "type": "bool" } ], "payable": false, @@ -474,12 +317,11 @@ { "constant": true, "inputs": [], - "name": "owner", + "name": "symbol", "outputs": [ { - "internalType": "address", "name": "", - "type": "address" + "type": "string" } ], "payable": false, @@ -488,39 +330,60 @@ }, { "constant": false, - "inputs": [], - "name": "renounceOwnership", + "inputs": [ + { + "name": "_amount", + "type": "uint256" + } + ], + "name": "sponsoredBurn", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { - "constant": true, - "inputs": [], - "name": "reserveRatio", + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", "outputs": [ { - "internalType": "uint32", "name": "", - "type": "uint32" + "type": "bool" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { - "internalType": "uint256", - "name": "newPrice", + "name": "recipient", + "type": "address" + }, + { + "name": "amount", "type": "uint256" } ], - "name": "setMaxGasPrice", - "outputs": [], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], "payable": false, "stateMutability": "nonpayable", "type": "function" @@ -529,12 +392,15 @@ "constant": false, "inputs": [ { - "internalType": "uint256", + "name": "_from", + "type": "address" + }, + { "name": "_amount", "type": "uint256" } ], - "name": "sponsoredBurn", + "name": "sponsoredBurnFrom", "outputs": [], "payable": false, "stateMutability": "nonpayable", @@ -544,17 +410,11 @@ "constant": false, "inputs": [ { - "internalType": "address", - "name": "_from", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", + "name": "newPrice", "type": "uint256" } ], - "name": "sponsoredBurnFrom", + "name": "setMaxGasPrice", "outputs": [], "payable": false, "stateMutability": "nonpayable", @@ -563,12 +423,11 @@ { "constant": true, "inputs": [], - "name": "symbol", + "name": "continuousSupply", "outputs": [ { - "internalType": "string", "name": "", - "type": "string" + "type": "uint256" } ], "payable": false, @@ -577,11 +436,19 @@ }, { "constant": true, - "inputs": [], - "name": "totalSupply", + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "spender", + "type": "address" + } + ], + "name": "allowance", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -594,88 +461,152 @@ "constant": false, "inputs": [ { - "internalType": "address", - "name": "recipient", + "name": "newOwner", "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "name": "_name", + "type": "string" }, { - "internalType": "uint256", - "name": "amount", + "name": "_symbol", + "type": "string" + }, + { + "name": "_decimals", + "type": "uint8" + }, + { + "name": "_initialSupply", "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ + }, { - "internalType": "bool", - "name": "", - "type": "bool" + "name": "_reserveRatio", + "type": "uint32" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" + "payable": true, + "stateMutability": "payable", + "type": "constructor" }, { - "constant": false, + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, "inputs": [ { - "internalType": "address", + "indexed": false, "name": "sender", "type": "address" }, { - "internalType": "address", - "name": "recipient", + "indexed": false, + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "name": "deposit", + "type": "uint256" + } + ], + "name": "Minted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "sender", "type": "address" }, { - "internalType": "uint256", + "indexed": false, "name": "amount", "type": "uint256" + }, + { + "indexed": false, + "name": "refund", + "type": "uint256" } ], - "name": "transferFrom", - "outputs": [ + "name": "Burned", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ { - "internalType": "bool", - "name": "", - "type": "bool" + "indexed": true, + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "name": "newOwner", + "type": "address" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" + "name": "OwnershipTransferred", + "type": "event" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "internalType": "address", - "name": "newOwner", + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" } ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" + "name": "Transfer", + "type": "event" }, { - "constant": true, - "inputs": [], - "name": "version", - "outputs": [ + "anonymous": false, + "inputs": [ { - "internalType": "string", - "name": "", - "type": "string" + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function" + "name": "Approval", + "type": "event" }, { "constant": false, @@ -690,7 +621,6 @@ "constant": false, "inputs": [ { - "internalType": "uint256", "name": "_amount", "type": "uint256" } @@ -707,7 +637,6 @@ "name": "reserveBalance", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -717,25 +646,24 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"_decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"_initialSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_reserveRatio\",\"type\":\"uint32\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"refund\",\"type\":\"uint256\"}],\"name\":\"Burned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_supply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_reserveBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_reserveRatio\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_depositAmount\",\"type\":\"uint256\"}],\"name\":\"calculatePurchaseReturn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_supply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_reserveBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_reserveRatio\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_sellAmount\",\"type\":\"uint256\"}],\"name\":\"calculateSaleReturn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"continuousSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_continuousTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getContinuousBurnRefund\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_reserveTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getContinuousMintReward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"maxGasPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"mint\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"reserveBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"reserveRatio\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPrice\",\"type\":\"uint256\"}],\"name\":\"setMaxGasPrice\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"sponsoredBurn\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"sponsoredBurnFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. * Requirements: * - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"calculatePurchaseReturn(uint256,uint256,uint32,uint256)\":{\"details\":\"given a continuous token supply, reserve token balance, reserve ratio, and a deposit amount (in the reserve token), calculates the return for a given conversion (in the continuous token) * Formula: Return = _supply * ((1 + _depositAmount / _reserveBalance) ^ (_reserveRatio / MAX_RESERVE_RATIO) - 1)\",\"params\":{\"_depositAmount\":\"deposit amount, in reserve token\",\"_reserveBalance\":\"total reserve token balance\",\"_reserveRatio\":\"reserve ratio, represented in ppm, 1-1000000\",\"_supply\":\"continuous token total supply\"},\"return\":\"purchase return amount\"},\"calculateSaleReturn(uint256,uint256,uint32,uint256)\":{\"details\":\"given a continuous token supply, reserve token balance, reserve ratio and a sell amount (in the continuous token), calculates the return for a given conversion (in the reserve token) * Formula: Return = _reserveBalance * (1 - (1 - _sellAmount / _supply) ^ (1 / (_reserveRatio / MAX_RESERVE_RATIO)))\",\"params\":{\"_reserveBalance\":\"total reserve token balance\",\"_reserveRatio\":\"constant reserve ratio, represented in ppm, 1-1000000\",\"_sellAmount\":\"sell amount, in the continuous token itself\",\"_supply\":\"continuous token total supply\"},\"return\":\"sale return amount\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). * Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. * NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address.\"},\"isOwner()\":{\"details\":\"Returns true if the caller is the current owner.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. * Requirements: * - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. * Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; * Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for `sender`'s tokens of at least `amount`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/token/ETHContinuousToken.sol\":\"ETHContinuousToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":1500},\"remappings\":[]},\"sources\":{\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/curves/BancorBondingCurve.sol\":{\"keccak256\":\"0x687e9719bd334feff47289702610167b7278722ca2e3d1f10476d6fb4b3fac18\",\"urls\":[\"bzz-raw://3c8d354545c355f99e5851dfc99e48e988ff6b49b2482b535c82b4c28baec784\",\"dweb:/ipfs/QmZwfpQL6f5YVtAWNKrSJXKB2V1Mz7zYy3fGsFLt618ZHd\"]},\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/interfaces/IBondingCurve.sol\":{\"keccak256\":\"0x27a335544bca7d89b45438988419e4e3d5c6639dee6ff7e1e7da585db3f90b7b\",\"urls\":[\"bzz-raw://5caa54449bbd492dc880b1c3f2162614ce0483a886675df79c8c539909f29cf5\",\"dweb:/ipfs/QmfThvDW3d9L2Bjip74854Y1g1FdYaP5Eyj7PdjJy5LjEM\"]},\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/lib/ValidGasPrice.sol\":{\"keccak256\":\"0xab0eb602f0bd70cd9390021ec9d1e0b2a32f91b6c0af55fb6ea0b138f19be9fe\",\"urls\":[\"bzz-raw://153c896e4996d59fe5b747a28d8e8682f6afbae210587d7b7e2ae35ced2f1592\",\"dweb:/ipfs/QmReY8Thw4XDSKFdpLfvkEphdzBtbNr325DARGVSY9sUFc\"]},\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/math/BancorFormula.sol\":{\"keccak256\":\"0x07a5fc80f984d99091b528c4095e1c7b0a60ead97c05e3d6a5e06475e7a39e99\",\"urls\":[\"bzz-raw://efdd8da4c3c0ccbb02fcbd24fac4e8ca1e531d4d1b176f21410eb31432a93259\",\"dweb:/ipfs/Qme2dNAS3tdbLkKiH9qcJrNPi3s5kdtd5aLAZWEMAvEn2p\"]},\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/math/Power.sol\":{\"keccak256\":\"0x5a8b28886de5cede9e5be377a3649c13ac595eb996691ead28d0e8affc8bfe46\",\"urls\":[\"bzz-raw://bc28265d289fe49e251a7d12f399603ac3250cead55fed84107ff99aaeb46a32\",\"dweb:/ipfs/QmRxG1RDnaWwTzVpX12F4ECWyDZ1Kvonvm7hzJjVbWGuXE\"]},\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/token/ContinuousToken.sol\":{\"keccak256\":\"0x34325e4d749cb7ef49fa3384cb05d31094f14f8fa541d15a73be1f3f32f222f8\",\"urls\":[\"bzz-raw://12642ec5cb0b082a914e7e83bdae9e9a61430f827802f53a7459e35031375611\",\"dweb:/ipfs/QmaLNn8R3WvbXJhQMGFihNQ9eMp5BTV1ERYRcbBU9TuLpM\"]},\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/token/ETHContinuousToken.sol\":{\"keccak256\":\"0x5abb0d1171cb56478142f89fcc430cd8f6ed8155a025046de4c22b042c14244b\",\"urls\":[\"bzz-raw://2bc96cea20d2c98de27e95aa9b793982575b83771d9a225e3939d46f227152b4\",\"dweb:/ipfs/QmUUDFpgoBpgABApKeF7tN524M6MCVqvVufMmB81yUa7gY\"]},\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"keccak256\":\"0x90a3995645af7562d84b9d69363ffa5ae7217714ab61e951bf7bc450f40e4061\",\"urls\":[\"bzz-raw://216ef9d6b614db4eb46970b4e84903f2534a45572dd30a79f0041f1a5830f436\",\"dweb:/ipfs/QmNPrJ4MWKUAWzKXpUqeyKRUfosaoANZAqXgvepdrCwZAG\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0x6fb9d7889769d7cc161225f9ef7a90e468ba9788b253816f8d8b6894d3472c24\",\"urls\":[\"bzz-raw://cf4c00fc3c37cc5acf0c82ec6fd97bab67d72c2567fdc0ebf023d9c09b30a08e\",\"dweb:/ipfs/Qmb7TChG6DsEDX7LooJ4vmxot19f7VXX8S1zUGPeJTWbwZ\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xb15af804e2bc97db51e4e103f13de9fe13f87e6b835d7a88c897966c0e58506e\",\"urls\":[\"bzz-raw://1e8cff8437557fc915a3bed968fcd8f2df9809599e665ef69c2c9ce628548055\",\"dweb:/ipfs/QmP5spYP8vs2jvLF8zNrXUbqB79hMsoEvMHiLcBxerWKcm\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol\":{\"keccak256\":\"0x4a3a810b7ebe742e897e1fd428b3eeed2196d3acea58eaf9c566ed10d545d2ed\",\"urls\":[\"bzz-raw://28d03f328e19e4099d5013de0649afaeaabac1a614e130767ab1cb4aca9775b6\",\"dweb:/ipfs/Qmb9iW7yNuYehB2NfhRMs9TakqbLVQhBhmGMkaDZ5g1Eb4\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]}},\"version\":1}", - "bytecode": "0x60c06040526003608081905262302e3360e81b60a090815262000026916007919062000b4e565b50670de0b6b3a76400006089556040516200375d3803806200375d833981810160405260a08110156200005857600080fd5b81019080805160405193929190846401000000008211156200007957600080fd5b9083019060208201858111156200008f57600080fd5b8251640100000000811182820188101715620000aa57600080fd5b82525081516020918201929091019080838360005b83811015620000d9578181015183820152602001620000bf565b50505050905090810190601f168015620001075780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200012b57600080fd5b9083019060208201858111156200014157600080fd5b82516401000000008111828201881017156200015c57600080fd5b82525081516020918201929091019080838360005b838110156200018b57818101518382015260200162000171565b50505050905090810190601f168015620001b95780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060909201519093509091508484848484808585856000620001f26001600160e01b03620009e216565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35082516200025190600490602086019062000b4e565b5081516200026790600590602085019062000b4e565b506006805460ff191660ff9290921691909117905550506001641c35fedd1560601b036028556001646c3390ecc9605e1b036029556001640cf801476160611b03602a5560016431bdb23e1d605f1b03602b5560016502fb1d8fe083605b1b03602c5560016505b771955b37605a1b03602d556001650af67a93bb5160591b03602e5560016515060c256cb360581b03602f556001651428a2f98d7360581b036030556001654d515663970960561b03603155600165944620b0e70f60551b03603255600166011c592761c66760541b0360335560016602214d10d014eb60531b03603455600166020ade36b7dbef60531b0360355560016603eab73b3bbfe360521b036036556001660782ee3593f6d760511b036037556001661ccf4b44bb4821604f1b0360385560016606e7f88ad8a77760511b0360395560016669f3d1c921891d604d1b03603a55600166cb2ff529eb71e5604c1b03603b55600166c2d415c3db974b604c1b03603c5560016702eb40f9f620fda7604a1b03603d5560016705990681d961a1eb60491b03603e55600167055e12902701414760491b03603f5560016714962dee9dc9764160471b0360405560016704ef57b9b560fab560491b0360415560016712ed7b32a58f552b60471b036042556001679131271922eaa60760441b036043556001678b380f3558668c4760441b036044556001680215f77c045fbe885760421b036045556001600160831b036046556001670f577eded5773a1160471b036047556001680eb5ec597592befbf5603f1b036048556001681c35fedd14b861eb05603e1b036049556001683619c87664579bc94b603d1b03604a5560016867c00a3b07ffc01fd7603c1b03604b55600168c6f6c8f8739773a7a5603b1b03604c55600168bec763f8209b7a72b1603b1b03604d5560016902dbb8caad9b7097b91b60391b03604e55600169057b3d49dda84556d6f760381b03604f55600169054183095b2c8ececf3160381b036050556001690a14517cc6b9457111ef60371b0360515560016913545598e5c23276ccf160361b036052556001692511882c39c3adea96ff60351b03605355600169471649d87199aa99075760341b036054557004429a21a029d4c1457cfbffffffffffff605555700415bc6d6fb7dd71af2cb3ffffffffffff6056557003eab73b3bbfe282243ce1ffffffffffff6057557003c1771ac9fb6b4c18e229ffffffffffff605855700399e96897690418f785257fffffffffff605955700373fc456c53bb779bf0ea9fffffffffff605a5570034f9e8e490c48e67e6ab8bfffffffffff605b5570032cbfd4a7adc790560b3337ffffffffff605c5570030b50570f6e5d2acca94613ffffffffff605d557002eb40f9f620fda6b56c2861ffffffffff605e557002cc8340ecb0d0f520a6af58ffffffffff605f557002af09481380a0a35cf1ba02ffffffffff606055700292c5bdd3b92ec810287b1b3fffffffff606155700277abdcdab07d5a77ac6d6b9fffffffff60625570025daf6654b1eaa55fd64df5efffffffff606355700244c49c648baa98192dce88b7ffffffff60645570022ce03cd5619a311b2471268bffffffff606555700215f77c045fbe885654a44a0fffffffff6066556001600160811b036067557001eaefdbdaaee7421fc4d3ede5ffffffff6068557001d6bd8b2eb257df7e8ca57b09bfffffff6069557001c35fedd14b861eb0443f7f133fffffff606a557001b0ce43b322bcde4a56e8ada5afffffff606b5570019f0028ec1fff007f5a195a39dfffffff606c5570018ded91f0e72ee74f49b15ba527ffffff606d5570017d8ec7f04136f4e5615fd41a63ffffff606e5570016ddc6556cdb84bdc8d12d22e6fffffff606f5570015ecf52776a1155b5bd8395814f7fffff60705570015060c256cb23b3b3cc3754cf40ffffff6071557001428a2f98d728ae223ddab715be3fffff60725570013545598e5c23276ccf0ede68034fffff6073557001288c4161ce1d6f54b7f61081194fffff60745570011c592761c666aa641d5a01a40f17ffff607555700110a688680a7530515f3e6e6cfdcdffff6076557001056f1b5bedf75c6bcb2ce8aed428ffff6077556ffaadceceeff8a0890f3875f008277fff6078556ff05dc6b27edad306388a600f6ba0bfff6079556fe67a5a25da41063de1495d5b18cdbfff607a556fdcff115b14eedde6fc3aa5353f2e4fff607b556fd3e7a3924312399f9aae2e0f868f8fff607c556fcb2ff529eb71e41582cccd5a1ee26fff607d556fc2d415c3db974ab32a51840c0b67edff607e556fbad03e7d883f69ad5b0a186184e06bff607f556fb320d03b2c343d4829abd6075f0cc5ff6080556fabc25204e02828d73c6e80bcdb1a95bf6081556fa4b16f74ee4bb2040a1ec6c15fbbf2df6082556f9deaf736ac1f569deb1b5ae3f36c130f6083556f976bd9952c7aa957f5937d790ef650376084556f9131271922eaa6064b73a22d0bd4f2bf6085556f8b380f3558668c46c91c49a2f8e967b96086556f857ddf0117efa215952912839f6473e66087556088805463ffffffff191663ffffffff92909216919091179055620009cd3383620009e7565b505034608a555062000bf09650505050505050565b335b90565b6001600160a01b03821662000a43576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b62000a5f8160035462000aec60201b620011001790919060201c565b6003556001600160a01b03821660009081526001602090815260409091205462000a949183906200110062000aec821b17901c565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008282018381101562000b47576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000b9157805160ff191683800117855562000bc1565b8280016001018555821562000bc1579182015b8281111562000bc157825182559160200191906001019062000ba4565b5062000bcf92915062000bd3565b5090565b620009e491905b8082111562000bcf576000815560010162000bda565b612b5d8062000c006000396000f3fe6080604052600436106101c25760003560e01c806370a08231116100f7578063a10954fe11610095578063d2fa635e11610064578063d2fa635e14610658578063da12457a14610682578063dd62ed3e14610697578063f2fde38b146106d2576101c2565b8063a10954fe14610598578063a457c2d7146105ad578063a9059cbb146105e6578063b265c7021461061f576101c2565b80638da5cb5b116100d15780638da5cb5b146105135780638f32d59b1461054457806395d89b4114610559578063963438861461056e576101c2565b806370a08231146104a1578063715018a6146104d45780637cbed3e0146104e9576101c2565b806329a00e7c116101645780633de39c111161013e5780633de39c111461040b57806342966c681461042057806349f9b0f71461044a57806354fd4d501461048c576101c2565b806329a00e7c14610365578063313ce567146103a757806339509351146103d2576101c2565b80630d8f9f7f116101a05780630d8f9f7f146102d15780631249c58b146101c257806318160ddd1461030d57806323b872dd14610322576101c2565b806306fdde03146101cc578063095ea7b3146102565780630c7d5cd8146102a3575b6101ca610705565b005b3480156101d857600080fd5b506101e1610729565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561021b578181015183820152602001610203565b50505050905090810190601f1680156102485780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561026257600080fd5b5061028f6004803603604081101561027957600080fd5b506001600160a01b0381351690602001356107bf565b604080519115158252519081900360200190f35b3480156102af57600080fd5b506102b86107dd565b6040805163ffffffff9092168252519081900360200190f35b3480156102dd57600080fd5b506102fb600480360360208110156102f457600080fd5b50356107e9565b60408051918252519081900360200190f35b34801561031957600080fd5b506102fb610815565b34801561032e57600080fd5b5061028f6004803603606081101561034557600080fd5b506001600160a01b0381358116916020810135909116906040013561081b565b34801561037157600080fd5b506102fb6004803603608081101561038857600080fd5b5080359060208101359063ffffffff60408201351690606001356108a8565b3480156103b357600080fd5b506103bc6109d9565b6040805160ff9092168252519081900360200190f35b3480156103de57600080fd5b5061028f600480360360408110156103f557600080fd5b506001600160a01b0381351690602001356109e2565b34801561041757600080fd5b506102fb610a36565b34801561042c57600080fd5b506101ca6004803603602081101561044357600080fd5b5035610a3c565b34801561045657600080fd5b506102fb6004803603608081101561046d57600080fd5b5080359060208101359063ffffffff6040820135169060600135610a92565b34801561049857600080fd5b506101e1610bcf565b3480156104ad57600080fd5b506102fb600480360360208110156104c457600080fd5b50356001600160a01b0316610c5d565b3480156104e057600080fd5b506101ca610c78565b3480156104f557600080fd5b506102fb6004803603602081101561050c57600080fd5b5035610d33565b34801561051f57600080fd5b50610528610d57565b604080516001600160a01b039092168252519081900360200190f35b34801561055057600080fd5b5061028f610d66565b34801561056557600080fd5b506101e1610d8a565b34801561057a57600080fd5b506101ca6004803603602081101561059157600080fd5b5035610deb565b3480156105a457600080fd5b506102fb610e38565b3480156105b957600080fd5b5061028f600480360360408110156105d057600080fd5b506001600160a01b038135169060200135610e3e565b3480156105f257600080fd5b5061028f6004803603604081101561060957600080fd5b506001600160a01b038135169060200135610eac565b34801561062b57600080fd5b506101ca6004803603604081101561064257600080fd5b506001600160a01b038135169060200135610ec0565b34801561066457600080fd5b506101ca6004803603602081101561067b57600080fd5b5035610f0e565b34801561068e57600080fd5b506102fb610f6c565b3480156106a357600080fd5b506102fb600480360360408110156106ba57600080fd5b506001600160a01b0381358116916020013516610f7b565b3480156106de57600080fd5b506101ca600480360360208110156106f557600080fd5b50356001600160a01b0316610fa6565b3461070f8161100b565b50608a54610723908263ffffffff61110016565b608a5550565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107b55780601f1061078a576101008083540402835291602001916107b5565b820191906000526020600020905b81548152906001019060200180831161079857829003601f168201915b5050505050905090565b60006107d36107cc611161565b8484611165565b5060015b92915050565b60885463ffffffff1681565b600061080d6107f6610f6c565b6107fe610e38565b60885463ffffffff16856108a8565b90505b919050565b60035490565b6000610828848484611251565b61089e84610834611161565b61089985604051806060016040528060288152602001612a4e602891396001600160a01b038a16600090815260026020526040812090610872611161565b6001600160a01b03168152602081019190915260400160002054919063ffffffff6113af16565b611165565b5060019392505050565b600080851180156108b95750600084115b80156108cb575060008363ffffffff16115b80156108e05750620f424063ffffffff841611155b610931576040805162461bcd60e51b815260206004820152600f60248201527f496e76616c696420696e707574732e0000000000000000000000000000000000604482015290519081900360640190fd5b8161093e575060006109d1565b63ffffffff8316620f424014156109765761096f84610963878563ffffffff61144616565b9063ffffffff61149f16565b90506109d1565b6000808061098a858863ffffffff61110016565b905061099b818888620f42406114e1565b9093509150600060ff83166109b68a8663ffffffff61144616565b901c90506109ca818a63ffffffff61166a16565b9450505050505b949350505050565b60065460ff1690565b60006107d36109ef611161565b846108998560026000610a00611161565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61110016565b60895481565b6000610a47826116ac565b608a54909150610a5d908263ffffffff61166a16565b608a55604051339082156108fc029083906000818181858888f19350505050158015610a8d573d6000803e3d6000fd5b505050565b60008085118015610aa35750600084115b8015610ab5575060008363ffffffff16115b8015610aca5750620f424063ffffffff841611155b8015610ad65750848211155b610b27576040805162461bcd60e51b815260206004820152600f60248201527f496e76616c696420696e707574732e0000000000000000000000000000000000604482015290519081900360640190fd5b81610b34575060006109d1565b84821415610b435750826109d1565b63ffffffff8316620f42401415610b685761096f85610963868563ffffffff61144616565b60008080610b7c888663ffffffff61166a16565b9050610b8d8882620f4240896114e1565b90935091506000610ba4888563ffffffff61144616565b905060ff831688901b610bc185610963848463ffffffff61166a16565b9a9950505050505050505050565b6007805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c555780601f10610c2a57610100808354040283529160200191610c55565b820191906000526020600020905b815481529060010190602001808311610c3857829003601f168201915b505050505081565b6001600160a01b031660009081526001602052604090205490565b610c80610d66565b610cd1576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b600061080d610d40610f6c565b610d48610e38565b60885463ffffffff1685610a92565b6000546001600160a01b031690565b600080546001600160a01b0316610d7b611161565b6001600160a01b031614905090565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107b55780601f1061078a576101008083540402835291602001916107b5565b610df533826117fe565b604080513381526020810183905260008183015290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a150565b608a5490565b60006107d3610e4b611161565b8461089985604051806060016040528060258152602001612b046025913960026000610e75611161565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6113af16565b60006107d3610eb9611161565b8484611251565b610eca82826118fa565b604080513381526020810183905260008183015290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a15050565b610f16610d66565b610f67576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b608955565b6000610f76610815565b905090565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b610fae610d66565b610fff576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61100881611952565b50565b60006089543a111561104e5760405162461bcd60e51b81526004018080602001828103825260488152602001806129bf6048913960600191505060405180910390fd5b600082116110a3576040805162461bcd60e51b815260206004820152601960248201527f4465706f736974206d757374206265206e6f6e2d7a65726f2e00000000000000604482015290519081900360640190fd5b60006110ae836107e9565b90506110ba3382611a0a565b604080513381526020810183905280820185905290517f25b428dfde728ccfaddad7e29e4ac23c24ed7fd1a6e3e3f91894a9a073f5dfff9181900360600190a192915050565b60008282018381101561115a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b6001600160a01b0383166111aa5760405162461bcd60e51b8152600401808060200182810382526024815260200180612ae06024913960400191505060405180910390fd5b6001600160a01b0382166111ef5760405162461bcd60e51b815260040180806020018281038252602281526020018061299d6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166112965760405162461bcd60e51b8152600401808060200182810382526025815260200180612abb6025913960400191505060405180910390fd5b6001600160a01b0382166112db5760405162461bcd60e51b81526004018080602001828103825260238152602001806129326023913960400191505060405180910390fd5b61131e81604051806060016040528060268152602001612a07602691396001600160a01b038616600090815260016020526040902054919063ffffffff6113af16565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611353908263ffffffff61110016565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561143e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156114035781810151838201526020016113eb565b50505050905090810190601f1680156114305780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082611455575060006107d7565b8282028284828161146257fe5b041461115a5760405162461bcd60e51b8152600401808060200182810382526021815260200180612a2d6021913960400191505060405180910390fd5b600061115a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611afc565b6000807002000000000000000000000000000000008610611549576040805162461bcd60e51b815260206004820152601860248201527f626173654e2065786365656473206d61782076616c75652e0000000000000000604482015290519081900360640190fd5b8486101561159e576040805162461bcd60e51b815260206004820152601c60248201527f4261736573203c203120617265206e6f7420737570706f727465642e00000000604482015290519081900360640190fd5b600080866001607f1b8902816115b057fe5b04905070015bf0a8b1457695355fb8ac404e7a79e38110156115dc576115d581611b61565b91506115e8565b6115e58161200c565b91505b60008563ffffffff168763ffffffff1684028161160157fe5b04905070080000000000000000000000000000000081101561163457611626816120bc565b607f94509450505050611661565b600061163f8261249e565b905061165481607f0360ff1683901c82612530565b9550935061166192505050565b94509492505050565b600061115a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113af565b60006089543a11156116ef5760405162461bcd60e51b81526004018080602001828103825260488152602001806129bf6048913960600191505060405180910390fd5b60008211611744576040805162461bcd60e51b815260206004820152601860248201527f416d6f756e74206d757374206265206e6f6e2d7a65726f2e0000000000000000604482015290519081900360640190fd5b8161174e33610c5d565b10156117a1576040805162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e7420746f6b656e7320746f206275726e2e00000000604482015290519081900360640190fd5b60006117ac83610d33565b90506117b833846117fe565b604080513381526020810185905280820183905290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a192915050565b6001600160a01b0382166118435760405162461bcd60e51b8152600401808060200182810382526021815260200180612a9a6021913960400191505060405180910390fd5b61188681604051806060016040528060228152602001612955602291396001600160a01b038516600090815260016020526040902054919063ffffffff6113af16565b6001600160a01b0383166000908152600160205260409020556003546118b2908263ffffffff61166a16565b6003556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b61190482826117fe565b61194e82611910611161565b61089984604051806060016040528060248152602001612a76602491396001600160a01b038816600090815260026020526040812090610872611161565b5050565b6001600160a01b0381166119975760405162461bcd60e51b81526004018080602001828103825260268152602001806129776026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6001600160a01b038216611a65576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600354611a78908263ffffffff61110016565b6003556001600160a01b038216600090815260016020526040902054611aa4908263ffffffff61110016565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183611b4b5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156114035781810151838201526020016113eb565b506000838581611b5757fe5b0495945050505050565b6000808080806fd3094c70f034de4b96ff7d5b6f99fcd88610611bb6576f40000000000000000000000000000000840193506fd3094c70f034de4b96ff7d5b6f99fcd86001607f1b870281611bb257fe5b0495505b6fa45af1e1f40c333b3de1db4dd55f29a78610611c05576f20000000000000000000000000000000840193506fa45af1e1f40c333b3de1db4dd55f29a76001607f1b870281611c0157fe5b0495505b6f910b022db7ae67ce76b441c27035c6a18610611c54576f10000000000000000000000000000000840193506f910b022db7ae67ce76b441c27035c6a16001607f1b870281611c5057fe5b0495505b6f88415abbe9a76bead8d00cf112e4d4a88610611ca3576f08000000000000000000000000000000840193506f88415abbe9a76bead8d00cf112e4d4a86001607f1b870281611c9f57fe5b0495505b6f84102b00893f64c705e841d5d4064bd38610611cf2576f04000000000000000000000000000000840193506f84102b00893f64c705e841d5d4064bd36001607f1b870281611cee57fe5b0495505b6f8204055aaef1c8bd5c3259f4822735a28610611d41576f02000000000000000000000000000000840193506f8204055aaef1c8bd5c3259f4822735a26001607f1b870281611d3d57fe5b0495505b6f810100ab00222d861931c15e39b44e998610611d90576f01000000000000000000000000000000840193506f810100ab00222d861931c15e39b44e996001607f1b870281611d8c57fe5b0495505b6f808040155aabbbe9451521693554f7338610611dde576e800000000000000000000000000000840193506f808040155aabbbe9451521693554f7336001607f1b870281611dda57fe5b0495505b7fffffffffffffffffffffffffffffffff80000000000000000000000000000000860192508291506001607f1b828002049050600160801b838103830204840193506001607f1b81830281611e2f57fe5b049150700200000000000000000000000000000000836faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa03830281611e6057fe5b04840193506001607f1b81830281611e7457fe5b049150700300000000000000000000000000000000836f9999999999999999999999999999999903830281611ea557fe5b04840193506001607f1b81830281611eb957fe5b049150700400000000000000000000000000000000836f9249249249249249249249249249249203830281611eea57fe5b04840193506001607f1b81830281611efe57fe5b049150700500000000000000000000000000000000836f8e38e38e38e38e38e38e38e38e38e38e03830281611f2f57fe5b04840193506001607f1b81830281611f4357fe5b049150700600000000000000000000000000000000836f8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8b03830281611f7457fe5b04840193506001607f1b81830281611f8857fe5b049150700700000000000000000000000000000000836f89d89d89d89d89d89d89d89d89d89d8903830281611fb957fe5b04840193506001607f1b81830281611fcd57fe5b049150700800000000000000000000000000000000836f8888888888888888888888888888888803830281611ffe57fe5b049390930195945050505050565b60008082600160801b811061203f57600061202c6001607f1b83046128cd565b60ff166001607f1b810293509190911c90505b6001607f1b81111561208f57607f5b60ff81161561208d576001607f1b828002049150600160801b821061208457600182901c91506001810360ff166001901b830192505b6000190161204e565b505b6f05b9de1d10bf4103d647b0955897ba806f03f80fe03f80fe03f80fe03f80fe03f8830204949350505050565b6000670168244fdac780006001607f1b6f0fffffffffffffffffffffffffffffff84168080028290048082028390048083028490049485026710e1b3be415a00009092026705a0913f6b1e000091909102010192909181830204905080664807432bc1800002830192506001607f1b8282028161213557fe5b04905080660c0135dca0400002830192506001607f1b8282028161215557fe5b049050806601b707b1cdc00002830192506001607f1b8282028161217557fe5b049050806536e0f639b80002830192506001607f1b8282028161219457fe5b04905080650618fee9f80002830192506001607f1b828202816121b357fe5b04905080649c197dcc0002830192506001607f1b828202816121d157fe5b04905080640e30dce40002830192506001607f1b828202816121ef57fe5b0490508064012ebd130002830192506001607f1b8282028161220d57fe5b049050806317499f0002830192506001607f1b8282028161222a57fe5b049050806301a9d48002830192506001607f1b8282028161224757fe5b04905080621c638002830192506001607f1b8282028161226357fe5b049050806201c63802830192506001607f1b8282028161227f57fe5b04905080611ab802830192506001607f1b8282028161229a57fe5b0490508061017c02830192506001607f1b828202816122b557fe5b04905080601402830192506001607f1b828202816122cf57fe5b6721c3677c82b400009190049384010482016001607f1b019290506f1000000000000000000000000000000085161561232c5770018ebef9eac820ae8682b9793ac6d1e7767001c3d6a24ed82218787d624d3e5eba95f984020492505b6f2000000000000000000000000000000085161561236e577001368b2fc6f9609fe7aceb46aa619baed470018ebef9eac820ae8682b9793ac6d1e77884020492505b6f400000000000000000000000000000008516156123af576fbc5ab1b16779be3575bd8f0520a9f21f7001368b2fc6f9609fe7aceb46aa619baed584020492505b6001607f1b8516156123e3576f454aaa8efe072e7f6ddbab84b40a55c96fbc5ab1b16779be3575bd8f0520a9f21e84020492505b600160801b851615612417576f0960aadc109e7a3bf4578099615711ea6f454aaa8efe072e7f6ddbab84b40a55c584020492505b700200000000000000000000000000000000851615612457576e2bf84208204f5977f9a8cf01fdce3d6f0960aadc109e7a3bf4578099615711d784020492505b700400000000000000000000000000000000851615612495576d03c6ab775dd0b95b4cbee7e65d116e2bf84208204f5977f9a8cf01fdc30784020492505b50909392505050565b60006020607f5b8060ff168260010160ff1610156124ed576000600260ff848401160490508460088260ff16608081106124d457fe5b0154106124e3578092506124e7565b8091505b506124a5565b8360088260ff16608081106124fe57fe5b01541061250e5791506108109050565b8360088360ff166080811061251f57fe5b01541061252e57509050610810565bfe5b60008083905060008090508360ff16858302901c9150816f03442c4e6074a82f1797f72ac000000002810190508360ff16858302901c9150816f0116b96f757c380fb287fd0e4000000002810190508360ff16858302901c9150816e45ae5bdd5f0e03eca1ff439000000002810190508360ff16858302901c9150816e0defabf91302cd95b9ffda5000000002810190508360ff16858302901c9150816e02529ca9832b22439efff9b800000002810190508360ff16858302901c9150816d54f1cf12bd04e516b6da8800000002810190508360ff16858302901c9150816d0a9e39e257a09ca2d6db5100000002810190508360ff16858302901c9150816d012e066e7b839fa050c30900000002810190508360ff16858302901c9150816c1e33d7d926c329a1ad1a80000002810190508360ff16858302901c9150816c02bee513bdb4a6b19b5f80000002810190508360ff16858302901c9150816b3a9316fa79b88eccf2a0000002810190508360ff16858302901c9150816b048177ebe1fa81237520000002810190508360ff16858302901c9150816a5263fe90242dcbacf0000002810190508360ff16858302901c9150816a057e22099c030d9410000002810190508360ff16858302901c9150816957e22099c030d941000002810190508360ff16858302901c91508169052b6b5456997631000002810190508360ff16858302901c915081684985f67696bf74800002810190508360ff16858302901c9150816803dea12ea99e49800002810190508360ff16858302901c9150816731880f2214b6e00002810190508360ff16858302901c91508167025bcff56eb3600002810190508360ff16858302901c915081661b722e10ab100002810190508360ff16858302901c9150816601317c7007700002810190508360ff16858302901c915081650cba84aafa0002810190508360ff16858302901c9150816482573a0a0002810190508360ff16858302901c9150816405035ad90002810190508360ff16858302901c915081632f881b0002810190508360ff16858302901c9150816301b2934002810190508360ff16858302901c915081620efc4002810190508360ff16858302901c915081617fe002810190508360ff16858302901c91508161042002810190508360ff16858302901c915081602102810190508360ff16858302901c915081600102810190508360ff166001901b856f0688589cc0e9505e2f2fee558000000083816128c157fe5b04010195945050505050565b600080826101008110156128f6575b60018111156128f1576001918201911c6128dc565b61292a565b60805b60ff81161561292857600160ff82161b821061291d579182179160ff81169190911c905b60011c607f166128f9565b505b509291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373476173207072696365206d757374206265203c3d206d6178696d756d2067617320707269636520746f2070726576656e742066726f6e742072756e6e696e672061747461636b732e45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a7231582050bb2b0908e431b4347b14b9f305d315decc90ddfa580ef14f83313b5c74065164736f6c63430005100032", - "deployedBytecode": "0x6080604052600436106101c25760003560e01c806370a08231116100f7578063a10954fe11610095578063d2fa635e11610064578063d2fa635e14610658578063da12457a14610682578063dd62ed3e14610697578063f2fde38b146106d2576101c2565b8063a10954fe14610598578063a457c2d7146105ad578063a9059cbb146105e6578063b265c7021461061f576101c2565b80638da5cb5b116100d15780638da5cb5b146105135780638f32d59b1461054457806395d89b4114610559578063963438861461056e576101c2565b806370a08231146104a1578063715018a6146104d45780637cbed3e0146104e9576101c2565b806329a00e7c116101645780633de39c111161013e5780633de39c111461040b57806342966c681461042057806349f9b0f71461044a57806354fd4d501461048c576101c2565b806329a00e7c14610365578063313ce567146103a757806339509351146103d2576101c2565b80630d8f9f7f116101a05780630d8f9f7f146102d15780631249c58b146101c257806318160ddd1461030d57806323b872dd14610322576101c2565b806306fdde03146101cc578063095ea7b3146102565780630c7d5cd8146102a3575b6101ca610705565b005b3480156101d857600080fd5b506101e1610729565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561021b578181015183820152602001610203565b50505050905090810190601f1680156102485780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561026257600080fd5b5061028f6004803603604081101561027957600080fd5b506001600160a01b0381351690602001356107bf565b604080519115158252519081900360200190f35b3480156102af57600080fd5b506102b86107dd565b6040805163ffffffff9092168252519081900360200190f35b3480156102dd57600080fd5b506102fb600480360360208110156102f457600080fd5b50356107e9565b60408051918252519081900360200190f35b34801561031957600080fd5b506102fb610815565b34801561032e57600080fd5b5061028f6004803603606081101561034557600080fd5b506001600160a01b0381358116916020810135909116906040013561081b565b34801561037157600080fd5b506102fb6004803603608081101561038857600080fd5b5080359060208101359063ffffffff60408201351690606001356108a8565b3480156103b357600080fd5b506103bc6109d9565b6040805160ff9092168252519081900360200190f35b3480156103de57600080fd5b5061028f600480360360408110156103f557600080fd5b506001600160a01b0381351690602001356109e2565b34801561041757600080fd5b506102fb610a36565b34801561042c57600080fd5b506101ca6004803603602081101561044357600080fd5b5035610a3c565b34801561045657600080fd5b506102fb6004803603608081101561046d57600080fd5b5080359060208101359063ffffffff6040820135169060600135610a92565b34801561049857600080fd5b506101e1610bcf565b3480156104ad57600080fd5b506102fb600480360360208110156104c457600080fd5b50356001600160a01b0316610c5d565b3480156104e057600080fd5b506101ca610c78565b3480156104f557600080fd5b506102fb6004803603602081101561050c57600080fd5b5035610d33565b34801561051f57600080fd5b50610528610d57565b604080516001600160a01b039092168252519081900360200190f35b34801561055057600080fd5b5061028f610d66565b34801561056557600080fd5b506101e1610d8a565b34801561057a57600080fd5b506101ca6004803603602081101561059157600080fd5b5035610deb565b3480156105a457600080fd5b506102fb610e38565b3480156105b957600080fd5b5061028f600480360360408110156105d057600080fd5b506001600160a01b038135169060200135610e3e565b3480156105f257600080fd5b5061028f6004803603604081101561060957600080fd5b506001600160a01b038135169060200135610eac565b34801561062b57600080fd5b506101ca6004803603604081101561064257600080fd5b506001600160a01b038135169060200135610ec0565b34801561066457600080fd5b506101ca6004803603602081101561067b57600080fd5b5035610f0e565b34801561068e57600080fd5b506102fb610f6c565b3480156106a357600080fd5b506102fb600480360360408110156106ba57600080fd5b506001600160a01b0381358116916020013516610f7b565b3480156106de57600080fd5b506101ca600480360360208110156106f557600080fd5b50356001600160a01b0316610fa6565b3461070f8161100b565b50608a54610723908263ffffffff61110016565b608a5550565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107b55780601f1061078a576101008083540402835291602001916107b5565b820191906000526020600020905b81548152906001019060200180831161079857829003601f168201915b5050505050905090565b60006107d36107cc611161565b8484611165565b5060015b92915050565b60885463ffffffff1681565b600061080d6107f6610f6c565b6107fe610e38565b60885463ffffffff16856108a8565b90505b919050565b60035490565b6000610828848484611251565b61089e84610834611161565b61089985604051806060016040528060288152602001612a4e602891396001600160a01b038a16600090815260026020526040812090610872611161565b6001600160a01b03168152602081019190915260400160002054919063ffffffff6113af16565b611165565b5060019392505050565b600080851180156108b95750600084115b80156108cb575060008363ffffffff16115b80156108e05750620f424063ffffffff841611155b610931576040805162461bcd60e51b815260206004820152600f60248201527f496e76616c696420696e707574732e0000000000000000000000000000000000604482015290519081900360640190fd5b8161093e575060006109d1565b63ffffffff8316620f424014156109765761096f84610963878563ffffffff61144616565b9063ffffffff61149f16565b90506109d1565b6000808061098a858863ffffffff61110016565b905061099b818888620f42406114e1565b9093509150600060ff83166109b68a8663ffffffff61144616565b901c90506109ca818a63ffffffff61166a16565b9450505050505b949350505050565b60065460ff1690565b60006107d36109ef611161565b846108998560026000610a00611161565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61110016565b60895481565b6000610a47826116ac565b608a54909150610a5d908263ffffffff61166a16565b608a55604051339082156108fc029083906000818181858888f19350505050158015610a8d573d6000803e3d6000fd5b505050565b60008085118015610aa35750600084115b8015610ab5575060008363ffffffff16115b8015610aca5750620f424063ffffffff841611155b8015610ad65750848211155b610b27576040805162461bcd60e51b815260206004820152600f60248201527f496e76616c696420696e707574732e0000000000000000000000000000000000604482015290519081900360640190fd5b81610b34575060006109d1565b84821415610b435750826109d1565b63ffffffff8316620f42401415610b685761096f85610963868563ffffffff61144616565b60008080610b7c888663ffffffff61166a16565b9050610b8d8882620f4240896114e1565b90935091506000610ba4888563ffffffff61144616565b905060ff831688901b610bc185610963848463ffffffff61166a16565b9a9950505050505050505050565b6007805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c555780601f10610c2a57610100808354040283529160200191610c55565b820191906000526020600020905b815481529060010190602001808311610c3857829003601f168201915b505050505081565b6001600160a01b031660009081526001602052604090205490565b610c80610d66565b610cd1576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b600061080d610d40610f6c565b610d48610e38565b60885463ffffffff1685610a92565b6000546001600160a01b031690565b600080546001600160a01b0316610d7b611161565b6001600160a01b031614905090565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107b55780601f1061078a576101008083540402835291602001916107b5565b610df533826117fe565b604080513381526020810183905260008183015290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a150565b608a5490565b60006107d3610e4b611161565b8461089985604051806060016040528060258152602001612b046025913960026000610e75611161565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6113af16565b60006107d3610eb9611161565b8484611251565b610eca82826118fa565b604080513381526020810183905260008183015290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a15050565b610f16610d66565b610f67576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b608955565b6000610f76610815565b905090565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b610fae610d66565b610fff576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61100881611952565b50565b60006089543a111561104e5760405162461bcd60e51b81526004018080602001828103825260488152602001806129bf6048913960600191505060405180910390fd5b600082116110a3576040805162461bcd60e51b815260206004820152601960248201527f4465706f736974206d757374206265206e6f6e2d7a65726f2e00000000000000604482015290519081900360640190fd5b60006110ae836107e9565b90506110ba3382611a0a565b604080513381526020810183905280820185905290517f25b428dfde728ccfaddad7e29e4ac23c24ed7fd1a6e3e3f91894a9a073f5dfff9181900360600190a192915050565b60008282018381101561115a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b6001600160a01b0383166111aa5760405162461bcd60e51b8152600401808060200182810382526024815260200180612ae06024913960400191505060405180910390fd5b6001600160a01b0382166111ef5760405162461bcd60e51b815260040180806020018281038252602281526020018061299d6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166112965760405162461bcd60e51b8152600401808060200182810382526025815260200180612abb6025913960400191505060405180910390fd5b6001600160a01b0382166112db5760405162461bcd60e51b81526004018080602001828103825260238152602001806129326023913960400191505060405180910390fd5b61131e81604051806060016040528060268152602001612a07602691396001600160a01b038616600090815260016020526040902054919063ffffffff6113af16565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611353908263ffffffff61110016565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561143e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156114035781810151838201526020016113eb565b50505050905090810190601f1680156114305780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082611455575060006107d7565b8282028284828161146257fe5b041461115a5760405162461bcd60e51b8152600401808060200182810382526021815260200180612a2d6021913960400191505060405180910390fd5b600061115a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611afc565b6000807002000000000000000000000000000000008610611549576040805162461bcd60e51b815260206004820152601860248201527f626173654e2065786365656473206d61782076616c75652e0000000000000000604482015290519081900360640190fd5b8486101561159e576040805162461bcd60e51b815260206004820152601c60248201527f4261736573203c203120617265206e6f7420737570706f727465642e00000000604482015290519081900360640190fd5b600080866001607f1b8902816115b057fe5b04905070015bf0a8b1457695355fb8ac404e7a79e38110156115dc576115d581611b61565b91506115e8565b6115e58161200c565b91505b60008563ffffffff168763ffffffff1684028161160157fe5b04905070080000000000000000000000000000000081101561163457611626816120bc565b607f94509450505050611661565b600061163f8261249e565b905061165481607f0360ff1683901c82612530565b9550935061166192505050565b94509492505050565b600061115a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113af565b60006089543a11156116ef5760405162461bcd60e51b81526004018080602001828103825260488152602001806129bf6048913960600191505060405180910390fd5b60008211611744576040805162461bcd60e51b815260206004820152601860248201527f416d6f756e74206d757374206265206e6f6e2d7a65726f2e0000000000000000604482015290519081900360640190fd5b8161174e33610c5d565b10156117a1576040805162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e7420746f6b656e7320746f206275726e2e00000000604482015290519081900360640190fd5b60006117ac83610d33565b90506117b833846117fe565b604080513381526020810185905280820183905290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a192915050565b6001600160a01b0382166118435760405162461bcd60e51b8152600401808060200182810382526021815260200180612a9a6021913960400191505060405180910390fd5b61188681604051806060016040528060228152602001612955602291396001600160a01b038516600090815260016020526040902054919063ffffffff6113af16565b6001600160a01b0383166000908152600160205260409020556003546118b2908263ffffffff61166a16565b6003556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b61190482826117fe565b61194e82611910611161565b61089984604051806060016040528060248152602001612a76602491396001600160a01b038816600090815260026020526040812090610872611161565b5050565b6001600160a01b0381166119975760405162461bcd60e51b81526004018080602001828103825260268152602001806129776026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6001600160a01b038216611a65576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600354611a78908263ffffffff61110016565b6003556001600160a01b038216600090815260016020526040902054611aa4908263ffffffff61110016565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183611b4b5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156114035781810151838201526020016113eb565b506000838581611b5757fe5b0495945050505050565b6000808080806fd3094c70f034de4b96ff7d5b6f99fcd88610611bb6576f40000000000000000000000000000000840193506fd3094c70f034de4b96ff7d5b6f99fcd86001607f1b870281611bb257fe5b0495505b6fa45af1e1f40c333b3de1db4dd55f29a78610611c05576f20000000000000000000000000000000840193506fa45af1e1f40c333b3de1db4dd55f29a76001607f1b870281611c0157fe5b0495505b6f910b022db7ae67ce76b441c27035c6a18610611c54576f10000000000000000000000000000000840193506f910b022db7ae67ce76b441c27035c6a16001607f1b870281611c5057fe5b0495505b6f88415abbe9a76bead8d00cf112e4d4a88610611ca3576f08000000000000000000000000000000840193506f88415abbe9a76bead8d00cf112e4d4a86001607f1b870281611c9f57fe5b0495505b6f84102b00893f64c705e841d5d4064bd38610611cf2576f04000000000000000000000000000000840193506f84102b00893f64c705e841d5d4064bd36001607f1b870281611cee57fe5b0495505b6f8204055aaef1c8bd5c3259f4822735a28610611d41576f02000000000000000000000000000000840193506f8204055aaef1c8bd5c3259f4822735a26001607f1b870281611d3d57fe5b0495505b6f810100ab00222d861931c15e39b44e998610611d90576f01000000000000000000000000000000840193506f810100ab00222d861931c15e39b44e996001607f1b870281611d8c57fe5b0495505b6f808040155aabbbe9451521693554f7338610611dde576e800000000000000000000000000000840193506f808040155aabbbe9451521693554f7336001607f1b870281611dda57fe5b0495505b7fffffffffffffffffffffffffffffffff80000000000000000000000000000000860192508291506001607f1b828002049050600160801b838103830204840193506001607f1b81830281611e2f57fe5b049150700200000000000000000000000000000000836faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa03830281611e6057fe5b04840193506001607f1b81830281611e7457fe5b049150700300000000000000000000000000000000836f9999999999999999999999999999999903830281611ea557fe5b04840193506001607f1b81830281611eb957fe5b049150700400000000000000000000000000000000836f9249249249249249249249249249249203830281611eea57fe5b04840193506001607f1b81830281611efe57fe5b049150700500000000000000000000000000000000836f8e38e38e38e38e38e38e38e38e38e38e03830281611f2f57fe5b04840193506001607f1b81830281611f4357fe5b049150700600000000000000000000000000000000836f8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8b03830281611f7457fe5b04840193506001607f1b81830281611f8857fe5b049150700700000000000000000000000000000000836f89d89d89d89d89d89d89d89d89d89d8903830281611fb957fe5b04840193506001607f1b81830281611fcd57fe5b049150700800000000000000000000000000000000836f8888888888888888888888888888888803830281611ffe57fe5b049390930195945050505050565b60008082600160801b811061203f57600061202c6001607f1b83046128cd565b60ff166001607f1b810293509190911c90505b6001607f1b81111561208f57607f5b60ff81161561208d576001607f1b828002049150600160801b821061208457600182901c91506001810360ff166001901b830192505b6000190161204e565b505b6f05b9de1d10bf4103d647b0955897ba806f03f80fe03f80fe03f80fe03f80fe03f8830204949350505050565b6000670168244fdac780006001607f1b6f0fffffffffffffffffffffffffffffff84168080028290048082028390048083028490049485026710e1b3be415a00009092026705a0913f6b1e000091909102010192909181830204905080664807432bc1800002830192506001607f1b8282028161213557fe5b04905080660c0135dca0400002830192506001607f1b8282028161215557fe5b049050806601b707b1cdc00002830192506001607f1b8282028161217557fe5b049050806536e0f639b80002830192506001607f1b8282028161219457fe5b04905080650618fee9f80002830192506001607f1b828202816121b357fe5b04905080649c197dcc0002830192506001607f1b828202816121d157fe5b04905080640e30dce40002830192506001607f1b828202816121ef57fe5b0490508064012ebd130002830192506001607f1b8282028161220d57fe5b049050806317499f0002830192506001607f1b8282028161222a57fe5b049050806301a9d48002830192506001607f1b8282028161224757fe5b04905080621c638002830192506001607f1b8282028161226357fe5b049050806201c63802830192506001607f1b8282028161227f57fe5b04905080611ab802830192506001607f1b8282028161229a57fe5b0490508061017c02830192506001607f1b828202816122b557fe5b04905080601402830192506001607f1b828202816122cf57fe5b6721c3677c82b400009190049384010482016001607f1b019290506f1000000000000000000000000000000085161561232c5770018ebef9eac820ae8682b9793ac6d1e7767001c3d6a24ed82218787d624d3e5eba95f984020492505b6f2000000000000000000000000000000085161561236e577001368b2fc6f9609fe7aceb46aa619baed470018ebef9eac820ae8682b9793ac6d1e77884020492505b6f400000000000000000000000000000008516156123af576fbc5ab1b16779be3575bd8f0520a9f21f7001368b2fc6f9609fe7aceb46aa619baed584020492505b6001607f1b8516156123e3576f454aaa8efe072e7f6ddbab84b40a55c96fbc5ab1b16779be3575bd8f0520a9f21e84020492505b600160801b851615612417576f0960aadc109e7a3bf4578099615711ea6f454aaa8efe072e7f6ddbab84b40a55c584020492505b700200000000000000000000000000000000851615612457576e2bf84208204f5977f9a8cf01fdce3d6f0960aadc109e7a3bf4578099615711d784020492505b700400000000000000000000000000000000851615612495576d03c6ab775dd0b95b4cbee7e65d116e2bf84208204f5977f9a8cf01fdc30784020492505b50909392505050565b60006020607f5b8060ff168260010160ff1610156124ed576000600260ff848401160490508460088260ff16608081106124d457fe5b0154106124e3578092506124e7565b8091505b506124a5565b8360088260ff16608081106124fe57fe5b01541061250e5791506108109050565b8360088360ff166080811061251f57fe5b01541061252e57509050610810565bfe5b60008083905060008090508360ff16858302901c9150816f03442c4e6074a82f1797f72ac000000002810190508360ff16858302901c9150816f0116b96f757c380fb287fd0e4000000002810190508360ff16858302901c9150816e45ae5bdd5f0e03eca1ff439000000002810190508360ff16858302901c9150816e0defabf91302cd95b9ffda5000000002810190508360ff16858302901c9150816e02529ca9832b22439efff9b800000002810190508360ff16858302901c9150816d54f1cf12bd04e516b6da8800000002810190508360ff16858302901c9150816d0a9e39e257a09ca2d6db5100000002810190508360ff16858302901c9150816d012e066e7b839fa050c30900000002810190508360ff16858302901c9150816c1e33d7d926c329a1ad1a80000002810190508360ff16858302901c9150816c02bee513bdb4a6b19b5f80000002810190508360ff16858302901c9150816b3a9316fa79b88eccf2a0000002810190508360ff16858302901c9150816b048177ebe1fa81237520000002810190508360ff16858302901c9150816a5263fe90242dcbacf0000002810190508360ff16858302901c9150816a057e22099c030d9410000002810190508360ff16858302901c9150816957e22099c030d941000002810190508360ff16858302901c91508169052b6b5456997631000002810190508360ff16858302901c915081684985f67696bf74800002810190508360ff16858302901c9150816803dea12ea99e49800002810190508360ff16858302901c9150816731880f2214b6e00002810190508360ff16858302901c91508167025bcff56eb3600002810190508360ff16858302901c915081661b722e10ab100002810190508360ff16858302901c9150816601317c7007700002810190508360ff16858302901c915081650cba84aafa0002810190508360ff16858302901c9150816482573a0a0002810190508360ff16858302901c9150816405035ad90002810190508360ff16858302901c915081632f881b0002810190508360ff16858302901c9150816301b2934002810190508360ff16858302901c915081620efc4002810190508360ff16858302901c915081617fe002810190508360ff16858302901c91508161042002810190508360ff16858302901c915081602102810190508360ff16858302901c915081600102810190508360ff166001901b856f0688589cc0e9505e2f2fee558000000083816128c157fe5b04010195945050505050565b600080826101008110156128f6575b60018111156128f1576001918201911c6128dc565b61292a565b60805b60ff81161561292857600160ff82161b821061291d579182179160ff81169190911c905b60011c607f166128f9565b505b509291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373476173207072696365206d757374206265203c3d206d6178696d756d2067617320707269636520746f2070726576656e742066726f6e742072756e6e696e672061747461636b732e45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a7231582050bb2b0908e431b4347b14b9f305d315decc90ddfa580ef14f83313b5c74065164736f6c63430005100032", - "sourceMap": "562:29:5:-;59:878:9;562:29:5;;59:878:9;562:29:5;;;-1:-1:-1;;;562:29:5;;;;;;;;;;:::i;:::-;;160:10:3;131:39;;145:287:9;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;145:287:9;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;145:287:9;;420:4:-1;411:14;;;;145:287:9;;;;;411:14:-1;145:287:9;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;145:287:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;145:287:9;;420:4:-1;411:14;;;;145:287:9;;;;;411:14:-1;145:287:9;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;145:287:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;145:287:9;;;;;;;;;;;;;;;;;;;-1:-1:-1;145:287:9;;-1:-1:-1;338:5:9;345:7;145:287;;;;338:5;345:7;145:287;698:17:14;718:12;-1:-1:-1;;;;;718:10:14;:12;:::i;:::-;740:6;:18;;-1:-1:-1;;;;;;740:18:14;-1:-1:-1;;;;;740:18:14;;;;;;;773:43;;740:18;;-1:-1:-1;740:18:14;773:43;;740:6;;773:43;-1:-1:-1;504:12:16;;;;:5;;:12;;;;;:::i;:::-;-1:-1:-1;526:16:16;;;;:7;;:16;;;;;:::i;:::-;-1:-1:-1;552:9:16;:20;;-1:-1:-1;;552:20:16;;;;;;;;;;;;-1:-1:-1;;;;;;;4049:15:5;:54;-1:-1:-1;;;;;4113:15:5;:54;-1:-1:-1;;;;;4177:15:5;:54;-1:-1:-1;;;;;4241:15:5;:54;-1:-1:-1;;;;;4305:15:5;:54;-1:-1:-1;;;;;4369:15:5;:54;-1:-1:-1;;;;;4433:15:5;:54;-1:-1:-1;;;;;4497:15:5;:54;-1:-1:-1;;;;;4561:15:5;:54;-1:-1:-1;;;;;4625:15:5;:54;-1:-1:-1;;;;;4689:15:5;:54;-1:-1:-1;;;;;4753:15:5;:54;-1:-1:-1;;;;;4817:15:5;:54;-1:-1:-1;;;;;4881:15:5;:54;-1:-1:-1;;;;;4945:15:5;:54;-1:-1:-1;;;;;5009:15:5;:54;-1:-1:-1;;;;;5073:15:5;:54;-1:-1:-1;;;;;5137:15:5;:54;-1:-1:-1;;;;;5201:15:5;:54;-1:-1:-1;;;;;5265:15:5;:54;-1:-1:-1;;;;;5329:15:5;:54;-1:-1:-1;;;;;5393:15:5;:54;-1:-1:-1;;;;;5457:15:5;:54;-1:-1:-1;;;;;5521:15:5;:54;-1:-1:-1;;;;;5585:15:5;:54;-1:-1:-1;;;;;5649:15:5;:54;-1:-1:-1;;;;;5713:15:5;:54;-1:-1:-1;;;;;5777:15:5;:54;-1:-1:-1;;;;;5841:15:5;:54;-1:-1:-1;;;;;5905:15:5;:54;-1:-1:-1;;;;;5969:15:5;:54;-1:-1:-1;;;;;6033:15:5;:54;-1:-1:-1;;;;;6097:15:5;:54;-1:-1:-1;;;;;6161:15:5;:54;-1:-1:-1;;;;;6225:15:5;:54;-1:-1:-1;;;;;6289:15:5;:54;-1:-1:-1;;;;;6353:15:5;:54;-1:-1:-1;;;;;6417:15:5;:54;-1:-1:-1;;;;;6481:15:5;:54;-1:-1:-1;;;;;6545:15:5;:54;-1:-1:-1;;;;;6609:15:5;:54;-1:-1:-1;;;;;6673:15:5;:54;-1:-1:-1;;;;;6737:15:5;:54;-1:-1:-1;;;;;6801:15:5;:54;-1:-1:-1;;;;;6865:15:5;:54;6947:36;6929:15;:54;7011:36;6993:15;:54;7075:36;7057:15;:54;7139:36;7121:15;:54;7203:36;7185:15;:54;7267:36;7249:15;:54;7331:36;7313:15;:54;7395:36;7377:15;:54;7459:36;7441:15;:54;7523:36;7505:15;:54;7587:36;7569:15;:54;7651:36;7633:15;:54;7715:36;7697:15;:54;7779:36;7761:15;:54;7843:36;7825:15;:54;7907:36;7889:15;:54;7971:36;7953:15;:54;8035:36;8017:15;:54;-1:-1:-1;;;;;8081:15:5;:54;8163:36;8145:15;:54;8227:36;8209:15;:54;8291:36;8273:15;:54;8355:36;8337:15;:54;8420:36;8401:16;:55;8485:36;8466:16;:55;8550:36;8531:16;:55;8615:36;8596:16;:55;8680:36;8661:16;:55;8745:36;8726:16;:55;8810:36;8791:16;:55;8875:36;8856:16;:55;8940:36;8921:16;:55;9005:36;8986:16;:55;9070:36;9051:16;:55;9135:36;9116:16;:55;9200:36;9181:16;:55;9265:36;9246:16;:55;9330:36;9311:16;:55;9395:36;9376:16;:55;9460:36;9441:16;:55;9525:36;9506:16;:55;9590:36;9571:16;:55;9655:36;9636:16;:55;9720:36;9701:16;:55;9785:36;9766:16;:55;9850:36;9831:16;:55;9915:36;9896:16;:55;9980:36;9961:16;:55;10045:36;10026:16;:55;10110:36;10091:16;:55;10175:36;10156:16;:55;492:12:1;:28;;-1:-1:-1;;492:28:1;;;;;;;;;;;;871:33:7;877:10;889:14;871:5;:33::i;:::-;-1:-1:-1;;416:9:9;406:7;:19;-1:-1:-1;59:878:9;;-1:-1:-1;;;;;;;59:878:9;788:96:10;867:10;788:96;;:::o;5962:302:15:-;-1:-1:-1;;;;;6037:21:15;;6029:65;;;;;-1:-1:-1;;;6029:65:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;6120:24;6137:6;6120:12;;:16;;;;;;:24;;;;:::i;:::-;6105:12;:39;-1:-1:-1;;;;;6175:18:15;;;;;;:9;:18;;;;;;;;;:30;;6198:6;;6175:22;;;;;:30;;:::i;:::-;-1:-1:-1;;;;;6154:18:15;;;;;;:9;:18;;;;;;;;:51;;;;6220:37;;;;;;;6154:18;;;;6220:37;;;;;;;;;;5962:302;;:::o;834:176:13:-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:13:o;59:878:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;59:878:9;;;-1:-1:-1;59:878:9;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;", - "deployedSourceMap": "59:878:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;469:6;:4;:6::i;:::-;59:878;644:81:16;;8:9:-1;5:2;;;30:1;27;20:12;5:2;644:81:16;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;644:81:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2500:149:15;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2500:149:15;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2500:149:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;408:26:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;408:26:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;533:206;;8:9:-1;5:2;;;30:1;27;20:12;5:2;533:206:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;533:206:1;;:::i;:::-;;;;;;;;;;;;;;;;1559:89:15;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1559:89:15;;;:::i;3107:300::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3107:300:15;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3107:300:15;;;;;;;;;;;;;;;;;:::i;1129:975:4:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1129:975:4;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;1129:975:4;;;;;;;;;;;;;;;;;;;:::i;1472:81:16:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1472:81:16;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3802:207:15;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3802:207:15;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3802:207:15;;;;;;;;:::i;131:39:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;131:39:3;;;:::i;657:184:9:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;657:184:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;657:184:9;;:::i;2789:1165:4:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2789:1165:4;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;2789:1165:4;;;;;;;;;;;;;;;;;;;:::i;562:29:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;562:29:5;;;:::i;1706:108:15:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1706:108:15;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1706:108:15;-1:-1:-1;;;;;1706:108:15;;:::i;1684:137:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1684:137:14;;;:::i;745:208:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;745:208:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;745:208:1;;:::i;899:77:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;899:77:14;;;:::i;:::-;;;;-1:-1:-1;;;;;899:77:14;;;;;;;;;;;;;;1250:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1250:92:14;;;:::i;838:85:16:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;838:85:16;;;:::i;1805:132:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1805:132:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1805:132:7;;:::i;847:84:9:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;847:84:9;;;:::i;4496:258:15:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4496:258:15;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4496:258:15;;;;;;;;:::i;2017:155::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2017:155:15;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2017:155:15;;;;;;;;:::i;1943:150:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1943:150:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1943:150:7;;;;;;;;:::i;347:98:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;347:98:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;347:98:3;;:::i;917:125:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;917:125:7;;;:::i;2230:132:15:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2230:132:15;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2230:132:15;;;;;;;;;;:::i;1970:107:14:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1970:107:14;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1970:107:14;-1:-1:-1;;;;;1970:107:14;;:::i;484:167:9:-;547:9;566:31;547:9;566:15;:31::i;:::-;-1:-1:-1;617:7:9;;:27;;629:14;617:27;:11;:27;:::i;:::-;607:7;:37;-1:-1:-1;484:167:9:o;644:81:16:-;713:5;706:12;;;;;;;;-1:-1:-1;;706:12:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;681:13;;706:12;;713:5;;706:12;;713:5;706:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:81;:::o;2500:149:15:-;2566:4;2582:39;2591:12;:10;:12::i;:::-;2605:7;2614:6;2582:8;:39::i;:::-;-1:-1:-1;2638:4:15;2500:149;;;;;:::o;408:26:1:-;;;;;;:::o;533:206::-;613:4;636:96;660:18;:16;:18::i;:::-;680:16;:14;:16::i;:::-;698:12;;;;712:19;636:23;:96::i;:::-;629:103;;533:206;;;;:::o;1559:89:15:-;1629:12;;1559:89;:::o;3107:300::-;3196:4;3212:36;3222:6;3230:9;3241:6;3212:9;:36::i;:::-;3258:121;3267:6;3275:12;:10;:12::i;:::-;3289:89;3327:6;3289:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3289:19:15;;;;;;:11;:19;;;;;;3309:12;:10;:12::i;:::-;-1:-1:-1;;;;;3289:33:15;;;;;;;;;;;;-1:-1:-1;3289:33:15;;;:89;;:37;:89;:::i;:::-;3258:8;:121::i;:::-;-1:-1:-1;3396:4:15;3107:300;;;;;:::o;1129:975:4:-;1304:7;1371:1;1361:7;:11;:34;;;;;1394:1;1376:15;:19;1361:34;:55;;;;;1415:1;1399:13;:17;;;1361:55;:93;;;;-1:-1:-1;450:7:4;1420:34;;;;;1361:93;1353:121;;;;;-1:-1:-1;;;1353:121:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;1533:19;1529:58;;-1:-1:-1;1575:1:4;1568:8;;1529:58;1644:34;;;450:7;1644:34;1640:120;;;1701:48;1733:15;1701:27;:7;1713:14;1701:27;:11;:27;:::i;:::-;:31;:48;:31;:48;:::i;:::-;1694:55;;;;1640:120;1769:14;;;1834:35;:14;1853:15;1834:35;:18;:35;:::i;:::-;1818:51;;1901:85;1920:5;1927:15;1944:13;450:7;1901:5;:85::i;:::-;1879:107;;-1:-1:-1;1879:107:4;-1:-1:-1;1996:22:4;2021:32;;;:19;:7;1879:107;2021:19;:11;:19;:::i;:::-;:32;;;-1:-1:-1;2070:27:4;2021:32;2089:7;2070:27;:18;:27;:::i;:::-;2063:34;;;;;;1129:975;;;;;;;:::o;1472:81:16:-;1537:9;;;;1472:81;:::o;3802:207:15:-;3882:4;3898:83;3907:12;:10;:12::i;:::-;3921:7;3930:50;3969:10;3930:11;:25;3942:12;:10;:12::i;:::-;-1:-1:-1;;;;;3930:25:15;;;;;;;;;;;;;;;;;-1:-1:-1;3930:25:15;;;:34;;;;;;;;;;;:50;:38;:50;:::i;131:39:3:-;;;;:::o;657:184:9:-;702:17;722:24;738:7;722:15;:24::i;:::-;766:7;;702:44;;-1:-1:-1;766:25:9;;702:44;766:25;:11;:25;:::i;:::-;756:7;:35;801:33;;:10;;:33;;;;;821:12;;801:33;;;;821:12;801:10;:33;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;801:33:9;657:184;;:::o;2789:1165:4:-;2957:7;3024:1;3014:7;:11;:34;;;;;3047:1;3029:15;:19;3014:34;:55;;;;;3068:1;3052:13;:17;;;3014:55;:93;;;;-1:-1:-1;450:7:4;3073:34;;;;;3014:93;:119;;;;;3126:7;3111:11;:22;;3014:119;3006:147;;;;;-1:-1:-1;;;3006:147:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;3209:16;3205:55;;-1:-1:-1;3248:1:4;3241:8;;3205:55;3342:7;3327:11;:22;3323:75;;;-1:-1:-1;3372:15:4;3365:22;;3323:75;3455:34;;;450:7;3455:34;3451:117;;;3512:45;3549:7;3512:32;:15;3532:11;3512:32;:19;:32;:::i;3451:117::-;3577:14;;;3642:24;:7;3654:11;3642:24;:11;:24;:::i;:::-;3626:40;;3698:77;3717:7;3726:5;450:7;3752:13;3698:5;:77::i;:::-;3676:99;;-1:-1:-1;3676:99:4;-1:-1:-1;3785:18:4;3806:27;:15;3676:99;3806:27;:19;:27;:::i;:::-;3785:48;-1:-1:-1;3864:28:4;;;;;;3909:38;3940:6;3909:26;3785:48;3864:28;3909:26;:14;:26;:::i;:38::-;3902:45;2789:1165;-1:-1:-1;;;;;;;;;;2789:1165:4:o;562:29:5:-;;;;;;;;;;;;;;;-1:-1:-1;;562:29:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1706:108:15:-;-1:-1:-1;;;;;1789:18:15;1763:7;1789:18;;;:9;:18;;;;;;;1706:108::o;1684:137:14:-;1103:9;:7;:9::i;:::-;1095:54;;;;;-1:-1:-1;;;1095:54:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1782:1;1766:6;;1745:40;;-1:-1:-1;;;;;1766:6:14;;;;1745:40;;1782:1;;1745:40;1812:1;1795:19;;;;;;1684:137::o;745:208:1:-;828:4;851:95;871:18;:16;:18::i;:::-;891:16;:14;:16::i;:::-;909:12;;;;923:22;851:19;:95::i;899:77:14:-;937:7;963:6;-1:-1:-1;;;;;963:6:14;899:77;:::o;1250:92::-;1290:4;1329:6;;-1:-1:-1;;;;;1329:6:14;1313:12;:10;:12::i;:::-;-1:-1:-1;;;;;1313:22:14;;1306:29;;1250:92;:::o;838:85:16:-;909:7;902:14;;;;;;;;-1:-1:-1;;902:14:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;877:13;;902:14;;909:7;;902:14;;909:7;902:14;;;;;;;;;;;;;;;;;;;;;;;;1805:132:7;1859:26;1865:10;1877:7;1859:5;:26::i;:::-;1900:30;;;1907:10;1900:30;;;;;;;;1928:1;1900:30;;;;;;;;;;;;;;;1805:132;:::o;847:84:9:-;917:7;;847:84;:::o;4496:258:15:-;4581:4;4597:129;4606:12;:10;:12::i;:::-;4620:7;4629:96;4668:15;4629:96;;;;;;;;;;;;;;;;;:11;:25;4641:12;:10;:12::i;:::-;-1:-1:-1;;;;;4629:25:15;;;;;;;;;;;;;;;;;-1:-1:-1;4629:25:15;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;2017:155::-;2086:4;2102:42;2112:12;:10;:12::i;:::-;2126:9;2137:6;2102:9;:42::i;1943:150:7:-;2016:25;2026:5;2033:7;2016:9;:25::i;:::-;2056:30;;;2063:10;2056:30;;;;;;;;2084:1;2056:30;;;;;;;;;;;;;;;1943:150;;:::o;347:98:3:-;1103:9:14;:7;:9::i;:::-;1095:54;;;;;-1:-1:-1;;;1095:54:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;416:11:3;:22;347:98::o;917:125:7:-;966:4;989:13;:11;:13::i;:::-;982:20;;917:125;:::o;2230:132:15:-;-1:-1:-1;;;;;2328:18:15;;;2302:7;2328:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2230:132::o;1970:107:14:-;1103:9;:7;:9::i;:::-;1095:54;;;;;-1:-1:-1;;;1095:54:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2042:28;2061:8;2042:18;:28::i;:::-;1970:107;:::o;1048:336:7:-;1120:4;235:11:3;;220;:26;;212:111;;;;-1:-1:-1;;;212:111:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1155:1:7;1144:8;:12;1136:50;;;;;-1:-1:-1;;;1136:50:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;1197:17;1217:33;1241:8;1217:23;:33::i;:::-;1197:53;;1260:31;1266:10;1278:12;1260:5;:31::i;:::-;1306:42;;;1313:10;1306:42;;;;;;;;;;;;;;;;;;;;;;;;;1365:12;1048:336;-1:-1:-1;;1048:336:7:o;834:176:13:-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:13:o;788:96:10:-;867:10;788:96;:::o;7350:332:15:-;-1:-1:-1;;;;;7443:19:15;;7435:68;;;;-1:-1:-1;;;7435:68:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7521:21:15;;7513:68;;;;-1:-1:-1;;;7513:68:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7592:18:15;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7643:32;;;;;;;;;;;;;;;;;7350:332;;;:::o;5228:464::-;-1:-1:-1;;;;;5325:20:15;;5317:70;;;;-1:-1:-1;;;5317:70:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5405:23:15;;5397:71;;;;-1:-1:-1;;;5397:71:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5499;5521:6;5499:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5499:17:15;;;;;;:9;:17;;;;;;;:71;;:21;:71;:::i;:::-;-1:-1:-1;;;;;5479:17:15;;;;;;;:9;:17;;;;;;:91;;;;5603:20;;;;;;;:32;;5628:6;5603:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;5580:20:15;;;;;;;:9;:20;;;;;;;;;:55;;;;5650:35;;;;;;;5580:20;;5650:35;;;;;;;;;;;;;5228:464;;;:::o;1732:187:13:-;1818:7;1853:12;1845:6;;;;1837:29;;;;-1:-1:-1;;;1837:29:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1837:29:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1888:5:13;;;1732:187::o;2159:459::-;2217:7;2458:6;2454:45;;-1:-1:-1;2487:1:13;2480:8;;2454:45;2521:5;;;2525:1;2521;:5;:1;2544:5;;;;;:10;2536:56;;;;-1:-1:-1;;;2536:56:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3073:130;3131:7;3157:39;3161:1;3164;3157:39;;;;;;;;;;;;;;;;;:3;:39::i;11604:892:5:-;11740:7;11749:5;1161:35;11778:6;:16;11770:53;;;;;-1:-1:-1;;;11770:53:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;11851:6;11841;:16;;11833:57;;;;;-1:-1:-1;;;11833:57:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;11901:15;11926:12;11960:6;-1:-1:-1;;;11941:6:5;:16;:25;;;;;;11926:40;;1585:35;11980:4;:22;11976:136;;;12028:16;12039:4;12028:10;:16::i;:::-;12018:26;;11976:136;;;12085:16;12096:4;12085:10;:16::i;:::-;12075:26;;11976:136;12122:23;12166:5;12148:23;;12158:5;12148:15;;:7;:15;:23;;;;;;12122:49;;1669:35;12185:15;:33;12181:309;;;12242:27;12253:15;12242:10;:27::i;:::-;772:3;12234:51;;;;;;;;;12181:309;12316:15;12334:42;12360:15;12334:25;:42::i;:::-;12316:60;;12398:69;12445:9;772:3;12429:25;12409:46;;:15;:46;;12457:9;12398:10;:69::i;:::-;12390:89;-1:-1:-1;12469:9:5;-1:-1:-1;12390:89:5;;-1:-1:-1;;;12390:89:5;11604:892;;;;;;;;:::o;1274:134:13:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;1390:409:7:-;1461:4;235:11:3;;220;:26;;212:111;;;;-1:-1:-1;;;212:111:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1495:1:7;1485:7;:11;1477:48;;;;;-1:-1:-1;;;1477:48:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;1568:7;1543:21;1553:10;1543:9;:21::i;:::-;:32;;1535:73;;;;;-1:-1:-1;;;1535:73:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;1619:17;1639:32;1663:7;1639:23;:32::i;:::-;1619:52;;1681:26;1687:10;1699:7;1681:5;:26::i;:::-;1722:41;;;1729:10;1722:41;;;;;;;;;;;;;;;;;;;;;;;;;1780:12;1390:409;-1:-1:-1;;1390:409:7:o;6583:342:15:-;-1:-1:-1;;;;;6658:21:15;;6650:67;;;;-1:-1:-1;;;6650:67:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6749:68;6772:6;6749:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6749:18:15;;;;;;:9;:18;;;;;;;:68;;:22;:68;:::i;:::-;-1:-1:-1;;;;;6728:18:15;;;;;;:9;:18;;;;;:89;6842:12;;:24;;6859:6;6842:24;:16;:24;:::i;:::-;6827:12;:39;6881:37;;;;;;;;6907:1;;-1:-1:-1;;;;;6881:37:15;;;;;;;;;;;;6583:342;;:::o;7860:229::-;7931:22;7937:7;7946:6;7931:5;:22::i;:::-;7963:119;7972:7;7981:12;:10;:12::i;:::-;7995:86;8034:6;7995:86;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7995:20:15;;;;;;:11;:20;;;;;;8016:12;:10;:12::i;7963:119::-;7860:229;;:::o;2178:225:14:-;-1:-1:-1;;;;;2251:22:14;;2243:73;;;;-1:-1:-1;;;2243:73:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2352:6;;;2331:38;;-1:-1:-1;;;;;2331:38:14;;;;2352:6;;;2331:38;;;2379:6;:17;;;;-1:-1:-1;;;;;2379:17:14;;;;;;;;;;2178:225::o;5962:302:15:-;-1:-1:-1;;;;;6037:21:15;;6029:65;;;;;-1:-1:-1;;;6029:65:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;6120:12;;:24;;6137:6;6120:24;:16;:24;:::i;:::-;6105:12;:39;-1:-1:-1;;;;;6175:18:15;;;;;;:9;:18;;;;;;:30;;6198:6;6175:30;:22;:30;:::i;:::-;-1:-1:-1;;;;;6154:18:15;;;;;;:9;:18;;;;;;;;:51;;;;6220:37;;;;;;;6154:18;;;;6220:37;;;;;;;;;;5962:302;;:::o;3718:338:13:-;3804:7;3904:12;3897:5;3889:28;;;;-1:-1:-1;;;3889:28:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3889:28:13;;3927:9;3943:1;3939;:5;;;;;;;3718:338;-1:-1:-1;;;;;3718:338:13:o;19589:2397:5:-;19643:7;;;;;19755:34;19750:39;;19746:143;;19799:34;19792:41;;;;19853:34;-1:-1:-1;;;19839:1:5;:11;:48;;;;;;19835:52;;19746:143;19907:34;19902:1;:39;19898:143;;19951:34;19944:41;;;;20005:34;-1:-1:-1;;;19991:1:5;:11;:48;;;;;;19987:52;;19898:143;20059:34;20054:1;:39;20050:143;;20103:34;20096:41;;;;20157:34;-1:-1:-1;;;20143:1:5;:11;:48;;;;;;20139:52;;20050:143;20211:34;20206:1;:39;20202:143;;20255:34;20248:41;;;;20309:34;-1:-1:-1;;;20295:1:5;:11;:48;;;;;;20291:52;;20202:143;20363:34;20358:1;:39;20354:143;;20407:34;20400:41;;;;20461:34;-1:-1:-1;;;20447:1:5;:11;:48;;;;;;20443:52;;20354:143;20515:34;20510:1;:39;20506:143;;20559:34;20552:41;;;;20613:34;-1:-1:-1;;;20599:1:5;:11;:48;;;;;;20595:52;;20506:143;20667:34;20662:1;:39;20658:143;;20711:34;20704:41;;;;20765:34;-1:-1:-1;;;20751:1:5;:11;:48;;;;;;20747:52;;20658:143;20819:34;20814:1;:39;20810:143;;20863:34;20856:41;;;;20917:34;-1:-1:-1;;;20903:1:5;:11;:48;;;;;;20899:52;;20810:143;20971:11;;;;-1:-1:-1;20971:11:5;;-1:-1:-1;;;;20996:5:5;;;:15;;-1:-1:-1;;;;21033:39:5;;;21028:45;;:83;21021:90;;;;-1:-1:-1;;;21121:1:5;21117;:5;:15;;;;;;21113:19;;21197:35;21192:1;21154:35;:39;21149:1;:45;:83;;;;;;21142:90;;;;-1:-1:-1;;;21242:1:5;21238;:5;:15;;;;;;21234:19;;21318:35;21313:1;21275:35;:39;21270:1;:45;:83;;;;;;21263:90;;;;-1:-1:-1;;;21363:1:5;21359;:5;:15;;;;;;21355:19;;21439:35;21434:1;21396:35;:39;21391:1;:45;:83;;;;;;21384:90;;;;-1:-1:-1;;;21484:1:5;21480;:5;:15;;;;;;21476:19;;21560:35;21555:1;21517:35;:39;21512:1;:45;:83;;;;;;21505:90;;;;-1:-1:-1;;;21605:1:5;21601;:5;:15;;;;;;21597:19;;21681:35;21676:1;21638:35;:39;21633:1;:45;:83;;;;;;21626:90;;;;-1:-1:-1;;;21726:1:5;21722;:5;:15;;;;;;21718:19;;21802:35;21797:1;21759:35;:39;21754:1;:45;:83;;;;;;21747:90;;;;-1:-1:-1;;;21847:1:5;21843;:5;:15;;;;;;21839:19;;21923:35;21918:1;21880:35;:39;21875:1;:45;:83;;;;;;21868:90;;;;;19589:2397;-1:-1:-1;;;;;19589:2397:5:o;12661:826::-;12716:7;;12772:2;-1:-1:-1;;;12880:12:5;;12876:152;;12908:11;12922:22;-1:-1:-1;;;12932:1:5;:11;12922:9;:22::i;:::-;12958:11;;-1:-1:-1;;;13002:15:5;;;-1:-1:-1;12958:11:5;;;;;-1:-1:-1;12876:152:5;-1:-1:-1;;;13133:1:5;:11;13129:297;;;772:3;13160:256;13190:5;;;;13160:256;;-1:-1:-1;;;13225:5:5;;;13224:17;13220:21;;-1:-1:-1;;;13280:1:5;:12;13276:126;;13322:1;13316:7;;;;;13381:1;13377;:5;13369:14;;629:1;13369:14;;13362:21;;;;13276:126;-1:-1:-1;;13197:3:5;13160:256;;;;13129:297;1398:33;1316;13443:19;;:37;;12661:826;-1:-1:-1;;;;12661:826:5:o;22157:2980::-;22211:7;22555:18;-1:-1:-1;;;22303:38:5;;;22355:5;;;:15;;;22441:5;;;:15;;;22527:5;;;:15;;;22551:22;;;22383:18;22379:22;;;22469:18;22465:22;;;;22458:29;22544;;22303:38;;22613:5;;;:15;22609:19;;22637:1;22641:18;22637:22;22630:29;;;;-1:-1:-1;;;22703:1:5;22699;:5;:15;;;;;;22695:19;;22723:1;22727:18;22723:22;22716:29;;;;-1:-1:-1;;;22789:1:5;22785;:5;:15;;;;;;22781:19;;22809:1;22813:18;22809:22;22802:29;;;;-1:-1:-1;;;22875:1:5;22871;:5;:15;;;;;;22867:19;;22895:1;22899:18;22895:22;22888:29;;;;-1:-1:-1;;;22961:1:5;22957;:5;:15;;;;;;22953:19;;22981:1;22985:18;22981:22;22974:29;;;;-1:-1:-1;;;23047:1:5;23043;:5;:15;;;;;;23039:19;;23067:1;23071:18;23067:22;23060:29;;;;-1:-1:-1;;;23133:1:5;23129;:5;:15;;;;;;23125:19;;23153:1;23157:18;23153:22;23146:29;;;;-1:-1:-1;;;23219:1:5;23215;:5;:15;;;;;;23211:19;;23239:1;23243:18;23239:22;23232:29;;;;-1:-1:-1;;;23305:1:5;23301;:5;:15;;;;;;23297:19;;23325:1;23329:18;23325:22;23318:29;;;;-1:-1:-1;;;23391:1:5;23387;:5;:15;;;;;;23383:19;;23411:1;23415:18;23411:22;23404:29;;;;-1:-1:-1;;;23477:1:5;23473;:5;:15;;;;;;23469:19;;23497:1;23501:18;23497:22;23490:29;;;;-1:-1:-1;;;23563:1:5;23559;:5;:15;;;;;;23555:19;;23583:1;23587:18;23583:22;23576:29;;;;-1:-1:-1;;;23649:1:5;23645;:5;:15;;;;;;23641:19;;23669:1;23673:18;23669:22;23662:29;;;;-1:-1:-1;;;23735:1:5;23731;:5;:15;;;;;;23727:19;;23755:1;23759:18;23755:22;23748:29;;;;-1:-1:-1;;;23821:1:5;23817;:5;:15;;;;;;23813:19;;23841:1;23845:18;23841:22;23834:29;;;;-1:-1:-1;;;23907:1:5;23903;:5;:15;;;;;23997:18;23903:15;;;23920:29;;;23991:24;:28;;-1:-1:-1;;;23991:38:5;;23903:15;-1:-1:-1;24099:35:5;24095:39;;24094:46;24090:137;;24192:35;24154;24148:41;;:79;24142:85;;24090:137;24246:35;24242:39;;24241:46;24237:137;;24339:35;24301;24295:41;;:79;24289:85;;24237:137;24393:35;24389:39;;24388:46;24384:137;;24486:35;24448;24442:41;;:79;24436:85;;24384:137;-1:-1:-1;;;24536:39:5;;24535:46;24531:137;;24633:35;24595;24589:41;;:79;24583:85;;24531:137;-1:-1:-1;;;24683:39:5;;24682:46;24678:137;;24780:35;24742;24736:41;;:79;24730:85;;24678:137;24834:35;24830:39;;24829:46;24825:137;;24927:35;24889;24883:41;;:79;24877:85;;24825:137;24981:35;24977:39;;24976:46;24972:137;;25074:35;25036;25030:41;;:79;25024:85;;24972:137;-1:-1:-1;25127:3:5;;22157:2980;-1:-1:-1;;;22157:2980:5:o;14495:508::-;14569:5;725:2;772:3;14659:179;14675:2;14666:11;;:2;14671:1;14666:6;:11;;;14659:179;;;14693:9;14717:1;14705:13;14706:7;;;14705:13;;14693:25;;14756:2;14736:11;14748:3;14736:16;;;;;;;;;;;:22;14732:95;;14781:3;14776:8;;14732:95;;;14824:3;14819:8;;14732:95;14659:179;;;;14871:2;14852:11;14864:2;14852:15;;;;;;;;;;;:21;14848:48;;14894:2;-1:-1:-1;14887:9:5;;-1:-1:-1;14887:9:5;14848:48;14929:2;14910:11;14922:2;14910:15;;;;;;;;;;;:21;14906:48;;-1:-1:-1;14952:2:5;-1:-1:-1;14945:9:5;;14906:48;14965:13;15587:3826;15660:7;15679:10;15692:2;15679:15;;15704:11;15718:1;15704:15;;15748:10;15735:23;;15741:2;15736;:7;15735:23;;15730:28;;15767:2;15772:33;15767:38;15760:45;;;;15859:10;15846:23;;15852:2;15847;:7;15846:23;;15841:28;;15878:2;15883:33;15878:38;15871:45;;;;15970:10;15957:23;;15963:2;15958;:7;15957:23;;15952:28;;15989:2;15994:33;15989:38;15982:45;;;;16081:10;16068:23;;16074:2;16069;:7;16068:23;;16063:28;;16100:2;16105:33;16100:38;16093:45;;;;16192:10;16179:23;;16185:2;16180;:7;16179:23;;16174:28;;16211:2;16216:33;16211:38;16204:45;;;;16303:10;16290:23;;16296:2;16291;:7;16290:23;;16285:28;;16322:2;16327:33;16322:38;16315:45;;;;16414:10;16401:23;;16407:2;16402;:7;16401:23;;16396:28;;16433:2;16438:33;16433:38;16426:45;;;;16525:10;16512:23;;16518:2;16513;:7;16512:23;;16507:28;;16544:2;16549:33;16544:38;16537:45;;;;16636:10;16623:23;;16629:2;16624;:7;16623:23;;16618:28;;16655:2;16660:33;16655:38;16648:45;;;;16747:10;16734:23;;16740:2;16735;:7;16734:23;;16729:28;;16766:2;16771:33;16766:38;16759:45;;;;16858:10;16845:23;;16851:2;16846;:7;16845:23;;16840:28;;16877:2;16882:33;16877:38;16870:45;;;;16969:10;16956:23;;16962:2;16957;:7;16956:23;;16951:28;;16988:2;16993:33;16988:38;16981:45;;;;17080:10;17067:23;;17073:2;17068;:7;17067:23;;17062:28;;17099:2;17104:33;17099:38;17092:45;;;;17191:10;17178:23;;17184:2;17179;:7;17178:23;;17173:28;;17210:2;17215:33;17210:38;17203:45;;;;17302:10;17289:23;;17295:2;17290;:7;17289:23;;17284:28;;17321:2;17326:33;17321:38;17314:45;;;;17413:10;17400:23;;17406:2;17401;:7;17400:23;;17395:28;;17432:2;17437:33;17432:38;17425:45;;;;17524:10;17511:23;;17517:2;17512;:7;17511:23;;17506:28;;17543:2;17548:33;17543:38;17536:45;;;;17635:10;17622:23;;17628:2;17623;:7;17622:23;;17617:28;;17654:2;17659:33;17654:38;17647:45;;;;17746:10;17733:23;;17739:2;17734;:7;17733:23;;17728:28;;17765:2;17770:33;17765:38;17758:45;;;;17857:10;17844:23;;17850:2;17845;:7;17844:23;;17839:28;;17876:2;17881:33;17876:38;17869:45;;;;17968:10;17955:23;;17961:2;17956;:7;17955:23;;17950:28;;17987:2;17992:33;17987:38;17980:45;;;;18079:10;18066:23;;18072:2;18067;:7;18066:23;;18061:28;;18098:2;18103:33;18098:38;18091:45;;;;18190:10;18177:23;;18183:2;18178;:7;18177:23;;18172:28;;18209:2;18214:33;18209:38;18202:45;;;;18301:10;18288:23;;18294:2;18289;:7;18288:23;;18283:28;;18320:2;18325:33;18320:38;18313:45;;;;18412:10;18399:23;;18405:2;18400;:7;18399:23;;18394:28;;18431:2;18436:33;18431:38;18424:45;;;;18523:10;18510:23;;18516:2;18511;:7;18510:23;;18505:28;;18542:2;18547:33;18542:38;18535:45;;;;18634:10;18621:23;;18627:2;18622;:7;18621:23;;18616:28;;18653:2;18658:33;18653:38;18646:45;;;;18745:10;18732:23;;18738:2;18733;:7;18732:23;;18727:28;;18764:2;18769:33;18764:38;18757:45;;;;18856:10;18843:23;;18849:2;18844;:7;18843:23;;18838:28;;18875:2;18880:33;18875:38;18868:45;;;;18967:10;18954:23;;18960:2;18955;:7;18954:23;;18949:28;;18986:2;18991:33;18986:38;18979:45;;;;19078:10;19065:23;;19071:2;19066;:7;19065:23;;19060:28;;19097:2;19102:33;19097:38;19090:45;;;;19189:10;19176:23;;19182:2;19177;:7;19176:23;;19171:28;;19208:2;19213:33;19208:38;19201:45;;;;19345:10;19338:17;;629:1;19338:17;;19332:2;19296:33;19290:3;:39;;;;;;:44;:66;;15587:3826;-1:-1:-1;;;;;15587:3826:5:o;13602:532::-;13656:5;;13708:2;13729:3;13725:7;;13721:386;;;13784:80;13795:1;13791;:5;13784:80;;;13822:1;13841:8;;;;13816:7;13784:80;;;13721:386;;;13945:3;13930:167;13950:5;;;;13930:167;;629:1;13994:8;;;;13988:15;;13984:99;;14056:8;;;;14027:7;;;;;;;;13984:99;13963:1;13957:7;;;13930:167;;;;13721:386;-1:-1:-1;14124:3:5;13602:532;-1:-1:-1;;13602:532:5:o", - "source": "pragma solidity ^0.5.2;\n\nimport \"./ContinuousToken.sol\";\n\n\ncontract ETHContinuousToken is ContinuousToken {\n uint256 internal reserve;\n \n constructor(\n string memory _name,\n string memory _symbol,\n uint8 _decimals,\n uint _initialSupply,\n uint32 _reserveRatio\n ) public payable ContinuousToken(_name, _symbol, _decimals, _initialSupply, _reserveRatio) {\n reserve = msg.value;\n }\n\n function () external payable { mint(); }\n\n function mint() public payable {\n uint purchaseAmount = msg.value;\n _continuousMint(purchaseAmount);\n reserve = reserve.add(purchaseAmount);\n }\n\n function burn(uint _amount) public {\n uint refundAmount = _continuousBurn(_amount);\n reserve = reserve.sub(refundAmount);\n msg.sender.transfer(refundAmount);\n }\n\n function reserveBalance() public view returns (uint) {\n return reserve;\n } \n}", - "sourcePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/token/ETHContinuousToken.sol", + "bytecode": "0x60c0604052600360808190527f302e33000000000000000000000000000000000000000000000000000000000060a090815262000040916007919062000b63565b50670de0b6b3a764000060895560405162003da538038062003da5833981018060405260a08110156200007257600080fd5b8101908080516401000000008111156200008b57600080fd5b820160208101848111156200009f57600080fd5b8151640100000000811182820187101715620000ba57600080fd5b50509291906020018051640100000000811115620000d757600080fd5b82016020810184811115620000eb57600080fd5b81516401000000008111828201871017156200010657600080fd5b505060208201516040830151606090930151919450925084848484848085858560006200013b640100000000620009bf810204565b60008054600160a060020a031916600160a060020a0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35082516200019a90600490602086019062000b63565b508151620001b090600590602085019062000b63565b506006805460ff191660ff9290921691909117905550506001606060020a641c35fedd1502036028556001605e60020a646c3390ecc902036029556001606160020a640cf80147610203602a556001605f60020a6431bdb23e1d0203602b556001605b60020a6502fb1d8fe0830203602c556001605a60020a6505b771955b370203602d556001605960020a650af67a93bb510203602e556001605860020a6515060c256cb30203602f556001605860020a651428a2f98d7302036030556001605660020a654d515663970902036031556001605560020a65944620b0e70f02036032557011c592761c666fffffffffffffffffffff60335570110a688680a757ffffffffffffffffffff603455701056f1b5bedf77ffffffffffffffffffff603555700faadceceeff8bffffffffffffffffffff603655700f05dc6b27edadffffffffffffffffffff603755700e67a5a25da4107fffffffffffffffffff603855700dcff115b14eedffffffffffffffffffff603955700d3e7a392431239fffffffffffffffffff603a55700cb2ff529eb71e4fffffffffffffffffff603b55700c2d415c3db974afffffffffffffffffff603c55700bad03e7d883f69bffffffffffffffffff603d55700b320d03b2c343d5ffffffffffffffffff603e55700abc25204e02828dffffffffffffffffff603f55700a4b16f74ee4bb207fffffffffffffffff6040557009deaf736ac1f569ffffffffffffffffff604155700976bd9952c7aa957fffffffffffffffff6042557009131271922eaa606fffffffffffffffff6043557008b380f3558668c46fffffffffffffffff604455700857ddf0117efa215bffffffffffffffff6045556001608360020a036046557007abbf6f6abb9d087fffffffffffffffff60475570075af62cbac95f7dfa7fffffffffffffff60485570070d7fb7452e187ac13fffffffffffffff6049557006c3390ecc8af379295fffffffffffffff604a5570067c00a3b07ffc01fd6fffffffffffffff604b55700637b647c39cbb9d3d27ffffffffffffff604c557005f63b1fc104dbd39587ffffffffffffff604d557005b771955b36e12f7235ffffffffffffff604e5570057b3d49dda84556d6f6ffffffffffffff604f5570054183095b2c8ececf30ffffffffffffff60505570050a28be635ca2b888f77fffffffffffff6051557004d5156639708c9db33c3fffffffffffff6052557004a23105873875bd52dfdfffffffffffff605355700471649d87199aa990756fffffffffffff6054557004429a21a029d4c1457cfbffffffffffff605555700415bc6d6fb7dd71af2cb3ffffffffffff6056557003eab73b3bbfe282243ce1ffffffffffff6057557003c1771ac9fb6b4c18e229ffffffffffff605855700399e96897690418f785257fffffffffff605955700373fc456c53bb779bf0ea9fffffffffff605a5570034f9e8e490c48e67e6ab8bfffffffffff605b5570032cbfd4a7adc790560b3337ffffffffff605c5570030b50570f6e5d2acca94613ffffffffff605d557002eb40f9f620fda6b56c2861ffffffffff605e557002cc8340ecb0d0f520a6af58ffffffffff605f557002af09481380a0a35cf1ba02ffffffffff606055700292c5bdd3b92ec810287b1b3fffffffff606155700277abdcdab07d5a77ac6d6b9fffffffff60625570025daf6654b1eaa55fd64df5efffffffff606355700244c49c648baa98192dce88b7ffffffff60645570022ce03cd5619a311b2471268bffffffff606555700215f77c045fbe885654a44a0fffffffff6066556001608160020a036067557001eaefdbdaaee7421fc4d3ede5ffffffff6068557001d6bd8b2eb257df7e8ca57b09bfffffff6069557001c35fedd14b861eb0443f7f133fffffff606a557001b0ce43b322bcde4a56e8ada5afffffff606b5570019f0028ec1fff007f5a195a39dfffffff606c5570018ded91f0e72ee74f49b15ba527ffffff606d5570017d8ec7f04136f4e5615fd41a63ffffff606e5570016ddc6556cdb84bdc8d12d22e6fffffff606f5570015ecf52776a1155b5bd8395814f7fffff60705570015060c256cb23b3b3cc3754cf40ffffff6071557001428a2f98d728ae223ddab715be3fffff60725570013545598e5c23276ccf0ede68034fffff6073557001288c4161ce1d6f54b7f61081194fffff60745570011c592761c666aa641d5a01a40f17ffff607555700110a688680a7530515f3e6e6cfdcdffff6076557001056f1b5bedf75c6bcb2ce8aed428ffff6077556ffaadceceeff8a0890f3875f008277fff6078556ff05dc6b27edad306388a600f6ba0bfff6079556fe67a5a25da41063de1495d5b18cdbfff607a556fdcff115b14eedde6fc3aa5353f2e4fff607b556fd3e7a3924312399f9aae2e0f868f8fff607c556fcb2ff529eb71e41582cccd5a1ee26fff607d556fc2d415c3db974ab32a51840c0b67edff607e556fbad03e7d883f69ad5b0a186184e06bff607f556fb320d03b2c343d4829abd6075f0cc5ff6080556fabc25204e02828d73c6e80bcdb1a95bf6081556fa4b16f74ee4bb2040a1ec6c15fbbf2df6082556f9deaf736ac1f569deb1b5ae3f36c130f6083556f976bd9952c7aa957f5937d790ef650376084556f9131271922eaa6064b73a22d0bd4f2bf6085556f8b380f3558668c46c91c49a2f8e967b96086556f857ddf0117efa215952912839f6473e66087556088805463ffffffff191663ffffffff92909216919091179055620009983383640100000000620009c4810204565b505034608a555050608b8054600160a060020a031916331790555062000c05945050505050565b335b90565b600160a060020a038216151562000a3c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60035462000a599082640100000000620012cc62000ae782021704565b600355600160a060020a03821660009081526001602052604090205462000a8f9082640100000000620012cc62000ae782021704565b600160a060020a03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008282018381101562000b5c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000ba657805160ff191683800117855562000bd6565b8280016001018555821562000bd6579182015b8281111562000bd657825182559160200191906001019062000bb9565b5062000be492915062000be8565b5090565b620009c191905b8082111562000be4576000815560010162000bef565b6131908062000c156000396000f3fe6080604052600436106101df576000357c01000000000000000000000000000000000000000000000000000000009004806370a0823111610114578063a10954fe116100b2578063d2fa635e11610081578063d2fa635e146106dd578063da12457a14610707578063dd62ed3e1461071c578063f2fde38b14610764576101df565b8063a10954fe146105f6578063a457c2d71461060b578063a9059cbb14610651578063b265c70214610697576101df565b80638da5cb5b116100ee5780638da5cb5b146105645780638f32d59b146105a257806395d89b41146105b757806396343886146105cc576101df565b806370a08231146104e5578063715018a6146105255780637cbed3e01461053a576101df565b806329a00e7c116101815780633de39c111161015b5780633de39c111461044f57806342966c681461046457806349f9b0f71461048e57806354fd4d50146104d0576101df565b806329a00e7c1461039c578063313ce567146103de5780633950935114610409576101df565b80630d8f9f7f116101bd5780630d8f9f7f146102fb5780631249c58b146101df57806318160ddd1461033757806323b872dd1461034c576101df565b806306fdde03146101e9578063095ea7b3146102735780630c7d5cd8146102cd575b6101e76107a4565b005b3480156101f557600080fd5b506101fe610822565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610238578181015183820152602001610220565b50505050905090810190601f1680156102655780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027f57600080fd5b506102b96004803603604081101561029657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356108b8565b604080519115158252519081900360200190f35b3480156102d957600080fd5b506102e26108d6565b6040805163ffffffff9092168252519081900360200190f35b34801561030757600080fd5b506103256004803603602081101561031e57600080fd5b50356108e2565b60408051918252519081900360200190f35b34801561034357600080fd5b5061032561090e565b34801561035857600080fd5b506102b96004803603606081101561036f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610914565b3480156103a857600080fd5b50610325600480360360808110156103bf57600080fd5b5080359060208101359063ffffffff60408201351690606001356109bc565b3480156103ea57600080fd5b506103f3610aff565b6040805160ff9092168252519081900360200190f35b34801561041557600080fd5b506102b96004803603604081101561042c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610b08565b34801561045b57600080fd5b50610325610b69565b34801561047057600080fd5b506101e76004803603602081101561048757600080fd5b5035610b6f565b34801561049a57600080fd5b50610325600480360360808110156104b157600080fd5b5080359060208101359063ffffffff6040820135169060600135610bc5565b3480156104dc57600080fd5b506101fe610d10565b3480156104f157600080fd5b506103256004803603602081101561050857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610d9e565b34801561053157600080fd5b506101e7610dc6565b34801561054657600080fd5b506103256004803603602081101561055d57600080fd5b5035610e98565b34801561057057600080fd5b50610579610ebc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156105ae57600080fd5b506102b9610ed8565b3480156105c357600080fd5b506101fe610f16565b3480156105d857600080fd5b506101e7600480360360208110156105ef57600080fd5b5035610f77565b34801561060257600080fd5b50610325610fc4565b34801561061757600080fd5b506102b96004803603604081101561062e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610fca565b34801561065d57600080fd5b506102b96004803603604081101561067457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611046565b3480156106a357600080fd5b506101e7600480360360408110156106ba57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561105a565b3480156106e957600080fd5b506101e76004803603602081101561070057600080fd5b50356110a8565b34801561071357600080fd5b50610325611110565b34801561072857600080fd5b506103256004803603604081101561073f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661111f565b34801561077057600080fd5b506101e76004803603602081101561078757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611157565b608b546040516127103460c881029190910492908390039173ffffffffffffffffffffffffffffffffffffffff909116906108fc8315029083906000818181858888f193505050501580156107fd573d6000803e3d6000fd5b50610807816111c6565b50608a5461081b908263ffffffff6112cc16565b608a555050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108ae5780601f10610883576101008083540402835291602001916108ae565b820191906000526020600020905b81548152906001019060200180831161089157829003601f168201915b5050505050905090565b60006108cc6108c5611335565b8484611339565b5060015b92915050565b60885463ffffffff1681565b60006109066108ef611110565b6108f7610fc4565b60885463ffffffff16856109bc565b90505b919050565b60035490565b6000610921848484611460565b6109b28461092d611335565b6109ad856060604051908101604052806028815260200161308a6028913973ffffffffffffffffffffffffffffffffffffffff8a16600090815260026020526040812090610979611335565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002054919063ffffffff61161416565b611339565b5060019392505050565b600080851180156109cd5750600084115b80156109df575060008363ffffffff16115b80156109f45750620f424063ffffffff841611155b1515610a4f5760408051600080516020613049833981519152815260206004820152600f60248201527f496e76616c696420696e707574732e0000000000000000000000000000000000604482015290519081900360640190fd5b811515610a5e57506000610af7565b63ffffffff8316620f42401415610a9657610a8f84610a83878563ffffffff6116b316565b9063ffffffff61171816565b9050610af7565b60008080610aaa858863ffffffff6112cc16565b9050610abb818888620f424061175a565b9093509150600060ff8316610ad68a8663ffffffff6116b316565b60029190910a90049050610af0818a63ffffffff61190616565b9450505050505b949350505050565b60065460ff1690565b60006108cc610b15611335565b846109ad8560026000610b26611335565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6112cc16565b60895481565b6000610b7a82611948565b608a54909150610b90908263ffffffff61190616565b608a55604051339082156108fc029083906000818181858888f19350505050158015610bc0573d6000803e3d6000fd5b505050565b60008085118015610bd65750600084115b8015610be8575060008363ffffffff16115b8015610bfd5750620f424063ffffffff841611155b8015610c095750848211155b1515610c645760408051600080516020613049833981519152815260206004820152600f60248201527f496e76616c696420696e707574732e0000000000000000000000000000000000604482015290519081900360640190fd5b811515610c7357506000610af7565b84821415610c82575082610af7565b63ffffffff8316620f42401415610ca757610a8f85610a83868563ffffffff6116b316565b60008080610cbb888663ffffffff61190616565b9050610ccc8882620f42408961175a565b90935091506000610ce3888563ffffffff6116b316565b905060ff831660020a8802610d0285610a83848463ffffffff61190616565b9a9950505050505050505050565b6007805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d965780601f10610d6b57610100808354040283529160200191610d96565b820191906000526020600020905b815481529060010190602001808311610d7957829003601f168201915b505050505081565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b610dce610ed8565b1515610e295760408051600080516020613049833981519152815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000610906610ea5611110565b610ead610fc4565b60885463ffffffff1685610bc5565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6000805473ffffffffffffffffffffffffffffffffffffffff16610efa611335565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108ae5780601f10610883576101008083540402835291602001916108ae565b610f813382611ab3565b604080513381526020810183905260008183015290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a150565b608a5490565b60006108cc610fd7611335565b846109ad85606060405190810160405280602581526020016131406025913960026000611002611335565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61161416565b60006108cc611053611335565b8484611460565b6110648282611bee565b604080513381526020810183905260008183015290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a15050565b6110b0610ed8565b151561110b5760408051600080516020613049833981519152815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b608955565b600061111a61090e565b905090565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b61115f610ed8565b15156111ba5760408051600080516020613049833981519152815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6111c381611c54565b50565b6089546000903a1115611212576040516000805160206130498339815191528152600401808060200182810382526048815260200180612fdb6048913960600191505060405180910390fd5b6000821161126f5760408051600080516020613049833981519152815260206004820152601960248201527f4465706f736974206d757374206265206e6f6e2d7a65726f2e00000000000000604482015290519081900360640190fd5b600061127a836108e2565b90506112863382611d3d565b604080513381526020810183905280820185905290517f25b428dfde728ccfaddad7e29e4ac23c24ed7fd1a6e3e3f91894a9a073f5dfff9181900360600190a192915050565b60008282018381101561132e5760408051600080516020613049833981519152815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316151561139557604051600080516020613049833981519152815260040180806020018281038252602481526020018061311c6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821615156113f1576040516000805160206130498339815191528152600401808060200182810382526022815260200180612fb96022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff831615156114bc5760405160008051602061304983398151915281526004018080602001828103825260258152602001806130f76025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161515611518576040516000805160206130498339815191528152600401808060200182810382526023815260200180612f4e6023913960400191505060405180910390fd5b61156981606060405190810160405280602681526020016130236026913973ffffffffffffffffffffffffffffffffffffffff8616600090815260016020526040902054919063ffffffff61161416565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546115ab908263ffffffff6112cc16565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156116ab5760405160008051602061304983398151915281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611670578181015183820152602001611658565b50505050905090810190601f16801561169d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008215156116c4575060006108d0565b8282028284828115156116d357fe5b041461132e5760405160008051602061304983398151915281526004018080602001828103825260218152602001806130696021913960400191505060405180910390fd5b600061132e83836040805190810160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e60565b60008070020000000000000000000000000000000086106117ca5760408051600080516020613049833981519152815260206004820152601860248201527f626173654e2065786365656473206d61782076616c75652e0000000000000000604482015290519081900360640190fd5b848610156118275760408051600080516020613049833981519152815260206004820152601c60248201527f4261736573203c203120617265206e6f7420737570706f727465642e00000000604482015290519081900360640190fd5b600080866f80000000000000000000000000000000890281151561184757fe5b04905070015bf0a8b1457695355fb8ac404e7a79e38110156118735761186c81611ed2565b915061187f565b61187c816123c6565b91505b60008563ffffffff168763ffffffff16840281151561189a57fe5b0490507008000000000000000000000000000000008110156118cd576118bf816124c5565b607f945094505050506118fd565b60006118d8826129aa565b90506118f060ff607f8390031660020a830482612a3c565b955093506118fd92505050565b94509492505050565b600061132e83836040805190810160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611614565b6089546000903a1115611994576040516000805160206130498339815191528152600401808060200182810382526048815260200180612fdb6048913960600191505060405180910390fd5b600082116119f15760408051600080516020613049833981519152815260206004820152601860248201527f416d6f756e74206d757374206265206e6f6e2d7a65726f2e0000000000000000604482015290519081900360640190fd5b816119fb33610d9e565b1015611a565760408051600080516020613049833981519152815260206004820152601c60248201527f496e73756666696369656e7420746f6b656e7320746f206275726e2e00000000604482015290519081900360640190fd5b6000611a6183610e98565b9050611a6d3384611ab3565b604080513381526020810185905280820183905290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a192915050565b73ffffffffffffffffffffffffffffffffffffffff82161515611b0f5760405160008051602061304983398151915281526004018080602001828103825260218152602001806130d66021913960400191505060405180910390fd5b611b608160606040519081016040528060228152602001612f716022913973ffffffffffffffffffffffffffffffffffffffff8516600090815260016020526040902054919063ffffffff61161416565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902055600354611b99908263ffffffff61190616565b60035560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b611bf88282611ab3565b611c5082611c04611335565b6109ad84606060405190810160405280602481526020016130b26024913973ffffffffffffffffffffffffffffffffffffffff8816600090815260026020526040812090610979611335565b5050565b73ffffffffffffffffffffffffffffffffffffffff81161515611cb0576040516000805160206130498339815191528152600401808060200182810382526026815260200180612f936026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff82161515611daf5760408051600080516020613049833981519152815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600354611dc2908263ffffffff6112cc16565b60035573ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054611dfb908263ffffffff6112cc16565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600081818411611eba57604051600080516020613049833981519152815260040180806020018281038252838181518152602001915080519060200190808383600083811015611670578181015183820152602001611658565b5060008385811515611ec857fe5b0495945050505050565b6000808080806fd3094c70f034de4b96ff7d5b6f99fcd88610611f2d576f4000000000000000000000000000000093909301926fd3094c70f034de4b96ff7d5b6f99fcd86f8000000000000000000000000000000087020495505b6fa45af1e1f40c333b3de1db4dd55f29a78610611f82576f2000000000000000000000000000000093909301926fa45af1e1f40c333b3de1db4dd55f29a76f8000000000000000000000000000000087020495505b6f910b022db7ae67ce76b441c27035c6a18610611fd7576f1000000000000000000000000000000093909301926f910b022db7ae67ce76b441c27035c6a16f8000000000000000000000000000000087020495505b6f88415abbe9a76bead8d00cf112e4d4a8861061202c576f0800000000000000000000000000000093909301926f88415abbe9a76bead8d00cf112e4d4a86f8000000000000000000000000000000087020495505b6f84102b00893f64c705e841d5d4064bd38610612081576f0400000000000000000000000000000093909301926f84102b00893f64c705e841d5d4064bd36f8000000000000000000000000000000087020495505b6f8204055aaef1c8bd5c3259f4822735a286106120d6576f0200000000000000000000000000000093909301926f8204055aaef1c8bd5c3259f4822735a26f8000000000000000000000000000000087020495505b6f810100ab00222d861931c15e39b44e99861061212b576f0100000000000000000000000000000093909301926f810100ab00222d861931c15e39b44e996f8000000000000000000000000000000087020495505b6f808040155aabbbe9451521693554f733861061217f576e80000000000000000000000000000093909301926f808040155aabbbe9451521693554f7336f8000000000000000000000000000000087020495505b7fffffffffffffffffffffffffffffffff80000000000000000000000000000000860192508291506f8000000000000000000000000000000082800204905070010000000000000000000000000000000083810383020493909301926f800000000000000000000000000000008282020491507002000000000000000000000000000000006faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa84900383020493909301926f800000000000000000000000000000008282020491507003000000000000000000000000000000006f9999999999999999999999999999999984900383020493909301926f800000000000000000000000000000008282020491507004000000000000000000000000000000006f9249249249249249249249249249249284900383020493909301926f800000000000000000000000000000008282020491507005000000000000000000000000000000006f8e38e38e38e38e38e38e38e38e38e38e84900383020493909301926f800000000000000000000000000000008282020491507006000000000000000000000000000000006f8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8b84900383020493909301926f800000000000000000000000000000008282020491507007000000000000000000000000000000006f89d89d89d89d89d89d89d89d89d89d8984900383020493909301926f800000000000000000000000000000008282020491507008000000000000000000000000000000006f888888888888888888888888888888888490038302049390930195945050505050565b6000808270010000000000000000000000000000000081106124205760006123ff6f800000000000000000000000000000008304612ede565b60ff166f800000000000000000000000000000008102935060020a90910490505b6f8000000000000000000000000000000081111561249857607f5b60008160ff161115612496576f80000000000000000000000000000000828002049150700100000000000000000000000000000000821061248d5760ff600019820116600290810a9390930192909104905b6000190161243b565b505b6f05b9de1d10bf4103d647b0955897ba806f03f80fe03f80fe03f80fe03f80fe03f8830204949350505050565b6000670168244fdac780006f800000000000000000000000000000006f0fffffffffffffffffffffffffffffff84168080028290048082028390048083028490049485026710e1b3be415a00009092026705a0913f6b1e000091909102010192909181830204905080664807432bc1800002830192506f8000000000000000000000000000000082820281151561255857fe5b04905080660c0135dca0400002830192506f8000000000000000000000000000000082820281151561258657fe5b049050806601b707b1cdc00002830192506f800000000000000000000000000000008282028115156125b457fe5b049050806536e0f639b80002830192506f800000000000000000000000000000008282028115156125e157fe5b04905080650618fee9f80002830192506f8000000000000000000000000000000082820281151561260e57fe5b04905080649c197dcc0002830192506f8000000000000000000000000000000082820281151561263a57fe5b04905080640e30dce40002830192506f8000000000000000000000000000000082820281151561266657fe5b0490508064012ebd130002830192506f8000000000000000000000000000000082820281151561269257fe5b049050806317499f0002830192506f800000000000000000000000000000008282028115156126bd57fe5b049050806301a9d48002830192506f800000000000000000000000000000008282028115156126e857fe5b04905080621c638002830192506f8000000000000000000000000000000082820281151561271257fe5b049050806201c63802830192506f8000000000000000000000000000000082820281151561273c57fe5b04905080611ab802830192506f8000000000000000000000000000000082820281151561276557fe5b0490508061017c02830192506f8000000000000000000000000000000082820281151561278e57fe5b04905080601402830192506f800000000000000000000000000000008282028115156127b657fe5b6721c3677c82b400009190049384010482016f80000000000000000000000000000000019290506f1000000000000000000000000000000085161561281f5770018ebef9eac820ae8682b9793ac6d1e7767001c3d6a24ed82218787d624d3e5eba95f984020492505b6f20000000000000000000000000000000851615612861577001368b2fc6f9609fe7aceb46aa619baed470018ebef9eac820ae8682b9793ac6d1e77884020492505b6f400000000000000000000000000000008516156128a2576fbc5ab1b16779be3575bd8f0520a9f21f7001368b2fc6f9609fe7aceb46aa619baed584020492505b6f800000000000000000000000000000008516156128e2576f454aaa8efe072e7f6ddbab84b40a55c96fbc5ab1b16779be3575bd8f0520a9f21e84020492505b700100000000000000000000000000000000851615612923576f0960aadc109e7a3bf4578099615711ea6f454aaa8efe072e7f6ddbab84b40a55c584020492505b700200000000000000000000000000000000851615612963576e2bf84208204f5977f9a8cf01fdce3d6f0960aadc109e7a3bf4578099615711d784020492505b7004000000000000000000000000000000008516156129a1576d03c6ab775dd0b95b4cbee7e65d116e2bf84208204f5977f9a8cf01fdc30784020492505b50909392505050565b60006020607f5b8060ff168260010160ff1610156129f9576000600260ff8484011604905084600860ff8316608081106129e057fe5b0154106129ef578092506129f3565b8091505b506129b1565b83600860ff831660808110612a0a57fe5b015410612a1a5791506109099050565b83600860ff841660808110612a2b57fe5b015410612a3a57509050610909565bfe5b60008083905060008090508360ff16858302908060020a82049150509150816f03442c4e6074a82f1797f72ac000000002810190508360ff16858302908060020a82049150509150816f0116b96f757c380fb287fd0e4000000002810190508360ff16858302908060020a82049150509150816e45ae5bdd5f0e03eca1ff439000000002810190508360ff16858302908060020a82049150509150816e0defabf91302cd95b9ffda5000000002810190508360ff16858302908060020a82049150509150816e02529ca9832b22439efff9b800000002810190508360ff16858302908060020a82049150509150816d54f1cf12bd04e516b6da8800000002810190508360ff16858302908060020a82049150509150816d0a9e39e257a09ca2d6db5100000002810190508360ff16858302908060020a82049150509150816d012e066e7b839fa050c30900000002810190508360ff16858302908060020a82049150509150816c1e33d7d926c329a1ad1a80000002810190508360ff16858302908060020a82049150509150816c02bee513bdb4a6b19b5f80000002810190508360ff16858302908060020a82049150509150816b3a9316fa79b88eccf2a0000002810190508360ff16858302908060020a82049150509150816b048177ebe1fa81237520000002810190508360ff16858302908060020a82049150509150816a5263fe90242dcbacf0000002810190508360ff16858302908060020a82049150509150816a057e22099c030d9410000002810190508360ff16858302908060020a82049150509150816957e22099c030d941000002810190508360ff16858302908060020a820491505091508169052b6b5456997631000002810190508360ff16858302908060020a8204915050915081684985f67696bf74800002810190508360ff16858302908060020a82049150509150816803dea12ea99e49800002810190508360ff16858302908060020a82049150509150816731880f2214b6e00002810190508360ff16858302908060020a820491505091508167025bcff56eb3600002810190508360ff16858302908060020a8204915050915081661b722e10ab100002810190508360ff16858302908060020a82049150509150816601317c7007700002810190508360ff16858302908060020a8204915050915081650cba84aafa0002810190508360ff16858302908060020a82049150509150816482573a0a0002810190508360ff16858302908060020a82049150509150816405035ad90002810190508360ff16858302908060020a8204915050915081632f881b0002810190508360ff16858302908060020a82049150509150816301b2934002810190508360ff16858302908060020a8204915050915081620efc4002810190508360ff16858302908060020a8204915050915081617fe002810190508360ff16858302908060020a820491505091508161042002810190508360ff16858302908060020a8204915050915081602102810190508360ff16858302908060020a8204915050915081600102810190508360ff1660019060020a02856f0688589cc0e9505e2f2fee558000000083811515612ed257fe5b04010195945050505050565b60008082610100811015612f0b575b6001811115612f06576001919091019060029004612eed565b612f46565b60805b60008160ff161115612f445760ff811660020a8210612f37579182179160ff811660020a909104905b600260ff90911604612f0e565b505b509291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373476173207072696365206d757374206265203c3d206d6178696d756d2067617320707269636520746f2070726576656e742066726f6e742072756e6e696e672061747461636b732e45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636508c379a000000000000000000000000000000000000000000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa165627a7a7230582086b945174682b2d0e440a78c4e3af86e3428592b790806d551990c412adc42df0029", + "deployedBytecode": "0x6080604052600436106101df576000357c01000000000000000000000000000000000000000000000000000000009004806370a0823111610114578063a10954fe116100b2578063d2fa635e11610081578063d2fa635e146106dd578063da12457a14610707578063dd62ed3e1461071c578063f2fde38b14610764576101df565b8063a10954fe146105f6578063a457c2d71461060b578063a9059cbb14610651578063b265c70214610697576101df565b80638da5cb5b116100ee5780638da5cb5b146105645780638f32d59b146105a257806395d89b41146105b757806396343886146105cc576101df565b806370a08231146104e5578063715018a6146105255780637cbed3e01461053a576101df565b806329a00e7c116101815780633de39c111161015b5780633de39c111461044f57806342966c681461046457806349f9b0f71461048e57806354fd4d50146104d0576101df565b806329a00e7c1461039c578063313ce567146103de5780633950935114610409576101df565b80630d8f9f7f116101bd5780630d8f9f7f146102fb5780631249c58b146101df57806318160ddd1461033757806323b872dd1461034c576101df565b806306fdde03146101e9578063095ea7b3146102735780630c7d5cd8146102cd575b6101e76107a4565b005b3480156101f557600080fd5b506101fe610822565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610238578181015183820152602001610220565b50505050905090810190601f1680156102655780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027f57600080fd5b506102b96004803603604081101561029657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356108b8565b604080519115158252519081900360200190f35b3480156102d957600080fd5b506102e26108d6565b6040805163ffffffff9092168252519081900360200190f35b34801561030757600080fd5b506103256004803603602081101561031e57600080fd5b50356108e2565b60408051918252519081900360200190f35b34801561034357600080fd5b5061032561090e565b34801561035857600080fd5b506102b96004803603606081101561036f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610914565b3480156103a857600080fd5b50610325600480360360808110156103bf57600080fd5b5080359060208101359063ffffffff60408201351690606001356109bc565b3480156103ea57600080fd5b506103f3610aff565b6040805160ff9092168252519081900360200190f35b34801561041557600080fd5b506102b96004803603604081101561042c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610b08565b34801561045b57600080fd5b50610325610b69565b34801561047057600080fd5b506101e76004803603602081101561048757600080fd5b5035610b6f565b34801561049a57600080fd5b50610325600480360360808110156104b157600080fd5b5080359060208101359063ffffffff6040820135169060600135610bc5565b3480156104dc57600080fd5b506101fe610d10565b3480156104f157600080fd5b506103256004803603602081101561050857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610d9e565b34801561053157600080fd5b506101e7610dc6565b34801561054657600080fd5b506103256004803603602081101561055d57600080fd5b5035610e98565b34801561057057600080fd5b50610579610ebc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156105ae57600080fd5b506102b9610ed8565b3480156105c357600080fd5b506101fe610f16565b3480156105d857600080fd5b506101e7600480360360208110156105ef57600080fd5b5035610f77565b34801561060257600080fd5b50610325610fc4565b34801561061757600080fd5b506102b96004803603604081101561062e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610fca565b34801561065d57600080fd5b506102b96004803603604081101561067457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611046565b3480156106a357600080fd5b506101e7600480360360408110156106ba57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561105a565b3480156106e957600080fd5b506101e76004803603602081101561070057600080fd5b50356110a8565b34801561071357600080fd5b50610325611110565b34801561072857600080fd5b506103256004803603604081101561073f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661111f565b34801561077057600080fd5b506101e76004803603602081101561078757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611157565b608b546040516127103460c881029190910492908390039173ffffffffffffffffffffffffffffffffffffffff909116906108fc8315029083906000818181858888f193505050501580156107fd573d6000803e3d6000fd5b50610807816111c6565b50608a5461081b908263ffffffff6112cc16565b608a555050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108ae5780601f10610883576101008083540402835291602001916108ae565b820191906000526020600020905b81548152906001019060200180831161089157829003601f168201915b5050505050905090565b60006108cc6108c5611335565b8484611339565b5060015b92915050565b60885463ffffffff1681565b60006109066108ef611110565b6108f7610fc4565b60885463ffffffff16856109bc565b90505b919050565b60035490565b6000610921848484611460565b6109b28461092d611335565b6109ad856060604051908101604052806028815260200161308a6028913973ffffffffffffffffffffffffffffffffffffffff8a16600090815260026020526040812090610979611335565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002054919063ffffffff61161416565b611339565b5060019392505050565b600080851180156109cd5750600084115b80156109df575060008363ffffffff16115b80156109f45750620f424063ffffffff841611155b1515610a4f5760408051600080516020613049833981519152815260206004820152600f60248201527f496e76616c696420696e707574732e0000000000000000000000000000000000604482015290519081900360640190fd5b811515610a5e57506000610af7565b63ffffffff8316620f42401415610a9657610a8f84610a83878563ffffffff6116b316565b9063ffffffff61171816565b9050610af7565b60008080610aaa858863ffffffff6112cc16565b9050610abb818888620f424061175a565b9093509150600060ff8316610ad68a8663ffffffff6116b316565b60029190910a90049050610af0818a63ffffffff61190616565b9450505050505b949350505050565b60065460ff1690565b60006108cc610b15611335565b846109ad8560026000610b26611335565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6112cc16565b60895481565b6000610b7a82611948565b608a54909150610b90908263ffffffff61190616565b608a55604051339082156108fc029083906000818181858888f19350505050158015610bc0573d6000803e3d6000fd5b505050565b60008085118015610bd65750600084115b8015610be8575060008363ffffffff16115b8015610bfd5750620f424063ffffffff841611155b8015610c095750848211155b1515610c645760408051600080516020613049833981519152815260206004820152600f60248201527f496e76616c696420696e707574732e0000000000000000000000000000000000604482015290519081900360640190fd5b811515610c7357506000610af7565b84821415610c82575082610af7565b63ffffffff8316620f42401415610ca757610a8f85610a83868563ffffffff6116b316565b60008080610cbb888663ffffffff61190616565b9050610ccc8882620f42408961175a565b90935091506000610ce3888563ffffffff6116b316565b905060ff831660020a8802610d0285610a83848463ffffffff61190616565b9a9950505050505050505050565b6007805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d965780601f10610d6b57610100808354040283529160200191610d96565b820191906000526020600020905b815481529060010190602001808311610d7957829003601f168201915b505050505081565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b610dce610ed8565b1515610e295760408051600080516020613049833981519152815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000610906610ea5611110565b610ead610fc4565b60885463ffffffff1685610bc5565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6000805473ffffffffffffffffffffffffffffffffffffffff16610efa611335565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108ae5780601f10610883576101008083540402835291602001916108ae565b610f813382611ab3565b604080513381526020810183905260008183015290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a150565b608a5490565b60006108cc610fd7611335565b846109ad85606060405190810160405280602581526020016131406025913960026000611002611335565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61161416565b60006108cc611053611335565b8484611460565b6110648282611bee565b604080513381526020810183905260008183015290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a15050565b6110b0610ed8565b151561110b5760408051600080516020613049833981519152815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b608955565b600061111a61090e565b905090565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b61115f610ed8565b15156111ba5760408051600080516020613049833981519152815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6111c381611c54565b50565b6089546000903a1115611212576040516000805160206130498339815191528152600401808060200182810382526048815260200180612fdb6048913960600191505060405180910390fd5b6000821161126f5760408051600080516020613049833981519152815260206004820152601960248201527f4465706f736974206d757374206265206e6f6e2d7a65726f2e00000000000000604482015290519081900360640190fd5b600061127a836108e2565b90506112863382611d3d565b604080513381526020810183905280820185905290517f25b428dfde728ccfaddad7e29e4ac23c24ed7fd1a6e3e3f91894a9a073f5dfff9181900360600190a192915050565b60008282018381101561132e5760408051600080516020613049833981519152815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316151561139557604051600080516020613049833981519152815260040180806020018281038252602481526020018061311c6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821615156113f1576040516000805160206130498339815191528152600401808060200182810382526022815260200180612fb96022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff831615156114bc5760405160008051602061304983398151915281526004018080602001828103825260258152602001806130f76025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82161515611518576040516000805160206130498339815191528152600401808060200182810382526023815260200180612f4e6023913960400191505060405180910390fd5b61156981606060405190810160405280602681526020016130236026913973ffffffffffffffffffffffffffffffffffffffff8616600090815260016020526040902054919063ffffffff61161416565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546115ab908263ffffffff6112cc16565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156116ab5760405160008051602061304983398151915281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611670578181015183820152602001611658565b50505050905090810190601f16801561169d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008215156116c4575060006108d0565b8282028284828115156116d357fe5b041461132e5760405160008051602061304983398151915281526004018080602001828103825260218152602001806130696021913960400191505060405180910390fd5b600061132e83836040805190810160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e60565b60008070020000000000000000000000000000000086106117ca5760408051600080516020613049833981519152815260206004820152601860248201527f626173654e2065786365656473206d61782076616c75652e0000000000000000604482015290519081900360640190fd5b848610156118275760408051600080516020613049833981519152815260206004820152601c60248201527f4261736573203c203120617265206e6f7420737570706f727465642e00000000604482015290519081900360640190fd5b600080866f80000000000000000000000000000000890281151561184757fe5b04905070015bf0a8b1457695355fb8ac404e7a79e38110156118735761186c81611ed2565b915061187f565b61187c816123c6565b91505b60008563ffffffff168763ffffffff16840281151561189a57fe5b0490507008000000000000000000000000000000008110156118cd576118bf816124c5565b607f945094505050506118fd565b60006118d8826129aa565b90506118f060ff607f8390031660020a830482612a3c565b955093506118fd92505050565b94509492505050565b600061132e83836040805190810160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611614565b6089546000903a1115611994576040516000805160206130498339815191528152600401808060200182810382526048815260200180612fdb6048913960600191505060405180910390fd5b600082116119f15760408051600080516020613049833981519152815260206004820152601860248201527f416d6f756e74206d757374206265206e6f6e2d7a65726f2e0000000000000000604482015290519081900360640190fd5b816119fb33610d9e565b1015611a565760408051600080516020613049833981519152815260206004820152601c60248201527f496e73756666696369656e7420746f6b656e7320746f206275726e2e00000000604482015290519081900360640190fd5b6000611a6183610e98565b9050611a6d3384611ab3565b604080513381526020810185905280820183905290517f23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f9181900360600190a192915050565b73ffffffffffffffffffffffffffffffffffffffff82161515611b0f5760405160008051602061304983398151915281526004018080602001828103825260218152602001806130d66021913960400191505060405180910390fd5b611b608160606040519081016040528060228152602001612f716022913973ffffffffffffffffffffffffffffffffffffffff8516600090815260016020526040902054919063ffffffff61161416565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902055600354611b99908263ffffffff61190616565b60035560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b611bf88282611ab3565b611c5082611c04611335565b6109ad84606060405190810160405280602481526020016130b26024913973ffffffffffffffffffffffffffffffffffffffff8816600090815260026020526040812090610979611335565b5050565b73ffffffffffffffffffffffffffffffffffffffff81161515611cb0576040516000805160206130498339815191528152600401808060200182810382526026815260200180612f936026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff82161515611daf5760408051600080516020613049833981519152815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600354611dc2908263ffffffff6112cc16565b60035573ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054611dfb908263ffffffff6112cc16565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600081818411611eba57604051600080516020613049833981519152815260040180806020018281038252838181518152602001915080519060200190808383600083811015611670578181015183820152602001611658565b5060008385811515611ec857fe5b0495945050505050565b6000808080806fd3094c70f034de4b96ff7d5b6f99fcd88610611f2d576f4000000000000000000000000000000093909301926fd3094c70f034de4b96ff7d5b6f99fcd86f8000000000000000000000000000000087020495505b6fa45af1e1f40c333b3de1db4dd55f29a78610611f82576f2000000000000000000000000000000093909301926fa45af1e1f40c333b3de1db4dd55f29a76f8000000000000000000000000000000087020495505b6f910b022db7ae67ce76b441c27035c6a18610611fd7576f1000000000000000000000000000000093909301926f910b022db7ae67ce76b441c27035c6a16f8000000000000000000000000000000087020495505b6f88415abbe9a76bead8d00cf112e4d4a8861061202c576f0800000000000000000000000000000093909301926f88415abbe9a76bead8d00cf112e4d4a86f8000000000000000000000000000000087020495505b6f84102b00893f64c705e841d5d4064bd38610612081576f0400000000000000000000000000000093909301926f84102b00893f64c705e841d5d4064bd36f8000000000000000000000000000000087020495505b6f8204055aaef1c8bd5c3259f4822735a286106120d6576f0200000000000000000000000000000093909301926f8204055aaef1c8bd5c3259f4822735a26f8000000000000000000000000000000087020495505b6f810100ab00222d861931c15e39b44e99861061212b576f0100000000000000000000000000000093909301926f810100ab00222d861931c15e39b44e996f8000000000000000000000000000000087020495505b6f808040155aabbbe9451521693554f733861061217f576e80000000000000000000000000000093909301926f808040155aabbbe9451521693554f7336f8000000000000000000000000000000087020495505b7fffffffffffffffffffffffffffffffff80000000000000000000000000000000860192508291506f8000000000000000000000000000000082800204905070010000000000000000000000000000000083810383020493909301926f800000000000000000000000000000008282020491507002000000000000000000000000000000006faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa84900383020493909301926f800000000000000000000000000000008282020491507003000000000000000000000000000000006f9999999999999999999999999999999984900383020493909301926f800000000000000000000000000000008282020491507004000000000000000000000000000000006f9249249249249249249249249249249284900383020493909301926f800000000000000000000000000000008282020491507005000000000000000000000000000000006f8e38e38e38e38e38e38e38e38e38e38e84900383020493909301926f800000000000000000000000000000008282020491507006000000000000000000000000000000006f8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8b84900383020493909301926f800000000000000000000000000000008282020491507007000000000000000000000000000000006f89d89d89d89d89d89d89d89d89d89d8984900383020493909301926f800000000000000000000000000000008282020491507008000000000000000000000000000000006f888888888888888888888888888888888490038302049390930195945050505050565b6000808270010000000000000000000000000000000081106124205760006123ff6f800000000000000000000000000000008304612ede565b60ff166f800000000000000000000000000000008102935060020a90910490505b6f8000000000000000000000000000000081111561249857607f5b60008160ff161115612496576f80000000000000000000000000000000828002049150700100000000000000000000000000000000821061248d5760ff600019820116600290810a9390930192909104905b6000190161243b565b505b6f05b9de1d10bf4103d647b0955897ba806f03f80fe03f80fe03f80fe03f80fe03f8830204949350505050565b6000670168244fdac780006f800000000000000000000000000000006f0fffffffffffffffffffffffffffffff84168080028290048082028390048083028490049485026710e1b3be415a00009092026705a0913f6b1e000091909102010192909181830204905080664807432bc1800002830192506f8000000000000000000000000000000082820281151561255857fe5b04905080660c0135dca0400002830192506f8000000000000000000000000000000082820281151561258657fe5b049050806601b707b1cdc00002830192506f800000000000000000000000000000008282028115156125b457fe5b049050806536e0f639b80002830192506f800000000000000000000000000000008282028115156125e157fe5b04905080650618fee9f80002830192506f8000000000000000000000000000000082820281151561260e57fe5b04905080649c197dcc0002830192506f8000000000000000000000000000000082820281151561263a57fe5b04905080640e30dce40002830192506f8000000000000000000000000000000082820281151561266657fe5b0490508064012ebd130002830192506f8000000000000000000000000000000082820281151561269257fe5b049050806317499f0002830192506f800000000000000000000000000000008282028115156126bd57fe5b049050806301a9d48002830192506f800000000000000000000000000000008282028115156126e857fe5b04905080621c638002830192506f8000000000000000000000000000000082820281151561271257fe5b049050806201c63802830192506f8000000000000000000000000000000082820281151561273c57fe5b04905080611ab802830192506f8000000000000000000000000000000082820281151561276557fe5b0490508061017c02830192506f8000000000000000000000000000000082820281151561278e57fe5b04905080601402830192506f800000000000000000000000000000008282028115156127b657fe5b6721c3677c82b400009190049384010482016f80000000000000000000000000000000019290506f1000000000000000000000000000000085161561281f5770018ebef9eac820ae8682b9793ac6d1e7767001c3d6a24ed82218787d624d3e5eba95f984020492505b6f20000000000000000000000000000000851615612861577001368b2fc6f9609fe7aceb46aa619baed470018ebef9eac820ae8682b9793ac6d1e77884020492505b6f400000000000000000000000000000008516156128a2576fbc5ab1b16779be3575bd8f0520a9f21f7001368b2fc6f9609fe7aceb46aa619baed584020492505b6f800000000000000000000000000000008516156128e2576f454aaa8efe072e7f6ddbab84b40a55c96fbc5ab1b16779be3575bd8f0520a9f21e84020492505b700100000000000000000000000000000000851615612923576f0960aadc109e7a3bf4578099615711ea6f454aaa8efe072e7f6ddbab84b40a55c584020492505b700200000000000000000000000000000000851615612963576e2bf84208204f5977f9a8cf01fdce3d6f0960aadc109e7a3bf4578099615711d784020492505b7004000000000000000000000000000000008516156129a1576d03c6ab775dd0b95b4cbee7e65d116e2bf84208204f5977f9a8cf01fdc30784020492505b50909392505050565b60006020607f5b8060ff168260010160ff1610156129f9576000600260ff8484011604905084600860ff8316608081106129e057fe5b0154106129ef578092506129f3565b8091505b506129b1565b83600860ff831660808110612a0a57fe5b015410612a1a5791506109099050565b83600860ff841660808110612a2b57fe5b015410612a3a57509050610909565bfe5b60008083905060008090508360ff16858302908060020a82049150509150816f03442c4e6074a82f1797f72ac000000002810190508360ff16858302908060020a82049150509150816f0116b96f757c380fb287fd0e4000000002810190508360ff16858302908060020a82049150509150816e45ae5bdd5f0e03eca1ff439000000002810190508360ff16858302908060020a82049150509150816e0defabf91302cd95b9ffda5000000002810190508360ff16858302908060020a82049150509150816e02529ca9832b22439efff9b800000002810190508360ff16858302908060020a82049150509150816d54f1cf12bd04e516b6da8800000002810190508360ff16858302908060020a82049150509150816d0a9e39e257a09ca2d6db5100000002810190508360ff16858302908060020a82049150509150816d012e066e7b839fa050c30900000002810190508360ff16858302908060020a82049150509150816c1e33d7d926c329a1ad1a80000002810190508360ff16858302908060020a82049150509150816c02bee513bdb4a6b19b5f80000002810190508360ff16858302908060020a82049150509150816b3a9316fa79b88eccf2a0000002810190508360ff16858302908060020a82049150509150816b048177ebe1fa81237520000002810190508360ff16858302908060020a82049150509150816a5263fe90242dcbacf0000002810190508360ff16858302908060020a82049150509150816a057e22099c030d9410000002810190508360ff16858302908060020a82049150509150816957e22099c030d941000002810190508360ff16858302908060020a820491505091508169052b6b5456997631000002810190508360ff16858302908060020a8204915050915081684985f67696bf74800002810190508360ff16858302908060020a82049150509150816803dea12ea99e49800002810190508360ff16858302908060020a82049150509150816731880f2214b6e00002810190508360ff16858302908060020a820491505091508167025bcff56eb3600002810190508360ff16858302908060020a8204915050915081661b722e10ab100002810190508360ff16858302908060020a82049150509150816601317c7007700002810190508360ff16858302908060020a8204915050915081650cba84aafa0002810190508360ff16858302908060020a82049150509150816482573a0a0002810190508360ff16858302908060020a82049150509150816405035ad90002810190508360ff16858302908060020a8204915050915081632f881b0002810190508360ff16858302908060020a82049150509150816301b2934002810190508360ff16858302908060020a8204915050915081620efc4002810190508360ff16858302908060020a8204915050915081617fe002810190508360ff16858302908060020a820491505091508161042002810190508360ff16858302908060020a8204915050915081602102810190508360ff16858302908060020a8204915050915081600102810190508360ff1660019060020a02856f0688589cc0e9505e2f2fee558000000083811515612ed257fe5b04010195945050505050565b60008082610100811015612f0b575b6001811115612f06576001919091019060029004612eed565b612f46565b60805b60008160ff161115612f445760ff811660020a8210612f37579182179160ff811660020a909104905b600260ff90911604612f0e565b505b509291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373476173207072696365206d757374206265203c3d206d6178696d756d2067617320707269636520746f2070726576656e742066726f6e742072756e6e696e672061747461636b732e45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636508c379a000000000000000000000000000000000000000000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa165627a7a7230582086b945174682b2d0e440a78c4e3af86e3428592b790806d551990c412adc42df0029", + "sourceMap": "562:29:5:-;74:1171:12;562:29:5;;74:1171:12;562:29:5;;;;;;;;;;;;;;:::i;:::-;;160:10:3;131:39;;204:323:12;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;204:323:12;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;0:372;;204:323:12;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;-1:-1;;204:323:12;;;;;;;;;;;;;;;-1:-1:-1;204:323:12;-1:-1:-1;397:5:12;204:323;;;;;397:5;204:323;;698:17:17;718:12;:10;;;;:12;:::i;:::-;740:6;:18;;-1:-1:-1;;;;;;740:18:17;-1:-1:-1;;;;;740:18:17;;;;;;;773:43;;740:18;;-1:-1:-1;740:18:17;773:43;;740:6;;773:43;-1:-1:-1;504:12:19;;;;:5;;:12;;;;;:::i;:::-;-1:-1:-1;526:16:19;;;;:7;;:16;;;;;:::i;:::-;-1:-1:-1;552:9:19;:20;;-1:-1:-1;;552:20:19;;;;;;;;;;;;-1:-1:-1;;;;;;;;;4049:15:5;:54;-1:-1:-1;;;;;;;4113:15:5;:54;-1:-1:-1;;;;;;;4177:15:5;:54;-1:-1:-1;;;;;;;4241:15:5;:54;-1:-1:-1;;;;;;;4305:15:5;:54;-1:-1:-1;;;;;;;4369:15:5;:54;-1:-1:-1;;;;;;;4433:15:5;:54;-1:-1:-1;;;;;;;4497:15:5;:54;-1:-1:-1;;;;;;;4561:15:5;:54;-1:-1:-1;;;;;;;4625:15:5;:54;-1:-1:-1;;;;;;;4689:15:5;:54;4771:36;4753:15;:54;4835:36;4817:15;:54;4899:36;4881:15;:54;4963:36;4945:15;:54;5027:36;5009:15;:54;5091:36;5073:15;:54;5155:36;5137:15;:54;5219:36;5201:15;:54;5283:36;5265:15;:54;5347:36;5329:15;:54;5411:36;5393:15;:54;5475:36;5457:15;:54;5539:36;5521:15;:54;5603:36;5585:15;:54;5667:36;5649:15;:54;5731:36;5713:15;:54;5795:36;5777:15;:54;5859:36;5841:15;:54;5923:36;5905:15;:54;-1:-1:-1;;;;;5969:15:5;:54;6051:36;6033:15;:54;6115:36;6097:15;:54;6179:36;6161:15;:54;6243:36;6225:15;:54;6307:36;6289:15;:54;6371:36;6353:15;:54;6435:36;6417:15;:54;6499:36;6481:15;:54;6563:36;6545:15;:54;6627:36;6609:15;:54;6691:36;6673:15;:54;6755:36;6737:15;:54;6819:36;6801:15;:54;6883:36;6865:15;:54;6947:36;6929:15;:54;7011:36;6993:15;:54;7075:36;7057:15;:54;7139:36;7121:15;:54;7203:36;7185:15;:54;7267:36;7249:15;:54;7331:36;7313:15;:54;7395:36;7377:15;:54;7459:36;7441:15;:54;7523:36;7505:15;:54;7587:36;7569:15;:54;7651:36;7633:15;:54;7715:36;7697:15;:54;7779:36;7761:15;:54;7843:36;7825:15;:54;7907:36;7889:15;:54;7971:36;7953:15;:54;8035:36;8017:15;:54;-1:-1:-1;;;;;8081:15:5;:54;8163:36;8145:15;:54;8227:36;8209:15;:54;8291:36;8273:15;:54;8355:36;8337:15;:54;8420:36;8401:16;:55;8485:36;8466:16;:55;8550:36;8531:16;:55;8615:36;8596:16;:55;8680:36;8661:16;:55;8745:36;8726:16;:55;8810:36;8791:16;:55;8875:36;8856:16;:55;8940:36;8921:16;:55;9005:36;8986:16;:55;9070:36;9051:16;:55;9135:36;9116:16;:55;9200:36;9181:16;:55;9265:36;9246:16;:55;9330:36;9311:16;:55;9395:36;9376:16;:55;9460:36;9441:16;:55;9525:36;9506:16;:55;9590:36;9571:16;:55;9655:36;9636:16;:55;9720:36;9701:16;:55;9785:36;9766:16;:55;9850:36;9831:16;:55;9915:36;9896:16;:55;9980:36;9961:16;:55;10045:36;10026:16;:55;10110:36;10091:16;:55;10175:36;10156:16;:55;492:12:1;:28;;-1:-1:-1;;492:28:1;;;;;;;;;;;;871:33:10;877:10;889:14;871:5;;;;:33;:::i;:::-;-1:-1:-1;;475:9:12;465:7;:19;-1:-1:-1;;494:13:12;:26;;-1:-1:-1;;;;;;494:26:12;510:10;494:26;;;-1:-1:-1;74:1171:12;;-1:-1:-1;;;;;74:1171:12;788:96:13;867:10;788:96;;:::o;5962:302:18:-;-1:-1:-1;;;;;6037:21:18;;;;6029:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6120:12;;:24;;6137:6;6120:16;;;;;;:24;:::i;:::-;6105:12;:39;-1:-1:-1;;;;;6175:18:18;;;;;;:9;:18;;;;;;:30;;6198:6;6175:22;;;;;;:30;:::i;:::-;-1:-1:-1;;;;;6154:18:18;;;;;;:9;:18;;;;;;;;:51;;;;6220:37;;;;;;;6154:18;;;;6220:37;;;;;;;;;;5962:302;;:::o;834:176:16:-;892:7;923:5;;;946:6;;;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:16:o;74:1171:12:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;74:1171:12;;;-1:-1:-1;74:1171:12;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "74:1171:12:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;564:6;:4;:6::i;:::-;74:1171;644:81:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;644:81:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;644:81:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2500:149:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2500:149:18;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2500:149:18;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;408:26:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;408:26:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;533:206;;8:9:-1;5:2;;;30:1;27;20:12;5:2;533:206:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;533:206:1;;:::i;:::-;;;;;;;;;;;;;;;;1559:89:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1559:89:18;;;:::i;3107:300::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3107:300:18;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3107:300:18;;;;;;;;;;;;;;;;;;:::i;1129:975:4:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1129:975:4;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;1129:975:4;;;;;;;;;;;;;;;;;;;:::i;1472:81:19:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1472:81:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3802:207:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3802:207:18;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3802:207:18;;;;;;;;;:::i;131:39:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;131:39:3;;;:::i;969:184:12:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;969:184:12;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;969:184:12;;:::i;2789:1165:4:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2789:1165:4;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;2789:1165:4;;;;;;;;;;;;;;;;;;;:::i;562:29:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;562:29:5;;;:::i;1706:108:18:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1706:108:18;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1706:108:18;;;;:::i;1684:137:17:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1684:137:17;;;:::i;745:208:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;745:208:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;745:208:1;;:::i;899:77:17:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;899:77:17;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1250:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1250:92:17;;;:::i;838:85:19:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;838:85:19;;;:::i;1805:132:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1805:132:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1805:132:10;;:::i;1159:84:12:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1159:84:12;;;:::i;4496:258:18:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4496:258:18;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4496:258:18;;;;;;;;;:::i;2017:155::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2017:155:18;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2017:155:18;;;;;;;;;:::i;1943:150:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1943:150:10;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1943:150:10;;;;;;;;;:::i;347:98:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;347:98:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;347:98:3;;:::i;917:125:10:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;917:125:10;;;:::i;2230:132:18:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2230:132:18;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2230:132:18;;;;;;;;;;;:::i;1970:107:17:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1970:107:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1970:107:17;;;;:::i;662:301:12:-;830:13;;:38;;741:5;723:9;735:3;723:15;;:23;;;;;796:24;;;;;830:13;;;;;:38;;;;;796:24;;703:17;830:38;703:17;830:38;796:24;830:13;:38;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;830:38:12;878:31;894:14;878:15;:31::i;:::-;-1:-1:-1;929:7:12;;:27;;941:14;929:27;:11;:27;:::i;:::-;919:7;:37;-1:-1:-1;;662:301:12:o;644:81:19:-;713:5;706:12;;;;;;;;-1:-1:-1;;706:12:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;681:13;;706:12;;713:5;;706:12;;713:5;706:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:81;:::o;2500:149:18:-;2566:4;2582:39;2591:12;:10;:12::i;:::-;2605:7;2614:6;2582:8;:39::i;:::-;-1:-1:-1;2638:4:18;2500:149;;;;;:::o;408:26:1:-;;;;;;:::o;533:206::-;613:4;636:96;660:18;:16;:18::i;:::-;680:16;:14;:16::i;:::-;698:12;;;;712:19;636:23;:96::i;:::-;629:103;;533:206;;;;:::o;1559:89:18:-;1629:12;;1559:89;:::o;3107:300::-;3196:4;3212:36;3222:6;3230:9;3241:6;3212:9;:36::i;:::-;3258:121;3267:6;3275:12;:10;:12::i;:::-;3289:89;3327:6;3289:89;;;;;;;;;;;;;;;;;;:19;;;;;;;:11;:19;;;;;;3309:12;:10;:12::i;:::-;3289:33;;;;;;;;;;;;;-1:-1:-1;3289:33:18;;;:89;;:37;:89;:::i;:::-;3258:8;:121::i;:::-;-1:-1:-1;3396:4:18;3107:300;;;;;:::o;1129:975:4:-;1304:7;1371:1;1361:7;:11;:34;;;;;1394:1;1376:15;:19;1361:34;:55;;;;;1415:1;1399:13;:17;;;1361:55;:93;;;;-1:-1:-1;450:7:4;1420:34;;;;;1361:93;1353:121;;;;;;;-1:-1:-1;;;;;;;;;;;1353:121:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;1533:19;;1529:58;;;-1:-1:-1;1575:1:4;1568:8;;1529:58;1644:34;;;450:7;1644:34;1640:120;;;1701:48;1733:15;1701:27;:7;1713:14;1701:27;:11;:27;:::i;:::-;:31;:48;:31;:48;:::i;:::-;1694:55;;;;1640:120;1769:14;;;1834:35;:14;1853:15;1834:35;:18;:35;:::i;:::-;1818:51;;1901:85;1920:5;1927:15;1944:13;450:7;1901:5;:85::i;:::-;1879:107;;-1:-1:-1;1879:107:4;-1:-1:-1;1996:22:4;2021:32;;;:19;:7;1879:107;2021:19;:11;:19;:::i;:::-;49:1:-1;45:20;;;;25:41;;;-1:-1;2070:27:4;25:41:-1;2089:7:4;2070:27;:18;:27;:::i;:::-;2063:34;;;;;;1129:975;;;;;;;:::o;1472:81:19:-;1537:9;;;;1472:81;:::o;3802:207:18:-;3882:4;3898:83;3907:12;:10;:12::i;:::-;3921:7;3930:50;3969:10;3930:11;:25;3942:12;:10;:12::i;:::-;3930:25;;;;;;;;;;;;;;;;;;-1:-1:-1;3930:25:18;;;:34;;;;;;;;;;;:50;:38;:50;:::i;131:39:3:-;;;;:::o;969:184:12:-;1014:17;1034:24;1050:7;1034:15;:24::i;:::-;1078:7;;1014:44;;-1:-1:-1;1078:25:12;;1014:44;1078:25;:11;:25;:::i;:::-;1068:7;:35;1113:33;;:10;;:33;;;;;1133:12;;1113:33;;;;1133:12;1113:10;:33;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1113:33:12;969:184;;:::o;2789:1165:4:-;2957:7;3024:1;3014:7;:11;:34;;;;;3047:1;3029:15;:19;3014:34;:55;;;;;3068:1;3052:13;:17;;;3014:55;:93;;;;-1:-1:-1;450:7:4;3073:34;;;;;3014:93;:119;;;;;3126:7;3111:11;:22;;3014:119;3006:147;;;;;;;-1:-1:-1;;;;;;;;;;;3006:147:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;3209:16;;3205:55;;;-1:-1:-1;3248:1:4;3241:8;;3205:55;3342:7;3327:11;:22;3323:75;;;-1:-1:-1;3372:15:4;3365:22;;3323:75;3455:34;;;450:7;3455:34;3451:117;;;3512:45;3549:7;3512:32;:15;3532:11;3512:32;:19;:32;:::i;3451:117::-;3577:14;;;3642:24;:7;3654:11;3642:24;:11;:24;:::i;:::-;3626:40;;3698:77;3717:7;3726:5;450:7;3752:13;3698:5;:77::i;:::-;3676:99;;-1:-1:-1;3676:99:4;-1:-1:-1;3785:18:4;3806:27;:15;3676:99;3806:27;:19;:27;:::i;:::-;3785:48;-1:-1:-1;3864:28:4;;;;;;;3909:38;3940:6;3909:26;3785:48;3864:28;3909:26;:14;:26;:::i;:38::-;3902:45;2789:1165;-1:-1:-1;;;;;;;;;;2789:1165:4:o;562:29:5:-;;;;;;;;;;;;;;;-1:-1:-1;;562:29:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1706:108:18:-;1789:18;;1763:7;1789:18;;;:9;:18;;;;;;;1706:108::o;1684:137:17:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;-1:-1:-1;;;;;;;;;;;1095:54:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1782:1;1766:6;;1745:40;;;1766:6;;;;1745:40;;1782:1;;1745:40;1812:1;1795:19;;;;;;1684:137::o;745:208:1:-;828:4;851:95;871:18;:16;:18::i;:::-;891:16;:14;:16::i;:::-;909:12;;;;923:22;851:19;:95::i;899:77:17:-;937:7;963:6;;;899:77;:::o;1250:92::-;1290:4;1329:6;;;;1313:12;:10;:12::i;:::-;:22;;;1306:29;;1250:92;:::o;838:85:19:-;909:7;902:14;;;;;;;;-1:-1:-1;;902:14:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;877:13;;902:14;;909:7;;902:14;;909:7;902:14;;;;;;;;;;;;;;;;;;;;;;;;1805:132:10;1859:26;1865:10;1877:7;1859:5;:26::i;:::-;1900:30;;;1907:10;1900:30;;;;;;;;1928:1;1900:30;;;;;;;;;;;;;;;1805:132;:::o;1159:84:12:-;1229:7;;1159:84;:::o;4496:258:18:-;4581:4;4597:129;4606:12;:10;:12::i;:::-;4620:7;4629:96;4668:15;4629:96;;;;;;;;;;;;;;;;;;:11;:25;4641:12;:10;:12::i;:::-;4629:25;;;;;;;;;;;;;;;;;;-1:-1:-1;4629:25:18;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;2017:155::-;2086:4;2102:42;2112:12;:10;:12::i;:::-;2126:9;2137:6;2102:9;:42::i;1943:150:10:-;2016:25;2026:5;2033:7;2016:9;:25::i;:::-;2056:30;;;2063:10;2056:30;;;;;;;;2084:1;2056:30;;;;;;;;;;;;;;;1943:150;;:::o;347:98:3:-;1103:9:17;:7;:9::i;:::-;1095:54;;;;;;;-1:-1:-1;;;;;;;;;;;1095:54:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;416:11:3;:22;347:98::o;917:125:10:-;966:4;989:13;:11;:13::i;:::-;982:20;;917:125;:::o;2230:132:18:-;2328:18;;;;2302:7;2328:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2230:132::o;1970:107:17:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;-1:-1:-1;;;;;;;;;;;1095:54:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2042:28;2061:8;2042:18;:28::i;:::-;1970:107;:::o;1048:336:10:-;235:11:3;;1120:4:10;;220:11:3;:26;;212:111;;;;-1:-1:-1;;;;;;;;;;;212:111:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1155:1:10;1144:12;;1136:50;;;;;-1:-1:-1;;;;;;;;;;;1136:50:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;1197:17;1217:33;1241:8;1217:23;:33::i;:::-;1197:53;;1260:31;1266:10;1278:12;1260:5;:31::i;:::-;1306:42;;;1313:10;1306:42;;;;;;;;;;;;;;;;;;;;;;;;;1365:12;1048:336;-1:-1:-1;;1048:336:10:o;834:176:16:-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;;;;;;;;;938:46:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:16:o;788:96:13:-;867:10;788:96;:::o;7350:332:18:-;7443:19;;;;;7435:68;;;;-1:-1:-1;;;;;;;;;;;7435:68:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7521:21;;;;;7513:68;;;;-1:-1:-1;;;;;;;;;;;7513:68:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7592:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7643:32;;;;;;;;;;;;;;;;;7350:332;;;:::o;5228:464::-;5325:20;;;;;5317:70;;;;-1:-1:-1;;;;;;;;;;;5317:70:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5405:23;;;;;5397:71;;;;-1:-1:-1;;;;;;;;;;;5397:71:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5499;5521:6;5499:71;;;;;;;;;;;;;;;;;;:17;;;;;;;:9;:17;;;;;;;:71;;:21;:71;:::i;:::-;5479:17;;;;;;;;:9;:17;;;;;;:91;;;;5603:20;;;;;;;:32;;5628:6;5603:32;:24;:32;:::i;:::-;5580:20;;;;;;;;:9;:20;;;;;;;;;:55;;;;5650:35;;;;;;;5580:20;;5650:35;;;;;;;;;;;;;5228:464;;;:::o;1732:187:16:-;1818:7;1853:12;1845:6;;;;1837:29;;;;-1:-1:-1;;;;;;;;;;;1837:29:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1837:29:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1888:5:16;;;1732:187::o;2159:459::-;2217:7;2458:6;;2454:45;;;-1:-1:-1;2487:1:16;2480:8;;2454:45;2521:5;;;2525:1;2521;:5;2544;;;;;;;;:10;2536:56;;;;-1:-1:-1;;;;;;;;;;;2536:56:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3073:130;3131:7;3157:39;3161:1;3164;3157:39;;;;;;;;;;;;;;;;;;:3;:39::i;11604:892:5:-;11740:7;;1161:35;11778:16;;11770:53;;;;;-1:-1:-1;;;;;;;;;;;11770:53:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;11841:16;;;;11833:57;;;;;-1:-1:-1;;;;;;;;;;;11833:57:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;11901:15;11926:12;11960:6;1009:35;11941:6;:16;:25;;;;;;;;11926:40;;1585:35;11980:4;:22;11976:136;;;12028:16;12039:4;12028:10;:16::i;:::-;12018:26;;11976:136;;;12085:16;12096:4;12085:10;:16::i;:::-;12075:26;;11976:136;12122:23;12166:5;12148:23;;12158:5;12148:15;;:7;:15;:23;;;;;;;;12122:49;;1669:35;12185:15;:33;12181:309;;;12242:27;12253:15;12242:10;:27::i;:::-;772:3;12234:51;;;;;;;;;12181:309;12316:15;12334:42;12360:15;12334:25;:42::i;:::-;12316:60;-1:-1:-1;12398:69:5;12409:46;772:3;12429:25;;;12409:46;49:1:-1;45:20;25:41;;12316:60:5;12398:10;:69::i;:::-;12390:89;-1:-1:-1;12469:9:5;-1:-1:-1;12390:89:5;;-1:-1:-1;;;12390:89:5;11604:892;;;;;;;;:::o;1274:134:16:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;;:3;:43::i;1390:409:10:-;235:11:3;;1461:4:10;;220:11:3;:26;;212:111;;;;-1:-1:-1;;;;;;;;;;;212:111:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1495:1:10;1485:11;;1477:48;;;;;-1:-1:-1;;;;;;;;;;;1477:48:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;1568:7;1543:21;1553:10;1543:9;:21::i;:::-;:32;;1535:73;;;;;-1:-1:-1;;;;;;;;;;;1535:73:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;1619:17;1639:32;1663:7;1639:23;:32::i;:::-;1619:52;;1681:26;1687:10;1699:7;1681:5;:26::i;:::-;1722:41;;;1729:10;1722:41;;;;;;;;;;;;;;;;;;;;;;;;;1780:12;1390:409;-1:-1:-1;;1390:409:10:o;6583:342:18:-;6658:21;;;;;6650:67;;;;-1:-1:-1;;;;;;;;;;;6650:67:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6749:68;6772:6;6749:68;;;;;;;;;;;;;;;;;;:18;;;;;;;:9;:18;;;;;;;:68;;:22;:68;:::i;:::-;6728:18;;;;;;;:9;:18;;;;;:89;6842:12;;:24;;6859:6;6842:24;:16;:24;:::i;:::-;6827:12;:39;6881:37;;;;;;;;6907:1;;6881:37;;;;;;;;;;;;;6583:342;;:::o;7860:229::-;7931:22;7937:7;7946:6;7931:5;:22::i;:::-;7963:119;7972:7;7981:12;:10;:12::i;:::-;7995:86;8034:6;7995:86;;;;;;;;;;;;;;;;;;:20;;;;;;;:11;:20;;;;;;8016:12;:10;:12::i;7963:119::-;7860:229;;:::o;2178:225:17:-;2251:22;;;;;2243:73;;;;-1:-1:-1;;;;;;;;;;;2243:73:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2352:6;;;2331:38;;;;;;;2352:6;;;2331:38;;;2379:6;:17;;;;;;;;;;;;;;;2178:225::o;5962:302:18:-;6037:21;;;;;6029:65;;;;;-1:-1:-1;;;;;;;;;;;6029:65:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;6120:12;;:24;;6137:6;6120:24;:16;:24;:::i;:::-;6105:12;:39;6175:18;;;;;;;:9;:18;;;;;;:30;;6198:6;6175:30;:22;:30;:::i;:::-;6154:18;;;;;;;:9;:18;;;;;;;;:51;;;;6220:37;;;;;;;6154:18;;;;6220:37;;;;;;;;;;5962:302;;:::o;3718:338:16:-;3804:7;3904:12;3897:5;;;3889:28;;;;-1:-1:-1;;;;;;;;;;;3889:28:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3889:28:16;;3927:9;3943:1;3939;:5;;;;;;;;;3718:338;-1:-1:-1;;;;;3718:338:16:o;19589:2397:5:-;19643:7;;;;;19755:34;19750:39;;19746:143;;19799:34;19792:41;;;;;19853:34;1009:35;19839:11;;:48;19835:52;;19746:143;19907:34;19902:39;;19898:143;;19951:34;19944:41;;;;;20005:34;1009:35;19991:11;;:48;19987:52;;19898:143;20059:34;20054:39;;20050:143;;20103:34;20096:41;;;;;20157:34;1009:35;20143:11;;:48;20139:52;;20050:143;20211:34;20206:39;;20202:143;;20255:34;20248:41;;;;;20309:34;1009:35;20295:11;;:48;20291:52;;20202:143;20363:34;20358:39;;20354:143;;20407:34;20400:41;;;;;20461:34;1009:35;20447:11;;:48;20443:52;;20354:143;20515:34;20510:39;;20506:143;;20559:34;20552:41;;;;;20613:34;1009:35;20599:11;;:48;20595:52;;20506:143;20667:34;20662:39;;20658:143;;20711:34;20704:41;;;;;20765:34;1009:35;20751:11;;:48;20747:52;;20658:143;20819:34;20814:39;;20810:143;;20863:34;20856:41;;;;;20917:34;1009:35;20903:11;;:48;20899:52;;20810:143;20971:11;;;;-1:-1:-1;20971:11:5;;-1:-1:-1;1009:35:5;20996:5;;;:15;;-1:-1:-1;21076:35:5;21033:39;;;21028:45;;:83;21021:90;;;;;1009:35;21117:5;;;:15;;-1:-1:-1;21197:35:5;21154;:39;;;21149:45;;:83;21142:90;;;;;1009:35;21238:5;;;:15;;-1:-1:-1;21318:35:5;21275;:39;;;21270:45;;:83;21263:90;;;;;1009:35;21359:5;;;:15;;-1:-1:-1;21439:35:5;21396;:39;;;21391:45;;:83;21384:90;;;;;1009:35;21480:5;;;:15;;-1:-1:-1;21560:35:5;21517;:39;;;21512:45;;:83;21505:90;;;;;1009:35;21601:5;;;:15;;-1:-1:-1;21681:35:5;21638;:39;;;21633:45;;:83;21626:90;;;;;1009:35;21722:5;;;:15;;-1:-1:-1;21802:35:5;21759;:39;;;21754:45;;:83;21747:90;;;;;1009:35;21843:5;;;:15;;-1:-1:-1;21923:35:5;21880;:39;;;21875:45;;:83;21868:90;;;;;19589:2397;-1:-1:-1;;;;;19589:2397:5:o;12661:826::-;12716:7;;12772:2;1085:35;12880:12;;12876:152;;12908:11;12922:22;1009:35;12932:1;:11;12922:9;:22::i;:::-;12958:11;;1009:35;13002:15;;;-1:-1:-1;49:1;45:20;25:41;;;;-1:-1;12876:152:5;1009:35;13133:1;:11;13129:297;;;772:3;13160:256;13194:1;13190;:5;;;13160:256;;;1009:35;13225:5;;;13224:17;;-1:-1:-1;1085:35:5;13280:12;;13276:126;;13369:14;-1:-1:-1;;13377:5:5;;13369:14;49:1:-1;13369:14:5;;;13362:21;;;;;25:41:-1;;;;13276:126:5;-1:-1:-1;;13197:3:5;13160:256;;;;13129:297;1398:33;1316;13443:19;;:37;;12661:826;-1:-1:-1;;;;12661:826:5:o;22157:2980::-;22211:7;22555:18;1009:35;22303:38;;;22355:5;;;:15;;;22441:5;;;:15;;;22527:5;;;:15;;;22551:22;;;22383:18;22379:22;;;22469:18;22465:22;;;;22458:29;22544;;22303:38;;22613:5;;;:15;22609:19;;22637:1;22641:18;22637:22;22630:29;;;;1009:35;22703:1;22699;:5;:15;;;;;;;;22695:19;;22723:1;22727:18;22723:22;22716:29;;;;1009:35;22789:1;22785;:5;:15;;;;;;;;22781:19;;22809:1;22813:18;22809:22;22802:29;;;;1009:35;22875:1;22871;:5;:15;;;;;;;;22867:19;;22895:1;22899:18;22895:22;22888:29;;;;1009:35;22961:1;22957;:5;:15;;;;;;;;22953:19;;22981:1;22985:18;22981:22;22974:29;;;;1009:35;23047:1;23043;:5;:15;;;;;;;;23039:19;;23067:1;23071:18;23067:22;23060:29;;;;1009:35;23133:1;23129;:5;:15;;;;;;;;23125:19;;23153:1;23157:18;23153:22;23146:29;;;;1009:35;23219:1;23215;:5;:15;;;;;;;;23211:19;;23239:1;23243:18;23239:22;23232:29;;;;1009:35;23305:1;23301;:5;:15;;;;;;;;23297:19;;23325:1;23329:18;23325:22;23318:29;;;;1009:35;23391:1;23387;:5;:15;;;;;;;;23383:19;;23411:1;23415:18;23411:22;23404:29;;;;1009:35;23477:1;23473;:5;:15;;;;;;;;23469:19;;23497:1;23501:18;23497:22;23490:29;;;;1009:35;23563:1;23559;:5;:15;;;;;;;;23555:19;;23583:1;23587:18;23583:22;23576:29;;;;1009:35;23649:1;23645;:5;:15;;;;;;;;23641:19;;23669:1;23673:18;23669:22;23662:29;;;;1009:35;23735:1;23731;:5;:15;;;;;;;;23727:19;;23755:1;23759:18;23755:22;23748:29;;;;1009:35;23821:1;23817;:5;:15;;;;;;;;23813:19;;23841:1;23845:18;23841:22;23834:29;;;;1009:35;23907:1;23903;:5;:15;;;;;;;23997:18;23903:15;;;23920:29;;;23991:24;:28;;1009:35;23991:38;;23903:15;-1:-1:-1;24099:35:5;24095:39;;24094:46;24090:137;;24192:35;24154;24148:41;;:79;24142:85;;24090:137;24246:35;24242:39;;24241:46;24237:137;;24339:35;24301;24295:41;;:79;24289:85;;24237:137;24393:35;24389:39;;24388:46;24384:137;;24486:35;24448;24442:41;;:79;24436:85;;24384:137;24540:35;24536:39;;24535:46;24531:137;;24633:35;24595;24589:41;;:79;24583:85;;24531:137;24687:35;24683:39;;24682:46;24678:137;;24780:35;24742;24736:41;;:79;24730:85;;24678:137;24834:35;24830:39;;24829:46;24825:137;;24927:35;24889;24883:41;;:79;24877:85;;24825:137;24981:35;24977:39;;24976:46;24972:137;;25074:35;25036;25030:41;;:79;25024:85;;24972:137;-1:-1:-1;25127:3:5;;22157:2980;-1:-1:-1;;;22157:2980:5:o;14495:508::-;14569:5;725:2;772:3;14659:179;14675:2;14666:11;;:2;14671:1;14666:6;:11;;;14659:179;;;14693:9;14717:1;14705:13;14706:7;;;14705:13;;;-1:-1:-1;14756:2:5;14736:11;:16;;;;;;;;;;;;:22;14732:95;;14781:3;14776:8;;14732:95;;;14824:3;14819:8;;14732:95;14659:179;;;;14871:2;14852:11;:15;;;;;;;;;;;;:21;14848:48;;14894:2;-1:-1:-1;14887:9:5;;-1:-1:-1;14887:9:5;14848:48;14929:2;14910:11;:15;;;;;;;;;;;;:21;14906:48;;-1:-1:-1;14952:2:5;-1:-1:-1;14945:9:5;;14906:48;14965:13;15587:3826;15660:7;15679:10;15692:2;15679:15;;15704:11;15718:1;15704:15;;15748:10;15735:23;;15741:2;15736;:7;15735:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;15735:23:5;15730:28;;15767:2;15772:33;15767:38;15760:45;;;;15859:10;15846:23;;15852:2;15847;:7;15846:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;15846:23:5;15841:28;;15878:2;15883:33;15878:38;15871:45;;;;15970:10;15957:23;;15963:2;15958;:7;15957:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;15957:23:5;15952:28;;15989:2;15994:33;15989:38;15982:45;;;;16081:10;16068:23;;16074:2;16069;:7;16068:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16068:23:5;16063:28;;16100:2;16105:33;16100:38;16093:45;;;;16192:10;16179:23;;16185:2;16180;:7;16179:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16179:23:5;16174:28;;16211:2;16216:33;16211:38;16204:45;;;;16303:10;16290:23;;16296:2;16291;:7;16290:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16290:23:5;16285:28;;16322:2;16327:33;16322:38;16315:45;;;;16414:10;16401:23;;16407:2;16402;:7;16401:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16401:23:5;16396:28;;16433:2;16438:33;16433:38;16426:45;;;;16525:10;16512:23;;16518:2;16513;:7;16512:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16512:23:5;16507:28;;16544:2;16549:33;16544:38;16537:45;;;;16636:10;16623:23;;16629:2;16624;:7;16623:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16623:23:5;16618:28;;16655:2;16660:33;16655:38;16648:45;;;;16747:10;16734:23;;16740:2;16735;:7;16734:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16734:23:5;16729:28;;16766:2;16771:33;16766:38;16759:45;;;;16858:10;16845:23;;16851:2;16846;:7;16845:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16845:23:5;16840:28;;16877:2;16882:33;16877:38;16870:45;;;;16969:10;16956:23;;16962:2;16957;:7;16956:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;16956:23:5;16951:28;;16988:2;16993:33;16988:38;16981:45;;;;17080:10;17067:23;;17073:2;17068;:7;17067:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17067:23:5;17062:28;;17099:2;17104:33;17099:38;17092:45;;;;17191:10;17178:23;;17184:2;17179;:7;17178:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17178:23:5;17173:28;;17210:2;17215:33;17210:38;17203:45;;;;17302:10;17289:23;;17295:2;17290;:7;17289:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17289:23:5;17284:28;;17321:2;17326:33;17321:38;17314:45;;;;17413:10;17400:23;;17406:2;17401;:7;17400:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17400:23:5;17395:28;;17432:2;17437:33;17432:38;17425:45;;;;17524:10;17511:23;;17517:2;17512;:7;17511:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17511:23:5;17506:28;;17543:2;17548:33;17543:38;17536:45;;;;17635:10;17622:23;;17628:2;17623;:7;17622:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17622:23:5;17617:28;;17654:2;17659:33;17654:38;17647:45;;;;17746:10;17733:23;;17739:2;17734;:7;17733:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17733:23:5;17728:28;;17765:2;17770:33;17765:38;17758:45;;;;17857:10;17844:23;;17850:2;17845;:7;17844:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17844:23:5;17839:28;;17876:2;17881:33;17876:38;17869:45;;;;17968:10;17955:23;;17961:2;17956;:7;17955:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;17955:23:5;17950:28;;17987:2;17992:33;17987:38;17980:45;;;;18079:10;18066:23;;18072:2;18067;:7;18066:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18066:23:5;18061:28;;18098:2;18103:33;18098:38;18091:45;;;;18190:10;18177:23;;18183:2;18178;:7;18177:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18177:23:5;18172:28;;18209:2;18214:33;18209:38;18202:45;;;;18301:10;18288:23;;18294:2;18289;:7;18288:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18288:23:5;18283:28;;18320:2;18325:33;18320:38;18313:45;;;;18412:10;18399:23;;18405:2;18400;:7;18399:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18399:23:5;18394:28;;18431:2;18436:33;18431:38;18424:45;;;;18523:10;18510:23;;18516:2;18511;:7;18510:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18510:23:5;18505:28;;18542:2;18547:33;18542:38;18535:45;;;;18634:10;18621:23;;18627:2;18622;:7;18621:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18621:23:5;18616:28;;18653:2;18658:33;18653:38;18646:45;;;;18745:10;18732:23;;18738:2;18733;:7;18732:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18732:23:5;18727:28;;18764:2;18769:33;18764:38;18757:45;;;;18856:10;18843:23;;18849:2;18844;:7;18843:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18843:23:5;18838:28;;18875:2;18880:33;18875:38;18868:45;;;;18967:10;18954:23;;18960:2;18955;:7;18954:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;18954:23:5;18949:28;;18986:2;18991:33;18986:38;18979:45;;;;19078:10;19065:23;;19071:2;19066;:7;19065:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;19065:23:5;19060:28;;19097:2;19102:33;19097:38;19090:45;;;;19189:10;19176:23;;19182:2;19177;:7;19176:23;52:12:-1;49:1;45:20;29:14;25:41;7:59;;19176:23:5;19171:28;;19208:2;19213:33;19208:38;19201:45;;;;19345:10;19338:17;;629:1;19338:17;;;;19332:2;19296:33;19290:3;:39;;;;;;;;:44;:66;;15587:3826;-1:-1:-1;;;;;15587:3826:5:o;13602:532::-;13656:5;;13708:2;13729:3;13725:7;;13721:386;;;13784:80;13795:1;13791;:5;13784:80;;;13822:1;13841:8;;;;;49:1:-1;25:41;;13784:80:5;;;13721:386;;;13945:3;13930:167;13954:1;13950;:5;;;13930:167;;;13994:8;;;;;13988:15;;13984:99;;14056:8;;;;14027:7;;;49:1:-1;45:20;25:41;;;;13984:99:5;49:1:-1;13957:7:5;;;;25:41:-1;13930:167:5;;;;13721:386;-1:-1:-1;14124:3:5;13602:532;-1:-1:-1;;13602:532:5:o", + "source": "pragma solidity ^0.5.2;\n\nimport \"./ContinuousToken.sol\";\n\n// Artist TOken\ncontract ETHContinuousToken is ContinuousToken {\n uint256 internal reserve;\n address payable internal artistAddress;\n \n constructor(\n string memory _name,\n string memory _symbol,\n uint8 _decimals,\n uint _initialSupply,\n uint32 _reserveRatio\n ) public payable ContinuousToken(_name, _symbol, _decimals, _initialSupply, _reserveRatio) {\n reserve = msg.value;\n artistAddress = msg.sender;\n }\n\n function () external payable { mint(); }\n\n // calculate artist amount and send rest to contract to mint\n // send 1.2x \n function mint() public payable {\n uint artistAmount = msg.value * 200 / 10000; // 20% artist cut\n uint purchaseAmount = msg.value - artistAmount;\n artistAddress.transfer(purchaseAmount);\n _continuousMint(purchaseAmount);\n reserve = reserve.add(purchaseAmount);\n }\n\n function burn(uint _amount) public {\n uint refundAmount = _continuousBurn(_amount);\n reserve = reserve.sub(refundAmount);\n msg.sender.transfer(refundAmount);\n }\n\n function reserveBalance() public view returns (uint) {\n return reserve;\n }\n}", + "sourcePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/token/ETHContinuousToken.sol", "ast": { - "absolutePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/token/ETHContinuousToken.sol", + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/token/ETHContinuousToken.sol", "exportedSymbols": { "ETHContinuousToken": [ - 2972 + 3077 ] }, - "id": 2973, + "id": 3078, "nodeType": "SourceUnit", "nodes": [ { - "id": 2878, + "id": 2959, "literals": [ "solidity", "^", @@ -743,16 +671,16 @@ ".2" ], "nodeType": "PragmaDirective", - "src": "0:23:9" + "src": "0:23:12" }, { - "absolutePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/token/ContinuousToken.sol", + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/token/ContinuousToken.sol", "file": "./ContinuousToken.sol", - "id": 2879, + "id": 2960, "nodeType": "ImportDirective", - "scope": 2973, - "sourceUnit": 2776, - "src": "25:31:9", + "scope": 3078, + "sourceUnit": 2857, + "src": "25:31:12", "symbolAliases": [], "unitAlias": "" }, @@ -762,19 +690,19 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 2880, + "id": 2961, "name": "ContinuousToken", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2775, - "src": "90:15:9", + "referencedDeclaration": 2856, + "src": "105:15:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_ContinuousToken_$2775", + "typeIdentifier": "t_contract$_ContinuousToken_$2856", "typeString": "contract ContinuousToken" } }, - "id": 2881, + "id": 2962, "nodeType": "InheritanceSpecifier", - "src": "90:15:9" + "src": "105:15:12" } ], "contractDependencies": [ @@ -783,41 +711,41 @@ 176, 389, 2569, - 2775, - 2999, - 3492, - 3897, - 3955, - 4052 + 2856, + 3104, + 3597, + 4002, + 4060, + 4157 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 2972, + "id": 3077, "linearizedBaseContracts": [ - 2972, - 2775, + 3077, + 2856, 176, 122, 389, 2569, 139, - 3955, - 3897, - 3492, - 4052, - 2999 + 4060, + 4002, + 3597, + 4157, + 3104 ], "name": "ETHContinuousToken", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 2883, + "id": 2964, "name": "reserve", "nodeType": "VariableDeclaration", - "scope": 2972, - "src": "112:24:9", + "scope": 3077, + "src": "127:24:12", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -825,10 +753,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2882, + "id": 2963, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "112:7:9", + "src": "127:7:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -837,31 +765,120 @@ "value": null, "visibility": "internal" }, + { + "constant": false, + "id": 2966, + "name": "artistAddress", + "nodeType": "VariableDeclaration", + "scope": 3077, + "src": "157:38:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 2965, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "157:15:12", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + }, { "body": { - "id": 2908, + "id": 2996, "nodeType": "Block", - "src": "396:36:9", + "src": "455:72:12", "statements": [ { "expression": { "argumentTypes": null, - "id": 2906, + "id": 2989, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2986, + "name": "reserve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2964, + "src": "465:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2987, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4172, + "src": "475:3:12", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2988, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "475:9:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "465:19:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2990, + "nodeType": "ExpressionStatement", + "src": "465:19:12" + }, + { + "expression": { + "argumentTypes": null, + "id": 2994, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2903, - "name": "reserve", + "id": 2991, + "name": "artistAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2883, - "src": "406:7:9", + "referencedDeclaration": 2966, + "src": "494:13:12", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, "nodeType": "Assignment", @@ -870,45 +887,45 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2904, + "id": 2992, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4067, - "src": "416:3:9", + "referencedDeclaration": 4172, + "src": "510:3:12", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2905, + "id": 2993, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberName": "value", + "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "416:9:9", + "src": "510:10:12", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - "src": "406:19:9", + "src": "494:26:12", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - "id": 2907, + "id": 2995, "nodeType": "ExpressionStatement", - "src": "406:19:9" + "src": "494:26:12" } ] }, "documentation": null, - "id": 2909, + "id": 2997, "implemented": true, "kind": "constructor", "modifiers": [ @@ -916,12 +933,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2896, + "id": 2979, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2885, - "src": "338:5:9", + "referencedDeclaration": 2968, + "src": "397:5:12", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" @@ -929,12 +946,12 @@ }, { "argumentTypes": null, - "id": 2897, + "id": 2980, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2887, - "src": "345:7:9", + "referencedDeclaration": 2970, + "src": "404:7:12", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" @@ -942,12 +959,12 @@ }, { "argumentTypes": null, - "id": 2898, + "id": 2981, "name": "_decimals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2889, - "src": "354:9:9", + "referencedDeclaration": 2972, + "src": "413:9:12", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -955,12 +972,12 @@ }, { "argumentTypes": null, - "id": 2899, + "id": 2982, "name": "_initialSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2891, - "src": "365:14:9", + "referencedDeclaration": 2974, + "src": "424:14:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -968,49 +985,49 @@ }, { "argumentTypes": null, - "id": 2900, + "id": 2983, "name": "_reserveRatio", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2893, - "src": "381:13:9", + "referencedDeclaration": 2976, + "src": "440:13:12", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } } ], - "id": 2901, + "id": 2984, "modifierName": { "argumentTypes": null, - "id": 2895, + "id": 2978, "name": "ContinuousToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2775, - "src": "322:15:9", + "referencedDeclaration": 2856, + "src": "381:15:12", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ContinuousToken_$2775_$", + "typeIdentifier": "t_type$_t_contract$_ContinuousToken_$2856_$", "typeString": "type(contract ContinuousToken)" } }, "nodeType": "ModifierInvocation", - "src": "322:73:9" + "src": "381:73:12" } ], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 2894, + "id": 2977, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2885, + "id": 2968, "name": "_name", "nodeType": "VariableDeclaration", - "scope": 2909, - "src": "166:19:9", + "scope": 2997, + "src": "225:19:12", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -1018,10 +1035,10 @@ "typeString": "string" }, "typeName": { - "id": 2884, + "id": 2967, "name": "string", "nodeType": "ElementaryTypeName", - "src": "166:6:9", + "src": "225:6:12", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -1032,11 +1049,11 @@ }, { "constant": false, - "id": 2887, + "id": 2970, "name": "_symbol", "nodeType": "VariableDeclaration", - "scope": 2909, - "src": "195:21:9", + "scope": 2997, + "src": "254:21:12", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -1044,10 +1061,10 @@ "typeString": "string" }, "typeName": { - "id": 2886, + "id": 2969, "name": "string", "nodeType": "ElementaryTypeName", - "src": "195:6:9", + "src": "254:6:12", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -1058,11 +1075,11 @@ }, { "constant": false, - "id": 2889, + "id": 2972, "name": "_decimals", "nodeType": "VariableDeclaration", - "scope": 2909, - "src": "226:15:9", + "scope": 2997, + "src": "285:15:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1070,10 +1087,10 @@ "typeString": "uint8" }, "typeName": { - "id": 2888, + "id": 2971, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "226:5:9", + "src": "285:5:12", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1084,11 +1101,11 @@ }, { "constant": false, - "id": 2891, + "id": 2974, "name": "_initialSupply", "nodeType": "VariableDeclaration", - "scope": 2909, - "src": "251:19:9", + "scope": 2997, + "src": "310:19:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1096,10 +1113,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2890, + "id": 2973, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "251:4:9", + "src": "310:4:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1110,11 +1127,11 @@ }, { "constant": false, - "id": 2893, + "id": 2976, "name": "_reserveRatio", "nodeType": "VariableDeclaration", - "scope": 2909, - "src": "280:20:9", + "scope": 2997, + "src": "339:20:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1122,10 +1139,10 @@ "typeString": "uint32" }, "typeName": { - "id": 2892, + "id": 2975, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "280:6:9", + "src": "339:6:12", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -1135,25 +1152,25 @@ "visibility": "internal" } ], - "src": "156:150:9" + "src": "215:150:12" }, "returnParameters": { - "id": 2902, + "id": 2985, "nodeType": "ParameterList", "parameters": [], - "src": "396:0:9" + "src": "455:0:12" }, - "scope": 2972, - "src": "145:287:9", + "scope": 3077, + "src": "204:323:12", "stateMutability": "payable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2915, + "id": 3003, "nodeType": "Block", - "src": "467:11:9", + "src": "562:11:12", "statements": [ { "expression": { @@ -1161,18 +1178,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 2912, + "id": 3000, "name": "mint", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2936, - "src": "469:4:9", + "referencedDeclaration": 3041, + "src": "564:4:12", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 2913, + "id": 3001, "isConstant": false, "isLValue": false, "isPure": false, @@ -1180,61 +1197,61 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "469:6:9", + "src": "564:6:12", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2914, + "id": 3002, "nodeType": "ExpressionStatement", - "src": "469:6:9" + "src": "564:6:12" } ] }, "documentation": null, - "id": 2916, + "id": 3004, "implemented": true, "kind": "fallback", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 2910, + "id": 2998, "nodeType": "ParameterList", "parameters": [], - "src": "447:2:9" + "src": "542:2:12" }, "returnParameters": { - "id": 2911, + "id": 2999, "nodeType": "ParameterList", "parameters": [], - "src": "467:0:9" + "src": "562:0:12" }, - "scope": 2972, - "src": "438:40:9", + "scope": 3077, + "src": "533:40:12", "stateMutability": "payable", "superFunction": null, "visibility": "external" }, { "body": { - "id": 2935, + "id": 3040, "nodeType": "Block", - "src": "515:136:9", + "src": "693:270:12", "statements": [ { "assignments": [ - 2920 + 3008 ], "declarations": [ { "constant": false, - "id": 2920, - "name": "purchaseAmount", + "id": 3008, + "name": "artistAmount", "nodeType": "VariableDeclaration", - "scope": 2935, - "src": "525:19:9", + "scope": 3040, + "src": "703:17:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1242,10 +1259,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2919, + "id": 3007, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "525:4:9", + "src": "703:4:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1255,38 +1272,279 @@ "visibility": "internal" } ], - "id": 2923, + "id": 3015, "initialValue": { "argumentTypes": null, - "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3014, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { "argumentTypes": null, - "id": 2921, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4067, - "src": "547:3:9", + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3012, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3009, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4172, + "src": "723:3:12", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3010, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "723:9:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "323030", + "id": 3011, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "735:3:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_200_by_1", + "typeString": "int_const 200" + }, + "value": "200" + }, + "src": "723:15:12", "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 2922, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3130303030", + "id": 3013, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "741:5:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + }, + "value": "10000" + }, + "src": "723:23:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "703:43:12" + }, + { + "assignments": [ + 3017 + ], + "declarations": [ + { + "constant": false, + "id": 3017, + "name": "purchaseAmount", + "nodeType": "VariableDeclaration", + "scope": 3040, + "src": "774:19:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3016, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "774:4:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3022, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3021, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "547:9:9", + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3018, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4172, + "src": "796:3:12", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3019, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "796:9:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 3020, + "name": "artistAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3008, + "src": "808:12:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "796:24:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "525:31:9" + "src": "774:46:12" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3026, + "name": "purchaseAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3017, + "src": "853:14:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3023, + "name": "artistAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2966, + "src": "830:13:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 3025, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "830:22:12", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 3027, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "830:38:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3028, + "nodeType": "ExpressionStatement", + "src": "830:38:12" }, { "expression": { @@ -1294,12 +1552,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2925, + "id": 3030, "name": "purchaseAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2920, - "src": "582:14:9", + "referencedDeclaration": 3017, + "src": "894:14:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1313,18 +1571,18 @@ "typeString": "uint256" } ], - "id": 2924, + "id": 3029, "name": "_continuousMint", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2687, - "src": "566:15:9", + "referencedDeclaration": 2768, + "src": "878:15:12", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) returns (uint256)" } }, - "id": 2926, + "id": 3031, "isConstant": false, "isLValue": false, "isPure": false, @@ -1332,32 +1590,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "566:31:9", + "src": "878:31:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 2927, + "id": 3032, "nodeType": "ExpressionStatement", - "src": "566:31:9" + "src": "878:31:12" }, { "expression": { "argumentTypes": null, - "id": 2933, + "id": 3038, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2928, + "id": 3033, "name": "reserve", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2883, - "src": "607:7:9", + "referencedDeclaration": 2964, + "src": "919:7:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1370,12 +1628,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2931, + "id": 3036, "name": "purchaseAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2920, - "src": "629:14:9", + "referencedDeclaration": 3017, + "src": "941:14:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1391,32 +1649,32 @@ ], "expression": { "argumentTypes": null, - "id": 2929, + "id": 3034, "name": "reserve", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2883, - "src": "617:7:9", + "referencedDeclaration": 2964, + "src": "929:7:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 2930, + "id": 3035, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 3214, - "src": "617:11:9", + "referencedDeclaration": 3319, + "src": "929:11:12", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 2932, + "id": 3037, "isConstant": false, "isLValue": false, "isPure": false, @@ -1424,67 +1682,67 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "617:27:9", + "src": "929:27:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "607:37:9", + "src": "919:37:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 2934, + "id": 3039, "nodeType": "ExpressionStatement", - "src": "607:37:9" + "src": "919:37:12" } ] }, "documentation": null, - "id": 2936, + "id": 3041, "implemented": true, "kind": "function", "modifiers": [], "name": "mint", "nodeType": "FunctionDefinition", "parameters": { - "id": 2917, + "id": 3005, "nodeType": "ParameterList", "parameters": [], - "src": "497:2:9" + "src": "675:2:12" }, "returnParameters": { - "id": 2918, + "id": 3006, "nodeType": "ParameterList", "parameters": [], - "src": "515:0:9" + "src": "693:0:12" }, - "scope": 2972, - "src": "484:167:9", + "scope": 3077, + "src": "662:301:12", "stateMutability": "payable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2962, + "id": 3067, "nodeType": "Block", - "src": "692:149:9", + "src": "1004:149:12", "statements": [ { "assignments": [ - 2942 + 3047 ], "declarations": [ { "constant": false, - "id": 2942, + "id": 3047, "name": "refundAmount", "nodeType": "VariableDeclaration", - "scope": 2962, - "src": "702:17:9", + "scope": 3067, + "src": "1014:17:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1492,10 +1750,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2941, + "id": 3046, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "702:4:9", + "src": "1014:4:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1505,18 +1763,18 @@ "visibility": "internal" } ], - "id": 2946, + "id": 3051, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 2944, + "id": 3049, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2938, - "src": "738:7:9", + "referencedDeclaration": 3043, + "src": "1050:7:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1530,18 +1788,18 @@ "typeString": "uint256" } ], - "id": 2943, + "id": 3048, "name": "_continuousBurn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2735, - "src": "722:15:9", + "referencedDeclaration": 2816, + "src": "1034:15:12", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) returns (uint256)" } }, - "id": 2945, + "id": 3050, "isConstant": false, "isLValue": false, "isPure": false, @@ -1549,31 +1807,31 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "722:24:9", + "src": "1034:24:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "702:44:9" + "src": "1014:44:12" }, { "expression": { "argumentTypes": null, - "id": 2952, + "id": 3057, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2947, + "id": 3052, "name": "reserve", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2883, - "src": "756:7:9", + "referencedDeclaration": 2964, + "src": "1068:7:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1586,12 +1844,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2950, + "id": 3055, "name": "refundAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2942, - "src": "778:12:9", + "referencedDeclaration": 3047, + "src": "1090:12:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1607,32 +1865,32 @@ ], "expression": { "argumentTypes": null, - "id": 2948, + "id": 3053, "name": "reserve", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2883, - "src": "766:7:9", + "referencedDeclaration": 2964, + "src": "1078:7:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 2949, + "id": 3054, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 3230, - "src": "766:11:9", + "referencedDeclaration": 3335, + "src": "1078:11:12", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 2951, + "id": 3056, "isConstant": false, "isLValue": false, "isPure": false, @@ -1640,21 +1898,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "766:25:9", + "src": "1078:25:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "756:35:9", + "src": "1068:35:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 2953, + "id": 3058, "nodeType": "ExpressionStatement", - "src": "756:35:9" + "src": "1068:35:12" }, { "expression": { @@ -1662,12 +1920,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2959, + "id": 3064, "name": "refundAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2942, - "src": "821:12:9", + "referencedDeclaration": 3047, + "src": "1133:12:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1685,18 +1943,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2954, + "id": 3059, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4067, - "src": "801:3:9", + "referencedDeclaration": 4172, + "src": "1113:3:12", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2957, + "id": 3062, "isConstant": false, "isLValue": false, "isPure": false, @@ -1704,13 +1962,13 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "801:10:9", + "src": "1113:10:12", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "id": 2958, + "id": 3063, "isConstant": false, "isLValue": false, "isPure": false, @@ -1718,13 +1976,13 @@ "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "801:19:9", + "src": "1113:19:12", "typeDescriptions": { "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, - "id": 2960, + "id": 3065, "isConstant": false, "isLValue": false, "isPure": false, @@ -1732,36 +1990,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "801:33:9", + "src": "1113:33:12", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2961, + "id": 3066, "nodeType": "ExpressionStatement", - "src": "801:33:9" + "src": "1113:33:12" } ] }, "documentation": null, - "id": 2963, + "id": 3068, "implemented": true, "kind": "function", "modifiers": [], "name": "burn", "nodeType": "FunctionDefinition", "parameters": { - "id": 2939, + "id": 3044, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2938, + "id": 3043, "name": "_amount", "nodeType": "VariableDeclaration", - "scope": 2963, - "src": "671:12:9", + "scope": 3068, + "src": "983:12:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1769,10 +2027,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2937, + "id": 3042, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "671:4:9", + "src": "983:4:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1782,71 +2040,71 @@ "visibility": "internal" } ], - "src": "670:14:9" + "src": "982:14:12" }, "returnParameters": { - "id": 2940, + "id": 3045, "nodeType": "ParameterList", "parameters": [], - "src": "692:0:9" + "src": "1004:0:12" }, - "scope": 2972, - "src": "657:184:9", + "scope": 3077, + "src": "969:184:12", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2970, + "id": 3075, "nodeType": "Block", - "src": "900:31:9", + "src": "1212:31:12", "statements": [ { "expression": { "argumentTypes": null, - "id": 2968, + "id": 3073, "name": "reserve", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2883, - "src": "917:7:9", + "referencedDeclaration": 2964, + "src": "1229:7:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 2967, - "id": 2969, + "functionReturnParameters": 3072, + "id": 3074, "nodeType": "Return", - "src": "910:14:9" + "src": "1222:14:12" } ] }, "documentation": null, - "id": 2971, + "id": 3076, "implemented": true, "kind": "function", "modifiers": [], "name": "reserveBalance", "nodeType": "FunctionDefinition", "parameters": { - "id": 2964, + "id": 3069, "nodeType": "ParameterList", "parameters": [], - "src": "870:2:9" + "src": "1182:2:12" }, "returnParameters": { - "id": 2967, + "id": 3072, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2966, + "id": 3071, "name": "", "nodeType": "VariableDeclaration", - "scope": 2971, - "src": "894:4:9", + "scope": 3076, + "src": "1206:4:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1854,10 +2112,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2965, + "id": 3070, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "894:4:9", + "src": "1206:4:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1867,33 +2125,33 @@ "visibility": "internal" } ], - "src": "893:6:9" + "src": "1205:6:12" }, - "scope": 2972, - "src": "847:84:9", + "scope": 3077, + "src": "1159:84:12", "stateMutability": "view", "superFunction": 121, "visibility": "public" } ], - "scope": 2973, - "src": "59:878:9" + "scope": 3078, + "src": "74:1171:12" } ], - "src": "0:937:9" + "src": "0:1245:12" }, "legacyAST": { - "absolutePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/token/ETHContinuousToken.sol", + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/token/ETHContinuousToken.sol", "exportedSymbols": { "ETHContinuousToken": [ - 2972 + 3077 ] }, - "id": 2973, + "id": 3078, "nodeType": "SourceUnit", "nodes": [ { - "id": 2878, + "id": 2959, "literals": [ "solidity", "^", @@ -1901,16 +2159,16 @@ ".2" ], "nodeType": "PragmaDirective", - "src": "0:23:9" + "src": "0:23:12" }, { - "absolutePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/token/ContinuousToken.sol", + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/token/ContinuousToken.sol", "file": "./ContinuousToken.sol", - "id": 2879, + "id": 2960, "nodeType": "ImportDirective", - "scope": 2973, - "sourceUnit": 2776, - "src": "25:31:9", + "scope": 3078, + "sourceUnit": 2857, + "src": "25:31:12", "symbolAliases": [], "unitAlias": "" }, @@ -1920,19 +2178,19 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 2880, + "id": 2961, "name": "ContinuousToken", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2775, - "src": "90:15:9", + "referencedDeclaration": 2856, + "src": "105:15:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_ContinuousToken_$2775", + "typeIdentifier": "t_contract$_ContinuousToken_$2856", "typeString": "contract ContinuousToken" } }, - "id": 2881, + "id": 2962, "nodeType": "InheritanceSpecifier", - "src": "90:15:9" + "src": "105:15:12" } ], "contractDependencies": [ @@ -1941,41 +2199,41 @@ 176, 389, 2569, - 2775, - 2999, - 3492, - 3897, - 3955, - 4052 + 2856, + 3104, + 3597, + 4002, + 4060, + 4157 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 2972, + "id": 3077, "linearizedBaseContracts": [ - 2972, - 2775, + 3077, + 2856, 176, 122, 389, 2569, 139, - 3955, - 3897, - 3492, - 4052, - 2999 + 4060, + 4002, + 3597, + 4157, + 3104 ], "name": "ETHContinuousToken", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 2883, + "id": 2964, "name": "reserve", "nodeType": "VariableDeclaration", - "scope": 2972, - "src": "112:24:9", + "scope": 3077, + "src": "127:24:12", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1983,10 +2241,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2882, + "id": 2963, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "112:7:9", + "src": "127:7:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1995,31 +2253,120 @@ "value": null, "visibility": "internal" }, + { + "constant": false, + "id": 2966, + "name": "artistAddress", + "nodeType": "VariableDeclaration", + "scope": 3077, + "src": "157:38:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 2965, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "157:15:12", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + }, { "body": { - "id": 2908, + "id": 2996, "nodeType": "Block", - "src": "396:36:9", + "src": "455:72:12", "statements": [ { "expression": { "argumentTypes": null, - "id": 2906, + "id": 2989, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2986, + "name": "reserve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2964, + "src": "465:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2987, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4172, + "src": "475:3:12", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2988, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "475:9:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "465:19:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2990, + "nodeType": "ExpressionStatement", + "src": "465:19:12" + }, + { + "expression": { + "argumentTypes": null, + "id": 2994, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2903, - "name": "reserve", + "id": 2991, + "name": "artistAddress", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2883, - "src": "406:7:9", + "referencedDeclaration": 2966, + "src": "494:13:12", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, "nodeType": "Assignment", @@ -2028,45 +2375,45 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2904, + "id": 2992, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4067, - "src": "416:3:9", + "referencedDeclaration": 4172, + "src": "510:3:12", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2905, + "id": 2993, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberName": "value", + "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "416:9:9", + "src": "510:10:12", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - "src": "406:19:9", + "src": "494:26:12", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - "id": 2907, + "id": 2995, "nodeType": "ExpressionStatement", - "src": "406:19:9" + "src": "494:26:12" } ] }, "documentation": null, - "id": 2909, + "id": 2997, "implemented": true, "kind": "constructor", "modifiers": [ @@ -2074,12 +2421,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2896, + "id": 2979, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2885, - "src": "338:5:9", + "referencedDeclaration": 2968, + "src": "397:5:12", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" @@ -2087,12 +2434,12 @@ }, { "argumentTypes": null, - "id": 2897, + "id": 2980, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2887, - "src": "345:7:9", + "referencedDeclaration": 2970, + "src": "404:7:12", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" @@ -2100,12 +2447,12 @@ }, { "argumentTypes": null, - "id": 2898, + "id": 2981, "name": "_decimals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2889, - "src": "354:9:9", + "referencedDeclaration": 2972, + "src": "413:9:12", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2113,12 +2460,12 @@ }, { "argumentTypes": null, - "id": 2899, + "id": 2982, "name": "_initialSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2891, - "src": "365:14:9", + "referencedDeclaration": 2974, + "src": "424:14:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2126,49 +2473,49 @@ }, { "argumentTypes": null, - "id": 2900, + "id": 2983, "name": "_reserveRatio", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2893, - "src": "381:13:9", + "referencedDeclaration": 2976, + "src": "440:13:12", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } } ], - "id": 2901, + "id": 2984, "modifierName": { "argumentTypes": null, - "id": 2895, + "id": 2978, "name": "ContinuousToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2775, - "src": "322:15:9", + "referencedDeclaration": 2856, + "src": "381:15:12", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ContinuousToken_$2775_$", + "typeIdentifier": "t_type$_t_contract$_ContinuousToken_$2856_$", "typeString": "type(contract ContinuousToken)" } }, "nodeType": "ModifierInvocation", - "src": "322:73:9" + "src": "381:73:12" } ], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 2894, + "id": 2977, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2885, + "id": 2968, "name": "_name", "nodeType": "VariableDeclaration", - "scope": 2909, - "src": "166:19:9", + "scope": 2997, + "src": "225:19:12", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -2176,10 +2523,10 @@ "typeString": "string" }, "typeName": { - "id": 2884, + "id": 2967, "name": "string", "nodeType": "ElementaryTypeName", - "src": "166:6:9", + "src": "225:6:12", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -2190,11 +2537,11 @@ }, { "constant": false, - "id": 2887, + "id": 2970, "name": "_symbol", "nodeType": "VariableDeclaration", - "scope": 2909, - "src": "195:21:9", + "scope": 2997, + "src": "254:21:12", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -2202,10 +2549,10 @@ "typeString": "string" }, "typeName": { - "id": 2886, + "id": 2969, "name": "string", "nodeType": "ElementaryTypeName", - "src": "195:6:9", + "src": "254:6:12", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -2216,11 +2563,11 @@ }, { "constant": false, - "id": 2889, + "id": 2972, "name": "_decimals", "nodeType": "VariableDeclaration", - "scope": 2909, - "src": "226:15:9", + "scope": 2997, + "src": "285:15:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2228,10 +2575,10 @@ "typeString": "uint8" }, "typeName": { - "id": 2888, + "id": 2971, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "226:5:9", + "src": "285:5:12", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2242,11 +2589,11 @@ }, { "constant": false, - "id": 2891, + "id": 2974, "name": "_initialSupply", "nodeType": "VariableDeclaration", - "scope": 2909, - "src": "251:19:9", + "scope": 2997, + "src": "310:19:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2254,10 +2601,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2890, + "id": 2973, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "251:4:9", + "src": "310:4:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2268,11 +2615,11 @@ }, { "constant": false, - "id": 2893, + "id": 2976, "name": "_reserveRatio", "nodeType": "VariableDeclaration", - "scope": 2909, - "src": "280:20:9", + "scope": 2997, + "src": "339:20:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2280,10 +2627,10 @@ "typeString": "uint32" }, "typeName": { - "id": 2892, + "id": 2975, "name": "uint32", "nodeType": "ElementaryTypeName", - "src": "280:6:9", + "src": "339:6:12", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" @@ -2293,25 +2640,25 @@ "visibility": "internal" } ], - "src": "156:150:9" + "src": "215:150:12" }, "returnParameters": { - "id": 2902, + "id": 2985, "nodeType": "ParameterList", "parameters": [], - "src": "396:0:9" + "src": "455:0:12" }, - "scope": 2972, - "src": "145:287:9", + "scope": 3077, + "src": "204:323:12", "stateMutability": "payable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2915, + "id": 3003, "nodeType": "Block", - "src": "467:11:9", + "src": "562:11:12", "statements": [ { "expression": { @@ -2319,18 +2666,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 2912, + "id": 3000, "name": "mint", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2936, - "src": "469:4:9", + "referencedDeclaration": 3041, + "src": "564:4:12", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 2913, + "id": 3001, "isConstant": false, "isLValue": false, "isPure": false, @@ -2338,61 +2685,61 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "469:6:9", + "src": "564:6:12", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2914, + "id": 3002, "nodeType": "ExpressionStatement", - "src": "469:6:9" + "src": "564:6:12" } ] }, "documentation": null, - "id": 2916, + "id": 3004, "implemented": true, "kind": "fallback", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 2910, + "id": 2998, "nodeType": "ParameterList", "parameters": [], - "src": "447:2:9" + "src": "542:2:12" }, "returnParameters": { - "id": 2911, + "id": 2999, "nodeType": "ParameterList", "parameters": [], - "src": "467:0:9" + "src": "562:0:12" }, - "scope": 2972, - "src": "438:40:9", + "scope": 3077, + "src": "533:40:12", "stateMutability": "payable", "superFunction": null, "visibility": "external" }, { "body": { - "id": 2935, + "id": 3040, "nodeType": "Block", - "src": "515:136:9", + "src": "693:270:12", "statements": [ { "assignments": [ - 2920 + 3008 ], "declarations": [ { "constant": false, - "id": 2920, - "name": "purchaseAmount", + "id": 3008, + "name": "artistAmount", "nodeType": "VariableDeclaration", - "scope": 2935, - "src": "525:19:9", + "scope": 3040, + "src": "703:17:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2400,10 +2747,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2919, + "id": 3007, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "525:4:9", + "src": "703:4:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2413,38 +2760,279 @@ "visibility": "internal" } ], - "id": 2923, + "id": 3015, "initialValue": { "argumentTypes": null, - "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3014, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { "argumentTypes": null, - "id": 2921, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4067, - "src": "547:3:9", + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3012, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3009, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4172, + "src": "723:3:12", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3010, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "723:9:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "hexValue": "323030", + "id": 3011, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "735:3:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_200_by_1", + "typeString": "int_const 200" + }, + "value": "200" + }, + "src": "723:15:12", "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 2922, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3130303030", + "id": 3013, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "741:5:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + }, + "value": "10000" + }, + "src": "723:23:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "703:43:12" + }, + { + "assignments": [ + 3017 + ], + "declarations": [ + { + "constant": false, + "id": 3017, + "name": "purchaseAmount", + "nodeType": "VariableDeclaration", + "scope": 3040, + "src": "774:19:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3016, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "774:4:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3022, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3021, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "547:9:9", + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3018, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4172, + "src": "796:3:12", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3019, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "796:9:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 3020, + "name": "artistAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3008, + "src": "808:12:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "796:24:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "525:31:9" + "src": "774:46:12" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3026, + "name": "purchaseAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3017, + "src": "853:14:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 3023, + "name": "artistAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2966, + "src": "830:13:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 3025, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "830:22:12", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 3027, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "830:38:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3028, + "nodeType": "ExpressionStatement", + "src": "830:38:12" }, { "expression": { @@ -2452,12 +3040,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2925, + "id": 3030, "name": "purchaseAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2920, - "src": "582:14:9", + "referencedDeclaration": 3017, + "src": "894:14:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2471,18 +3059,18 @@ "typeString": "uint256" } ], - "id": 2924, + "id": 3029, "name": "_continuousMint", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2687, - "src": "566:15:9", + "referencedDeclaration": 2768, + "src": "878:15:12", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) returns (uint256)" } }, - "id": 2926, + "id": 3031, "isConstant": false, "isLValue": false, "isPure": false, @@ -2490,32 +3078,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "566:31:9", + "src": "878:31:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 2927, + "id": 3032, "nodeType": "ExpressionStatement", - "src": "566:31:9" + "src": "878:31:12" }, { "expression": { "argumentTypes": null, - "id": 2933, + "id": 3038, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2928, + "id": 3033, "name": "reserve", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2883, - "src": "607:7:9", + "referencedDeclaration": 2964, + "src": "919:7:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2528,12 +3116,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2931, + "id": 3036, "name": "purchaseAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2920, - "src": "629:14:9", + "referencedDeclaration": 3017, + "src": "941:14:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2549,32 +3137,32 @@ ], "expression": { "argumentTypes": null, - "id": 2929, + "id": 3034, "name": "reserve", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2883, - "src": "617:7:9", + "referencedDeclaration": 2964, + "src": "929:7:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 2930, + "id": 3035, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 3214, - "src": "617:11:9", + "referencedDeclaration": 3319, + "src": "929:11:12", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 2932, + "id": 3037, "isConstant": false, "isLValue": false, "isPure": false, @@ -2582,67 +3170,67 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "617:27:9", + "src": "929:27:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "607:37:9", + "src": "919:37:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 2934, + "id": 3039, "nodeType": "ExpressionStatement", - "src": "607:37:9" + "src": "919:37:12" } ] }, "documentation": null, - "id": 2936, + "id": 3041, "implemented": true, "kind": "function", "modifiers": [], "name": "mint", "nodeType": "FunctionDefinition", "parameters": { - "id": 2917, + "id": 3005, "nodeType": "ParameterList", "parameters": [], - "src": "497:2:9" + "src": "675:2:12" }, "returnParameters": { - "id": 2918, + "id": 3006, "nodeType": "ParameterList", "parameters": [], - "src": "515:0:9" + "src": "693:0:12" }, - "scope": 2972, - "src": "484:167:9", + "scope": 3077, + "src": "662:301:12", "stateMutability": "payable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2962, + "id": 3067, "nodeType": "Block", - "src": "692:149:9", + "src": "1004:149:12", "statements": [ { "assignments": [ - 2942 + 3047 ], "declarations": [ { "constant": false, - "id": 2942, + "id": 3047, "name": "refundAmount", "nodeType": "VariableDeclaration", - "scope": 2962, - "src": "702:17:9", + "scope": 3067, + "src": "1014:17:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2650,10 +3238,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2941, + "id": 3046, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "702:4:9", + "src": "1014:4:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2663,18 +3251,18 @@ "visibility": "internal" } ], - "id": 2946, + "id": 3051, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 2944, + "id": 3049, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2938, - "src": "738:7:9", + "referencedDeclaration": 3043, + "src": "1050:7:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2688,18 +3276,18 @@ "typeString": "uint256" } ], - "id": 2943, + "id": 3048, "name": "_continuousBurn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2735, - "src": "722:15:9", + "referencedDeclaration": 2816, + "src": "1034:15:12", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) returns (uint256)" } }, - "id": 2945, + "id": 3050, "isConstant": false, "isLValue": false, "isPure": false, @@ -2707,31 +3295,31 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "722:24:9", + "src": "1034:24:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "702:44:9" + "src": "1014:44:12" }, { "expression": { "argumentTypes": null, - "id": 2952, + "id": 3057, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2947, + "id": 3052, "name": "reserve", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2883, - "src": "756:7:9", + "referencedDeclaration": 2964, + "src": "1068:7:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2744,12 +3332,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2950, + "id": 3055, "name": "refundAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2942, - "src": "778:12:9", + "referencedDeclaration": 3047, + "src": "1090:12:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2765,32 +3353,32 @@ ], "expression": { "argumentTypes": null, - "id": 2948, + "id": 3053, "name": "reserve", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2883, - "src": "766:7:9", + "referencedDeclaration": 2964, + "src": "1078:7:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 2949, + "id": 3054, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", - "referencedDeclaration": 3230, - "src": "766:11:9", + "referencedDeclaration": 3335, + "src": "1078:11:12", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 2951, + "id": 3056, "isConstant": false, "isLValue": false, "isPure": false, @@ -2798,21 +3386,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "766:25:9", + "src": "1078:25:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "756:35:9", + "src": "1068:35:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 2953, + "id": 3058, "nodeType": "ExpressionStatement", - "src": "756:35:9" + "src": "1068:35:12" }, { "expression": { @@ -2820,12 +3408,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2959, + "id": 3064, "name": "refundAmount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2942, - "src": "821:12:9", + "referencedDeclaration": 3047, + "src": "1133:12:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2843,18 +3431,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2954, + "id": 3059, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4067, - "src": "801:3:9", + "referencedDeclaration": 4172, + "src": "1113:3:12", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2957, + "id": 3062, "isConstant": false, "isLValue": false, "isPure": false, @@ -2862,13 +3450,13 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "801:10:9", + "src": "1113:10:12", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "id": 2958, + "id": 3063, "isConstant": false, "isLValue": false, "isPure": false, @@ -2876,13 +3464,13 @@ "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "801:19:9", + "src": "1113:19:12", "typeDescriptions": { "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, - "id": 2960, + "id": 3065, "isConstant": false, "isLValue": false, "isPure": false, @@ -2890,36 +3478,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "801:33:9", + "src": "1113:33:12", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2961, + "id": 3066, "nodeType": "ExpressionStatement", - "src": "801:33:9" + "src": "1113:33:12" } ] }, "documentation": null, - "id": 2963, + "id": 3068, "implemented": true, "kind": "function", "modifiers": [], "name": "burn", "nodeType": "FunctionDefinition", "parameters": { - "id": 2939, + "id": 3044, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2938, + "id": 3043, "name": "_amount", "nodeType": "VariableDeclaration", - "scope": 2963, - "src": "671:12:9", + "scope": 3068, + "src": "983:12:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2927,10 +3515,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2937, + "id": 3042, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "671:4:9", + "src": "983:4:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2940,71 +3528,71 @@ "visibility": "internal" } ], - "src": "670:14:9" + "src": "982:14:12" }, "returnParameters": { - "id": 2940, + "id": 3045, "nodeType": "ParameterList", "parameters": [], - "src": "692:0:9" + "src": "1004:0:12" }, - "scope": 2972, - "src": "657:184:9", + "scope": 3077, + "src": "969:184:12", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2970, + "id": 3075, "nodeType": "Block", - "src": "900:31:9", + "src": "1212:31:12", "statements": [ { "expression": { "argumentTypes": null, - "id": 2968, + "id": 3073, "name": "reserve", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2883, - "src": "917:7:9", + "referencedDeclaration": 2964, + "src": "1229:7:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 2967, - "id": 2969, + "functionReturnParameters": 3072, + "id": 3074, "nodeType": "Return", - "src": "910:14:9" + "src": "1222:14:12" } ] }, "documentation": null, - "id": 2971, + "id": 3076, "implemented": true, "kind": "function", "modifiers": [], "name": "reserveBalance", "nodeType": "FunctionDefinition", "parameters": { - "id": 2964, + "id": 3069, "nodeType": "ParameterList", "parameters": [], - "src": "870:2:9" + "src": "1182:2:12" }, "returnParameters": { - "id": 2967, + "id": 3072, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2966, + "id": 3071, "name": "", "nodeType": "VariableDeclaration", - "scope": 2971, - "src": "894:4:9", + "scope": 3076, + "src": "1206:4:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3012,10 +3600,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2965, + "id": 3070, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "894:4:9", + "src": "1206:4:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3025,298 +3613,28 @@ "visibility": "internal" } ], - "src": "893:6:9" + "src": "1205:6:12" }, - "scope": 2972, - "src": "847:84:9", + "scope": 3077, + "src": "1159:84:12", "stateMutability": "view", "superFunction": 121, "visibility": "public" } ], - "scope": 2973, - "src": "59:878:9" + "scope": 3078, + "src": "74:1171:12" } ], - "src": "0:937:9" + "src": "0:1245:12" }, "compiler": { "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "5777": { - "events": { - "0x25b428dfde728ccfaddad7e29e4ac23c24ed7fd1a6e3e3f91894a9a073f5dfff": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "sender", - "type": "address", - "internalType": "address" - }, - { - "indexed": false, - "name": "amount", - "type": "uint256", - "internalType": "uint256" - }, - { - "indexed": false, - "name": "deposit", - "type": "uint256", - "internalType": "uint256" - } - ], - "name": "Minted", - "type": "event" - }, - "0x23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "sender", - "type": "address", - "internalType": "address" - }, - { - "indexed": false, - "name": "amount", - "type": "uint256", - "internalType": "uint256" - }, - { - "indexed": false, - "name": "refund", - "type": "uint256", - "internalType": "uint256" - } - ], - "name": "Burned", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "previousOwner", - "type": "address", - "internalType": "address" - }, - { - "indexed": true, - "name": "newOwner", - "type": "address", - "internalType": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "from", - "type": "address", - "internalType": "address" - }, - { - "indexed": true, - "name": "to", - "type": "address", - "internalType": "address" - }, - { - "indexed": false, - "name": "value", - "type": "uint256", - "internalType": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "owner", - "type": "address", - "internalType": "address" - }, - { - "indexed": true, - "name": "spender", - "type": "address", - "internalType": "address" - }, - { - "indexed": false, - "name": "value", - "type": "uint256", - "internalType": "uint256" - } - ], - "name": "Approval", - "type": "event" - } - }, - "links": {}, - "address": "0x5Eb3c104431b41f565DbC5193c58C4C75123dbeE", - "transactionHash": "0x343936bb5159d8be20138e609bc4b193ed773df8c0f9838029ab4a141eda11fb" - }, - "1581801454013": { - "events": { - "0x25b428dfde728ccfaddad7e29e4ac23c24ed7fd1a6e3e3f91894a9a073f5dfff": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "name": "deposit", - "type": "uint256" - } - ], - "name": "Minted", - "type": "event" - }, - "0x23ff0e75edf108e3d0392d92e13e8c8a868ef19001bd49f9e94876dc46dff87f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "name": "refund", - "type": "uint256" - } - ], - "name": "Burned", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "from", - "type": "address" - }, - { - "indexed": true, - "name": "to", - "type": "address" - }, - { - "indexed": false, - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - } - }, - "links": {}, - "address": "0x2A0189622263dDf9b6af7cEAbaDB604d489A6b0d", - "transactionHash": "0x4201c61a9e95d001a5e65601785fce68a6d6789f8bfc87fb1d8b4ee3b7799e50" - }, - "1581803409364": { - "events": {}, - "links": {}, - "address": "0x80297589bABDAB704B80eD50B6F6e2463bbFD0c6", - "transactionHash": "0xe70b6134b66688ab5048e08eb3dca0f60bebcd0727c7c09c6a82b942f59383d2" - }, - "1581803556880": { - "events": {}, - "links": {}, - "address": "0x2b195763BD0409c7DD4887177f3EEfF9ca5321DC", - "transactionHash": "0x1f40e404397b8bc25a0175ffe5d16ff70d76a74db6ab7ad8de7650527b57210b" - }, - "1581803785253": { - "events": {}, - "links": {}, - "address": "0x59C39CEF9DffB68b534d0FAA32e843f2D462e0CA", - "transactionHash": "0x01e98a4bf99622b2de24c1fe666f9d9e3a3205afb658937738839bb00af08747" - }, - "1581838432607": { - "events": {}, - "links": {}, - "address": "0x3799b3212adb75596D80F27077BA3db5e9F01Cd3", - "transactionHash": "0xc2487136abc4661a122d66b9273e175ff196f3deccff216290995171c0e578dc" - }, - "1581843915764": { - "events": {}, - "links": {}, - "address": "0x5f5B5a2881922Eab541A6AdF5e337D8af93C9E09", - "transactionHash": "0x70f42460d0fc8cbbb729b8a4dffc5f01444e972245d410799a171439959f5133" - } + "version": "0.5.2+commit.1df8f40c.Emscripten.clang" }, - "schemaVersion": "3.0.23", - "updatedAt": "2020-02-16T12:52:32.459Z", - "networkType": "ethereum", + "networks": {}, + "schemaVersion": "3.0.1", + "updatedAt": "2020-02-16T14:54:14.903Z", "devdoc": { "methods": { "allowance(address,address)": { diff --git a/truffle/build/contracts/IBondingCurve.json b/truffle/build/contracts/IBondingCurve.json index a4241ab..54967f2 100644 --- a/truffle/build/contracts/IBondingCurve.json +++ b/truffle/build/contracts/IBondingCurve.json @@ -5,7 +5,6 @@ "constant": true, "inputs": [ { - "internalType": "uint256", "name": "_reserveTokenAmount", "type": "uint256" } @@ -13,7 +12,6 @@ "name": "getContinuousMintReward", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -26,7 +24,6 @@ "constant": true, "inputs": [ { - "internalType": "uint256", "name": "_continuousTokenAmount", "type": "uint256" } @@ -34,7 +31,6 @@ "name": "getContinuousBurnRefund", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -44,15 +40,14 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_continuousTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getContinuousBurnRefund\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_reserveTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getContinuousMintReward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"getContinuousBurnRefund(uint256)\":{\"details\":\"Given a continuous token amount, calculates the amount of reserve tokens returned.\"},\"getContinuousMintReward(uint256)\":{\"details\":\"Given a reserve token amount, calculates the amount of continuous tokens returned.\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/interfaces/IBondingCurve.sol\":\"IBondingCurve\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":1500},\"remappings\":[]},\"sources\":{\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/interfaces/IBondingCurve.sol\":{\"keccak256\":\"0x27a335544bca7d89b45438988419e4e3d5c6639dee6ff7e1e7da585db3f90b7b\",\"urls\":[\"bzz-raw://5caa54449bbd492dc880b1c3f2162614ce0483a886675df79c8c539909f29cf5\",\"dweb:/ipfs/QmfThvDW3d9L2Bjip74854Y1g1FdYaP5Eyj7PdjJy5LjEM\"]}},\"version\":1}", "bytecode": "0x", "deployedBytecode": "0x", "sourceMap": "", "deployedSourceMap": "", "source": "pragma solidity ^0.5.2;\n\n\ninterface IBondingCurve {\n /**\n * @dev Given a reserve token amount, calculates the amount of continuous tokens returned.\n */\n function getContinuousMintReward(uint _reserveTokenAmount) external view returns (uint);\n\n /**\n * @dev Given a continuous token amount, calculates the amount of reserve tokens returned.\n */ \n function getContinuousBurnRefund(uint _continuousTokenAmount) external view returns (uint);\n}\n", - "sourcePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/interfaces/IBondingCurve.sol", + "sourcePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/interfaces/IBondingCurve.sol", "ast": { - "absolutePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/interfaces/IBondingCurve.sol", + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/interfaces/IBondingCurve.sol", "exportedSymbols": { "IBondingCurve": [ 139 @@ -255,7 +250,7 @@ "src": "0:464:2" }, "legacyAST": { - "absolutePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/interfaces/IBondingCurve.sol", + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/interfaces/IBondingCurve.sol", "exportedSymbols": { "IBondingCurve": [ 139 @@ -459,11 +454,11 @@ }, "compiler": { "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" + "version": "0.5.2+commit.1df8f40c.Emscripten.clang" }, "networks": {}, - "schemaVersion": "3.0.23", - "updatedAt": "2020-02-16T12:52:29.744Z", + "schemaVersion": "3.0.1", + "updatedAt": "2020-02-16T14:54:14.890Z", "devdoc": { "methods": { "getContinuousBurnRefund(uint256)": { diff --git a/truffle/build/contracts/IERC20.json b/truffle/build/contracts/IERC20.json index 6e50830..ffc0bc3 100644 --- a/truffle/build/contracts/IERC20.json +++ b/truffle/build/contracts/IERC20.json @@ -6,24 +6,21 @@ "inputs": [ { "indexed": true, - "internalType": "address", - "name": "owner", + "name": "from", "type": "address" }, { "indexed": true, - "internalType": "address", - "name": "spender", + "name": "to", "type": "address" }, { "indexed": false, - "internalType": "uint256", "name": "value", "type": "uint256" } ], - "name": "Approval", + "name": "Transfer", "type": "event" }, { @@ -31,24 +28,21 @@ "inputs": [ { "indexed": true, - "internalType": "address", - "name": "from", + "name": "owner", "type": "address" }, { "indexed": true, - "internalType": "address", - "name": "to", + "name": "spender", "type": "address" }, { "indexed": false, - "internalType": "uint256", "name": "value", "type": "uint256" } ], - "name": "Transfer", + "name": "Approval", "type": "event" }, { @@ -57,7 +51,6 @@ "name": "totalSupply", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -70,7 +63,6 @@ "constant": true, "inputs": [ { - "internalType": "address", "name": "account", "type": "address" } @@ -78,7 +70,6 @@ "name": "balanceOf", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -91,12 +82,10 @@ "constant": false, "inputs": [ { - "internalType": "address", "name": "recipient", "type": "address" }, { - "internalType": "uint256", "name": "amount", "type": "uint256" } @@ -104,7 +93,6 @@ "name": "transfer", "outputs": [ { - "internalType": "bool", "name": "", "type": "bool" } @@ -117,12 +105,10 @@ "constant": true, "inputs": [ { - "internalType": "address", "name": "owner", "type": "address" }, { - "internalType": "address", "name": "spender", "type": "address" } @@ -130,7 +116,6 @@ "name": "allowance", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -143,12 +128,10 @@ "constant": false, "inputs": [ { - "internalType": "address", "name": "spender", "type": "address" }, { - "internalType": "uint256", "name": "amount", "type": "uint256" } @@ -156,7 +139,6 @@ "name": "approve", "outputs": [ { - "internalType": "bool", "name": "", "type": "bool" } @@ -169,17 +151,14 @@ "constant": false, "inputs": [ { - "internalType": "address", "name": "sender", "type": "address" }, { - "internalType": "address", "name": "recipient", "type": "address" }, { - "internalType": "uint256", "name": "amount", "type": "uint256" } @@ -187,7 +166,6 @@ "name": "transferFrom", "outputs": [ { - "internalType": "bool", "name": "", "type": "bool" } @@ -197,7 +175,6 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP. Does not include the optional functions; to access them see {ERC20Detailed}.\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. * This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. * Returns a boolean value indicating whether the operation succeeded. * IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. * Returns a boolean value indicating whether the operation succeeded. * Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. * Returns a boolean value indicating whether the operation succeeded. * Emits a {Transfer} event.\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":1500},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]}},\"version\":1}", "bytecode": "0x", "deployedBytecode": "0x", "sourceMap": "", @@ -208,14 +185,14 @@ "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "exportedSymbols": { "IERC20": [ - 4052 + 4157 ] }, - "id": 4053, + "id": 4158, "nodeType": "SourceUnit", "nodes": [ { - "id": 3985, + "id": 4090, "literals": [ "solidity", "^", @@ -223,7 +200,7 @@ ".0" ], "nodeType": "PragmaDirective", - "src": "0:23:18" + "src": "0:23:21" }, { "baseContracts": [], @@ -231,9 +208,9 @@ "contractKind": "interface", "documentation": "@dev Interface of the ERC20 standard as defined in the EIP. Does not include\nthe optional functions; to access them see {ERC20Detailed}.", "fullyImplemented": false, - "id": 4052, + "id": 4157, "linearizedBaseContracts": [ - 4052 + 4157 ], "name": "IERC20", "nodeType": "ContractDefinition", @@ -241,29 +218,29 @@ { "body": null, "documentation": "@dev Returns the amount of tokens in existence.", - "id": 3990, + "id": 4095, "implemented": false, "kind": "function", "modifiers": [], "name": "totalSupply", "nodeType": "FunctionDefinition", "parameters": { - "id": 3986, + "id": 4091, "nodeType": "ParameterList", "parameters": [], - "src": "290:2:18" + "src": "290:2:21" }, "returnParameters": { - "id": 3989, + "id": 4094, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3988, + "id": 4093, "name": "", "nodeType": "VariableDeclaration", - "scope": 3990, - "src": "316:7:18", + "scope": 4095, + "src": "316:7:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -271,10 +248,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3987, + "id": 4092, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "316:7:18", + "src": "316:7:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -284,10 +261,10 @@ "visibility": "internal" } ], - "src": "315:9:18" + "src": "315:9:21" }, - "scope": 4052, - "src": "270:55:18", + "scope": 4157, + "src": "270:55:21", "stateMutability": "view", "superFunction": null, "visibility": "external" @@ -295,23 +272,23 @@ { "body": null, "documentation": "@dev Returns the amount of tokens owned by `account`.", - "id": 3997, + "id": 4102, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nodeType": "FunctionDefinition", "parameters": { - "id": 3993, + "id": 4098, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3992, + "id": 4097, "name": "account", "nodeType": "VariableDeclaration", - "scope": 3997, - "src": "427:15:18", + "scope": 4102, + "src": "427:15:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -319,10 +296,10 @@ "typeString": "address" }, "typeName": { - "id": 3991, + "id": 4096, "name": "address", "nodeType": "ElementaryTypeName", - "src": "427:7:18", + "src": "427:7:21", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -333,19 +310,19 @@ "visibility": "internal" } ], - "src": "426:17:18" + "src": "426:17:21" }, "returnParameters": { - "id": 3996, + "id": 4101, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3995, + "id": 4100, "name": "", "nodeType": "VariableDeclaration", - "scope": 3997, - "src": "467:7:18", + "scope": 4102, + "src": "467:7:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -353,10 +330,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3994, + "id": 4099, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "467:7:18", + "src": "467:7:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -366,10 +343,10 @@ "visibility": "internal" } ], - "src": "466:9:18" + "src": "466:9:21" }, - "scope": 4052, - "src": "408:68:18", + "scope": 4157, + "src": "408:68:21", "stateMutability": "view", "superFunction": null, "visibility": "external" @@ -377,23 +354,23 @@ { "body": null, "documentation": "@dev Moves `amount` tokens from the caller's account to `recipient`.\n * Returns a boolean value indicating whether the operation succeeded.\n * Emits a {Transfer} event.", - "id": 4006, + "id": 4111, "implemented": false, "kind": "function", "modifiers": [], "name": "transfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 4002, + "id": 4107, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3999, + "id": 4104, "name": "recipient", "nodeType": "VariableDeclaration", - "scope": 4006, - "src": "714:17:18", + "scope": 4111, + "src": "714:17:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -401,10 +378,10 @@ "typeString": "address" }, "typeName": { - "id": 3998, + "id": 4103, "name": "address", "nodeType": "ElementaryTypeName", - "src": "714:7:18", + "src": "714:7:21", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -416,11 +393,11 @@ }, { "constant": false, - "id": 4001, + "id": 4106, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 4006, - "src": "733:14:18", + "scope": 4111, + "src": "733:14:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -428,10 +405,10 @@ "typeString": "uint256" }, "typeName": { - "id": 4000, + "id": 4105, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "733:7:18", + "src": "733:7:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -441,19 +418,19 @@ "visibility": "internal" } ], - "src": "713:35:18" + "src": "713:35:21" }, "returnParameters": { - "id": 4005, + "id": 4110, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 4004, + "id": 4109, "name": "", "nodeType": "VariableDeclaration", - "scope": 4006, - "src": "767:4:18", + "scope": 4111, + "src": "767:4:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -461,10 +438,10 @@ "typeString": "bool" }, "typeName": { - "id": 4003, + "id": 4108, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "767:4:18", + "src": "767:4:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -474,10 +451,10 @@ "visibility": "internal" } ], - "src": "766:6:18" + "src": "766:6:21" }, - "scope": 4052, - "src": "696:77:18", + "scope": 4157, + "src": "696:77:21", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" @@ -485,23 +462,23 @@ { "body": null, "documentation": "@dev Returns the remaining number of tokens that `spender` will be\nallowed to spend on behalf of `owner` through {transferFrom}. This is\nzero by default.\n * This value changes when {approve} or {transferFrom} are called.", - "id": 4015, + "id": 4120, "implemented": false, "kind": "function", "modifiers": [], "name": "allowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 4011, + "id": 4116, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 4008, + "id": 4113, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 4015, - "src": "1067:13:18", + "scope": 4120, + "src": "1067:13:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -509,10 +486,10 @@ "typeString": "address" }, "typeName": { - "id": 4007, + "id": 4112, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1067:7:18", + "src": "1067:7:21", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -524,11 +501,11 @@ }, { "constant": false, - "id": 4010, + "id": 4115, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 4015, - "src": "1082:15:18", + "scope": 4120, + "src": "1082:15:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -536,10 +513,10 @@ "typeString": "address" }, "typeName": { - "id": 4009, + "id": 4114, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1082:7:18", + "src": "1082:7:21", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -550,19 +527,19 @@ "visibility": "internal" } ], - "src": "1066:32:18" + "src": "1066:32:21" }, "returnParameters": { - "id": 4014, + "id": 4119, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 4013, + "id": 4118, "name": "", "nodeType": "VariableDeclaration", - "scope": 4015, - "src": "1122:7:18", + "scope": 4120, + "src": "1122:7:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -570,10 +547,10 @@ "typeString": "uint256" }, "typeName": { - "id": 4012, + "id": 4117, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1122:7:18", + "src": "1122:7:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -583,10 +560,10 @@ "visibility": "internal" } ], - "src": "1121:9:18" + "src": "1121:9:21" }, - "scope": 4052, - "src": "1048:83:18", + "scope": 4157, + "src": "1048:83:21", "stateMutability": "view", "superFunction": null, "visibility": "external" @@ -594,23 +571,23 @@ { "body": null, "documentation": "@dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n * Returns a boolean value indicating whether the operation succeeded.\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\nthat someone may use both the old and the new allowance by unfortunate\ntransaction ordering. One possible solution to mitigate this race\ncondition is to first reduce the spender's allowance to 0 and set the\ndesired value afterwards:\nhttps://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n * Emits an {Approval} event.", - "id": 4024, + "id": 4129, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nodeType": "FunctionDefinition", "parameters": { - "id": 4020, + "id": 4125, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 4017, + "id": 4122, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 4024, - "src": "1801:15:18", + "scope": 4129, + "src": "1801:15:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -618,10 +595,10 @@ "typeString": "address" }, "typeName": { - "id": 4016, + "id": 4121, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1801:7:18", + "src": "1801:7:21", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -633,11 +610,11 @@ }, { "constant": false, - "id": 4019, + "id": 4124, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 4024, - "src": "1818:14:18", + "scope": 4129, + "src": "1818:14:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -645,10 +622,10 @@ "typeString": "uint256" }, "typeName": { - "id": 4018, + "id": 4123, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1818:7:18", + "src": "1818:7:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -658,19 +635,19 @@ "visibility": "internal" } ], - "src": "1800:33:18" + "src": "1800:33:21" }, "returnParameters": { - "id": 4023, + "id": 4128, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 4022, + "id": 4127, "name": "", "nodeType": "VariableDeclaration", - "scope": 4024, - "src": "1852:4:18", + "scope": 4129, + "src": "1852:4:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -678,10 +655,10 @@ "typeString": "bool" }, "typeName": { - "id": 4021, + "id": 4126, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1852:4:18", + "src": "1852:4:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -691,10 +668,10 @@ "visibility": "internal" } ], - "src": "1851:6:18" + "src": "1851:6:21" }, - "scope": 4052, - "src": "1784:74:18", + "scope": 4157, + "src": "1784:74:21", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" @@ -702,23 +679,23 @@ { "body": null, "documentation": "@dev Moves `amount` tokens from `sender` to `recipient` using the\nallowance mechanism. `amount` is then deducted from the caller's\nallowance.\n * Returns a boolean value indicating whether the operation succeeded.\n * Emits a {Transfer} event.", - "id": 4035, + "id": 4140, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 4031, + "id": 4136, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 4026, + "id": 4131, "name": "sender", "nodeType": "VariableDeclaration", - "scope": 4035, - "src": "2187:14:18", + "scope": 4140, + "src": "2187:14:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -726,10 +703,10 @@ "typeString": "address" }, "typeName": { - "id": 4025, + "id": 4130, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2187:7:18", + "src": "2187:7:21", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -741,11 +718,11 @@ }, { "constant": false, - "id": 4028, + "id": 4133, "name": "recipient", "nodeType": "VariableDeclaration", - "scope": 4035, - "src": "2203:17:18", + "scope": 4140, + "src": "2203:17:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -753,10 +730,10 @@ "typeString": "address" }, "typeName": { - "id": 4027, + "id": 4132, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2203:7:18", + "src": "2203:7:21", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -768,11 +745,11 @@ }, { "constant": false, - "id": 4030, + "id": 4135, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 4035, - "src": "2222:14:18", + "scope": 4140, + "src": "2222:14:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -780,10 +757,10 @@ "typeString": "uint256" }, "typeName": { - "id": 4029, + "id": 4134, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2222:7:18", + "src": "2222:7:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -793,19 +770,19 @@ "visibility": "internal" } ], - "src": "2186:51:18" + "src": "2186:51:21" }, "returnParameters": { - "id": 4034, + "id": 4139, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 4033, + "id": 4138, "name": "", "nodeType": "VariableDeclaration", - "scope": 4035, - "src": "2256:4:18", + "scope": 4140, + "src": "2256:4:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -813,10 +790,10 @@ "typeString": "bool" }, "typeName": { - "id": 4032, + "id": 4137, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2256:4:18", + "src": "2256:4:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -826,10 +803,10 @@ "visibility": "internal" } ], - "src": "2255:6:18" + "src": "2255:6:21" }, - "scope": 4052, - "src": "2165:97:18", + "scope": 4157, + "src": "2165:97:21", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" @@ -837,21 +814,21 @@ { "anonymous": false, "documentation": "@dev Emitted when `value` tokens are moved from one account (`from`) to\nanother (`to`).\n * Note that `value` may be zero.", - "id": 4043, + "id": 4148, "name": "Transfer", "nodeType": "EventDefinition", "parameters": { - "id": 4042, + "id": 4147, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 4037, + "id": 4142, "indexed": true, "name": "from", "nodeType": "VariableDeclaration", - "scope": 4043, - "src": "2446:20:18", + "scope": 4148, + "src": "2446:20:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -859,10 +836,10 @@ "typeString": "address" }, "typeName": { - "id": 4036, + "id": 4141, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2446:7:18", + "src": "2446:7:21", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -874,12 +851,12 @@ }, { "constant": false, - "id": 4039, + "id": 4144, "indexed": true, "name": "to", "nodeType": "VariableDeclaration", - "scope": 4043, - "src": "2468:18:18", + "scope": 4148, + "src": "2468:18:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -887,10 +864,10 @@ "typeString": "address" }, "typeName": { - "id": 4038, + "id": 4143, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2468:7:18", + "src": "2468:7:21", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -902,12 +879,12 @@ }, { "constant": false, - "id": 4041, + "id": 4146, "indexed": false, "name": "value", "nodeType": "VariableDeclaration", - "scope": 4043, - "src": "2488:13:18", + "scope": 4148, + "src": "2488:13:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -915,10 +892,10 @@ "typeString": "uint256" }, "typeName": { - "id": 4040, + "id": 4145, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2488:7:18", + "src": "2488:7:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -928,28 +905,28 @@ "visibility": "internal" } ], - "src": "2445:57:18" + "src": "2445:57:21" }, - "src": "2431:72:18" + "src": "2431:72:21" }, { "anonymous": false, "documentation": "@dev Emitted when the allowance of a `spender` for an `owner` is set by\na call to {approve}. `value` is the new allowance.", - "id": 4051, + "id": 4156, "name": "Approval", "nodeType": "EventDefinition", "parameters": { - "id": 4050, + "id": 4155, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 4045, + "id": 4150, "indexed": true, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 4051, - "src": "2677:21:18", + "scope": 4156, + "src": "2677:21:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -957,10 +934,10 @@ "typeString": "address" }, "typeName": { - "id": 4044, + "id": 4149, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2677:7:18", + "src": "2677:7:21", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -972,12 +949,12 @@ }, { "constant": false, - "id": 4047, + "id": 4152, "indexed": true, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 4051, - "src": "2700:23:18", + "scope": 4156, + "src": "2700:23:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -985,10 +962,10 @@ "typeString": "address" }, "typeName": { - "id": 4046, + "id": 4151, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2700:7:18", + "src": "2700:7:21", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1000,12 +977,12 @@ }, { "constant": false, - "id": 4049, + "id": 4154, "indexed": false, "name": "value", "nodeType": "VariableDeclaration", - "scope": 4051, - "src": "2725:13:18", + "scope": 4156, + "src": "2725:13:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1013,10 +990,10 @@ "typeString": "uint256" }, "typeName": { - "id": 4048, + "id": 4153, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2725:7:18", + "src": "2725:7:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1026,29 +1003,29 @@ "visibility": "internal" } ], - "src": "2676:63:18" + "src": "2676:63:21" }, - "src": "2662:78:18" + "src": "2662:78:21" } ], - "scope": 4053, - "src": "176:2566:18" + "scope": 4158, + "src": "176:2566:21" } ], - "src": "0:2743:18" + "src": "0:2743:21" }, "legacyAST": { "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol", "exportedSymbols": { "IERC20": [ - 4052 + 4157 ] }, - "id": 4053, + "id": 4158, "nodeType": "SourceUnit", "nodes": [ { - "id": 3985, + "id": 4090, "literals": [ "solidity", "^", @@ -1056,7 +1033,7 @@ ".0" ], "nodeType": "PragmaDirective", - "src": "0:23:18" + "src": "0:23:21" }, { "baseContracts": [], @@ -1064,9 +1041,9 @@ "contractKind": "interface", "documentation": "@dev Interface of the ERC20 standard as defined in the EIP. Does not include\nthe optional functions; to access them see {ERC20Detailed}.", "fullyImplemented": false, - "id": 4052, + "id": 4157, "linearizedBaseContracts": [ - 4052 + 4157 ], "name": "IERC20", "nodeType": "ContractDefinition", @@ -1074,29 +1051,29 @@ { "body": null, "documentation": "@dev Returns the amount of tokens in existence.", - "id": 3990, + "id": 4095, "implemented": false, "kind": "function", "modifiers": [], "name": "totalSupply", "nodeType": "FunctionDefinition", "parameters": { - "id": 3986, + "id": 4091, "nodeType": "ParameterList", "parameters": [], - "src": "290:2:18" + "src": "290:2:21" }, "returnParameters": { - "id": 3989, + "id": 4094, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3988, + "id": 4093, "name": "", "nodeType": "VariableDeclaration", - "scope": 3990, - "src": "316:7:18", + "scope": 4095, + "src": "316:7:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1104,10 +1081,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3987, + "id": 4092, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "316:7:18", + "src": "316:7:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1117,10 +1094,10 @@ "visibility": "internal" } ], - "src": "315:9:18" + "src": "315:9:21" }, - "scope": 4052, - "src": "270:55:18", + "scope": 4157, + "src": "270:55:21", "stateMutability": "view", "superFunction": null, "visibility": "external" @@ -1128,23 +1105,23 @@ { "body": null, "documentation": "@dev Returns the amount of tokens owned by `account`.", - "id": 3997, + "id": 4102, "implemented": false, "kind": "function", "modifiers": [], "name": "balanceOf", "nodeType": "FunctionDefinition", "parameters": { - "id": 3993, + "id": 4098, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3992, + "id": 4097, "name": "account", "nodeType": "VariableDeclaration", - "scope": 3997, - "src": "427:15:18", + "scope": 4102, + "src": "427:15:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1152,10 +1129,10 @@ "typeString": "address" }, "typeName": { - "id": 3991, + "id": 4096, "name": "address", "nodeType": "ElementaryTypeName", - "src": "427:7:18", + "src": "427:7:21", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1166,19 +1143,19 @@ "visibility": "internal" } ], - "src": "426:17:18" + "src": "426:17:21" }, "returnParameters": { - "id": 3996, + "id": 4101, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3995, + "id": 4100, "name": "", "nodeType": "VariableDeclaration", - "scope": 3997, - "src": "467:7:18", + "scope": 4102, + "src": "467:7:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1186,10 +1163,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3994, + "id": 4099, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "467:7:18", + "src": "467:7:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1199,10 +1176,10 @@ "visibility": "internal" } ], - "src": "466:9:18" + "src": "466:9:21" }, - "scope": 4052, - "src": "408:68:18", + "scope": 4157, + "src": "408:68:21", "stateMutability": "view", "superFunction": null, "visibility": "external" @@ -1210,23 +1187,23 @@ { "body": null, "documentation": "@dev Moves `amount` tokens from the caller's account to `recipient`.\n * Returns a boolean value indicating whether the operation succeeded.\n * Emits a {Transfer} event.", - "id": 4006, + "id": 4111, "implemented": false, "kind": "function", "modifiers": [], "name": "transfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 4002, + "id": 4107, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3999, + "id": 4104, "name": "recipient", "nodeType": "VariableDeclaration", - "scope": 4006, - "src": "714:17:18", + "scope": 4111, + "src": "714:17:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1234,10 +1211,10 @@ "typeString": "address" }, "typeName": { - "id": 3998, + "id": 4103, "name": "address", "nodeType": "ElementaryTypeName", - "src": "714:7:18", + "src": "714:7:21", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1249,11 +1226,11 @@ }, { "constant": false, - "id": 4001, + "id": 4106, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 4006, - "src": "733:14:18", + "scope": 4111, + "src": "733:14:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1261,10 +1238,10 @@ "typeString": "uint256" }, "typeName": { - "id": 4000, + "id": 4105, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "733:7:18", + "src": "733:7:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1274,19 +1251,19 @@ "visibility": "internal" } ], - "src": "713:35:18" + "src": "713:35:21" }, "returnParameters": { - "id": 4005, + "id": 4110, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 4004, + "id": 4109, "name": "", "nodeType": "VariableDeclaration", - "scope": 4006, - "src": "767:4:18", + "scope": 4111, + "src": "767:4:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1294,10 +1271,10 @@ "typeString": "bool" }, "typeName": { - "id": 4003, + "id": 4108, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "767:4:18", + "src": "767:4:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1307,10 +1284,10 @@ "visibility": "internal" } ], - "src": "766:6:18" + "src": "766:6:21" }, - "scope": 4052, - "src": "696:77:18", + "scope": 4157, + "src": "696:77:21", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" @@ -1318,23 +1295,23 @@ { "body": null, "documentation": "@dev Returns the remaining number of tokens that `spender` will be\nallowed to spend on behalf of `owner` through {transferFrom}. This is\nzero by default.\n * This value changes when {approve} or {transferFrom} are called.", - "id": 4015, + "id": 4120, "implemented": false, "kind": "function", "modifiers": [], "name": "allowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 4011, + "id": 4116, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 4008, + "id": 4113, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 4015, - "src": "1067:13:18", + "scope": 4120, + "src": "1067:13:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1342,10 +1319,10 @@ "typeString": "address" }, "typeName": { - "id": 4007, + "id": 4112, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1067:7:18", + "src": "1067:7:21", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1357,11 +1334,11 @@ }, { "constant": false, - "id": 4010, + "id": 4115, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 4015, - "src": "1082:15:18", + "scope": 4120, + "src": "1082:15:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1369,10 +1346,10 @@ "typeString": "address" }, "typeName": { - "id": 4009, + "id": 4114, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1082:7:18", + "src": "1082:7:21", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1383,19 +1360,19 @@ "visibility": "internal" } ], - "src": "1066:32:18" + "src": "1066:32:21" }, "returnParameters": { - "id": 4014, + "id": 4119, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 4013, + "id": 4118, "name": "", "nodeType": "VariableDeclaration", - "scope": 4015, - "src": "1122:7:18", + "scope": 4120, + "src": "1122:7:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1403,10 +1380,10 @@ "typeString": "uint256" }, "typeName": { - "id": 4012, + "id": 4117, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1122:7:18", + "src": "1122:7:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1416,10 +1393,10 @@ "visibility": "internal" } ], - "src": "1121:9:18" + "src": "1121:9:21" }, - "scope": 4052, - "src": "1048:83:18", + "scope": 4157, + "src": "1048:83:21", "stateMutability": "view", "superFunction": null, "visibility": "external" @@ -1427,23 +1404,23 @@ { "body": null, "documentation": "@dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n * Returns a boolean value indicating whether the operation succeeded.\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\nthat someone may use both the old and the new allowance by unfortunate\ntransaction ordering. One possible solution to mitigate this race\ncondition is to first reduce the spender's allowance to 0 and set the\ndesired value afterwards:\nhttps://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n * Emits an {Approval} event.", - "id": 4024, + "id": 4129, "implemented": false, "kind": "function", "modifiers": [], "name": "approve", "nodeType": "FunctionDefinition", "parameters": { - "id": 4020, + "id": 4125, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 4017, + "id": 4122, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 4024, - "src": "1801:15:18", + "scope": 4129, + "src": "1801:15:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1451,10 +1428,10 @@ "typeString": "address" }, "typeName": { - "id": 4016, + "id": 4121, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1801:7:18", + "src": "1801:7:21", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1466,11 +1443,11 @@ }, { "constant": false, - "id": 4019, + "id": 4124, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 4024, - "src": "1818:14:18", + "scope": 4129, + "src": "1818:14:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1478,10 +1455,10 @@ "typeString": "uint256" }, "typeName": { - "id": 4018, + "id": 4123, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1818:7:18", + "src": "1818:7:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1491,19 +1468,19 @@ "visibility": "internal" } ], - "src": "1800:33:18" + "src": "1800:33:21" }, "returnParameters": { - "id": 4023, + "id": 4128, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 4022, + "id": 4127, "name": "", "nodeType": "VariableDeclaration", - "scope": 4024, - "src": "1852:4:18", + "scope": 4129, + "src": "1852:4:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1511,10 +1488,10 @@ "typeString": "bool" }, "typeName": { - "id": 4021, + "id": 4126, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1852:4:18", + "src": "1852:4:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1524,10 +1501,10 @@ "visibility": "internal" } ], - "src": "1851:6:18" + "src": "1851:6:21" }, - "scope": 4052, - "src": "1784:74:18", + "scope": 4157, + "src": "1784:74:21", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" @@ -1535,23 +1512,23 @@ { "body": null, "documentation": "@dev Moves `amount` tokens from `sender` to `recipient` using the\nallowance mechanism. `amount` is then deducted from the caller's\nallowance.\n * Returns a boolean value indicating whether the operation succeeded.\n * Emits a {Transfer} event.", - "id": 4035, + "id": 4140, "implemented": false, "kind": "function", "modifiers": [], "name": "transferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 4031, + "id": 4136, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 4026, + "id": 4131, "name": "sender", "nodeType": "VariableDeclaration", - "scope": 4035, - "src": "2187:14:18", + "scope": 4140, + "src": "2187:14:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1559,10 +1536,10 @@ "typeString": "address" }, "typeName": { - "id": 4025, + "id": 4130, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2187:7:18", + "src": "2187:7:21", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1574,11 +1551,11 @@ }, { "constant": false, - "id": 4028, + "id": 4133, "name": "recipient", "nodeType": "VariableDeclaration", - "scope": 4035, - "src": "2203:17:18", + "scope": 4140, + "src": "2203:17:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1586,10 +1563,10 @@ "typeString": "address" }, "typeName": { - "id": 4027, + "id": 4132, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2203:7:18", + "src": "2203:7:21", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1601,11 +1578,11 @@ }, { "constant": false, - "id": 4030, + "id": 4135, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 4035, - "src": "2222:14:18", + "scope": 4140, + "src": "2222:14:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1613,10 +1590,10 @@ "typeString": "uint256" }, "typeName": { - "id": 4029, + "id": 4134, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2222:7:18", + "src": "2222:7:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1626,19 +1603,19 @@ "visibility": "internal" } ], - "src": "2186:51:18" + "src": "2186:51:21" }, "returnParameters": { - "id": 4034, + "id": 4139, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 4033, + "id": 4138, "name": "", "nodeType": "VariableDeclaration", - "scope": 4035, - "src": "2256:4:18", + "scope": 4140, + "src": "2256:4:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1646,10 +1623,10 @@ "typeString": "bool" }, "typeName": { - "id": 4032, + "id": 4137, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2256:4:18", + "src": "2256:4:21", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1659,10 +1636,10 @@ "visibility": "internal" } ], - "src": "2255:6:18" + "src": "2255:6:21" }, - "scope": 4052, - "src": "2165:97:18", + "scope": 4157, + "src": "2165:97:21", "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" @@ -1670,21 +1647,21 @@ { "anonymous": false, "documentation": "@dev Emitted when `value` tokens are moved from one account (`from`) to\nanother (`to`).\n * Note that `value` may be zero.", - "id": 4043, + "id": 4148, "name": "Transfer", "nodeType": "EventDefinition", "parameters": { - "id": 4042, + "id": 4147, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 4037, + "id": 4142, "indexed": true, "name": "from", "nodeType": "VariableDeclaration", - "scope": 4043, - "src": "2446:20:18", + "scope": 4148, + "src": "2446:20:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1692,10 +1669,10 @@ "typeString": "address" }, "typeName": { - "id": 4036, + "id": 4141, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2446:7:18", + "src": "2446:7:21", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1707,12 +1684,12 @@ }, { "constant": false, - "id": 4039, + "id": 4144, "indexed": true, "name": "to", "nodeType": "VariableDeclaration", - "scope": 4043, - "src": "2468:18:18", + "scope": 4148, + "src": "2468:18:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1720,10 +1697,10 @@ "typeString": "address" }, "typeName": { - "id": 4038, + "id": 4143, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2468:7:18", + "src": "2468:7:21", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1735,12 +1712,12 @@ }, { "constant": false, - "id": 4041, + "id": 4146, "indexed": false, "name": "value", "nodeType": "VariableDeclaration", - "scope": 4043, - "src": "2488:13:18", + "scope": 4148, + "src": "2488:13:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1748,10 +1725,10 @@ "typeString": "uint256" }, "typeName": { - "id": 4040, + "id": 4145, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2488:7:18", + "src": "2488:7:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1761,28 +1738,28 @@ "visibility": "internal" } ], - "src": "2445:57:18" + "src": "2445:57:21" }, - "src": "2431:72:18" + "src": "2431:72:21" }, { "anonymous": false, "documentation": "@dev Emitted when the allowance of a `spender` for an `owner` is set by\na call to {approve}. `value` is the new allowance.", - "id": 4051, + "id": 4156, "name": "Approval", "nodeType": "EventDefinition", "parameters": { - "id": 4050, + "id": 4155, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 4045, + "id": 4150, "indexed": true, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 4051, - "src": "2677:21:18", + "scope": 4156, + "src": "2677:21:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1790,10 +1767,10 @@ "typeString": "address" }, "typeName": { - "id": 4044, + "id": 4149, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2677:7:18", + "src": "2677:7:21", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1805,12 +1782,12 @@ }, { "constant": false, - "id": 4047, + "id": 4152, "indexed": true, "name": "spender", "nodeType": "VariableDeclaration", - "scope": 4051, - "src": "2700:23:18", + "scope": 4156, + "src": "2700:23:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1818,10 +1795,10 @@ "typeString": "address" }, "typeName": { - "id": 4046, + "id": 4151, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2700:7:18", + "src": "2700:7:21", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1833,12 +1810,12 @@ }, { "constant": false, - "id": 4049, + "id": 4154, "indexed": false, "name": "value", "nodeType": "VariableDeclaration", - "scope": 4051, - "src": "2725:13:18", + "scope": 4156, + "src": "2725:13:21", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1846,10 +1823,10 @@ "typeString": "uint256" }, "typeName": { - "id": 4048, + "id": 4153, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2725:7:18", + "src": "2725:7:21", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1859,24 +1836,24 @@ "visibility": "internal" } ], - "src": "2676:63:18" + "src": "2676:63:21" }, - "src": "2662:78:18" + "src": "2662:78:21" } ], - "scope": 4053, - "src": "176:2566:18" + "scope": 4158, + "src": "176:2566:21" } ], - "src": "0:2743:18" + "src": "0:2743:21" }, "compiler": { "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" + "version": "0.5.2+commit.1df8f40c.Emscripten.clang" }, "networks": {}, - "schemaVersion": "3.0.23", - "updatedAt": "2020-02-16T12:52:29.830Z", + "schemaVersion": "3.0.1", + "updatedAt": "2020-02-16T14:54:14.907Z", "devdoc": { "details": "Interface of the ERC20 standard as defined in the EIP. Does not include the optional functions; to access them see {ERC20Detailed}.", "methods": { diff --git a/truffle/build/contracts/Migrations.json b/truffle/build/contracts/Migrations.json index 19372ba..d3a4769 100644 --- a/truffle/build/contracts/Migrations.json +++ b/truffle/build/contracts/Migrations.json @@ -1,19 +1,12 @@ { "contractName": "Migrations", "abi": [ - { - "inputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, { "constant": true, "inputs": [], "name": "last_completed_migration", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -28,7 +21,6 @@ "name": "owner", "outputs": [ { - "internalType": "address", "name": "", "type": "address" } @@ -37,11 +29,16 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, { "constant": false, "inputs": [ { - "internalType": "uint256", "name": "completed", "type": "uint256" } @@ -56,7 +53,6 @@ "constant": false, "inputs": [ { - "internalType": "address", "name": "new_address", "type": "address" } @@ -68,15 +64,14 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"constant\":true,\"inputs\":[],\"name\":\"last_completed_migration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"completed\",\"type\":\"uint256\"}],\"name\":\"setCompleted\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"new_address\",\"type\":\"address\"}],\"name\":\"upgrade\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/Migrations.sol\":\"Migrations\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":1500},\"remappings\":[]},\"sources\":{\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/Migrations.sol\":{\"keccak256\":\"0x7db704926043e8e24bcb02ce23509f3f881c343e80acbb9d22ca70ad4db8cd2f\",\"urls\":[\"bzz-raw://109deff0da3dd7d3791012bed05c68585bb38fb369195663306073b7bf78cde9\",\"dweb:/ipfs/QmRRK5wfDGEeVDGeSmAn3S1eYr8sXmG5sCuEaF8c2WSbTz\"]}},\"version\":1}", - "bytecode": "0x608060405234801561001057600080fd5b50600080546001600160a01b03191633179055610201806100326000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80630900f01014610051578063445df0ac146100865780638da5cb5b146100a0578063fdacd576146100d1575b600080fd5b6100846004803603602081101561006757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166100ee565b005b61008e610185565b60408051918252519081900360200190f35b6100a861018b565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610084600480360360208110156100e757600080fd5b50356101a7565b60005473ffffffffffffffffffffffffffffffffffffffff163314156101825760008190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561016857600080fd5b505af115801561017c573d6000803e3d6000fd5b50505050505b50565b60015481565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff163314156101825760015556fea265627a7a7231582009bda603b505de6e76059cb384554530ba19f5eadca4a51c0943ae4f250f9aa064736f6c63430005100032", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80630900f01014610051578063445df0ac146100865780638da5cb5b146100a0578063fdacd576146100d1575b600080fd5b6100846004803603602081101561006757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166100ee565b005b61008e610185565b60408051918252519081900360200190f35b6100a861018b565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610084600480360360208110156100e757600080fd5b50356101a7565b60005473ffffffffffffffffffffffffffffffffffffffff163314156101825760008190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561016857600080fd5b505af115801561017c573d6000803e3d6000fd5b50505050505b50565b60015481565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff163314156101825760015556fea265627a7a7231582009bda603b505de6e76059cb384554530ba19f5eadca4a51c0943ae4f250f9aa064736f6c63430005100032", + "bytecode": "0x608060405234801561001057600080fd5b5060008054600160a060020a03191633179055610230806100326000396000f3fe608060405234801561001057600080fd5b5060043610610068577c010000000000000000000000000000000000000000000000000000000060003504630900f010811461006d578063445df0ac146100a25780638da5cb5b146100bc578063fdacd576146100ed575b600080fd5b6100a06004803603602081101561008357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661010a565b005b6100aa6101bd565b60408051918252519081900360200190f35b6100c46101c3565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100a06004803603602081101561010357600080fd5b50356101df565b60005473ffffffffffffffffffffffffffffffffffffffff163314156101ba5760008190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b1580156101a057600080fd5b505af11580156101b4573d6000803e3d6000fd5b50505050505b50565b60015481565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff163314156101ba5760015556fea165627a7a7230582069aa4e8fb2af0ad3bccd7d1e031ee4c572d089c7e59942c1bb03fca9d4076b0f0029", + "deployedBytecode": "0x608060405234801561001057600080fd5b5060043610610068577c010000000000000000000000000000000000000000000000000000000060003504630900f010811461006d578063445df0ac146100a25780638da5cb5b146100bc578063fdacd576146100ed575b600080fd5b6100a06004803603602081101561008357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661010a565b005b6100aa6101bd565b60408051918252519081900360200190f35b6100c46101c3565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100a06004803603602081101561010357600080fd5b50356101df565b60005473ffffffffffffffffffffffffffffffffffffffff163314156101ba5760008190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b1580156101a057600080fd5b505af11580156101b4573d6000803e3d6000fd5b50505050505b50565b60015481565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff163314156101ba5760015556fea165627a7a7230582069aa4e8fb2af0ad3bccd7d1e031ee4c572d089c7e59942c1bb03fca9d4076b0f0029", "sourceMap": "26:520:0:-;;;121:56;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;152:5:0;:18;;-1:-1:-1;;;;;;152:18:0;160:10;152:18;;;26:520;;;;;;", "deployedSourceMap": "26:520:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26:520:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;369:175;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;369:175:0;;;;:::i;:::-;;78:36;;;:::i;:::-;;;;;;;;;;;;;;;;52:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;254:109;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;254:109:0;;:::i;369:175::-;233:5;;;;219:10;:19;215:26;;;435:19;468:11;435:45;;490:8;:21;;;512:24;;490:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;490:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;490:47:0;;;;240:1;215:26;369:175;:::o;78:36::-;;;;:::o;52:20::-;;;;;;:::o;254:109::-;233:5;;;;219:10;:19;215:26;;;320:24;:36;254:109::o", "source": "pragma solidity ^0.5.2;\n\n\ncontract Migrations {\n address public owner;\n uint public last_completed_migration;\n\n constructor() public {\n owner = msg.sender;\n }\n\n modifier restricted() {\n if (msg.sender == owner) _;\n }\n\n function setCompleted(uint completed) public restricted {\n last_completed_migration = completed;\n }\n\n function upgrade(address new_address) public restricted {\n Migrations upgraded = Migrations(new_address);\n upgraded.setCompleted(last_completed_migration);\n }\n}", - "sourcePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/Migrations.sol", + "sourcePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/Migrations.sol", "ast": { - "absolutePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/Migrations.sol", + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/Migrations.sol", "exportedSymbols": { "Migrations": [ 56 @@ -199,7 +194,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4067, + "referencedDeclaration": 4172, "src": "160:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -283,7 +278,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4067, + "referencedDeclaration": 4172, "src": "219:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -722,7 +717,7 @@ "src": "0:546:0" }, "legacyAST": { - "absolutePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/Migrations.sol", + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/Migrations.sol", "exportedSymbols": { "Migrations": [ 56 @@ -845,7 +840,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4067, + "referencedDeclaration": 4172, "src": "160:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -929,7 +924,7 @@ "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4067, + "referencedDeclaration": 4172, "src": "219:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", @@ -1369,19 +1364,11 @@ }, "compiler": { "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "5777": { - "events": {}, - "links": {}, - "address": "0x45Cb88ff9dd42d2D43cA3EB0618e76C85a645749", - "transactionHash": "0x4135b1348c2620fba41f801a08d00345081f465cd8177ace077f6a1ec9fe331a" - } + "version": "0.5.2+commit.1df8f40c.Emscripten.clang" }, - "schemaVersion": "3.0.23", - "updatedAt": "2020-02-16T12:52:32.462Z", - "networkType": "ethereum", + "networks": {}, + "schemaVersion": "3.0.1", + "updatedAt": "2020-02-16T15:03:02.009Z", "devdoc": { "methods": {} }, diff --git a/truffle/build/contracts/MinterRole.json b/truffle/build/contracts/MinterRole.json index d73b4d4..93c95ab 100644 --- a/truffle/build/contracts/MinterRole.json +++ b/truffle/build/contracts/MinterRole.json @@ -12,7 +12,6 @@ "inputs": [ { "indexed": true, - "internalType": "address", "name": "account", "type": "address" } @@ -25,7 +24,6 @@ "inputs": [ { "indexed": true, - "internalType": "address", "name": "account", "type": "address" } @@ -37,7 +35,6 @@ "constant": true, "inputs": [ { - "internalType": "address", "name": "account", "type": "address" } @@ -45,7 +42,6 @@ "name": "isMinter", "outputs": [ { - "internalType": "bool", "name": "", "type": "bool" } @@ -58,7 +54,6 @@ "constant": false, "inputs": [ { - "internalType": "address", "name": "account", "type": "address" } @@ -79,7 +74,6 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterRemoved\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"openzeppelin-solidity/contracts/access/roles/MinterRole.sol\":\"MinterRole\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":1500},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"keccak256\":\"0x90a3995645af7562d84b9d69363ffa5ae7217714ab61e951bf7bc450f40e4061\",\"urls\":[\"bzz-raw://216ef9d6b614db4eb46970b4e84903f2534a45572dd30a79f0041f1a5830f436\",\"dweb:/ipfs/QmNPrJ4MWKUAWzKXpUqeyKRUfosaoANZAqXgvepdrCwZAG\"]},\"openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xb002c378d7b82a101bd659c341518953ca0919d342c0a400196982c0e7e7bcdb\",\"urls\":[\"bzz-raw://00a788c4631466c220b385bdd100c571d24b2deccd657615cfbcef6cadf669a4\",\"dweb:/ipfs/QmTEwDbjJNxmMNCDMqtuou3dyM8Wtp8Q9NFvn7SAVM7Jf3\"]},\"openzeppelin-solidity/contracts/access/roles/MinterRole.sol\":{\"keccak256\":\"0xbe8eef6f2cb4e427f5c5d8a76865ccd06e55a4f1d6671ba312d45bfa705aedbf\",\"urls\":[\"bzz-raw://badf338a5e22c8658c01fe2ce89b487d9dbf6d2d9d5eb49df7415383e2498765\",\"dweb:/ipfs/QmP5aMkvFwMJyuQjKE8ADh5tkWYqonb4KjgkAjgYEVVFAv\"]}},\"version\":1}", "bytecode": "0x", "deployedBytecode": "0x", "sourceMap": "", @@ -90,14 +84,14 @@ "absolutePath": "openzeppelin-solidity/contracts/access/roles/MinterRole.sol", "exportedSymbols": { "MinterRole": [ - 3187 + 3292 ] }, - "id": 3188, + "id": 3293, "nodeType": "SourceUnit", "nodes": [ { - "id": 3082, + "id": 3187, "literals": [ "solidity", "^", @@ -105,27 +99,27 @@ ".0" ], "nodeType": "PragmaDirective", - "src": "0:23:12" + "src": "0:23:15" }, { "absolutePath": "openzeppelin-solidity/contracts/GSN/Context.sol", "file": "../../GSN/Context.sol", - "id": 3083, + "id": 3188, "nodeType": "ImportDirective", - "scope": 3188, - "sourceUnit": 3000, - "src": "25:31:12", + "scope": 3293, + "sourceUnit": 3105, + "src": "25:31:15", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "openzeppelin-solidity/contracts/access/Roles.sol", "file": "../Roles.sol", - "id": 3084, + "id": 3189, "nodeType": "ImportDirective", - "scope": 3188, - "sourceUnit": 3081, - "src": "57:22:12", + "scope": 3293, + "sourceUnit": 3186, + "src": "57:22:15", "symbolAliases": [], "unitAlias": "" }, @@ -135,60 +129,60 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 3085, + "id": 3190, "name": "Context", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2999, - "src": "104:7:12", + "referencedDeclaration": 3104, + "src": "104:7:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_Context_$2999", + "typeIdentifier": "t_contract$_Context_$3104", "typeString": "contract Context" } }, - "id": 3086, + "id": 3191, "nodeType": "InheritanceSpecifier", - "src": "104:7:12" + "src": "104:7:15" } ], "contractDependencies": [ - 2999 + 3104 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 3187, + "id": 3292, "linearizedBaseContracts": [ - 3187, - 2999 + 3292, + 3104 ], "name": "MinterRole", "nodeType": "ContractDefinition", "nodes": [ { - "id": 3089, + "id": 3194, "libraryName": { "contractScope": null, - "id": 3087, + "id": 3192, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3080, - "src": "124:5:12", + "referencedDeclaration": 3185, + "src": "124:5:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$3080", + "typeIdentifier": "t_contract$_Roles_$3185", "typeString": "library Roles" } }, "nodeType": "UsingForDirective", - "src": "118:27:12", + "src": "118:27:15", "typeName": { "contractScope": null, - "id": 3088, + "id": 3193, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3006, - "src": "134:10:12", + "referencedDeclaration": 3111, + "src": "134:10:15", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$3006_storage_ptr", + "typeIdentifier": "t_struct$_Role_$3111_storage_ptr", "typeString": "struct Roles.Role" } } @@ -196,21 +190,21 @@ { "anonymous": false, "documentation": null, - "id": 3093, + "id": 3198, "name": "MinterAdded", "nodeType": "EventDefinition", "parameters": { - "id": 3092, + "id": 3197, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3091, + "id": 3196, "indexed": true, "name": "account", "nodeType": "VariableDeclaration", - "scope": 3093, - "src": "169:23:12", + "scope": 3198, + "src": "169:23:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -218,10 +212,10 @@ "typeString": "address" }, "typeName": { - "id": 3090, + "id": 3195, "name": "address", "nodeType": "ElementaryTypeName", - "src": "169:7:12", + "src": "169:7:15", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -232,28 +226,28 @@ "visibility": "internal" } ], - "src": "168:25:12" + "src": "168:25:15" }, - "src": "151:43:12" + "src": "151:43:15" }, { "anonymous": false, "documentation": null, - "id": 3097, + "id": 3202, "name": "MinterRemoved", "nodeType": "EventDefinition", "parameters": { - "id": 3096, + "id": 3201, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3095, + "id": 3200, "indexed": true, "name": "account", "nodeType": "VariableDeclaration", - "scope": 3097, - "src": "219:23:12", + "scope": 3202, + "src": "219:23:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -261,10 +255,10 @@ "typeString": "address" }, "typeName": { - "id": 3094, + "id": 3199, "name": "address", "nodeType": "ElementaryTypeName", - "src": "219:7:12", + "src": "219:7:15", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -275,32 +269,32 @@ "visibility": "internal" } ], - "src": "218:25:12" + "src": "218:25:15" }, - "src": "199:45:12" + "src": "199:45:15" }, { "constant": false, - "id": 3099, + "id": 3204, "name": "_minters", "nodeType": "VariableDeclaration", - "scope": 3187, - "src": "250:27:12", + "scope": 3292, + "src": "250:27:15", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$3006_storage", + "typeIdentifier": "t_struct$_Role_$3111_storage", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 3098, + "id": 3203, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3006, - "src": "250:10:12", + "referencedDeclaration": 3111, + "src": "250:10:15", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$3006_storage_ptr", + "typeIdentifier": "t_struct$_Role_$3111_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -309,9 +303,9 @@ }, { "body": { - "id": 3107, + "id": 3212, "nodeType": "Block", - "src": "308:41:12", + "src": "308:41:15", "statements": [ { "expression": { @@ -322,18 +316,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 3103, + "id": 3208, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2987, - "src": "329:10:12", + "referencedDeclaration": 3092, + "src": "329:10:15", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 3104, + "id": 3209, "isConstant": false, "isLValue": false, "isPure": false, @@ -341,7 +335,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "329:12:12", + "src": "329:12:15", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -355,18 +349,18 @@ "typeString": "address payable" } ], - "id": 3102, + "id": 3207, "name": "_addMinter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3170, - "src": "318:10:12", + "referencedDeclaration": 3275, + "src": "318:10:15", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 3105, + "id": 3210, "isConstant": false, "isLValue": false, "isPure": false, @@ -374,48 +368,48 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "318:24:12", + "src": "318:24:15", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3106, + "id": 3211, "nodeType": "ExpressionStatement", - "src": "318:24:12" + "src": "318:24:15" } ] }, "documentation": null, - "id": 3108, + "id": 3213, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 3100, + "id": 3205, "nodeType": "ParameterList", "parameters": [], - "src": "296:2:12" + "src": "296:2:15" }, "returnParameters": { - "id": 3101, + "id": 3206, "nodeType": "ParameterList", "parameters": [], - "src": "308:0:12" + "src": "308:0:15" }, - "scope": 3187, - "src": "284:65:12", + "scope": 3292, + "src": "284:65:15", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 3119, + "id": 3224, "nodeType": "Block", - "src": "377:111:12", + "src": "377:111:15", "statements": [ { "expression": { @@ -429,18 +423,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 3112, + "id": 3217, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2987, - "src": "404:10:12", + "referencedDeclaration": 3092, + "src": "404:10:15", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 3113, + "id": 3218, "isConstant": false, "isLValue": false, "isPure": false, @@ -448,7 +442,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "404:12:12", + "src": "404:12:15", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -462,18 +456,18 @@ "typeString": "address payable" } ], - "id": 3111, + "id": 3216, "name": "isMinter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3133, - "src": "395:8:12", + "referencedDeclaration": 3238, + "src": "395:8:15", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)" } }, - "id": 3114, + "id": 3219, "isConstant": false, "isLValue": false, "isPure": false, @@ -481,7 +475,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "395:22:12", + "src": "395:22:15", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -490,14 +484,14 @@ { "argumentTypes": null, "hexValue": "4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65", - "id": 3115, + "id": 3220, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "419:50:12", + "src": "419:50:15", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_79ecb50133735b20228dea9d08fe36a462bbc1350f591a146908848db91104cd", @@ -517,21 +511,21 @@ "typeString": "literal_string \"MinterRole: caller does not have the Minter role\"" } ], - "id": 3110, + "id": 3215, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "387:7:12", + "referencedDeclaration": 4176, + "src": "387:7:15", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 3116, + "id": 3221, "isConstant": false, "isLValue": false, "isPure": false, @@ -539,41 +533,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "387:83:12", + "src": "387:83:15", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3117, + "id": 3222, "nodeType": "ExpressionStatement", - "src": "387:83:12" + "src": "387:83:15" }, { - "id": 3118, + "id": 3223, "nodeType": "PlaceholderStatement", - "src": "480:1:12" + "src": "480:1:15" } ] }, "documentation": null, - "id": 3120, + "id": 3225, "name": "onlyMinter", "nodeType": "ModifierDefinition", "parameters": { - "id": 3109, + "id": 3214, "nodeType": "ParameterList", "parameters": [], - "src": "374:2:12" + "src": "374:2:15" }, - "src": "355:133:12", + "src": "355:133:15", "visibility": "internal" }, { "body": { - "id": 3132, + "id": 3237, "nodeType": "Block", - "src": "556:45:12", + "src": "556:45:15", "statements": [ { "expression": { @@ -581,12 +575,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3129, + "id": 3234, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3122, - "src": "586:7:12", + "referencedDeclaration": 3227, + "src": "586:7:15", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -602,32 +596,32 @@ ], "expression": { "argumentTypes": null, - "id": 3127, + "id": 3232, "name": "_minters", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3099, - "src": "573:8:12", + "referencedDeclaration": 3204, + "src": "573:8:15", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$3006_storage", + "typeIdentifier": "t_struct$_Role_$3111_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 3128, + "id": 3233, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 3079, - "src": "573:12:12", + "referencedDeclaration": 3184, + "src": "573:12:15", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$3006_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$3006_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$3111_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$3111_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 3130, + "id": 3235, "isConstant": false, "isLValue": false, "isPure": false, @@ -635,37 +629,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "573:21:12", + "src": "573:21:15", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 3126, - "id": 3131, + "functionReturnParameters": 3231, + "id": 3236, "nodeType": "Return", - "src": "566:28:12" + "src": "566:28:15" } ] }, "documentation": null, - "id": 3133, + "id": 3238, "implemented": true, "kind": "function", "modifiers": [], "name": "isMinter", "nodeType": "FunctionDefinition", "parameters": { - "id": 3123, + "id": 3228, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3122, + "id": 3227, "name": "account", "nodeType": "VariableDeclaration", - "scope": 3133, - "src": "512:15:12", + "scope": 3238, + "src": "512:15:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -673,10 +667,10 @@ "typeString": "address" }, "typeName": { - "id": 3121, + "id": 3226, "name": "address", "nodeType": "ElementaryTypeName", - "src": "512:7:12", + "src": "512:7:15", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -687,19 +681,19 @@ "visibility": "internal" } ], - "src": "511:17:12" + "src": "511:17:15" }, "returnParameters": { - "id": 3126, + "id": 3231, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3125, + "id": 3230, "name": "", "nodeType": "VariableDeclaration", - "scope": 3133, - "src": "550:4:12", + "scope": 3238, + "src": "550:4:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -707,10 +701,10 @@ "typeString": "bool" }, "typeName": { - "id": 3124, + "id": 3229, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "550:4:12", + "src": "550:4:15", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -720,19 +714,19 @@ "visibility": "internal" } ], - "src": "549:6:12" + "src": "549:6:15" }, - "scope": 3187, - "src": "494:107:12", + "scope": 3292, + "src": "494:107:15", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 3144, + "id": 3249, "nodeType": "Block", - "src": "661:36:12", + "src": "661:36:15", "statements": [ { "expression": { @@ -740,12 +734,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3141, + "id": 3246, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3135, - "src": "682:7:12", + "referencedDeclaration": 3240, + "src": "682:7:15", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -759,18 +753,18 @@ "typeString": "address" } ], - "id": 3140, + "id": 3245, "name": "_addMinter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3170, - "src": "671:10:12", + "referencedDeclaration": 3275, + "src": "671:10:15", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 3142, + "id": 3247, "isConstant": false, "isLValue": false, "isPure": false, @@ -778,56 +772,56 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "671:19:12", + "src": "671:19:15", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3143, + "id": 3248, "nodeType": "ExpressionStatement", - "src": "671:19:12" + "src": "671:19:15" } ] }, "documentation": null, - "id": 3145, + "id": 3250, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, - "id": 3138, + "id": 3243, "modifierName": { "argumentTypes": null, - "id": 3137, + "id": 3242, "name": "onlyMinter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3120, - "src": "650:10:12", + "referencedDeclaration": 3225, + "src": "650:10:15", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "650:10:12" + "src": "650:10:15" } ], "name": "addMinter", "nodeType": "FunctionDefinition", "parameters": { - "id": 3136, + "id": 3241, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3135, + "id": 3240, "name": "account", "nodeType": "VariableDeclaration", - "scope": 3145, - "src": "626:15:12", + "scope": 3250, + "src": "626:15:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -835,10 +829,10 @@ "typeString": "address" }, "typeName": { - "id": 3134, + "id": 3239, "name": "address", "nodeType": "ElementaryTypeName", - "src": "626:7:12", + "src": "626:7:15", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -849,25 +843,25 @@ "visibility": "internal" } ], - "src": "625:17:12" + "src": "625:17:15" }, "returnParameters": { - "id": 3139, + "id": 3244, "nodeType": "ParameterList", "parameters": [], - "src": "661:0:12" + "src": "661:0:15" }, - "scope": 3187, - "src": "607:90:12", + "scope": 3292, + "src": "607:90:15", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 3153, + "id": 3258, "nodeType": "Block", - "src": "736:44:12", + "src": "736:44:15", "statements": [ { "expression": { @@ -878,18 +872,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 3149, + "id": 3254, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2987, - "src": "760:10:12", + "referencedDeclaration": 3092, + "src": "760:10:15", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 3150, + "id": 3255, "isConstant": false, "isLValue": false, "isPure": false, @@ -897,7 +891,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "760:12:12", + "src": "760:12:15", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -911,18 +905,18 @@ "typeString": "address payable" } ], - "id": 3148, + "id": 3253, "name": "_removeMinter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3186, - "src": "746:13:12", + "referencedDeclaration": 3291, + "src": "746:13:15", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 3151, + "id": 3256, "isConstant": false, "isLValue": false, "isPure": false, @@ -930,48 +924,48 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "746:27:12", + "src": "746:27:15", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3152, + "id": 3257, "nodeType": "ExpressionStatement", - "src": "746:27:12" + "src": "746:27:15" } ] }, "documentation": null, - "id": 3154, + "id": 3259, "implemented": true, "kind": "function", "modifiers": [], "name": "renounceMinter", "nodeType": "FunctionDefinition", "parameters": { - "id": 3146, + "id": 3251, "nodeType": "ParameterList", "parameters": [], - "src": "726:2:12" + "src": "726:2:15" }, "returnParameters": { - "id": 3147, + "id": 3252, "nodeType": "ParameterList", "parameters": [], - "src": "736:0:12" + "src": "736:0:15" }, - "scope": 3187, - "src": "703:77:12", + "scope": 3292, + "src": "703:77:15", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 3169, + "id": 3274, "nodeType": "Block", - "src": "832:73:12", + "src": "832:73:15", "statements": [ { "expression": { @@ -979,12 +973,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3162, + "id": 3267, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3156, - "src": "855:7:12", + "referencedDeclaration": 3261, + "src": "855:7:15", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1000,32 +994,32 @@ ], "expression": { "argumentTypes": null, - "id": 3159, + "id": 3264, "name": "_minters", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3099, - "src": "842:8:12", + "referencedDeclaration": 3204, + "src": "842:8:15", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$3006_storage", + "typeIdentifier": "t_struct$_Role_$3111_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 3161, + "id": 3266, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 3031, - "src": "842:12:12", + "referencedDeclaration": 3136, + "src": "842:12:15", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$3006_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$3006_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$3111_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$3111_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 3163, + "id": 3268, "isConstant": false, "isLValue": false, "isPure": false, @@ -1033,15 +1027,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "842:21:12", + "src": "842:21:15", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3164, + "id": 3269, "nodeType": "ExpressionStatement", - "src": "842:21:12" + "src": "842:21:15" }, { "eventCall": { @@ -1049,12 +1043,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3166, + "id": 3271, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3156, - "src": "890:7:12", + "referencedDeclaration": 3261, + "src": "890:7:15", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1068,18 +1062,18 @@ "typeString": "address" } ], - "id": 3165, + "id": 3270, "name": "MinterAdded", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3093, - "src": "878:11:12", + "referencedDeclaration": 3198, + "src": "878:11:15", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 3167, + "id": 3272, "isConstant": false, "isLValue": false, "isPure": false, @@ -1087,36 +1081,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "878:20:12", + "src": "878:20:15", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3168, + "id": 3273, "nodeType": "EmitStatement", - "src": "873:25:12" + "src": "873:25:15" } ] }, "documentation": null, - "id": 3170, + "id": 3275, "implemented": true, "kind": "function", "modifiers": [], "name": "_addMinter", "nodeType": "FunctionDefinition", "parameters": { - "id": 3157, + "id": 3262, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3156, + "id": 3261, "name": "account", "nodeType": "VariableDeclaration", - "scope": 3170, - "src": "806:15:12", + "scope": 3275, + "src": "806:15:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1124,10 +1118,10 @@ "typeString": "address" }, "typeName": { - "id": 3155, + "id": 3260, "name": "address", "nodeType": "ElementaryTypeName", - "src": "806:7:12", + "src": "806:7:15", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1138,25 +1132,25 @@ "visibility": "internal" } ], - "src": "805:17:12" + "src": "805:17:15" }, "returnParameters": { - "id": 3158, + "id": 3263, "nodeType": "ParameterList", "parameters": [], - "src": "832:0:12" + "src": "832:0:15" }, - "scope": 3187, - "src": "786:119:12", + "scope": 3292, + "src": "786:119:15", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 3185, + "id": 3290, "nodeType": "Block", - "src": "960:78:12", + "src": "960:78:15", "statements": [ { "expression": { @@ -1164,12 +1158,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3178, + "id": 3283, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3172, - "src": "986:7:12", + "referencedDeclaration": 3277, + "src": "986:7:15", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1185,32 +1179,32 @@ ], "expression": { "argumentTypes": null, - "id": 3175, + "id": 3280, "name": "_minters", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3099, - "src": "970:8:12", + "referencedDeclaration": 3204, + "src": "970:8:15", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$3006_storage", + "typeIdentifier": "t_struct$_Role_$3111_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 3177, + "id": 3282, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 3055, - "src": "970:15:12", + "referencedDeclaration": 3160, + "src": "970:15:15", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$3006_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$3006_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$3111_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$3111_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 3179, + "id": 3284, "isConstant": false, "isLValue": false, "isPure": false, @@ -1218,15 +1212,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "970:24:12", + "src": "970:24:15", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3180, + "id": 3285, "nodeType": "ExpressionStatement", - "src": "970:24:12" + "src": "970:24:15" }, { "eventCall": { @@ -1234,12 +1228,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3182, + "id": 3287, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3172, - "src": "1023:7:12", + "referencedDeclaration": 3277, + "src": "1023:7:15", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1253,18 +1247,18 @@ "typeString": "address" } ], - "id": 3181, + "id": 3286, "name": "MinterRemoved", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3097, - "src": "1009:13:12", + "referencedDeclaration": 3202, + "src": "1009:13:15", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 3183, + "id": 3288, "isConstant": false, "isLValue": false, "isPure": false, @@ -1272,36 +1266,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1009:22:12", + "src": "1009:22:15", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3184, + "id": 3289, "nodeType": "EmitStatement", - "src": "1004:27:12" + "src": "1004:27:15" } ] }, "documentation": null, - "id": 3186, + "id": 3291, "implemented": true, "kind": "function", "modifiers": [], "name": "_removeMinter", "nodeType": "FunctionDefinition", "parameters": { - "id": 3173, + "id": 3278, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3172, + "id": 3277, "name": "account", "nodeType": "VariableDeclaration", - "scope": 3186, - "src": "934:15:12", + "scope": 3291, + "src": "934:15:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1309,10 +1303,10 @@ "typeString": "address" }, "typeName": { - "id": 3171, + "id": 3276, "name": "address", "nodeType": "ElementaryTypeName", - "src": "934:7:12", + "src": "934:7:15", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1323,39 +1317,39 @@ "visibility": "internal" } ], - "src": "933:17:12" + "src": "933:17:15" }, "returnParameters": { - "id": 3174, + "id": 3279, "nodeType": "ParameterList", "parameters": [], - "src": "960:0:12" + "src": "960:0:15" }, - "scope": 3187, - "src": "911:127:12", + "scope": 3292, + "src": "911:127:15", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 3188, - "src": "81:959:12" + "scope": 3293, + "src": "81:959:15" } ], - "src": "0:1041:12" + "src": "0:1041:15" }, "legacyAST": { "absolutePath": "openzeppelin-solidity/contracts/access/roles/MinterRole.sol", "exportedSymbols": { "MinterRole": [ - 3187 + 3292 ] }, - "id": 3188, + "id": 3293, "nodeType": "SourceUnit", "nodes": [ { - "id": 3082, + "id": 3187, "literals": [ "solidity", "^", @@ -1363,27 +1357,27 @@ ".0" ], "nodeType": "PragmaDirective", - "src": "0:23:12" + "src": "0:23:15" }, { "absolutePath": "openzeppelin-solidity/contracts/GSN/Context.sol", "file": "../../GSN/Context.sol", - "id": 3083, + "id": 3188, "nodeType": "ImportDirective", - "scope": 3188, - "sourceUnit": 3000, - "src": "25:31:12", + "scope": 3293, + "sourceUnit": 3105, + "src": "25:31:15", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "openzeppelin-solidity/contracts/access/Roles.sol", "file": "../Roles.sol", - "id": 3084, + "id": 3189, "nodeType": "ImportDirective", - "scope": 3188, - "sourceUnit": 3081, - "src": "57:22:12", + "scope": 3293, + "sourceUnit": 3186, + "src": "57:22:15", "symbolAliases": [], "unitAlias": "" }, @@ -1393,60 +1387,60 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 3085, + "id": 3190, "name": "Context", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2999, - "src": "104:7:12", + "referencedDeclaration": 3104, + "src": "104:7:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_Context_$2999", + "typeIdentifier": "t_contract$_Context_$3104", "typeString": "contract Context" } }, - "id": 3086, + "id": 3191, "nodeType": "InheritanceSpecifier", - "src": "104:7:12" + "src": "104:7:15" } ], "contractDependencies": [ - 2999 + 3104 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 3187, + "id": 3292, "linearizedBaseContracts": [ - 3187, - 2999 + 3292, + 3104 ], "name": "MinterRole", "nodeType": "ContractDefinition", "nodes": [ { - "id": 3089, + "id": 3194, "libraryName": { "contractScope": null, - "id": 3087, + "id": 3192, "name": "Roles", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3080, - "src": "124:5:12", + "referencedDeclaration": 3185, + "src": "124:5:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_Roles_$3080", + "typeIdentifier": "t_contract$_Roles_$3185", "typeString": "library Roles" } }, "nodeType": "UsingForDirective", - "src": "118:27:12", + "src": "118:27:15", "typeName": { "contractScope": null, - "id": 3088, + "id": 3193, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3006, - "src": "134:10:12", + "referencedDeclaration": 3111, + "src": "134:10:15", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$3006_storage_ptr", + "typeIdentifier": "t_struct$_Role_$3111_storage_ptr", "typeString": "struct Roles.Role" } } @@ -1454,21 +1448,21 @@ { "anonymous": false, "documentation": null, - "id": 3093, + "id": 3198, "name": "MinterAdded", "nodeType": "EventDefinition", "parameters": { - "id": 3092, + "id": 3197, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3091, + "id": 3196, "indexed": true, "name": "account", "nodeType": "VariableDeclaration", - "scope": 3093, - "src": "169:23:12", + "scope": 3198, + "src": "169:23:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1476,10 +1470,10 @@ "typeString": "address" }, "typeName": { - "id": 3090, + "id": 3195, "name": "address", "nodeType": "ElementaryTypeName", - "src": "169:7:12", + "src": "169:7:15", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1490,28 +1484,28 @@ "visibility": "internal" } ], - "src": "168:25:12" + "src": "168:25:15" }, - "src": "151:43:12" + "src": "151:43:15" }, { "anonymous": false, "documentation": null, - "id": 3097, + "id": 3202, "name": "MinterRemoved", "nodeType": "EventDefinition", "parameters": { - "id": 3096, + "id": 3201, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3095, + "id": 3200, "indexed": true, "name": "account", "nodeType": "VariableDeclaration", - "scope": 3097, - "src": "219:23:12", + "scope": 3202, + "src": "219:23:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1519,10 +1513,10 @@ "typeString": "address" }, "typeName": { - "id": 3094, + "id": 3199, "name": "address", "nodeType": "ElementaryTypeName", - "src": "219:7:12", + "src": "219:7:15", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1533,32 +1527,32 @@ "visibility": "internal" } ], - "src": "218:25:12" + "src": "218:25:15" }, - "src": "199:45:12" + "src": "199:45:15" }, { "constant": false, - "id": 3099, + "id": 3204, "name": "_minters", "nodeType": "VariableDeclaration", - "scope": 3187, - "src": "250:27:12", + "scope": 3292, + "src": "250:27:15", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$3006_storage", + "typeIdentifier": "t_struct$_Role_$3111_storage", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 3098, + "id": 3203, "name": "Roles.Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3006, - "src": "250:10:12", + "referencedDeclaration": 3111, + "src": "250:10:15", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$3006_storage_ptr", + "typeIdentifier": "t_struct$_Role_$3111_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -1567,9 +1561,9 @@ }, { "body": { - "id": 3107, + "id": 3212, "nodeType": "Block", - "src": "308:41:12", + "src": "308:41:15", "statements": [ { "expression": { @@ -1580,18 +1574,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 3103, + "id": 3208, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2987, - "src": "329:10:12", + "referencedDeclaration": 3092, + "src": "329:10:15", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 3104, + "id": 3209, "isConstant": false, "isLValue": false, "isPure": false, @@ -1599,7 +1593,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "329:12:12", + "src": "329:12:15", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -1613,18 +1607,18 @@ "typeString": "address payable" } ], - "id": 3102, + "id": 3207, "name": "_addMinter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3170, - "src": "318:10:12", + "referencedDeclaration": 3275, + "src": "318:10:15", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 3105, + "id": 3210, "isConstant": false, "isLValue": false, "isPure": false, @@ -1632,48 +1626,48 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "318:24:12", + "src": "318:24:15", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3106, + "id": 3211, "nodeType": "ExpressionStatement", - "src": "318:24:12" + "src": "318:24:15" } ] }, "documentation": null, - "id": 3108, + "id": 3213, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 3100, + "id": 3205, "nodeType": "ParameterList", "parameters": [], - "src": "296:2:12" + "src": "296:2:15" }, "returnParameters": { - "id": 3101, + "id": 3206, "nodeType": "ParameterList", "parameters": [], - "src": "308:0:12" + "src": "308:0:15" }, - "scope": 3187, - "src": "284:65:12", + "scope": 3292, + "src": "284:65:15", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 3119, + "id": 3224, "nodeType": "Block", - "src": "377:111:12", + "src": "377:111:15", "statements": [ { "expression": { @@ -1687,18 +1681,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 3112, + "id": 3217, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2987, - "src": "404:10:12", + "referencedDeclaration": 3092, + "src": "404:10:15", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 3113, + "id": 3218, "isConstant": false, "isLValue": false, "isPure": false, @@ -1706,7 +1700,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "404:12:12", + "src": "404:12:15", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -1720,18 +1714,18 @@ "typeString": "address payable" } ], - "id": 3111, + "id": 3216, "name": "isMinter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3133, - "src": "395:8:12", + "referencedDeclaration": 3238, + "src": "395:8:15", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view returns (bool)" } }, - "id": 3114, + "id": 3219, "isConstant": false, "isLValue": false, "isPure": false, @@ -1739,7 +1733,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "395:22:12", + "src": "395:22:15", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1748,14 +1742,14 @@ { "argumentTypes": null, "hexValue": "4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65", - "id": 3115, + "id": 3220, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "419:50:12", + "src": "419:50:15", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_79ecb50133735b20228dea9d08fe36a462bbc1350f591a146908848db91104cd", @@ -1775,21 +1769,21 @@ "typeString": "literal_string \"MinterRole: caller does not have the Minter role\"" } ], - "id": 3110, + "id": 3215, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "387:7:12", + "referencedDeclaration": 4176, + "src": "387:7:15", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 3116, + "id": 3221, "isConstant": false, "isLValue": false, "isPure": false, @@ -1797,41 +1791,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "387:83:12", + "src": "387:83:15", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3117, + "id": 3222, "nodeType": "ExpressionStatement", - "src": "387:83:12" + "src": "387:83:15" }, { - "id": 3118, + "id": 3223, "nodeType": "PlaceholderStatement", - "src": "480:1:12" + "src": "480:1:15" } ] }, "documentation": null, - "id": 3120, + "id": 3225, "name": "onlyMinter", "nodeType": "ModifierDefinition", "parameters": { - "id": 3109, + "id": 3214, "nodeType": "ParameterList", "parameters": [], - "src": "374:2:12" + "src": "374:2:15" }, - "src": "355:133:12", + "src": "355:133:15", "visibility": "internal" }, { "body": { - "id": 3132, + "id": 3237, "nodeType": "Block", - "src": "556:45:12", + "src": "556:45:15", "statements": [ { "expression": { @@ -1839,12 +1833,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3129, + "id": 3234, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3122, - "src": "586:7:12", + "referencedDeclaration": 3227, + "src": "586:7:15", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1860,32 +1854,32 @@ ], "expression": { "argumentTypes": null, - "id": 3127, + "id": 3232, "name": "_minters", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3099, - "src": "573:8:12", + "referencedDeclaration": 3204, + "src": "573:8:15", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$3006_storage", + "typeIdentifier": "t_struct$_Role_$3111_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 3128, + "id": 3233, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "has", "nodeType": "MemberAccess", - "referencedDeclaration": 3079, - "src": "573:12:12", + "referencedDeclaration": 3184, + "src": "573:12:15", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$3006_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$3006_storage_ptr_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$3111_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$3111_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 3130, + "id": 3235, "isConstant": false, "isLValue": false, "isPure": false, @@ -1893,37 +1887,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "573:21:12", + "src": "573:21:15", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 3126, - "id": 3131, + "functionReturnParameters": 3231, + "id": 3236, "nodeType": "Return", - "src": "566:28:12" + "src": "566:28:15" } ] }, "documentation": null, - "id": 3133, + "id": 3238, "implemented": true, "kind": "function", "modifiers": [], "name": "isMinter", "nodeType": "FunctionDefinition", "parameters": { - "id": 3123, + "id": 3228, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3122, + "id": 3227, "name": "account", "nodeType": "VariableDeclaration", - "scope": 3133, - "src": "512:15:12", + "scope": 3238, + "src": "512:15:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1931,10 +1925,10 @@ "typeString": "address" }, "typeName": { - "id": 3121, + "id": 3226, "name": "address", "nodeType": "ElementaryTypeName", - "src": "512:7:12", + "src": "512:7:15", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1945,19 +1939,19 @@ "visibility": "internal" } ], - "src": "511:17:12" + "src": "511:17:15" }, "returnParameters": { - "id": 3126, + "id": 3231, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3125, + "id": 3230, "name": "", "nodeType": "VariableDeclaration", - "scope": 3133, - "src": "550:4:12", + "scope": 3238, + "src": "550:4:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1965,10 +1959,10 @@ "typeString": "bool" }, "typeName": { - "id": 3124, + "id": 3229, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "550:4:12", + "src": "550:4:15", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1978,19 +1972,19 @@ "visibility": "internal" } ], - "src": "549:6:12" + "src": "549:6:15" }, - "scope": 3187, - "src": "494:107:12", + "scope": 3292, + "src": "494:107:15", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 3144, + "id": 3249, "nodeType": "Block", - "src": "661:36:12", + "src": "661:36:15", "statements": [ { "expression": { @@ -1998,12 +1992,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3141, + "id": 3246, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3135, - "src": "682:7:12", + "referencedDeclaration": 3240, + "src": "682:7:15", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2017,18 +2011,18 @@ "typeString": "address" } ], - "id": 3140, + "id": 3245, "name": "_addMinter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3170, - "src": "671:10:12", + "referencedDeclaration": 3275, + "src": "671:10:15", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 3142, + "id": 3247, "isConstant": false, "isLValue": false, "isPure": false, @@ -2036,56 +2030,56 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "671:19:12", + "src": "671:19:15", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3143, + "id": 3248, "nodeType": "ExpressionStatement", - "src": "671:19:12" + "src": "671:19:15" } ] }, "documentation": null, - "id": 3145, + "id": 3250, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, - "id": 3138, + "id": 3243, "modifierName": { "argumentTypes": null, - "id": 3137, + "id": 3242, "name": "onlyMinter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3120, - "src": "650:10:12", + "referencedDeclaration": 3225, + "src": "650:10:15", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "650:10:12" + "src": "650:10:15" } ], "name": "addMinter", "nodeType": "FunctionDefinition", "parameters": { - "id": 3136, + "id": 3241, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3135, + "id": 3240, "name": "account", "nodeType": "VariableDeclaration", - "scope": 3145, - "src": "626:15:12", + "scope": 3250, + "src": "626:15:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2093,10 +2087,10 @@ "typeString": "address" }, "typeName": { - "id": 3134, + "id": 3239, "name": "address", "nodeType": "ElementaryTypeName", - "src": "626:7:12", + "src": "626:7:15", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2107,25 +2101,25 @@ "visibility": "internal" } ], - "src": "625:17:12" + "src": "625:17:15" }, "returnParameters": { - "id": 3139, + "id": 3244, "nodeType": "ParameterList", "parameters": [], - "src": "661:0:12" + "src": "661:0:15" }, - "scope": 3187, - "src": "607:90:12", + "scope": 3292, + "src": "607:90:15", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 3153, + "id": 3258, "nodeType": "Block", - "src": "736:44:12", + "src": "736:44:15", "statements": [ { "expression": { @@ -2136,18 +2130,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 3149, + "id": 3254, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2987, - "src": "760:10:12", + "referencedDeclaration": 3092, + "src": "760:10:15", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 3150, + "id": 3255, "isConstant": false, "isLValue": false, "isPure": false, @@ -2155,7 +2149,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "760:12:12", + "src": "760:12:15", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -2169,18 +2163,18 @@ "typeString": "address payable" } ], - "id": 3148, + "id": 3253, "name": "_removeMinter", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3186, - "src": "746:13:12", + "referencedDeclaration": 3291, + "src": "746:13:15", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 3151, + "id": 3256, "isConstant": false, "isLValue": false, "isPure": false, @@ -2188,48 +2182,48 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "746:27:12", + "src": "746:27:15", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3152, + "id": 3257, "nodeType": "ExpressionStatement", - "src": "746:27:12" + "src": "746:27:15" } ] }, "documentation": null, - "id": 3154, + "id": 3259, "implemented": true, "kind": "function", "modifiers": [], "name": "renounceMinter", "nodeType": "FunctionDefinition", "parameters": { - "id": 3146, + "id": 3251, "nodeType": "ParameterList", "parameters": [], - "src": "726:2:12" + "src": "726:2:15" }, "returnParameters": { - "id": 3147, + "id": 3252, "nodeType": "ParameterList", "parameters": [], - "src": "736:0:12" + "src": "736:0:15" }, - "scope": 3187, - "src": "703:77:12", + "scope": 3292, + "src": "703:77:15", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 3169, + "id": 3274, "nodeType": "Block", - "src": "832:73:12", + "src": "832:73:15", "statements": [ { "expression": { @@ -2237,12 +2231,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3162, + "id": 3267, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3156, - "src": "855:7:12", + "referencedDeclaration": 3261, + "src": "855:7:15", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2258,32 +2252,32 @@ ], "expression": { "argumentTypes": null, - "id": 3159, + "id": 3264, "name": "_minters", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3099, - "src": "842:8:12", + "referencedDeclaration": 3204, + "src": "842:8:15", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$3006_storage", + "typeIdentifier": "t_struct$_Role_$3111_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 3161, + "id": 3266, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "add", "nodeType": "MemberAccess", - "referencedDeclaration": 3031, - "src": "842:12:12", + "referencedDeclaration": 3136, + "src": "842:12:15", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$3006_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$3006_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$3111_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$3111_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 3163, + "id": 3268, "isConstant": false, "isLValue": false, "isPure": false, @@ -2291,15 +2285,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "842:21:12", + "src": "842:21:15", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3164, + "id": 3269, "nodeType": "ExpressionStatement", - "src": "842:21:12" + "src": "842:21:15" }, { "eventCall": { @@ -2307,12 +2301,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3166, + "id": 3271, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3156, - "src": "890:7:12", + "referencedDeclaration": 3261, + "src": "890:7:15", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2326,18 +2320,18 @@ "typeString": "address" } ], - "id": 3165, + "id": 3270, "name": "MinterAdded", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3093, - "src": "878:11:12", + "referencedDeclaration": 3198, + "src": "878:11:15", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 3167, + "id": 3272, "isConstant": false, "isLValue": false, "isPure": false, @@ -2345,36 +2339,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "878:20:12", + "src": "878:20:15", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3168, + "id": 3273, "nodeType": "EmitStatement", - "src": "873:25:12" + "src": "873:25:15" } ] }, "documentation": null, - "id": 3170, + "id": 3275, "implemented": true, "kind": "function", "modifiers": [], "name": "_addMinter", "nodeType": "FunctionDefinition", "parameters": { - "id": 3157, + "id": 3262, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3156, + "id": 3261, "name": "account", "nodeType": "VariableDeclaration", - "scope": 3170, - "src": "806:15:12", + "scope": 3275, + "src": "806:15:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2382,10 +2376,10 @@ "typeString": "address" }, "typeName": { - "id": 3155, + "id": 3260, "name": "address", "nodeType": "ElementaryTypeName", - "src": "806:7:12", + "src": "806:7:15", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2396,25 +2390,25 @@ "visibility": "internal" } ], - "src": "805:17:12" + "src": "805:17:15" }, "returnParameters": { - "id": 3158, + "id": 3263, "nodeType": "ParameterList", "parameters": [], - "src": "832:0:12" + "src": "832:0:15" }, - "scope": 3187, - "src": "786:119:12", + "scope": 3292, + "src": "786:119:15", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 3185, + "id": 3290, "nodeType": "Block", - "src": "960:78:12", + "src": "960:78:15", "statements": [ { "expression": { @@ -2422,12 +2416,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3178, + "id": 3283, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3172, - "src": "986:7:12", + "referencedDeclaration": 3277, + "src": "986:7:15", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2443,32 +2437,32 @@ ], "expression": { "argumentTypes": null, - "id": 3175, + "id": 3280, "name": "_minters", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3099, - "src": "970:8:12", + "referencedDeclaration": 3204, + "src": "970:8:15", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$3006_storage", + "typeIdentifier": "t_struct$_Role_$3111_storage", "typeString": "struct Roles.Role storage ref" } }, - "id": 3177, + "id": 3282, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "remove", "nodeType": "MemberAccess", - "referencedDeclaration": 3055, - "src": "970:15:12", + "referencedDeclaration": 3160, + "src": "970:15:15", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$3006_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$3006_storage_ptr_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$3111_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$3111_storage_ptr_$", "typeString": "function (struct Roles.Role storage pointer,address)" } }, - "id": 3179, + "id": 3284, "isConstant": false, "isLValue": false, "isPure": false, @@ -2476,15 +2470,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "970:24:12", + "src": "970:24:15", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3180, + "id": 3285, "nodeType": "ExpressionStatement", - "src": "970:24:12" + "src": "970:24:15" }, { "eventCall": { @@ -2492,12 +2486,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3182, + "id": 3287, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3172, - "src": "1023:7:12", + "referencedDeclaration": 3277, + "src": "1023:7:15", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2511,18 +2505,18 @@ "typeString": "address" } ], - "id": 3181, + "id": 3286, "name": "MinterRemoved", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3097, - "src": "1009:13:12", + "referencedDeclaration": 3202, + "src": "1009:13:15", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 3183, + "id": 3288, "isConstant": false, "isLValue": false, "isPure": false, @@ -2530,36 +2524,36 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1009:22:12", + "src": "1009:22:15", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3184, + "id": 3289, "nodeType": "EmitStatement", - "src": "1004:27:12" + "src": "1004:27:15" } ] }, "documentation": null, - "id": 3186, + "id": 3291, "implemented": true, "kind": "function", "modifiers": [], "name": "_removeMinter", "nodeType": "FunctionDefinition", "parameters": { - "id": 3173, + "id": 3278, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3172, + "id": 3277, "name": "account", "nodeType": "VariableDeclaration", - "scope": 3186, - "src": "934:15:12", + "scope": 3291, + "src": "934:15:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2567,10 +2561,10 @@ "typeString": "address" }, "typeName": { - "id": 3171, + "id": 3276, "name": "address", "nodeType": "ElementaryTypeName", - "src": "934:7:12", + "src": "934:7:15", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2581,34 +2575,34 @@ "visibility": "internal" } ], - "src": "933:17:12" + "src": "933:17:15" }, "returnParameters": { - "id": 3174, + "id": 3279, "nodeType": "ParameterList", "parameters": [], - "src": "960:0:12" + "src": "960:0:15" }, - "scope": 3187, - "src": "911:127:12", + "scope": 3292, + "src": "911:127:15", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 3188, - "src": "81:959:12" + "scope": 3293, + "src": "81:959:15" } ], - "src": "0:1041:12" + "src": "0:1041:15" }, "compiler": { "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" + "version": "0.5.2+commit.1df8f40c.Emscripten.clang" }, "networks": {}, - "schemaVersion": "3.0.23", - "updatedAt": "2020-02-16T12:52:29.809Z", + "schemaVersion": "3.0.1", + "updatedAt": "2020-02-16T14:54:14.904Z", "devdoc": { "methods": {} }, diff --git a/truffle/build/contracts/Ownable.json b/truffle/build/contracts/Ownable.json index 952b9a0..3115d5f 100644 --- a/truffle/build/contracts/Ownable.json +++ b/truffle/build/contracts/Ownable.json @@ -12,13 +12,11 @@ "inputs": [ { "indexed": true, - "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, - "internalType": "address", "name": "newOwner", "type": "address" } @@ -32,7 +30,6 @@ "name": "owner", "outputs": [ { - "internalType": "address", "name": "", "type": "address" } @@ -47,7 +44,6 @@ "name": "isOwner", "outputs": [ { - "internalType": "bool", "name": "", "type": "bool" } @@ -69,7 +65,6 @@ "constant": false, "inputs": [ { - "internalType": "address", "name": "newOwner", "type": "address" } @@ -81,7 +76,6 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. * This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the deployer as the initial owner.\"},\"isOwner()\":{\"details\":\"Returns true if the caller is the current owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":1500},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"keccak256\":\"0x90a3995645af7562d84b9d69363ffa5ae7217714ab61e951bf7bc450f40e4061\",\"urls\":[\"bzz-raw://216ef9d6b614db4eb46970b4e84903f2534a45572dd30a79f0041f1a5830f436\",\"dweb:/ipfs/QmNPrJ4MWKUAWzKXpUqeyKRUfosaoANZAqXgvepdrCwZAG\"]},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0x6fb9d7889769d7cc161225f9ef7a90e468ba9788b253816f8d8b6894d3472c24\",\"urls\":[\"bzz-raw://cf4c00fc3c37cc5acf0c82ec6fd97bab67d72c2567fdc0ebf023d9c09b30a08e\",\"dweb:/ipfs/Qmb7TChG6DsEDX7LooJ4vmxot19f7VXX8S1zUGPeJTWbwZ\"]}},\"version\":1}", "bytecode": "0x", "deployedBytecode": "0x", "sourceMap": "", @@ -92,14 +86,14 @@ "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol", "exportedSymbols": { "Ownable": [ - 3492 + 3597 ] }, - "id": 3493, + "id": 3598, "nodeType": "SourceUnit", "nodes": [ { - "id": 3376, + "id": 3481, "literals": [ "solidity", "^", @@ -107,16 +101,16 @@ ".0" ], "nodeType": "PragmaDirective", - "src": "0:23:14" + "src": "0:23:17" }, { "absolutePath": "openzeppelin-solidity/contracts/GSN/Context.sol", "file": "../GSN/Context.sol", - "id": 3377, + "id": 3482, "nodeType": "ImportDirective", - "scope": 3493, - "sourceUnit": 3000, - "src": "25:28:14", + "scope": 3598, + "sourceUnit": 3105, + "src": "25:28:17", "symbolAliases": [], "unitAlias": "" }, @@ -126,42 +120,42 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 3378, + "id": 3483, "name": "Context", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2999, - "src": "435:7:14", + "referencedDeclaration": 3104, + "src": "435:7:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_Context_$2999", + "typeIdentifier": "t_contract$_Context_$3104", "typeString": "contract Context" } }, - "id": 3379, + "id": 3484, "nodeType": "InheritanceSpecifier", - "src": "435:7:14" + "src": "435:7:17" } ], "contractDependencies": [ - 2999 + 3104 ], "contractKind": "contract", "documentation": "@dev Contract module which provides a basic access control mechanism, where\nthere is an account (an owner) that can be granted exclusive access to\nspecific functions.\n * This module is used through inheritance. It will make available the modifier\n`onlyOwner`, which can be applied to your functions to restrict their use to\nthe owner.", "fullyImplemented": true, - "id": 3492, + "id": 3597, "linearizedBaseContracts": [ - 3492, - 2999 + 3597, + 3104 ], "name": "Ownable", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 3381, + "id": 3486, "name": "_owner", "nodeType": "VariableDeclaration", - "scope": 3492, - "src": "449:22:14", + "scope": 3597, + "src": "449:22:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -169,10 +163,10 @@ "typeString": "address" }, "typeName": { - "id": 3380, + "id": 3485, "name": "address", "nodeType": "ElementaryTypeName", - "src": "449:7:14", + "src": "449:7:17", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -185,21 +179,21 @@ { "anonymous": false, "documentation": null, - "id": 3387, + "id": 3492, "name": "OwnershipTransferred", "nodeType": "EventDefinition", "parameters": { - "id": 3386, + "id": 3491, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3383, + "id": 3488, "indexed": true, "name": "previousOwner", "nodeType": "VariableDeclaration", - "scope": 3387, - "src": "505:29:14", + "scope": 3492, + "src": "505:29:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -207,10 +201,10 @@ "typeString": "address" }, "typeName": { - "id": 3382, + "id": 3487, "name": "address", "nodeType": "ElementaryTypeName", - "src": "505:7:14", + "src": "505:7:17", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -222,12 +216,12 @@ }, { "constant": false, - "id": 3385, + "id": 3490, "indexed": true, "name": "newOwner", "nodeType": "VariableDeclaration", - "scope": 3387, - "src": "536:24:14", + "scope": 3492, + "src": "536:24:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -235,10 +229,10 @@ "typeString": "address" }, "typeName": { - "id": 3384, + "id": 3489, "name": "address", "nodeType": "ElementaryTypeName", - "src": "536:7:14", + "src": "536:7:17", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -249,28 +243,28 @@ "visibility": "internal" } ], - "src": "504:57:14" + "src": "504:57:17" }, - "src": "478:84:14" + "src": "478:84:17" }, { "body": { - "id": 3406, + "id": 3511, "nodeType": "Block", - "src": "688:135:14", + "src": "688:135:17", "statements": [ { "assignments": [ - 3391 + 3496 ], "declarations": [ { "constant": false, - "id": 3391, + "id": 3496, "name": "msgSender", "nodeType": "VariableDeclaration", - "scope": 3406, - "src": "698:17:14", + "scope": 3511, + "src": "698:17:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -278,10 +272,10 @@ "typeString": "address" }, "typeName": { - "id": 3390, + "id": 3495, "name": "address", "nodeType": "ElementaryTypeName", - "src": "698:7:14", + "src": "698:7:17", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -292,24 +286,24 @@ "visibility": "internal" } ], - "id": 3394, + "id": 3499, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 3392, + "id": 3497, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2987, - "src": "718:10:14", + "referencedDeclaration": 3092, + "src": "718:10:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 3393, + "id": 3498, "isConstant": false, "isLValue": false, "isPure": false, @@ -317,31 +311,31 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "718:12:14", + "src": "718:12:17", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "nodeType": "VariableDeclarationStatement", - "src": "698:32:14" + "src": "698:32:17" }, { "expression": { "argumentTypes": null, - "id": 3397, + "id": 3502, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 3395, + "id": 3500, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3381, - "src": "740:6:14", + "referencedDeclaration": 3486, + "src": "740:6:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -351,26 +345,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 3396, + "id": 3501, "name": "msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3391, - "src": "749:9:14", + "referencedDeclaration": 3496, + "src": "749:9:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "740:18:14", + "src": "740:18:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 3398, + "id": 3503, "nodeType": "ExpressionStatement", - "src": "740:18:14" + "src": "740:18:17" }, { "eventCall": { @@ -382,14 +376,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 3401, + "id": 3506, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "802:1:14", + "src": "802:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -405,20 +399,20 @@ "typeString": "int_const 0" } ], - "id": 3400, + "id": 3505, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "794:7:14", + "src": "794:7:17", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 3402, + "id": 3507, "isConstant": false, "isLValue": false, "isPure": true, @@ -426,7 +420,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "794:10:14", + "src": "794:10:17", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -434,12 +428,12 @@ }, { "argumentTypes": null, - "id": 3403, + "id": 3508, "name": "msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3391, - "src": "806:9:14", + "referencedDeclaration": 3496, + "src": "806:9:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -457,18 +451,18 @@ "typeString": "address" } ], - "id": 3399, + "id": 3504, "name": "OwnershipTransferred", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3387, - "src": "773:20:14", + "referencedDeclaration": 3492, + "src": "773:20:17", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address)" } }, - "id": 3404, + "id": 3509, "isConstant": false, "isLValue": false, "isPure": false, @@ -476,94 +470,94 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "773:43:14", + "src": "773:43:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3405, + "id": 3510, "nodeType": "EmitStatement", - "src": "768:48:14" + "src": "768:48:17" } ] }, "documentation": "@dev Initializes the contract setting the deployer as the initial owner.", - "id": 3407, + "id": 3512, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 3388, + "id": 3493, "nodeType": "ParameterList", "parameters": [], - "src": "676:2:14" + "src": "676:2:17" }, "returnParameters": { - "id": 3389, + "id": 3494, "nodeType": "ParameterList", "parameters": [], - "src": "688:0:14" + "src": "688:0:17" }, - "scope": 3492, - "src": "664:159:14", + "scope": 3597, + "src": "664:159:17", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 3414, + "id": 3519, "nodeType": "Block", - "src": "946:30:14", + "src": "946:30:17", "statements": [ { "expression": { "argumentTypes": null, - "id": 3412, + "id": 3517, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3381, - "src": "963:6:14", + "referencedDeclaration": 3486, + "src": "963:6:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "functionReturnParameters": 3411, - "id": 3413, + "functionReturnParameters": 3516, + "id": 3518, "nodeType": "Return", - "src": "956:13:14" + "src": "956:13:17" } ] }, "documentation": "@dev Returns the address of the current owner.", - "id": 3415, + "id": 3520, "implemented": true, "kind": "function", "modifiers": [], "name": "owner", "nodeType": "FunctionDefinition", "parameters": { - "id": 3408, + "id": 3513, "nodeType": "ParameterList", "parameters": [], - "src": "913:2:14" + "src": "913:2:17" }, "returnParameters": { - "id": 3411, + "id": 3516, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3410, + "id": 3515, "name": "", "nodeType": "VariableDeclaration", - "scope": 3415, - "src": "937:7:14", + "scope": 3520, + "src": "937:7:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -571,10 +565,10 @@ "typeString": "address" }, "typeName": { - "id": 3409, + "id": 3514, "name": "address", "nodeType": "ElementaryTypeName", - "src": "937:7:14", + "src": "937:7:17", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -585,19 +579,19 @@ "visibility": "internal" } ], - "src": "936:9:14" + "src": "936:9:17" }, - "scope": 3492, - "src": "899:77:14", + "scope": 3597, + "src": "899:77:17", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 3424, + "id": 3529, "nodeType": "Block", - "src": "1085:82:14", + "src": "1085:82:17", "statements": [ { "expression": { @@ -608,18 +602,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 3418, + "id": 3523, "name": "isOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3436, - "src": "1103:7:14", + "referencedDeclaration": 3541, + "src": "1103:7:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", "typeString": "function () view returns (bool)" } }, - "id": 3419, + "id": 3524, "isConstant": false, "isLValue": false, "isPure": false, @@ -627,7 +621,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1103:9:14", + "src": "1103:9:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -636,14 +630,14 @@ { "argumentTypes": null, "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572", - "id": 3420, + "id": 3525, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1114:34:14", + "src": "1114:34:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe", @@ -663,21 +657,21 @@ "typeString": "literal_string \"Ownable: caller is not the owner\"" } ], - "id": 3417, + "id": 3522, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "1095:7:14", + "referencedDeclaration": 4176, + "src": "1095:7:17", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 3421, + "id": 3526, "isConstant": false, "isLValue": false, "isPure": false, @@ -685,41 +679,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1095:54:14", + "src": "1095:54:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3422, + "id": 3527, "nodeType": "ExpressionStatement", - "src": "1095:54:14" + "src": "1095:54:17" }, { - "id": 3423, + "id": 3528, "nodeType": "PlaceholderStatement", - "src": "1159:1:14" + "src": "1159:1:17" } ] }, "documentation": "@dev Throws if called by any account other than the owner.", - "id": 3425, + "id": 3530, "name": "onlyOwner", "nodeType": "ModifierDefinition", "parameters": { - "id": 3416, + "id": 3521, "nodeType": "ParameterList", "parameters": [], - "src": "1082:2:14" + "src": "1082:2:17" }, - "src": "1064:103:14", + "src": "1064:103:17", "visibility": "internal" }, { "body": { - "id": 3435, + "id": 3540, "nodeType": "Block", - "src": "1296:46:14", + "src": "1296:46:17", "statements": [ { "expression": { @@ -728,7 +722,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 3433, + "id": 3538, "isConstant": false, "isLValue": false, "isPure": false, @@ -738,18 +732,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 3430, + "id": 3535, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2987, - "src": "1313:10:14", + "referencedDeclaration": 3092, + "src": "1313:10:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 3431, + "id": 3536, "isConstant": false, "isLValue": false, "isPure": false, @@ -757,7 +751,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1313:12:14", + "src": "1313:12:17", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -767,54 +761,54 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 3432, + "id": 3537, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3381, - "src": "1329:6:14", + "referencedDeclaration": 3486, + "src": "1329:6:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1313:22:14", + "src": "1313:22:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 3429, - "id": 3434, + "functionReturnParameters": 3534, + "id": 3539, "nodeType": "Return", - "src": "1306:29:14" + "src": "1306:29:17" } ] }, "documentation": "@dev Returns true if the caller is the current owner.", - "id": 3436, + "id": 3541, "implemented": true, "kind": "function", "modifiers": [], "name": "isOwner", "nodeType": "FunctionDefinition", "parameters": { - "id": 3426, + "id": 3531, "nodeType": "ParameterList", "parameters": [], - "src": "1266:2:14" + "src": "1266:2:17" }, "returnParameters": { - "id": 3429, + "id": 3534, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3428, + "id": 3533, "name": "", "nodeType": "VariableDeclaration", - "scope": 3436, - "src": "1290:4:14", + "scope": 3541, + "src": "1290:4:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -822,10 +816,10 @@ "typeString": "bool" }, "typeName": { - "id": 3427, + "id": 3532, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1290:4:14", + "src": "1290:4:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -835,19 +829,19 @@ "visibility": "internal" } ], - "src": "1289:6:14" + "src": "1289:6:17" }, - "scope": 3492, - "src": "1250:92:14", + "scope": 3597, + "src": "1250:92:17", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 3454, + "id": 3559, "nodeType": "Block", - "src": "1730:91:14", + "src": "1730:91:17", "statements": [ { "eventCall": { @@ -855,12 +849,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3442, + "id": 3547, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3381, - "src": "1766:6:14", + "referencedDeclaration": 3486, + "src": "1766:6:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -872,14 +866,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 3444, + "id": 3549, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1782:1:14", + "src": "1782:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -895,20 +889,20 @@ "typeString": "int_const 0" } ], - "id": 3443, + "id": 3548, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1774:7:14", + "src": "1774:7:17", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 3445, + "id": 3550, "isConstant": false, "isLValue": false, "isPure": true, @@ -916,7 +910,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1774:10:14", + "src": "1774:10:17", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -934,18 +928,18 @@ "typeString": "address payable" } ], - "id": 3441, + "id": 3546, "name": "OwnershipTransferred", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3387, - "src": "1745:20:14", + "referencedDeclaration": 3492, + "src": "1745:20:17", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address)" } }, - "id": 3446, + "id": 3551, "isConstant": false, "isLValue": false, "isPure": false, @@ -953,32 +947,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1745:40:14", + "src": "1745:40:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3447, + "id": 3552, "nodeType": "EmitStatement", - "src": "1740:45:14" + "src": "1740:45:17" }, { "expression": { "argumentTypes": null, - "id": 3452, + "id": 3557, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 3448, + "id": 3553, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3381, - "src": "1795:6:14", + "referencedDeclaration": 3486, + "src": "1795:6:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -992,14 +986,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 3450, + "id": 3555, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1812:1:14", + "src": "1812:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1015,20 +1009,20 @@ "typeString": "int_const 0" } ], - "id": 3449, + "id": 3554, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1804:7:14", + "src": "1804:7:17", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 3451, + "id": 3556, "isConstant": false, "isLValue": false, "isPure": true, @@ -1036,74 +1030,74 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1804:10:14", + "src": "1804:10:17", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "src": "1795:19:14", + "src": "1795:19:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 3453, + "id": 3558, "nodeType": "ExpressionStatement", - "src": "1795:19:14" + "src": "1795:19:17" } ] }, "documentation": "@dev Leaves the contract without owner. It will not be possible to call\n`onlyOwner` functions anymore. Can only be called by the current owner.\n * NOTE: Renouncing ownership will leave the contract without an owner,\nthereby removing any functionality that is only available to the owner.", - "id": 3455, + "id": 3560, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, - "id": 3439, + "id": 3544, "modifierName": { "argumentTypes": null, - "id": 3438, + "id": 3543, "name": "onlyOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3425, - "src": "1720:9:14", + "referencedDeclaration": 3530, + "src": "1720:9:17", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1720:9:14" + "src": "1720:9:17" } ], "name": "renounceOwnership", "nodeType": "FunctionDefinition", "parameters": { - "id": 3437, + "id": 3542, "nodeType": "ParameterList", "parameters": [], - "src": "1710:2:14" + "src": "1710:2:17" }, "returnParameters": { - "id": 3440, + "id": 3545, "nodeType": "ParameterList", "parameters": [], - "src": "1730:0:14" + "src": "1730:0:17" }, - "scope": 3492, - "src": "1684:137:14", + "scope": 3597, + "src": "1684:137:17", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 3466, + "id": 3571, "nodeType": "Block", - "src": "2032:45:14", + "src": "2032:45:17", "statements": [ { "expression": { @@ -1111,12 +1105,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3463, + "id": 3568, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3457, - "src": "2061:8:14", + "referencedDeclaration": 3562, + "src": "2061:8:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1130,18 +1124,18 @@ "typeString": "address" } ], - "id": 3462, + "id": 3567, "name": "_transferOwnership", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3491, - "src": "2042:18:14", + "referencedDeclaration": 3596, + "src": "2042:18:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 3464, + "id": 3569, "isConstant": false, "isLValue": false, "isPure": false, @@ -1149,56 +1143,56 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2042:28:14", + "src": "2042:28:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3465, + "id": 3570, "nodeType": "ExpressionStatement", - "src": "2042:28:14" + "src": "2042:28:17" } ] }, "documentation": "@dev Transfers ownership of the contract to a new account (`newOwner`).\nCan only be called by the current owner.", - "id": 3467, + "id": 3572, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, - "id": 3460, + "id": 3565, "modifierName": { "argumentTypes": null, - "id": 3459, + "id": 3564, "name": "onlyOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3425, - "src": "2022:9:14", + "referencedDeclaration": 3530, + "src": "2022:9:17", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2022:9:14" + "src": "2022:9:17" } ], "name": "transferOwnership", "nodeType": "FunctionDefinition", "parameters": { - "id": 3458, + "id": 3563, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3457, + "id": 3562, "name": "newOwner", "nodeType": "VariableDeclaration", - "scope": 3467, - "src": "1997:16:14", + "scope": 3572, + "src": "1997:16:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1206,10 +1200,10 @@ "typeString": "address" }, "typeName": { - "id": 3456, + "id": 3561, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1997:7:14", + "src": "1997:7:17", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1220,25 +1214,25 @@ "visibility": "internal" } ], - "src": "1996:18:14" + "src": "1996:18:17" }, "returnParameters": { - "id": 3461, + "id": 3566, "nodeType": "ParameterList", "parameters": [], - "src": "2032:0:14" + "src": "2032:0:17" }, - "scope": 3492, - "src": "1970:107:14", + "scope": 3597, + "src": "1970:107:17", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 3490, + "id": 3595, "nodeType": "Block", - "src": "2233:170:14", + "src": "2233:170:17", "statements": [ { "expression": { @@ -1250,19 +1244,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 3477, + "id": 3582, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3473, + "id": 3578, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3469, - "src": "2251:8:14", + "referencedDeclaration": 3574, + "src": "2251:8:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1276,14 +1270,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 3475, + "id": 3580, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2271:1:14", + "src": "2271:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1299,20 +1293,20 @@ "typeString": "int_const 0" } ], - "id": 3474, + "id": 3579, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2263:7:14", + "src": "2263:7:17", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 3476, + "id": 3581, "isConstant": false, "isLValue": false, "isPure": true, @@ -1320,13 +1314,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2263:10:14", + "src": "2263:10:17", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "src": "2251:22:14", + "src": "2251:22:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1335,14 +1329,14 @@ { "argumentTypes": null, "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373", - "id": 3478, + "id": 3583, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2275:40:14", + "src": "2275:40:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe", @@ -1362,21 +1356,21 @@ "typeString": "literal_string \"Ownable: new owner is the zero address\"" } ], - "id": 3472, + "id": 3577, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "2243:7:14", + "referencedDeclaration": 4176, + "src": "2243:7:17", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 3479, + "id": 3584, "isConstant": false, "isLValue": false, "isPure": false, @@ -1384,15 +1378,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2243:73:14", + "src": "2243:73:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3480, + "id": 3585, "nodeType": "ExpressionStatement", - "src": "2243:73:14" + "src": "2243:73:17" }, { "eventCall": { @@ -1400,12 +1394,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3482, + "id": 3587, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3381, - "src": "2352:6:14", + "referencedDeclaration": 3486, + "src": "2352:6:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1413,12 +1407,12 @@ }, { "argumentTypes": null, - "id": 3483, + "id": 3588, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3469, - "src": "2360:8:14", + "referencedDeclaration": 3574, + "src": "2360:8:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1436,18 +1430,18 @@ "typeString": "address" } ], - "id": 3481, + "id": 3586, "name": "OwnershipTransferred", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3387, - "src": "2331:20:14", + "referencedDeclaration": 3492, + "src": "2331:20:17", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address)" } }, - "id": 3484, + "id": 3589, "isConstant": false, "isLValue": false, "isPure": false, @@ -1455,32 +1449,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2331:38:14", + "src": "2331:38:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3485, + "id": 3590, "nodeType": "EmitStatement", - "src": "2326:43:14" + "src": "2326:43:17" }, { "expression": { "argumentTypes": null, - "id": 3488, + "id": 3593, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 3486, + "id": 3591, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3381, - "src": "2379:6:14", + "referencedDeclaration": 3486, + "src": "2379:6:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1490,47 +1484,47 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 3487, + "id": 3592, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3469, - "src": "2388:8:14", + "referencedDeclaration": 3574, + "src": "2388:8:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2379:17:14", + "src": "2379:17:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 3489, + "id": 3594, "nodeType": "ExpressionStatement", - "src": "2379:17:14" + "src": "2379:17:17" } ] }, "documentation": "@dev Transfers ownership of the contract to a new account (`newOwner`).", - "id": 3491, + "id": 3596, "implemented": true, "kind": "function", "modifiers": [], "name": "_transferOwnership", "nodeType": "FunctionDefinition", "parameters": { - "id": 3470, + "id": 3575, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3469, + "id": 3574, "name": "newOwner", "nodeType": "VariableDeclaration", - "scope": 3491, - "src": "2206:16:14", + "scope": 3596, + "src": "2206:16:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1538,10 +1532,10 @@ "typeString": "address" }, "typeName": { - "id": 3468, + "id": 3573, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2206:7:14", + "src": "2206:7:17", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1552,39 +1546,39 @@ "visibility": "internal" } ], - "src": "2205:18:14" + "src": "2205:18:17" }, "returnParameters": { - "id": 3471, + "id": 3576, "nodeType": "ParameterList", "parameters": [], - "src": "2233:0:14" + "src": "2233:0:17" }, - "scope": 3492, - "src": "2178:225:14", + "scope": 3597, + "src": "2178:225:17", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 3493, - "src": "415:1990:14" + "scope": 3598, + "src": "415:1990:17" } ], - "src": "0:2406:14" + "src": "0:2406:17" }, "legacyAST": { "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol", "exportedSymbols": { "Ownable": [ - 3492 + 3597 ] }, - "id": 3493, + "id": 3598, "nodeType": "SourceUnit", "nodes": [ { - "id": 3376, + "id": 3481, "literals": [ "solidity", "^", @@ -1592,16 +1586,16 @@ ".0" ], "nodeType": "PragmaDirective", - "src": "0:23:14" + "src": "0:23:17" }, { "absolutePath": "openzeppelin-solidity/contracts/GSN/Context.sol", "file": "../GSN/Context.sol", - "id": 3377, + "id": 3482, "nodeType": "ImportDirective", - "scope": 3493, - "sourceUnit": 3000, - "src": "25:28:14", + "scope": 3598, + "sourceUnit": 3105, + "src": "25:28:17", "symbolAliases": [], "unitAlias": "" }, @@ -1611,42 +1605,42 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 3378, + "id": 3483, "name": "Context", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2999, - "src": "435:7:14", + "referencedDeclaration": 3104, + "src": "435:7:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_Context_$2999", + "typeIdentifier": "t_contract$_Context_$3104", "typeString": "contract Context" } }, - "id": 3379, + "id": 3484, "nodeType": "InheritanceSpecifier", - "src": "435:7:14" + "src": "435:7:17" } ], "contractDependencies": [ - 2999 + 3104 ], "contractKind": "contract", "documentation": "@dev Contract module which provides a basic access control mechanism, where\nthere is an account (an owner) that can be granted exclusive access to\nspecific functions.\n * This module is used through inheritance. It will make available the modifier\n`onlyOwner`, which can be applied to your functions to restrict their use to\nthe owner.", "fullyImplemented": true, - "id": 3492, + "id": 3597, "linearizedBaseContracts": [ - 3492, - 2999 + 3597, + 3104 ], "name": "Ownable", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 3381, + "id": 3486, "name": "_owner", "nodeType": "VariableDeclaration", - "scope": 3492, - "src": "449:22:14", + "scope": 3597, + "src": "449:22:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -1654,10 +1648,10 @@ "typeString": "address" }, "typeName": { - "id": 3380, + "id": 3485, "name": "address", "nodeType": "ElementaryTypeName", - "src": "449:7:14", + "src": "449:7:17", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1670,21 +1664,21 @@ { "anonymous": false, "documentation": null, - "id": 3387, + "id": 3492, "name": "OwnershipTransferred", "nodeType": "EventDefinition", "parameters": { - "id": 3386, + "id": 3491, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3383, + "id": 3488, "indexed": true, "name": "previousOwner", "nodeType": "VariableDeclaration", - "scope": 3387, - "src": "505:29:14", + "scope": 3492, + "src": "505:29:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1692,10 +1686,10 @@ "typeString": "address" }, "typeName": { - "id": 3382, + "id": 3487, "name": "address", "nodeType": "ElementaryTypeName", - "src": "505:7:14", + "src": "505:7:17", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1707,12 +1701,12 @@ }, { "constant": false, - "id": 3385, + "id": 3490, "indexed": true, "name": "newOwner", "nodeType": "VariableDeclaration", - "scope": 3387, - "src": "536:24:14", + "scope": 3492, + "src": "536:24:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1720,10 +1714,10 @@ "typeString": "address" }, "typeName": { - "id": 3384, + "id": 3489, "name": "address", "nodeType": "ElementaryTypeName", - "src": "536:7:14", + "src": "536:7:17", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1734,28 +1728,28 @@ "visibility": "internal" } ], - "src": "504:57:14" + "src": "504:57:17" }, - "src": "478:84:14" + "src": "478:84:17" }, { "body": { - "id": 3406, + "id": 3511, "nodeType": "Block", - "src": "688:135:14", + "src": "688:135:17", "statements": [ { "assignments": [ - 3391 + 3496 ], "declarations": [ { "constant": false, - "id": 3391, + "id": 3496, "name": "msgSender", "nodeType": "VariableDeclaration", - "scope": 3406, - "src": "698:17:14", + "scope": 3511, + "src": "698:17:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1763,10 +1757,10 @@ "typeString": "address" }, "typeName": { - "id": 3390, + "id": 3495, "name": "address", "nodeType": "ElementaryTypeName", - "src": "698:7:14", + "src": "698:7:17", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1777,24 +1771,24 @@ "visibility": "internal" } ], - "id": 3394, + "id": 3499, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 3392, + "id": 3497, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2987, - "src": "718:10:14", + "referencedDeclaration": 3092, + "src": "718:10:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 3393, + "id": 3498, "isConstant": false, "isLValue": false, "isPure": false, @@ -1802,31 +1796,31 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "718:12:14", + "src": "718:12:17", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "nodeType": "VariableDeclarationStatement", - "src": "698:32:14" + "src": "698:32:17" }, { "expression": { "argumentTypes": null, - "id": 3397, + "id": 3502, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 3395, + "id": 3500, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3381, - "src": "740:6:14", + "referencedDeclaration": 3486, + "src": "740:6:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1836,26 +1830,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 3396, + "id": 3501, "name": "msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3391, - "src": "749:9:14", + "referencedDeclaration": 3496, + "src": "749:9:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "740:18:14", + "src": "740:18:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 3398, + "id": 3503, "nodeType": "ExpressionStatement", - "src": "740:18:14" + "src": "740:18:17" }, { "eventCall": { @@ -1867,14 +1861,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 3401, + "id": 3506, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "802:1:14", + "src": "802:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1890,20 +1884,20 @@ "typeString": "int_const 0" } ], - "id": 3400, + "id": 3505, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "794:7:14", + "src": "794:7:17", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 3402, + "id": 3507, "isConstant": false, "isLValue": false, "isPure": true, @@ -1911,7 +1905,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "794:10:14", + "src": "794:10:17", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -1919,12 +1913,12 @@ }, { "argumentTypes": null, - "id": 3403, + "id": 3508, "name": "msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3391, - "src": "806:9:14", + "referencedDeclaration": 3496, + "src": "806:9:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1942,18 +1936,18 @@ "typeString": "address" } ], - "id": 3399, + "id": 3504, "name": "OwnershipTransferred", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3387, - "src": "773:20:14", + "referencedDeclaration": 3492, + "src": "773:20:17", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address)" } }, - "id": 3404, + "id": 3509, "isConstant": false, "isLValue": false, "isPure": false, @@ -1961,94 +1955,94 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "773:43:14", + "src": "773:43:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3405, + "id": 3510, "nodeType": "EmitStatement", - "src": "768:48:14" + "src": "768:48:17" } ] }, "documentation": "@dev Initializes the contract setting the deployer as the initial owner.", - "id": 3407, + "id": 3512, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 3388, + "id": 3493, "nodeType": "ParameterList", "parameters": [], - "src": "676:2:14" + "src": "676:2:17" }, "returnParameters": { - "id": 3389, + "id": 3494, "nodeType": "ParameterList", "parameters": [], - "src": "688:0:14" + "src": "688:0:17" }, - "scope": 3492, - "src": "664:159:14", + "scope": 3597, + "src": "664:159:17", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 3414, + "id": 3519, "nodeType": "Block", - "src": "946:30:14", + "src": "946:30:17", "statements": [ { "expression": { "argumentTypes": null, - "id": 3412, + "id": 3517, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3381, - "src": "963:6:14", + "referencedDeclaration": 3486, + "src": "963:6:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "functionReturnParameters": 3411, - "id": 3413, + "functionReturnParameters": 3516, + "id": 3518, "nodeType": "Return", - "src": "956:13:14" + "src": "956:13:17" } ] }, "documentation": "@dev Returns the address of the current owner.", - "id": 3415, + "id": 3520, "implemented": true, "kind": "function", "modifiers": [], "name": "owner", "nodeType": "FunctionDefinition", "parameters": { - "id": 3408, + "id": 3513, "nodeType": "ParameterList", "parameters": [], - "src": "913:2:14" + "src": "913:2:17" }, "returnParameters": { - "id": 3411, + "id": 3516, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3410, + "id": 3515, "name": "", "nodeType": "VariableDeclaration", - "scope": 3415, - "src": "937:7:14", + "scope": 3520, + "src": "937:7:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2056,10 +2050,10 @@ "typeString": "address" }, "typeName": { - "id": 3409, + "id": 3514, "name": "address", "nodeType": "ElementaryTypeName", - "src": "937:7:14", + "src": "937:7:17", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2070,19 +2064,19 @@ "visibility": "internal" } ], - "src": "936:9:14" + "src": "936:9:17" }, - "scope": 3492, - "src": "899:77:14", + "scope": 3597, + "src": "899:77:17", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 3424, + "id": 3529, "nodeType": "Block", - "src": "1085:82:14", + "src": "1085:82:17", "statements": [ { "expression": { @@ -2093,18 +2087,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 3418, + "id": 3523, "name": "isOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3436, - "src": "1103:7:14", + "referencedDeclaration": 3541, + "src": "1103:7:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", "typeString": "function () view returns (bool)" } }, - "id": 3419, + "id": 3524, "isConstant": false, "isLValue": false, "isPure": false, @@ -2112,7 +2106,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1103:9:14", + "src": "1103:9:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2121,14 +2115,14 @@ { "argumentTypes": null, "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572", - "id": 3420, + "id": 3525, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1114:34:14", + "src": "1114:34:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe", @@ -2148,21 +2142,21 @@ "typeString": "literal_string \"Ownable: caller is not the owner\"" } ], - "id": 3417, + "id": 3522, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "1095:7:14", + "referencedDeclaration": 4176, + "src": "1095:7:17", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 3421, + "id": 3526, "isConstant": false, "isLValue": false, "isPure": false, @@ -2170,41 +2164,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1095:54:14", + "src": "1095:54:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3422, + "id": 3527, "nodeType": "ExpressionStatement", - "src": "1095:54:14" + "src": "1095:54:17" }, { - "id": 3423, + "id": 3528, "nodeType": "PlaceholderStatement", - "src": "1159:1:14" + "src": "1159:1:17" } ] }, "documentation": "@dev Throws if called by any account other than the owner.", - "id": 3425, + "id": 3530, "name": "onlyOwner", "nodeType": "ModifierDefinition", "parameters": { - "id": 3416, + "id": 3521, "nodeType": "ParameterList", "parameters": [], - "src": "1082:2:14" + "src": "1082:2:17" }, - "src": "1064:103:14", + "src": "1064:103:17", "visibility": "internal" }, { "body": { - "id": 3435, + "id": 3540, "nodeType": "Block", - "src": "1296:46:14", + "src": "1296:46:17", "statements": [ { "expression": { @@ -2213,7 +2207,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 3433, + "id": 3538, "isConstant": false, "isLValue": false, "isPure": false, @@ -2223,18 +2217,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 3430, + "id": 3535, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2987, - "src": "1313:10:14", + "referencedDeclaration": 3092, + "src": "1313:10:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", "typeString": "function () view returns (address payable)" } }, - "id": 3431, + "id": 3536, "isConstant": false, "isLValue": false, "isPure": false, @@ -2242,7 +2236,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1313:12:14", + "src": "1313:12:17", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -2252,54 +2246,54 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 3432, + "id": 3537, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3381, - "src": "1329:6:14", + "referencedDeclaration": 3486, + "src": "1329:6:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1313:22:14", + "src": "1313:22:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 3429, - "id": 3434, + "functionReturnParameters": 3534, + "id": 3539, "nodeType": "Return", - "src": "1306:29:14" + "src": "1306:29:17" } ] }, "documentation": "@dev Returns true if the caller is the current owner.", - "id": 3436, + "id": 3541, "implemented": true, "kind": "function", "modifiers": [], "name": "isOwner", "nodeType": "FunctionDefinition", "parameters": { - "id": 3426, + "id": 3531, "nodeType": "ParameterList", "parameters": [], - "src": "1266:2:14" + "src": "1266:2:17" }, "returnParameters": { - "id": 3429, + "id": 3534, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3428, + "id": 3533, "name": "", "nodeType": "VariableDeclaration", - "scope": 3436, - "src": "1290:4:14", + "scope": 3541, + "src": "1290:4:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2307,10 +2301,10 @@ "typeString": "bool" }, "typeName": { - "id": 3427, + "id": 3532, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1290:4:14", + "src": "1290:4:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2320,19 +2314,19 @@ "visibility": "internal" } ], - "src": "1289:6:14" + "src": "1289:6:17" }, - "scope": 3492, - "src": "1250:92:14", + "scope": 3597, + "src": "1250:92:17", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 3454, + "id": 3559, "nodeType": "Block", - "src": "1730:91:14", + "src": "1730:91:17", "statements": [ { "eventCall": { @@ -2340,12 +2334,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3442, + "id": 3547, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3381, - "src": "1766:6:14", + "referencedDeclaration": 3486, + "src": "1766:6:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2357,14 +2351,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 3444, + "id": 3549, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1782:1:14", + "src": "1782:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2380,20 +2374,20 @@ "typeString": "int_const 0" } ], - "id": 3443, + "id": 3548, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1774:7:14", + "src": "1774:7:17", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 3445, + "id": 3550, "isConstant": false, "isLValue": false, "isPure": true, @@ -2401,7 +2395,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1774:10:14", + "src": "1774:10:17", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" @@ -2419,18 +2413,18 @@ "typeString": "address payable" } ], - "id": 3441, + "id": 3546, "name": "OwnershipTransferred", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3387, - "src": "1745:20:14", + "referencedDeclaration": 3492, + "src": "1745:20:17", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address)" } }, - "id": 3446, + "id": 3551, "isConstant": false, "isLValue": false, "isPure": false, @@ -2438,32 +2432,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1745:40:14", + "src": "1745:40:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3447, + "id": 3552, "nodeType": "EmitStatement", - "src": "1740:45:14" + "src": "1740:45:17" }, { "expression": { "argumentTypes": null, - "id": 3452, + "id": 3557, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 3448, + "id": 3553, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3381, - "src": "1795:6:14", + "referencedDeclaration": 3486, + "src": "1795:6:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2477,14 +2471,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 3450, + "id": 3555, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1812:1:14", + "src": "1812:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2500,20 +2494,20 @@ "typeString": "int_const 0" } ], - "id": 3449, + "id": 3554, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1804:7:14", + "src": "1804:7:17", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 3451, + "id": 3556, "isConstant": false, "isLValue": false, "isPure": true, @@ -2521,74 +2515,74 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1804:10:14", + "src": "1804:10:17", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "src": "1795:19:14", + "src": "1795:19:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 3453, + "id": 3558, "nodeType": "ExpressionStatement", - "src": "1795:19:14" + "src": "1795:19:17" } ] }, "documentation": "@dev Leaves the contract without owner. It will not be possible to call\n`onlyOwner` functions anymore. Can only be called by the current owner.\n * NOTE: Renouncing ownership will leave the contract without an owner,\nthereby removing any functionality that is only available to the owner.", - "id": 3455, + "id": 3560, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, - "id": 3439, + "id": 3544, "modifierName": { "argumentTypes": null, - "id": 3438, + "id": 3543, "name": "onlyOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3425, - "src": "1720:9:14", + "referencedDeclaration": 3530, + "src": "1720:9:17", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1720:9:14" + "src": "1720:9:17" } ], "name": "renounceOwnership", "nodeType": "FunctionDefinition", "parameters": { - "id": 3437, + "id": 3542, "nodeType": "ParameterList", "parameters": [], - "src": "1710:2:14" + "src": "1710:2:17" }, "returnParameters": { - "id": 3440, + "id": 3545, "nodeType": "ParameterList", "parameters": [], - "src": "1730:0:14" + "src": "1730:0:17" }, - "scope": 3492, - "src": "1684:137:14", + "scope": 3597, + "src": "1684:137:17", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 3466, + "id": 3571, "nodeType": "Block", - "src": "2032:45:14", + "src": "2032:45:17", "statements": [ { "expression": { @@ -2596,12 +2590,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3463, + "id": 3568, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3457, - "src": "2061:8:14", + "referencedDeclaration": 3562, + "src": "2061:8:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2615,18 +2609,18 @@ "typeString": "address" } ], - "id": 3462, + "id": 3567, "name": "_transferOwnership", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3491, - "src": "2042:18:14", + "referencedDeclaration": 3596, + "src": "2042:18:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 3464, + "id": 3569, "isConstant": false, "isLValue": false, "isPure": false, @@ -2634,56 +2628,56 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2042:28:14", + "src": "2042:28:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3465, + "id": 3570, "nodeType": "ExpressionStatement", - "src": "2042:28:14" + "src": "2042:28:17" } ] }, "documentation": "@dev Transfers ownership of the contract to a new account (`newOwner`).\nCan only be called by the current owner.", - "id": 3467, + "id": 3572, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, - "id": 3460, + "id": 3565, "modifierName": { "argumentTypes": null, - "id": 3459, + "id": 3564, "name": "onlyOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3425, - "src": "2022:9:14", + "referencedDeclaration": 3530, + "src": "2022:9:17", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2022:9:14" + "src": "2022:9:17" } ], "name": "transferOwnership", "nodeType": "FunctionDefinition", "parameters": { - "id": 3458, + "id": 3563, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3457, + "id": 3562, "name": "newOwner", "nodeType": "VariableDeclaration", - "scope": 3467, - "src": "1997:16:14", + "scope": 3572, + "src": "1997:16:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2691,10 +2685,10 @@ "typeString": "address" }, "typeName": { - "id": 3456, + "id": 3561, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1997:7:14", + "src": "1997:7:17", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2705,25 +2699,25 @@ "visibility": "internal" } ], - "src": "1996:18:14" + "src": "1996:18:17" }, "returnParameters": { - "id": 3461, + "id": 3566, "nodeType": "ParameterList", "parameters": [], - "src": "2032:0:14" + "src": "2032:0:17" }, - "scope": 3492, - "src": "1970:107:14", + "scope": 3597, + "src": "1970:107:17", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 3490, + "id": 3595, "nodeType": "Block", - "src": "2233:170:14", + "src": "2233:170:17", "statements": [ { "expression": { @@ -2735,19 +2729,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 3477, + "id": 3582, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3473, + "id": 3578, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3469, - "src": "2251:8:14", + "referencedDeclaration": 3574, + "src": "2251:8:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2761,14 +2755,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 3475, + "id": 3580, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2271:1:14", + "src": "2271:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2784,20 +2778,20 @@ "typeString": "int_const 0" } ], - "id": 3474, + "id": 3579, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2263:7:14", + "src": "2263:7:17", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 3476, + "id": 3581, "isConstant": false, "isLValue": false, "isPure": true, @@ -2805,13 +2799,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2263:10:14", + "src": "2263:10:17", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "src": "2251:22:14", + "src": "2251:22:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2820,14 +2814,14 @@ { "argumentTypes": null, "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373", - "id": 3478, + "id": 3583, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2275:40:14", + "src": "2275:40:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe", @@ -2847,21 +2841,21 @@ "typeString": "literal_string \"Ownable: new owner is the zero address\"" } ], - "id": 3472, + "id": 3577, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "2243:7:14", + "referencedDeclaration": 4176, + "src": "2243:7:17", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 3479, + "id": 3584, "isConstant": false, "isLValue": false, "isPure": false, @@ -2869,15 +2863,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2243:73:14", + "src": "2243:73:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3480, + "id": 3585, "nodeType": "ExpressionStatement", - "src": "2243:73:14" + "src": "2243:73:17" }, { "eventCall": { @@ -2885,12 +2879,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3482, + "id": 3587, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3381, - "src": "2352:6:14", + "referencedDeclaration": 3486, + "src": "2352:6:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2898,12 +2892,12 @@ }, { "argumentTypes": null, - "id": 3483, + "id": 3588, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3469, - "src": "2360:8:14", + "referencedDeclaration": 3574, + "src": "2360:8:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2921,18 +2915,18 @@ "typeString": "address" } ], - "id": 3481, + "id": 3586, "name": "OwnershipTransferred", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3387, - "src": "2331:20:14", + "referencedDeclaration": 3492, + "src": "2331:20:17", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address)" } }, - "id": 3484, + "id": 3589, "isConstant": false, "isLValue": false, "isPure": false, @@ -2940,32 +2934,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2331:38:14", + "src": "2331:38:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3485, + "id": 3590, "nodeType": "EmitStatement", - "src": "2326:43:14" + "src": "2326:43:17" }, { "expression": { "argumentTypes": null, - "id": 3488, + "id": 3593, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 3486, + "id": 3591, "name": "_owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3381, - "src": "2379:6:14", + "referencedDeclaration": 3486, + "src": "2379:6:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2975,47 +2969,47 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 3487, + "id": 3592, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3469, - "src": "2388:8:14", + "referencedDeclaration": 3574, + "src": "2388:8:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2379:17:14", + "src": "2379:17:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 3489, + "id": 3594, "nodeType": "ExpressionStatement", - "src": "2379:17:14" + "src": "2379:17:17" } ] }, "documentation": "@dev Transfers ownership of the contract to a new account (`newOwner`).", - "id": 3491, + "id": 3596, "implemented": true, "kind": "function", "modifiers": [], "name": "_transferOwnership", "nodeType": "FunctionDefinition", "parameters": { - "id": 3470, + "id": 3575, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3469, + "id": 3574, "name": "newOwner", "nodeType": "VariableDeclaration", - "scope": 3491, - "src": "2206:16:14", + "scope": 3596, + "src": "2206:16:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3023,10 +3017,10 @@ "typeString": "address" }, "typeName": { - "id": 3468, + "id": 3573, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2206:7:14", + "src": "2206:7:17", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3037,34 +3031,34 @@ "visibility": "internal" } ], - "src": "2205:18:14" + "src": "2205:18:17" }, "returnParameters": { - "id": 3471, + "id": 3576, "nodeType": "ParameterList", "parameters": [], - "src": "2233:0:14" + "src": "2233:0:17" }, - "scope": 3492, - "src": "2178:225:14", + "scope": 3597, + "src": "2178:225:17", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 3493, - "src": "415:1990:14" + "scope": 3598, + "src": "415:1990:17" } ], - "src": "0:2406:14" + "src": "0:2406:17" }, "compiler": { "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" + "version": "0.5.2+commit.1df8f40c.Emscripten.clang" }, "networks": {}, - "schemaVersion": "3.0.23", - "updatedAt": "2020-02-16T12:52:29.817Z", + "schemaVersion": "3.0.1", + "updatedAt": "2020-02-16T14:54:14.905Z", "devdoc": { "details": "Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. * This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.", "methods": { diff --git a/truffle/build/contracts/Power.json b/truffle/build/contracts/Power.json index f3773e5..2f31911 100644 --- a/truffle/build/contracts/Power.json +++ b/truffle/build/contracts/Power.json @@ -1,19 +1,12 @@ { "contractName": "Power", "abi": [ - { - "inputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, { "constant": true, "inputs": [], "name": "version", "outputs": [ { - "internalType": "string", "name": "", "type": "string" } @@ -21,17 +14,22 @@ "payable": false, "stateMutability": "view", "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"constant\":true,\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"https://github.com/bancorprotocol/contracts * Modified from the original by Slava Balasanov & Tarrence van As * Split Power.sol out from BancorFormula.sol https://github.com/bancorprotocol/contracts/blob/c9adc95e82fdfb3a0ada102514beb8ae00147f5d/solidity/contracts/converter/BancorFormula.sol * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0. \\\"\",\"methods\":{},\"title\":\"Power function by Bancor\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/math/Power.sol\":\"Power\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":1500},\"remappings\":[]},\"sources\":{\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/math/Power.sol\":{\"keccak256\":\"0x5a8b28886de5cede9e5be377a3649c13ac595eb996691ead28d0e8affc8bfe46\",\"urls\":[\"bzz-raw://bc28265d289fe49e251a7d12f399603ac3250cead55fed84107ff99aaeb46a32\",\"dweb:/ipfs/QmRxG1RDnaWwTzVpX12F4ECWyDZ1Kvonvm7hzJjVbWGuXE\"]}},\"version\":1}", - "bytecode": "0x60c06040526003608081905262302e3360e81b60a09081526100249160009190610760565b5034801561003157600080fd5b506001641c35fedd1560601b036021556001646c3390ecc9605e1b036022556001640cf801476160611b0360235560016431bdb23e1d605f1b0360245560016502fb1d8fe083605b1b0360255560016505b771955b37605a1b036026556001650af67a93bb5160591b0360275560016515060c256cb360581b036028556001651428a2f98d7360581b036029556001654d515663970960561b03602a55600165944620b0e70f60551b03602b55600166011c592761c66760541b03602c5560016602214d10d014eb60531b03602d55600166020ade36b7dbef60531b03602e5560016603eab73b3bbfe360521b03602f556001660782ee3593f6d760511b036030556001661ccf4b44bb4821604f1b0360315560016606e7f88ad8a77760511b0360325560016669f3d1c921891d604d1b03603355600166cb2ff529eb71e5604c1b03603455600166c2d415c3db974b604c1b0360355560016702eb40f9f620fda7604a1b0360365560016705990681d961a1eb60491b03603755600167055e12902701414760491b0360385560016714962dee9dc9764160471b0360395560016704ef57b9b560fab560491b03603a5560016712ed7b32a58f552b60471b03603b556001679131271922eaa60760441b03603c556001678b380f3558668c4760441b03603d556001680215f77c045fbe885760421b03603e556001600160831b03603f556001670f577eded5773a1160471b036040556001680eb5ec597592befbf5603f1b036041556001681c35fedd14b861eb05603e1b036042556001683619c87664579bc94b603d1b0360435560016867c00a3b07ffc01fd7603c1b03604455600168c6f6c8f8739773a7a5603b1b03604555600168bec763f8209b7a72b1603b1b0360465560016902dbb8caad9b7097b91b60391b03604755600169057b3d49dda84556d6f760381b03604855600169054183095b2c8ececf3160381b036049556001690a14517cc6b9457111ef60371b03604a5560016913545598e5c23276ccf160361b03604b556001692511882c39c3adea96ff60351b03604c55600169471649d87199aa99075760341b03604d557004429a21a029d4c1457cfbffffffffffff604e55700415bc6d6fb7dd71af2cb3ffffffffffff604f557003eab73b3bbfe282243ce1ffffffffffff6050557003c1771ac9fb6b4c18e229ffffffffffff605155700399e96897690418f785257fffffffffff605255700373fc456c53bb779bf0ea9fffffffffff60535570034f9e8e490c48e67e6ab8bfffffffffff60545570032cbfd4a7adc790560b3337ffffffffff60555570030b50570f6e5d2acca94613ffffffffff6056557002eb40f9f620fda6b56c2861ffffffffff6057557002cc8340ecb0d0f520a6af58ffffffffff6058557002af09481380a0a35cf1ba02ffffffffff605955700292c5bdd3b92ec810287b1b3fffffffff605a55700277abdcdab07d5a77ac6d6b9fffffffff605b5570025daf6654b1eaa55fd64df5efffffffff605c55700244c49c648baa98192dce88b7ffffffff605d5570022ce03cd5619a311b2471268bffffffff605e55700215f77c045fbe885654a44a0fffffffff605f556001600160811b036060557001eaefdbdaaee7421fc4d3ede5ffffffff6061557001d6bd8b2eb257df7e8ca57b09bfffffff6062557001c35fedd14b861eb0443f7f133fffffff6063557001b0ce43b322bcde4a56e8ada5afffffff60645570019f0028ec1fff007f5a195a39dfffffff60655570018ded91f0e72ee74f49b15ba527ffffff60665570017d8ec7f04136f4e5615fd41a63ffffff60675570016ddc6556cdb84bdc8d12d22e6fffffff60685570015ecf52776a1155b5bd8395814f7fffff60695570015060c256cb23b3b3cc3754cf40ffffff606a557001428a2f98d728ae223ddab715be3fffff606b5570013545598e5c23276ccf0ede68034fffff606c557001288c4161ce1d6f54b7f61081194fffff606d5570011c592761c666aa641d5a01a40f17ffff606e55700110a688680a7530515f3e6e6cfdcdffff606f557001056f1b5bedf75c6bcb2ce8aed428ffff6070556ffaadceceeff8a0890f3875f008277fff6071556ff05dc6b27edad306388a600f6ba0bfff6072556fe67a5a25da41063de1495d5b18cdbfff6073556fdcff115b14eedde6fc3aa5353f2e4fff6074556fd3e7a3924312399f9aae2e0f868f8fff6075556fcb2ff529eb71e41582cccd5a1ee26fff6076556fc2d415c3db974ab32a51840c0b67edff6077556fbad03e7d883f69ad5b0a186184e06bff6078556fb320d03b2c343d4829abd6075f0cc5ff6079556fabc25204e02828d73c6e80bcdb1a95bf607a556fa4b16f74ee4bb2040a1ec6c15fbbf2df607b556f9deaf736ac1f569deb1b5ae3f36c130f607c556f976bd9952c7aa957f5937d790ef65037607d556f9131271922eaa6064b73a22d0bd4f2bf607e556f8b380f3558668c46c91c49a2f8e967b9607f556f857ddf0117efa215952912839f6473e66080556107fb565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106107a157805160ff19168380011785556107ce565b828001600101855582156107ce579182015b828111156107ce5782518255916020019190600101906107b3565b506107da9291506107de565b5090565b6107f891905b808211156107da57600081556001016107e4565b90565b6101708061080a6000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806354fd4d5014610030575b600080fd5b6100386100ad565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561007257818101518382015260200161005a565b50505050905090810190601f16801561009f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156101335780601f1061010857610100808354040283529160200191610133565b820191906000526020600020905b81548152906001019060200180831161011657829003601f168201915b50505050508156fea265627a7a72315820f559ed11be0f3d04bfc0ecbf62d174efca9e8054ccea595e8760fde9803b909164736f6c63430005100032", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c806354fd4d5014610030575b600080fd5b6100386100ad565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561007257818101518382015260200161005a565b50505050905090810190601f16801561009f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156101335780601f1061010857610100808354040283529160200191610133565b820191906000526020600020905b81548152906001019060200180831161011657829003601f168201915b50505050508156fea265627a7a72315820f559ed11be0f3d04bfc0ecbf62d174efca9e8054ccea595e8760fde9803b909164736f6c63430005100032", - "sourceMap": "562:29:5:-;541:24623;562:29;;541:24623;562:29;;;-1:-1:-1;;;562:29:5;;;;;;-1:-1:-1;;562:29:5;;:::i;:::-;;1980:8238;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;;;;;;4049:15:5;:54;-1:-1:-1;;;;;4113:15:5;:54;-1:-1:-1;;;;;4177:15:5;:54;-1:-1:-1;;;;;4241:15:5;:54;-1:-1:-1;;;;;4305:15:5;:54;-1:-1:-1;;;;;4369:15:5;:54;-1:-1:-1;;;;;4433:15:5;:54;-1:-1:-1;;;;;4497:15:5;:54;-1:-1:-1;;;;;4561:15:5;:54;-1:-1:-1;;;;;4625:15:5;:54;-1:-1:-1;;;;;4689:15:5;:54;-1:-1:-1;;;;;4753:15:5;:54;-1:-1:-1;;;;;4817:15:5;:54;-1:-1:-1;;;;;4881:15:5;:54;-1:-1:-1;;;;;4945:15:5;:54;-1:-1:-1;;;;;5009:15:5;:54;-1:-1:-1;;;;;5073:15:5;:54;-1:-1:-1;;;;;5137:15:5;:54;-1:-1:-1;;;;;5201:15:5;:54;-1:-1:-1;;;;;5265:15:5;:54;-1:-1:-1;;;;;5329:15:5;:54;-1:-1:-1;;;;;5393:15:5;:54;-1:-1:-1;;;;;5457:15:5;:54;-1:-1:-1;;;;;5521:15:5;:54;-1:-1:-1;;;;;5585:15:5;:54;-1:-1:-1;;;;;5649:15:5;:54;-1:-1:-1;;;;;5713:15:5;:54;-1:-1:-1;;;;;5777:15:5;:54;-1:-1:-1;;;;;5841:15:5;:54;-1:-1:-1;;;;;5905:15:5;:54;-1:-1:-1;;;;;5969:15:5;:54;-1:-1:-1;;;;;6033:15:5;:54;-1:-1:-1;;;;;6097:15:5;:54;-1:-1:-1;;;;;6161:15:5;:54;-1:-1:-1;;;;;6225:15:5;:54;-1:-1:-1;;;;;6289:15:5;:54;-1:-1:-1;;;;;6353:15:5;:54;-1:-1:-1;;;;;6417:15:5;:54;-1:-1:-1;;;;;6481:15:5;:54;-1:-1:-1;;;;;6545:15:5;:54;-1:-1:-1;;;;;6609:15:5;:54;-1:-1:-1;;;;;6673:15:5;:54;-1:-1:-1;;;;;6737:15:5;:54;-1:-1:-1;;;;;6801:15:5;:54;-1:-1:-1;;;;;6865:15:5;:54;6947:36;6929:15;:54;7011:36;6993:15;:54;7075:36;7057:15;:54;7139:36;7121:15;:54;7203:36;7185:15;:54;7267:36;7249:15;:54;7331:36;7313:15;:54;7395:36;7377:15;:54;7459:36;7441:15;:54;7523:36;7505:15;:54;7587:36;7569:15;:54;7651:36;7633:15;:54;7715:36;7697:15;:54;7779:36;7761:15;:54;7843:36;7825:15;:54;7907:36;7889:15;:54;7971:36;7953:15;:54;8035:36;8017:15;:54;-1:-1:-1;;;;;8081:15:5;:54;8163:36;8145:15;:54;8227:36;8209:15;:54;8291:36;8273:15;:54;8355:36;8337:15;:54;8420:36;8401:16;:55;8485:36;8466:16;:55;8550:36;8531:16;:55;8615:36;8596:16;:55;8680:36;8661:16;:55;8745:36;8726:16;:55;8810:36;8791:16;:55;8875:36;8856:16;:55;8940:36;8921:16;:55;9005:36;8986:16;:55;9070:36;9051:16;:55;9135:36;9116:16;:55;9200:36;9181:16;:55;9265:36;9246:16;:55;9330:36;9311:16;:55;9395:36;9376:16;:55;9460:36;9441:16;:55;9525:36;9506:16;:55;9590:36;9571:16;:55;9655:36;9636:16;:55;9720:36;9701:16;:55;9785:36;9766:16;:55;9850:36;9831:16;:55;9915:36;9896:16;:55;9980:36;9961:16;:55;10045:36;10026:16;:55;10110:36;10091:16;:55;10175:36;10156:16;:55;541:24623;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;541:24623:5;;;-1:-1:-1;541:24623:5;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "bytecode": "0x60c0604052600360808190527f302e33000000000000000000000000000000000000000000000000000000000060a090815261003e91600091906107f3565b5034801561004b57600080fd5b506001606060020a641c35fedd1502036021556001605e60020a646c3390ecc902036022556001606160020a640cf801476102036023556001605f60020a6431bdb23e1d02036024556001605b60020a6502fb1d8fe08302036025556001605a60020a6505b771955b3702036026556001605960020a650af67a93bb5102036027556001605860020a6515060c256cb302036028556001605860020a651428a2f98d7302036029556001605660020a654d51566397090203602a556001605560020a65944620b0e70f0203602b557011c592761c666fffffffffffffffffffff602c5570110a688680a757ffffffffffffffffffff602d55701056f1b5bedf77ffffffffffffffffffff602e55700faadceceeff8bffffffffffffffffffff602f55700f05dc6b27edadffffffffffffffffffff603055700e67a5a25da4107fffffffffffffffffff603155700dcff115b14eedffffffffffffffffffff603255700d3e7a392431239fffffffffffffffffff603355700cb2ff529eb71e4fffffffffffffffffff603455700c2d415c3db974afffffffffffffffffff603555700bad03e7d883f69bffffffffffffffffff603655700b320d03b2c343d5ffffffffffffffffff603755700abc25204e02828dffffffffffffffffff603855700a4b16f74ee4bb207fffffffffffffffff6039557009deaf736ac1f569ffffffffffffffffff603a55700976bd9952c7aa957fffffffffffffffff603b557009131271922eaa606fffffffffffffffff603c557008b380f3558668c46fffffffffffffffff603d55700857ddf0117efa215bffffffffffffffff603e556001608360020a03603f557007abbf6f6abb9d087fffffffffffffffff60405570075af62cbac95f7dfa7fffffffffffffff60415570070d7fb7452e187ac13fffffffffffffff6042557006c3390ecc8af379295fffffffffffffff60435570067c00a3b07ffc01fd6fffffffffffffff604455700637b647c39cbb9d3d27ffffffffffffff6045557005f63b1fc104dbd39587ffffffffffffff6046557005b771955b36e12f7235ffffffffffffff60475570057b3d49dda84556d6f6ffffffffffffff60485570054183095b2c8ececf30ffffffffffffff60495570050a28be635ca2b888f77fffffffffffff604a557004d5156639708c9db33c3fffffffffffff604b557004a23105873875bd52dfdfffffffffffff604c55700471649d87199aa990756fffffffffffff604d557004429a21a029d4c1457cfbffffffffffff604e55700415bc6d6fb7dd71af2cb3ffffffffffff604f557003eab73b3bbfe282243ce1ffffffffffff6050557003c1771ac9fb6b4c18e229ffffffffffff605155700399e96897690418f785257fffffffffff605255700373fc456c53bb779bf0ea9fffffffffff60535570034f9e8e490c48e67e6ab8bfffffffffff60545570032cbfd4a7adc790560b3337ffffffffff60555570030b50570f6e5d2acca94613ffffffffff6056557002eb40f9f620fda6b56c2861ffffffffff6057557002cc8340ecb0d0f520a6af58ffffffffff6058557002af09481380a0a35cf1ba02ffffffffff605955700292c5bdd3b92ec810287b1b3fffffffff605a55700277abdcdab07d5a77ac6d6b9fffffffff605b5570025daf6654b1eaa55fd64df5efffffffff605c55700244c49c648baa98192dce88b7ffffffff605d5570022ce03cd5619a311b2471268bffffffff605e55700215f77c045fbe885654a44a0fffffffff605f556001608160020a036060557001eaefdbdaaee7421fc4d3ede5ffffffff6061557001d6bd8b2eb257df7e8ca57b09bfffffff6062557001c35fedd14b861eb0443f7f133fffffff6063557001b0ce43b322bcde4a56e8ada5afffffff60645570019f0028ec1fff007f5a195a39dfffffff60655570018ded91f0e72ee74f49b15ba527ffffff60665570017d8ec7f04136f4e5615fd41a63ffffff60675570016ddc6556cdb84bdc8d12d22e6fffffff60685570015ecf52776a1155b5bd8395814f7fffff60695570015060c256cb23b3b3cc3754cf40ffffff606a557001428a2f98d728ae223ddab715be3fffff606b5570013545598e5c23276ccf0ede68034fffff606c557001288c4161ce1d6f54b7f61081194fffff606d5570011c592761c666aa641d5a01a40f17ffff606e55700110a688680a7530515f3e6e6cfdcdffff606f557001056f1b5bedf75c6bcb2ce8aed428ffff6070556ffaadceceeff8a0890f3875f008277fff6071556ff05dc6b27edad306388a600f6ba0bfff6072556fe67a5a25da41063de1495d5b18cdbfff6073556fdcff115b14eedde6fc3aa5353f2e4fff6074556fd3e7a3924312399f9aae2e0f868f8fff6075556fcb2ff529eb71e41582cccd5a1ee26fff6076556fc2d415c3db974ab32a51840c0b67edff6077556fbad03e7d883f69ad5b0a186184e06bff6078556fb320d03b2c343d4829abd6075f0cc5ff6079556fabc25204e02828d73c6e80bcdb1a95bf607a556fa4b16f74ee4bb2040a1ec6c15fbbf2df607b556f9deaf736ac1f569deb1b5ae3f36c130f607c556f976bd9952c7aa957f5937d790ef65037607d556f9131271922eaa6064b73a22d0bd4f2bf607e556f8b380f3558668c46c91c49a2f8e967b9607f556f857ddf0117efa215952912839f6473e660805561088e565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061083457805160ff1916838001178555610861565b82800160010185558215610861579182015b82811115610861578251825591602001919060010190610846565b5061086d929150610871565b5090565b61088b91905b8082111561086d5760008155600101610877565b90565b6101838061089d6000396000f3fe608060405234801561001057600080fd5b5060043610610047577c0100000000000000000000000000000000000000000000000000000000600035046354fd4d50811461004c575b600080fd5b6100546100c9565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561008e578181015183820152602001610076565b50505050905090810190601f1680156100bb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561014f5780601f106101245761010080835404028352916020019161014f565b820191906000526020600020905b81548152906001019060200180831161013257829003601f168201915b50505050508156fea165627a7a7230582074f599d7e5073b9546148e6f98cfc50ae790d4c9c930216d77533b8f20269dac0029", + "deployedBytecode": "0x608060405234801561001057600080fd5b5060043610610047577c0100000000000000000000000000000000000000000000000000000000600035046354fd4d50811461004c575b600080fd5b6100546100c9565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561008e578181015183820152602001610076565b50505050905090810190601f1680156100bb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561014f5780601f106101245761010080835404028352916020019161014f565b820191906000526020600020905b81548152906001019060200180831161013257829003601f168201915b50505050508156fea165627a7a7230582074f599d7e5073b9546148e6f98cfc50ae790d4c9c930216d77533b8f20269dac0029", + "sourceMap": "562:29:5:-;541:24623;562:29;;541:24623;562:29;;;;;;;;;;-1:-1:-1;;562:29:5;;:::i;:::-;;1980:8238;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;;;;;;;;4049:15:5;:54;-1:-1:-1;;;;;;;4113:15:5;:54;-1:-1:-1;;;;;;;4177:15:5;:54;-1:-1:-1;;;;;;;4241:15:5;:54;-1:-1:-1;;;;;;;4305:15:5;:54;-1:-1:-1;;;;;;;4369:15:5;:54;-1:-1:-1;;;;;;;4433:15:5;:54;-1:-1:-1;;;;;;;4497:15:5;:54;-1:-1:-1;;;;;;;4561:15:5;:54;-1:-1:-1;;;;;;;4625:15:5;:54;-1:-1:-1;;;;;;;4689:15:5;:54;4771:36;4753:15;:54;4835:36;4817:15;:54;4899:36;4881:15;:54;4963:36;4945:15;:54;5027:36;5009:15;:54;5091:36;5073:15;:54;5155:36;5137:15;:54;5219:36;5201:15;:54;5283:36;5265:15;:54;5347:36;5329:15;:54;5411:36;5393:15;:54;5475:36;5457:15;:54;5539:36;5521:15;:54;5603:36;5585:15;:54;5667:36;5649:15;:54;5731:36;5713:15;:54;5795:36;5777:15;:54;5859:36;5841:15;:54;5923:36;5905:15;:54;-1:-1:-1;;;;;5969:15:5;:54;6051:36;6033:15;:54;6115:36;6097:15;:54;6179:36;6161:15;:54;6243:36;6225:15;:54;6307:36;6289:15;:54;6371:36;6353:15;:54;6435:36;6417:15;:54;6499:36;6481:15;:54;6563:36;6545:15;:54;6627:36;6609:15;:54;6691:36;6673:15;:54;6755:36;6737:15;:54;6819:36;6801:15;:54;6883:36;6865:15;:54;6947:36;6929:15;:54;7011:36;6993:15;:54;7075:36;7057:15;:54;7139:36;7121:15;:54;7203:36;7185:15;:54;7267:36;7249:15;:54;7331:36;7313:15;:54;7395:36;7377:15;:54;7459:36;7441:15;:54;7523:36;7505:15;:54;7587:36;7569:15;:54;7651:36;7633:15;:54;7715:36;7697:15;:54;7779:36;7761:15;:54;7843:36;7825:15;:54;7907:36;7889:15;:54;7971:36;7953:15;:54;8035:36;8017:15;:54;-1:-1:-1;;;;;8081:15:5;:54;8163:36;8145:15;:54;8227:36;8209:15;:54;8291:36;8273:15;:54;8355:36;8337:15;:54;8420:36;8401:16;:55;8485:36;8466:16;:55;8550:36;8531:16;:55;8615:36;8596:16;:55;8680:36;8661:16;:55;8745:36;8726:16;:55;8810:36;8791:16;:55;8875:36;8856:16;:55;8940:36;8921:16;:55;9005:36;8986:16;:55;9070:36;9051:16;:55;9135:36;9116:16;:55;9200:36;9181:16;:55;9265:36;9246:16;:55;9330:36;9311:16;:55;9395:36;9376:16;:55;9460:36;9441:16;:55;9525:36;9506:16;:55;9590:36;9571:16;:55;9655:36;9636:16;:55;9720:36;9701:16;:55;9785:36;9766:16;:55;9850:36;9831:16;:55;9915:36;9896:16;:55;9980:36;9961:16;:55;10045:36;10026:16;:55;10110:36;10091:16;:55;10175:36;10156:16;:55;541:24623;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;541:24623:5;;;-1:-1:-1;541:24623:5;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", "deployedSourceMap": "541:24623:5:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;541:24623:5;;;;;;;;;;;;;;;;;;;562:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;562:29:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;562:29:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", "source": "pragma solidity ^0.5.2;\n\n\n /**\n * @title Power function by Bancor\n * @dev https://github.com/bancorprotocol/contracts\n *\n * Modified from the original by Slava Balasanov & Tarrence van As\n *\n * Split Power.sol out from BancorFormula.sol\n * https://github.com/bancorprotocol/contracts/blob/c9adc95e82fdfb3a0ada102514beb8ae00147f5d/solidity/contracts/converter/BancorFormula.sol\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements;\n * and to You under the Apache License, Version 2.0. \"\n */\ncontract Power {\n string public version = \"0.3\";\n\n uint256 private constant ONE = 1;\n uint32 private constant MAX_WEIGHT = 1000000;\n uint8 private constant MIN_PRECISION = 32;\n uint8 private constant MAX_PRECISION = 127;\n\n /**\n The values below depend on MAX_PRECISION. If you choose to change it:\n Apply the same change in file 'PrintIntScalingFactors.py', run it and paste the results below.\n */\n uint256 private constant FIXED_1 = 0x080000000000000000000000000000000;\n uint256 private constant FIXED_2 = 0x100000000000000000000000000000000;\n uint256 private constant MAX_NUM = 0x200000000000000000000000000000000;\n\n /**\n Auto-generated via 'PrintLn2ScalingFactors.py'\n */\n uint256 private constant LN2_NUMERATOR = 0x3f80fe03f80fe03f80fe03f80fe03f8;\n uint256 private constant LN2_DENOMINATOR = 0x5b9de1d10bf4103d647b0955897ba80;\n\n /**\n Auto-generated via 'PrintFunctionOptimalLog.py' and 'PrintFunctionOptimalExp.py'\n */\n uint256 private constant OPT_LOG_MAX_VAL = 0x15bf0a8b1457695355fb8ac404e7a79e3;\n uint256 private constant OPT_EXP_MAX_VAL = 0x800000000000000000000000000000000;\n\n /**\n The values below depend on MIN_PRECISION and MAX_PRECISION. If you choose to change either one of them:\n Apply the same change in file 'PrintFunctionBancorFormula.py', run it and paste the results below.\n */\n uint256[128] private maxExpArray;\n\n constructor() public {\n // maxExpArray[0] = 0x6bffffffffffffffffffffffffffffffff;\n // maxExpArray[1] = 0x67ffffffffffffffffffffffffffffffff;\n // maxExpArray[2] = 0x637fffffffffffffffffffffffffffffff;\n // maxExpArray[3] = 0x5f6fffffffffffffffffffffffffffffff;\n // maxExpArray[4] = 0x5b77ffffffffffffffffffffffffffffff;\n // maxExpArray[5] = 0x57b3ffffffffffffffffffffffffffffff;\n // maxExpArray[6] = 0x5419ffffffffffffffffffffffffffffff;\n // maxExpArray[7] = 0x50a2ffffffffffffffffffffffffffffff;\n // maxExpArray[8] = 0x4d517fffffffffffffffffffffffffffff;\n // maxExpArray[9] = 0x4a233fffffffffffffffffffffffffffff;\n // maxExpArray[10] = 0x47165fffffffffffffffffffffffffffff;\n // maxExpArray[11] = 0x4429afffffffffffffffffffffffffffff;\n // maxExpArray[12] = 0x415bc7ffffffffffffffffffffffffffff;\n // maxExpArray[13] = 0x3eab73ffffffffffffffffffffffffffff;\n // maxExpArray[14] = 0x3c1771ffffffffffffffffffffffffffff;\n // maxExpArray[15] = 0x399e96ffffffffffffffffffffffffffff;\n // maxExpArray[16] = 0x373fc47fffffffffffffffffffffffffff;\n // maxExpArray[17] = 0x34f9e8ffffffffffffffffffffffffffff;\n // maxExpArray[18] = 0x32cbfd5fffffffffffffffffffffffffff;\n // maxExpArray[19] = 0x30b5057fffffffffffffffffffffffffff;\n // maxExpArray[20] = 0x2eb40f9fffffffffffffffffffffffffff;\n // maxExpArray[21] = 0x2cc8340fffffffffffffffffffffffffff;\n // maxExpArray[22] = 0x2af09481ffffffffffffffffffffffffff;\n // maxExpArray[23] = 0x292c5bddffffffffffffffffffffffffff;\n // maxExpArray[24] = 0x277abdcdffffffffffffffffffffffffff;\n // maxExpArray[25] = 0x25daf6657fffffffffffffffffffffffff;\n // maxExpArray[26] = 0x244c49c65fffffffffffffffffffffffff;\n // maxExpArray[27] = 0x22ce03cd5fffffffffffffffffffffffff;\n // maxExpArray[28] = 0x215f77c047ffffffffffffffffffffffff;\n // maxExpArray[29] = 0x1fffffffffffffffffffffffffffffffff;\n // maxExpArray[30] = 0x1eaefdbdabffffffffffffffffffffffff;\n // maxExpArray[31] = 0x1d6bd8b2ebffffffffffffffffffffffff;\n maxExpArray[32] = 0x1c35fedd14ffffffffffffffffffffffff;\n maxExpArray[33] = 0x1b0ce43b323fffffffffffffffffffffff;\n maxExpArray[34] = 0x19f0028ec1ffffffffffffffffffffffff;\n maxExpArray[35] = 0x18ded91f0e7fffffffffffffffffffffff;\n maxExpArray[36] = 0x17d8ec7f0417ffffffffffffffffffffff;\n maxExpArray[37] = 0x16ddc6556cdbffffffffffffffffffffff;\n maxExpArray[38] = 0x15ecf52776a1ffffffffffffffffffffff;\n maxExpArray[39] = 0x15060c256cb2ffffffffffffffffffffff;\n maxExpArray[40] = 0x1428a2f98d72ffffffffffffffffffffff;\n maxExpArray[41] = 0x13545598e5c23fffffffffffffffffffff;\n maxExpArray[42] = 0x1288c4161ce1dfffffffffffffffffffff;\n maxExpArray[43] = 0x11c592761c666fffffffffffffffffffff;\n maxExpArray[44] = 0x110a688680a757ffffffffffffffffffff;\n maxExpArray[45] = 0x1056f1b5bedf77ffffffffffffffffffff;\n maxExpArray[46] = 0x0faadceceeff8bffffffffffffffffffff;\n maxExpArray[47] = 0x0f05dc6b27edadffffffffffffffffffff;\n maxExpArray[48] = 0x0e67a5a25da4107fffffffffffffffffff;\n maxExpArray[49] = 0x0dcff115b14eedffffffffffffffffffff;\n maxExpArray[50] = 0x0d3e7a392431239fffffffffffffffffff;\n maxExpArray[51] = 0x0cb2ff529eb71e4fffffffffffffffffff;\n maxExpArray[52] = 0x0c2d415c3db974afffffffffffffffffff;\n maxExpArray[53] = 0x0bad03e7d883f69bffffffffffffffffff;\n maxExpArray[54] = 0x0b320d03b2c343d5ffffffffffffffffff;\n maxExpArray[55] = 0x0abc25204e02828dffffffffffffffffff;\n maxExpArray[56] = 0x0a4b16f74ee4bb207fffffffffffffffff;\n maxExpArray[57] = 0x09deaf736ac1f569ffffffffffffffffff;\n maxExpArray[58] = 0x0976bd9952c7aa957fffffffffffffffff;\n maxExpArray[59] = 0x09131271922eaa606fffffffffffffffff;\n maxExpArray[60] = 0x08b380f3558668c46fffffffffffffffff;\n maxExpArray[61] = 0x0857ddf0117efa215bffffffffffffffff;\n maxExpArray[62] = 0x07ffffffffffffffffffffffffffffffff;\n maxExpArray[63] = 0x07abbf6f6abb9d087fffffffffffffffff;\n maxExpArray[64] = 0x075af62cbac95f7dfa7fffffffffffffff;\n maxExpArray[65] = 0x070d7fb7452e187ac13fffffffffffffff;\n maxExpArray[66] = 0x06c3390ecc8af379295fffffffffffffff;\n maxExpArray[67] = 0x067c00a3b07ffc01fd6fffffffffffffff;\n maxExpArray[68] = 0x0637b647c39cbb9d3d27ffffffffffffff;\n maxExpArray[69] = 0x05f63b1fc104dbd39587ffffffffffffff;\n maxExpArray[70] = 0x05b771955b36e12f7235ffffffffffffff;\n maxExpArray[71] = 0x057b3d49dda84556d6f6ffffffffffffff;\n maxExpArray[72] = 0x054183095b2c8ececf30ffffffffffffff;\n maxExpArray[73] = 0x050a28be635ca2b888f77fffffffffffff;\n maxExpArray[74] = 0x04d5156639708c9db33c3fffffffffffff;\n maxExpArray[75] = 0x04a23105873875bd52dfdfffffffffffff;\n maxExpArray[76] = 0x0471649d87199aa990756fffffffffffff;\n maxExpArray[77] = 0x04429a21a029d4c1457cfbffffffffffff;\n maxExpArray[78] = 0x0415bc6d6fb7dd71af2cb3ffffffffffff;\n maxExpArray[79] = 0x03eab73b3bbfe282243ce1ffffffffffff;\n maxExpArray[80] = 0x03c1771ac9fb6b4c18e229ffffffffffff;\n maxExpArray[81] = 0x0399e96897690418f785257fffffffffff;\n maxExpArray[82] = 0x0373fc456c53bb779bf0ea9fffffffffff;\n maxExpArray[83] = 0x034f9e8e490c48e67e6ab8bfffffffffff;\n maxExpArray[84] = 0x032cbfd4a7adc790560b3337ffffffffff;\n maxExpArray[85] = 0x030b50570f6e5d2acca94613ffffffffff;\n maxExpArray[86] = 0x02eb40f9f620fda6b56c2861ffffffffff;\n maxExpArray[87] = 0x02cc8340ecb0d0f520a6af58ffffffffff;\n maxExpArray[88] = 0x02af09481380a0a35cf1ba02ffffffffff;\n maxExpArray[89] = 0x0292c5bdd3b92ec810287b1b3fffffffff;\n maxExpArray[90] = 0x0277abdcdab07d5a77ac6d6b9fffffffff;\n maxExpArray[91] = 0x025daf6654b1eaa55fd64df5efffffffff;\n maxExpArray[92] = 0x0244c49c648baa98192dce88b7ffffffff;\n maxExpArray[93] = 0x022ce03cd5619a311b2471268bffffffff;\n maxExpArray[94] = 0x0215f77c045fbe885654a44a0fffffffff;\n maxExpArray[95] = 0x01ffffffffffffffffffffffffffffffff;\n maxExpArray[96] = 0x01eaefdbdaaee7421fc4d3ede5ffffffff;\n maxExpArray[97] = 0x01d6bd8b2eb257df7e8ca57b09bfffffff;\n maxExpArray[98] = 0x01c35fedd14b861eb0443f7f133fffffff;\n maxExpArray[99] = 0x01b0ce43b322bcde4a56e8ada5afffffff;\n maxExpArray[100] = 0x019f0028ec1fff007f5a195a39dfffffff;\n maxExpArray[101] = 0x018ded91f0e72ee74f49b15ba527ffffff;\n maxExpArray[102] = 0x017d8ec7f04136f4e5615fd41a63ffffff;\n maxExpArray[103] = 0x016ddc6556cdb84bdc8d12d22e6fffffff;\n maxExpArray[104] = 0x015ecf52776a1155b5bd8395814f7fffff;\n maxExpArray[105] = 0x015060c256cb23b3b3cc3754cf40ffffff;\n maxExpArray[106] = 0x01428a2f98d728ae223ddab715be3fffff;\n maxExpArray[107] = 0x013545598e5c23276ccf0ede68034fffff;\n maxExpArray[108] = 0x01288c4161ce1d6f54b7f61081194fffff;\n maxExpArray[109] = 0x011c592761c666aa641d5a01a40f17ffff;\n maxExpArray[110] = 0x0110a688680a7530515f3e6e6cfdcdffff;\n maxExpArray[111] = 0x01056f1b5bedf75c6bcb2ce8aed428ffff;\n maxExpArray[112] = 0x00faadceceeff8a0890f3875f008277fff;\n maxExpArray[113] = 0x00f05dc6b27edad306388a600f6ba0bfff;\n maxExpArray[114] = 0x00e67a5a25da41063de1495d5b18cdbfff;\n maxExpArray[115] = 0x00dcff115b14eedde6fc3aa5353f2e4fff;\n maxExpArray[116] = 0x00d3e7a3924312399f9aae2e0f868f8fff;\n maxExpArray[117] = 0x00cb2ff529eb71e41582cccd5a1ee26fff;\n maxExpArray[118] = 0x00c2d415c3db974ab32a51840c0b67edff;\n maxExpArray[119] = 0x00bad03e7d883f69ad5b0a186184e06bff;\n maxExpArray[120] = 0x00b320d03b2c343d4829abd6075f0cc5ff;\n maxExpArray[121] = 0x00abc25204e02828d73c6e80bcdb1a95bf;\n maxExpArray[122] = 0x00a4b16f74ee4bb2040a1ec6c15fbbf2df;\n maxExpArray[123] = 0x009deaf736ac1f569deb1b5ae3f36c130f;\n maxExpArray[124] = 0x00976bd9952c7aa957f5937d790ef65037;\n maxExpArray[125] = 0x009131271922eaa6064b73a22d0bd4f2bf;\n maxExpArray[126] = 0x008b380f3558668c46c91c49a2f8e967b9;\n maxExpArray[127] = 0x00857ddf0117efa215952912839f6473e6;\n }\n\n /**\n General Description:\n Determine a value of precision.\n Calculate an integer approximation of (_baseN / _baseD) ^ (_expN / _expD) * 2 ^ precision.\n Return the result along with the precision used.\n Detailed Description:\n Instead of calculating \"base ^ exp\", we calculate \"e ^ (log(base) * exp)\".\n The value of \"log(base)\" is represented with an integer slightly smaller than \"log(base) * 2 ^ precision\".\n The larger \"precision\" is, the more accurately this value represents the real value.\n However, the larger \"precision\" is, the more bits are required in order to store this value.\n And the exponentiation function, which takes \"x\" and calculates \"e ^ x\", is limited to a maximum exponent (maximum value of \"x\").\n This maximum exponent depends on the \"precision\" used, and it is given by \"maxExpArray[precision] >> (MAX_PRECISION - precision)\".\n Hence we need to determine the highest precision which can be used for the given input, before calling the exponentiation function.\n This allows us to compute \"base ^ exp\" with maximum accuracy and without exceeding 256 bits in any of the intermediate computations.\n This functions assumes that \"_expN < 2 ^ 256 / log(MAX_NUM - 1)\", otherwise the multiplication should be replaced with a \"safeMul\".\n */\n function power(\n uint256 _baseN,\n uint256 _baseD,\n uint32 _expN,\n uint32 _expD\n ) internal view returns (uint256, uint8)\n {\n require(_baseN < MAX_NUM, \"baseN exceeds max value.\");\n require(_baseN >= _baseD, \"Bases < 1 are not supported.\");\n\n uint256 baseLog;\n uint256 base = _baseN * FIXED_1 / _baseD;\n if (base < OPT_LOG_MAX_VAL) {\n baseLog = optimalLog(base);\n } else {\n baseLog = generalLog(base);\n }\n\n uint256 baseLogTimesExp = baseLog * _expN / _expD;\n if (baseLogTimesExp < OPT_EXP_MAX_VAL) {\n return (optimalExp(baseLogTimesExp), MAX_PRECISION);\n } else {\n uint8 precision = findPositionInMaxExpArray(baseLogTimesExp);\n return (generalExp(baseLogTimesExp >> (MAX_PRECISION - precision), precision), precision);\n }\n }\n\n /**\n Compute log(x / FIXED_1) * FIXED_1.\n This functions assumes that \"x >= FIXED_1\", because the output would be negative otherwise.\n */\n function generalLog(uint256 _x) internal pure returns (uint256) {\n uint256 res = 0;\n uint256 x = _x;\n\n // If x >= 2, then we compute the integer part of log2(x), which is larger than 0.\n if (x >= FIXED_2) {\n uint8 count = floorLog2(x / FIXED_1);\n x >>= count; // now x < 2\n res = count * FIXED_1;\n }\n\n // If x > 1, then we compute the fraction part of log2(x), which is larger than 0.\n if (x > FIXED_1) {\n for (uint8 i = MAX_PRECISION; i > 0; --i) {\n x = (x * x) / FIXED_1; // now 1 < x < 4\n if (x >= FIXED_2) {\n x >>= 1; // now 1 < x < 2\n res += ONE << (i - 1);\n }\n }\n }\n\n return res * LN2_NUMERATOR / LN2_DENOMINATOR;\n }\n\n /**\n Compute the largest integer smaller than or equal to the binary logarithm of the input.\n */\n function floorLog2(uint256 _n) internal pure returns (uint8) {\n uint8 res = 0;\n uint256 n = _n;\n\n if (n < 256) {\n // At most 8 iterations\n while (n > 1) {\n n >>= 1;\n res += 1;\n }\n } else {\n // Exactly 8 iterations\n for (uint8 s = 128; s > 0; s >>= 1) {\n if (n >= (ONE << s)) {\n n >>= s;\n res |= s;\n }\n }\n }\n\n return res;\n }\n\n /**\n The global \"maxExpArray\" is sorted in descending order, and therefore the following statements are equivalent:\n - This function finds the position of [the smallest value in \"maxExpArray\" larger than or equal to \"x\"]\n - This function finds the highest position of [a value in \"maxExpArray\" larger than or equal to \"x\"]\n */\n function findPositionInMaxExpArray(uint256 _x)\n internal view returns (uint8)\n {\n uint8 lo = MIN_PRECISION;\n uint8 hi = MAX_PRECISION;\n\n while (lo + 1 < hi) {\n uint8 mid = (lo + hi) / 2;\n if (maxExpArray[mid] >= _x)\n lo = mid;\n else\n hi = mid;\n }\n\n if (maxExpArray[hi] >= _x)\n return hi;\n if (maxExpArray[lo] >= _x)\n return lo;\n\n assert(false);\n return 0;\n }\n\n /* solhint-disable */\n /**\n This function can be auto-generated by the script 'PrintFunctionGeneralExp.py'.\n It approximates \"e ^ x\" via maclaurin summation: \"(x^0)/0! + (x^1)/1! + ... + (x^n)/n!\".\n It returns \"e ^ (x / 2 ^ precision) * 2 ^ precision\", that is, the result is upshifted for accuracy.\n The global \"maxExpArray\" maps each \"precision\" to \"((maximumExponent + 1) << (MAX_PRECISION - precision)) - 1\".\n The maximum permitted value for \"x\" is therefore given by \"maxExpArray[precision] >> (MAX_PRECISION - precision)\".\n */\n function generalExp(uint256 _x, uint8 _precision) internal pure returns (uint256) {\n uint256 xi = _x;\n uint256 res = 0;\n\n xi = (xi * _x) >> _precision; res += xi * 0x3442c4e6074a82f1797f72ac0000000; // add x^02 * (33! / 02!)\n xi = (xi * _x) >> _precision; res += xi * 0x116b96f757c380fb287fd0e40000000; // add x^03 * (33! / 03!)\n xi = (xi * _x) >> _precision; res += xi * 0x045ae5bdd5f0e03eca1ff4390000000; // add x^04 * (33! / 04!)\n xi = (xi * _x) >> _precision; res += xi * 0x00defabf91302cd95b9ffda50000000; // add x^05 * (33! / 05!)\n xi = (xi * _x) >> _precision; res += xi * 0x002529ca9832b22439efff9b8000000; // add x^06 * (33! / 06!)\n xi = (xi * _x) >> _precision; res += xi * 0x00054f1cf12bd04e516b6da88000000; // add x^07 * (33! / 07!)\n xi = (xi * _x) >> _precision; res += xi * 0x0000a9e39e257a09ca2d6db51000000; // add x^08 * (33! / 08!)\n xi = (xi * _x) >> _precision; res += xi * 0x000012e066e7b839fa050c309000000; // add x^09 * (33! / 09!)\n xi = (xi * _x) >> _precision; res += xi * 0x000001e33d7d926c329a1ad1a800000; // add x^10 * (33! / 10!)\n xi = (xi * _x) >> _precision; res += xi * 0x0000002bee513bdb4a6b19b5f800000; // add x^11 * (33! / 11!)\n xi = (xi * _x) >> _precision; res += xi * 0x00000003a9316fa79b88eccf2a00000; // add x^12 * (33! / 12!)\n xi = (xi * _x) >> _precision; res += xi * 0x0000000048177ebe1fa812375200000; // add x^13 * (33! / 13!)\n xi = (xi * _x) >> _precision; res += xi * 0x0000000005263fe90242dcbacf00000; // add x^14 * (33! / 14!)\n xi = (xi * _x) >> _precision; res += xi * 0x000000000057e22099c030d94100000; // add x^15 * (33! / 15!)\n xi = (xi * _x) >> _precision; res += xi * 0x0000000000057e22099c030d9410000; // add x^16 * (33! / 16!)\n xi = (xi * _x) >> _precision; res += xi * 0x00000000000052b6b54569976310000; // add x^17 * (33! / 17!)\n xi = (xi * _x) >> _precision; res += xi * 0x00000000000004985f67696bf748000; // add x^18 * (33! / 18!)\n xi = (xi * _x) >> _precision; res += xi * 0x000000000000003dea12ea99e498000; // add x^19 * (33! / 19!)\n xi = (xi * _x) >> _precision; res += xi * 0x00000000000000031880f2214b6e000; // add x^20 * (33! / 20!)\n xi = (xi * _x) >> _precision; res += xi * 0x000000000000000025bcff56eb36000; // add x^21 * (33! / 21!)\n xi = (xi * _x) >> _precision; res += xi * 0x000000000000000001b722e10ab1000; // add x^22 * (33! / 22!)\n xi = (xi * _x) >> _precision; res += xi * 0x0000000000000000001317c70077000; // add x^23 * (33! / 23!)\n xi = (xi * _x) >> _precision; res += xi * 0x00000000000000000000cba84aafa00; // add x^24 * (33! / 24!)\n xi = (xi * _x) >> _precision; res += xi * 0x00000000000000000000082573a0a00; // add x^25 * (33! / 25!)\n xi = (xi * _x) >> _precision; res += xi * 0x00000000000000000000005035ad900; // add x^26 * (33! / 26!)\n xi = (xi * _x) >> _precision; res += xi * 0x000000000000000000000002f881b00; // add x^27 * (33! / 27!)\n xi = (xi * _x) >> _precision; res += xi * 0x0000000000000000000000001b29340; // add x^28 * (33! / 28!)\n xi = (xi * _x) >> _precision; res += xi * 0x00000000000000000000000000efc40; // add x^29 * (33! / 29!)\n xi = (xi * _x) >> _precision; res += xi * 0x0000000000000000000000000007fe0; // add x^30 * (33! / 30!)\n xi = (xi * _x) >> _precision; res += xi * 0x0000000000000000000000000000420; // add x^31 * (33! / 31!)\n xi = (xi * _x) >> _precision; res += xi * 0x0000000000000000000000000000021; // add x^32 * (33! / 32!)\n xi = (xi * _x) >> _precision; res += xi * 0x0000000000000000000000000000001; // add x^33 * (33! / 33!)\n\n return res / 0x688589cc0e9505e2f2fee5580000000 + _x + (ONE << _precision); // divide by 33! and then add x^1 / 1! + x^0 / 0!\n }\n\n /**\n Return log(x / FIXED_1) * FIXED_1\n Input range: FIXED_1 <= x <= LOG_EXP_MAX_VAL - 1\n Auto-generated via 'PrintFunctionOptimalLog.py'\n */\n function optimalLog(uint256 x) internal pure returns (uint256) {\n uint256 res = 0;\n\n uint256 y;\n uint256 z;\n uint256 w;\n\n if (x >= 0xd3094c70f034de4b96ff7d5b6f99fcd8) {res += 0x40000000000000000000000000000000; x = x * FIXED_1 / 0xd3094c70f034de4b96ff7d5b6f99fcd8;}\n if (x >= 0xa45af1e1f40c333b3de1db4dd55f29a7) {res += 0x20000000000000000000000000000000; x = x * FIXED_1 / 0xa45af1e1f40c333b3de1db4dd55f29a7;}\n if (x >= 0x910b022db7ae67ce76b441c27035c6a1) {res += 0x10000000000000000000000000000000; x = x * FIXED_1 / 0x910b022db7ae67ce76b441c27035c6a1;}\n if (x >= 0x88415abbe9a76bead8d00cf112e4d4a8) {res += 0x08000000000000000000000000000000; x = x * FIXED_1 / 0x88415abbe9a76bead8d00cf112e4d4a8;}\n if (x >= 0x84102b00893f64c705e841d5d4064bd3) {res += 0x04000000000000000000000000000000; x = x * FIXED_1 / 0x84102b00893f64c705e841d5d4064bd3;}\n if (x >= 0x8204055aaef1c8bd5c3259f4822735a2) {res += 0x02000000000000000000000000000000; x = x * FIXED_1 / 0x8204055aaef1c8bd5c3259f4822735a2;}\n if (x >= 0x810100ab00222d861931c15e39b44e99) {res += 0x01000000000000000000000000000000; x = x * FIXED_1 / 0x810100ab00222d861931c15e39b44e99;}\n if (x >= 0x808040155aabbbe9451521693554f733) {res += 0x00800000000000000000000000000000; x = x * FIXED_1 / 0x808040155aabbbe9451521693554f733;}\n\n z = y = x - FIXED_1;\n w = y * y / FIXED_1;\n res += z * (0x100000000000000000000000000000000 - y) / 0x100000000000000000000000000000000; z = z * w / FIXED_1;\n res += z * (0x0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa - y) / 0x200000000000000000000000000000000; z = z * w / FIXED_1;\n res += z * (0x099999999999999999999999999999999 - y) / 0x300000000000000000000000000000000; z = z * w / FIXED_1;\n res += z * (0x092492492492492492492492492492492 - y) / 0x400000000000000000000000000000000; z = z * w / FIXED_1;\n res += z * (0x08e38e38e38e38e38e38e38e38e38e38e - y) / 0x500000000000000000000000000000000; z = z * w / FIXED_1;\n res += z * (0x08ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8b - y) / 0x600000000000000000000000000000000; z = z * w / FIXED_1;\n res += z * (0x089d89d89d89d89d89d89d89d89d89d89 - y) / 0x700000000000000000000000000000000; z = z * w / FIXED_1;\n res += z * (0x088888888888888888888888888888888 - y) / 0x800000000000000000000000000000000;\n\n return res;\n }\n\n /**\n Return e ^ (x / FIXED_1) * FIXED_1\n Input range: 0 <= x <= OPT_EXP_MAX_VAL - 1\n Auto-generated via 'PrintFunctionOptimalExp.py'\n */\n function optimalExp(uint256 x) internal pure returns (uint256) {\n uint256 res = 0;\n\n uint256 y;\n uint256 z;\n\n z = y = x % 0x10000000000000000000000000000000;\n z = z * y / FIXED_1; res += z * 0x10e1b3be415a0000; // add y^02 * (20! / 02!)\n z = z * y / FIXED_1; res += z * 0x05a0913f6b1e0000; // add y^03 * (20! / 03!)\n z = z * y / FIXED_1; res += z * 0x0168244fdac78000; // add y^04 * (20! / 04!)\n z = z * y / FIXED_1; res += z * 0x004807432bc18000; // add y^05 * (20! / 05!)\n z = z * y / FIXED_1; res += z * 0x000c0135dca04000; // add y^06 * (20! / 06!)\n z = z * y / FIXED_1; res += z * 0x0001b707b1cdc000; // add y^07 * (20! / 07!)\n z = z * y / FIXED_1; res += z * 0x000036e0f639b800; // add y^08 * (20! / 08!)\n z = z * y / FIXED_1; res += z * 0x00000618fee9f800; // add y^09 * (20! / 09!)\n z = z * y / FIXED_1; res += z * 0x0000009c197dcc00; // add y^10 * (20! / 10!)\n z = z * y / FIXED_1; res += z * 0x0000000e30dce400; // add y^11 * (20! / 11!)\n z = z * y / FIXED_1; res += z * 0x000000012ebd1300; // add y^12 * (20! / 12!)\n z = z * y / FIXED_1; res += z * 0x0000000017499f00; // add y^13 * (20! / 13!)\n z = z * y / FIXED_1; res += z * 0x0000000001a9d480; // add y^14 * (20! / 14!)\n z = z * y / FIXED_1; res += z * 0x00000000001c6380; // add y^15 * (20! / 15!)\n z = z * y / FIXED_1; res += z * 0x000000000001c638; // add y^16 * (20! / 16!)\n z = z * y / FIXED_1; res += z * 0x0000000000001ab8; // add y^17 * (20! / 17!)\n z = z * y / FIXED_1; res += z * 0x000000000000017c; // add y^18 * (20! / 18!)\n z = z * y / FIXED_1; res += z * 0x0000000000000014; // add y^19 * (20! / 19!)\n z = z * y / FIXED_1; res += z * 0x0000000000000001; // add y^20 * (20! / 20!)\n res = res / 0x21c3677c82b40000 + y + FIXED_1; // divide by 20! and then add y^1 / 1! + y^0 / 0!\n\n if ((x & 0x010000000000000000000000000000000) != 0) res = res * 0x1c3d6a24ed82218787d624d3e5eba95f9 / 0x18ebef9eac820ae8682b9793ac6d1e776;\n if ((x & 0x020000000000000000000000000000000) != 0) res = res * 0x18ebef9eac820ae8682b9793ac6d1e778 / 0x1368b2fc6f9609fe7aceb46aa619baed4;\n if ((x & 0x040000000000000000000000000000000) != 0) res = res * 0x1368b2fc6f9609fe7aceb46aa619baed5 / 0x0bc5ab1b16779be3575bd8f0520a9f21f;\n if ((x & 0x080000000000000000000000000000000) != 0) res = res * 0x0bc5ab1b16779be3575bd8f0520a9f21e / 0x0454aaa8efe072e7f6ddbab84b40a55c9;\n if ((x & 0x100000000000000000000000000000000) != 0) res = res * 0x0454aaa8efe072e7f6ddbab84b40a55c5 / 0x00960aadc109e7a3bf4578099615711ea;\n if ((x & 0x200000000000000000000000000000000) != 0) res = res * 0x00960aadc109e7a3bf4578099615711d7 / 0x0002bf84208204f5977f9a8cf01fdce3d;\n if ((x & 0x400000000000000000000000000000000) != 0) res = res * 0x0002bf84208204f5977f9a8cf01fdc307 / 0x0000003c6ab775dd0b95b4cbee7e65d11;\n\n return res;\n }\n /* solhint-enable */\n}\n", - "sourcePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/math/Power.sol", + "sourcePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/math/Power.sol", "ast": { - "absolutePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/math/Power.sol", + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/math/Power.sol", "exportedSymbols": { "Power": [ 2569 @@ -611,15 +609,15 @@ "id": 429, "isConstant": false, "isLValue": false, - "isPure": true, + "isPure": false, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1949:3:5", "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_rational_128_by_1", - "typeString": "int_const 128" + "typeIdentifier": null, + "typeString": null }, "value": "128" }, @@ -8723,10 +8721,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, + "referencedDeclaration": 4176, "src": "11770:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -8834,10 +8832,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, + "referencedDeclaration": 4176, "src": "11833:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -12636,7 +12634,7 @@ "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4056, + "referencedDeclaration": 4161, "src": "14965:6:5", "typeDescriptions": { "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", @@ -30089,7 +30087,7 @@ "src": "0:25165:5" }, "legacyAST": { - "absolutePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/math/Power.sol", + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/math/Power.sol", "exportedSymbols": { "Power": [ 2569 @@ -30669,15 +30667,15 @@ "id": 429, "isConstant": false, "isLValue": false, - "isPure": true, + "isPure": false, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1949:3:5", "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_rational_128_by_1", - "typeString": "int_const 128" + "typeIdentifier": null, + "typeString": null }, "value": "128" }, @@ -38781,10 +38779,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, + "referencedDeclaration": 4176, "src": "11770:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -38892,10 +38890,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, + "referencedDeclaration": 4176, "src": "11833:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -42694,7 +42692,7 @@ "name": "assert", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4056, + "referencedDeclaration": 4161, "src": "14965:6:5", "typeDescriptions": { "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$", @@ -60148,11 +60146,11 @@ }, "compiler": { "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" + "version": "0.5.2+commit.1df8f40c.Emscripten.clang" }, "networks": {}, - "schemaVersion": "3.0.23", - "updatedAt": "2020-02-16T12:52:29.763Z", + "schemaVersion": "3.0.1", + "updatedAt": "2020-02-16T14:54:14.892Z", "devdoc": { "details": "https://github.com/bancorprotocol/contracts * Modified from the original by Slava Balasanov & Tarrence van As * Split Power.sol out from BancorFormula.sol https://github.com/bancorprotocol/contracts/blob/c9adc95e82fdfb3a0ada102514beb8ae00147f5d/solidity/contracts/converter/BancorFormula.sol * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0. \"", "methods": {}, diff --git a/truffle/build/contracts/Roles.json b/truffle/build/contracts/Roles.json index ef35139..1afd5d8 100644 --- a/truffle/build/contracts/Roles.json +++ b/truffle/build/contracts/Roles.json @@ -1,25 +1,24 @@ { "contractName": "Roles", "abi": [], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for managing addresses assigned to a Role.\",\"methods\":{},\"title\":\"Roles\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"openzeppelin-solidity/contracts/access/Roles.sol\":\"Roles\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":1500},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xb002c378d7b82a101bd659c341518953ca0919d342c0a400196982c0e7e7bcdb\",\"urls\":[\"bzz-raw://00a788c4631466c220b385bdd100c571d24b2deccd657615cfbcef6cadf669a4\",\"dweb:/ipfs/QmTEwDbjJNxmMNCDMqtuou3dyM8Wtp8Q9NFvn7SAVM7Jf3\"]}},\"version\":1}", - "bytecode": "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820e3ca4a121560392c9098349c68b5cbf2520bb51e31cb4ea758440f8dd8e7faf464736f6c63430005100032", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820e3ca4a121560392c9098349c68b5cbf2520bb51e31cb4ea758440f8dd8e7faf464736f6c63430005100032", - "sourceMap": "108:873:11:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24", - "deployedSourceMap": "108:873:11:-;;;;;;;;", + "bytecode": "0x604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820c89222f28583f7e824cafca911fe1a0d2e894399510a5828cfdf2b60a2b7c2680029", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820c89222f28583f7e824cafca911fe1a0d2e894399510a5828cfdf2b60a2b7c2680029", + "sourceMap": "108:873:14:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24", + "deployedSourceMap": "108:873:14:-;;;;;;;;", "source": "pragma solidity ^0.5.0;\n\n/**\n * @title Roles\n * @dev Library for managing addresses assigned to a Role.\n */\nlibrary Roles {\n struct Role {\n mapping (address => bool) bearer;\n }\n\n /**\n * @dev Give an account access to this role.\n */\n function add(Role storage role, address account) internal {\n require(!has(role, account), \"Roles: account already has role\");\n role.bearer[account] = true;\n }\n\n /**\n * @dev Remove an account's access to this role.\n */\n function remove(Role storage role, address account) internal {\n require(has(role, account), \"Roles: account does not have role\");\n role.bearer[account] = false;\n }\n\n /**\n * @dev Check if an account has this role.\n * @return bool\n */\n function has(Role storage role, address account) internal view returns (bool) {\n require(account != address(0), \"Roles: account is the zero address\");\n return role.bearer[account];\n }\n}\n", "sourcePath": "openzeppelin-solidity/contracts/access/Roles.sol", "ast": { "absolutePath": "openzeppelin-solidity/contracts/access/Roles.sol", "exportedSymbols": { "Roles": [ - 3080 + 3185 ] }, - "id": 3081, + "id": 3186, "nodeType": "SourceUnit", "nodes": [ { - "id": 3001, + "id": 3106, "literals": [ "solidity", "^", @@ -27,7 +26,7 @@ ".0" ], "nodeType": "PragmaDirective", - "src": "0:23:11" + "src": "0:23:14" }, { "baseContracts": [], @@ -35,24 +34,24 @@ "contractKind": "library", "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", "fullyImplemented": true, - "id": 3080, + "id": 3185, "linearizedBaseContracts": [ - 3080 + 3185 ], "name": "Roles", "nodeType": "ContractDefinition", "nodes": [ { "canonicalName": "Roles.Role", - "id": 3006, + "id": 3111, "members": [ { "constant": false, - "id": 3005, + "id": 3110, "name": "bearer", "nodeType": "VariableDeclaration", - "scope": 3006, - "src": "150:32:11", + "scope": 3111, + "src": "150:32:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -60,28 +59,28 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 3004, + "id": 3109, "keyType": { - "id": 3002, + "id": 3107, "name": "address", "nodeType": "ElementaryTypeName", - "src": "159:7:11", + "src": "159:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "150:25:11", + "src": "150:25:14", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { - "id": 3003, + "id": 3108, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "170:4:11", + "src": "170:4:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -94,15 +93,15 @@ ], "name": "Role", "nodeType": "StructDefinition", - "scope": 3080, - "src": "128:61:11", + "scope": 3185, + "src": "128:61:14", "visibility": "public" }, { "body": { - "id": 3030, + "id": 3135, "nodeType": "Block", - "src": "318:117:11", + "src": "318:117:14", "statements": [ { "expression": { @@ -110,7 +109,7 @@ "arguments": [ { "argumentTypes": null, - "id": 3018, + "id": 3123, "isConstant": false, "isLValue": false, "isPure": false, @@ -118,31 +117,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "336:19:11", + "src": "336:19:14", "subExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 3015, + "id": 3120, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3008, - "src": "341:4:11", + "referencedDeclaration": 3113, + "src": "341:4:14", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$3006_storage_ptr", + "typeIdentifier": "t_struct$_Role_$3111_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, { "argumentTypes": null, - "id": 3016, + "id": 3121, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3010, - "src": "347:7:11", + "referencedDeclaration": 3115, + "src": "347:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -152,7 +151,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Role_$3006_storage_ptr", + "typeIdentifier": "t_struct$_Role_$3111_storage_ptr", "typeString": "struct Roles.Role storage pointer" }, { @@ -160,18 +159,18 @@ "typeString": "address" } ], - "id": 3014, + "id": 3119, "name": "has", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3079, - "src": "337:3:11", + "referencedDeclaration": 3184, + "src": "337:3:14", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$3006_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$3111_storage_ptr_$_t_address_$returns$_t_bool_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 3017, + "id": 3122, "isConstant": false, "isLValue": false, "isPure": false, @@ -179,7 +178,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "337:18:11", + "src": "337:18:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -193,14 +192,14 @@ { "argumentTypes": null, "hexValue": "526f6c65733a206163636f756e7420616c72656164792068617320726f6c65", - "id": 3019, + "id": 3124, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "357:33:11", + "src": "357:33:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_0f76c3a3e97a37fcdff532c2741c10933ebf2b769d5475388e30ae4f7155f13a", @@ -220,21 +219,21 @@ "typeString": "literal_string \"Roles: account already has role\"" } ], - "id": 3013, + "id": 3118, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "328:7:11", + "referencedDeclaration": 4176, + "src": "328:7:14", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 3020, + "id": 3125, "isConstant": false, "isLValue": false, "isPure": false, @@ -242,20 +241,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "328:63:11", + "src": "328:63:14", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3021, + "id": 3126, "nodeType": "ExpressionStatement", - "src": "328:63:11" + "src": "328:63:14" }, { "expression": { "argumentTypes": null, - "id": 3028, + "id": 3133, "isConstant": false, "isLValue": false, "isPure": false, @@ -266,40 +265,40 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 3022, + "id": 3127, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3008, - "src": "401:4:11", + "referencedDeclaration": 3113, + "src": "401:4:14", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$3006_storage_ptr", + "typeIdentifier": "t_struct$_Role_$3111_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 3025, + "id": 3130, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 3005, - "src": "401:11:11", + "referencedDeclaration": 3110, + "src": "401:11:14", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 3026, + "id": 3131, "indexExpression": { "argumentTypes": null, - "id": 3024, + "id": 3129, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3010, - "src": "413:7:11", + "referencedDeclaration": 3115, + "src": "413:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -310,7 +309,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "401:20:11", + "src": "401:20:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -321,14 +320,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 3027, + "id": 3132, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "424:4:11", + "src": "424:4:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -336,51 +335,51 @@ }, "value": "true" }, - "src": "401:27:11", + "src": "401:27:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 3029, + "id": 3134, "nodeType": "ExpressionStatement", - "src": "401:27:11" + "src": "401:27:14" } ] }, "documentation": "@dev Give an account access to this role.", - "id": 3031, + "id": 3136, "implemented": true, "kind": "function", "modifiers": [], "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 3011, + "id": 3116, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3008, + "id": 3113, "name": "role", "nodeType": "VariableDeclaration", - "scope": 3031, - "src": "273:17:11", + "scope": 3136, + "src": "273:17:14", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$3006_storage_ptr", + "typeIdentifier": "t_struct$_Role_$3111_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 3007, + "id": 3112, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3006, - "src": "273:4:11", + "referencedDeclaration": 3111, + "src": "273:4:14", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$3006_storage_ptr", + "typeIdentifier": "t_struct$_Role_$3111_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -389,11 +388,11 @@ }, { "constant": false, - "id": 3010, + "id": 3115, "name": "account", "nodeType": "VariableDeclaration", - "scope": 3031, - "src": "292:15:11", + "scope": 3136, + "src": "292:15:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -401,10 +400,10 @@ "typeString": "address" }, "typeName": { - "id": 3009, + "id": 3114, "name": "address", "nodeType": "ElementaryTypeName", - "src": "292:7:11", + "src": "292:7:14", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -415,25 +414,25 @@ "visibility": "internal" } ], - "src": "272:36:11" + "src": "272:36:14" }, "returnParameters": { - "id": 3012, + "id": 3117, "nodeType": "ParameterList", "parameters": [], - "src": "318:0:11" + "src": "318:0:14" }, - "scope": 3080, - "src": "260:175:11", + "scope": 3185, + "src": "260:175:14", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 3054, + "id": 3159, "nodeType": "Block", - "src": "571:119:11", + "src": "571:119:14", "statements": [ { "expression": { @@ -444,25 +443,25 @@ "arguments": [ { "argumentTypes": null, - "id": 3040, + "id": 3145, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3033, - "src": "593:4:11", + "referencedDeclaration": 3138, + "src": "593:4:14", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$3006_storage_ptr", + "typeIdentifier": "t_struct$_Role_$3111_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, { "argumentTypes": null, - "id": 3041, + "id": 3146, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3035, - "src": "599:7:11", + "referencedDeclaration": 3140, + "src": "599:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -472,7 +471,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Role_$3006_storage_ptr", + "typeIdentifier": "t_struct$_Role_$3111_storage_ptr", "typeString": "struct Roles.Role storage pointer" }, { @@ -480,18 +479,18 @@ "typeString": "address" } ], - "id": 3039, + "id": 3144, "name": "has", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3079, - "src": "589:3:11", + "referencedDeclaration": 3184, + "src": "589:3:14", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$3006_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$3111_storage_ptr_$_t_address_$returns$_t_bool_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 3042, + "id": 3147, "isConstant": false, "isLValue": false, "isPure": false, @@ -499,7 +498,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "589:18:11", + "src": "589:18:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -508,14 +507,14 @@ { "argumentTypes": null, "hexValue": "526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65", - "id": 3043, + "id": 3148, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "609:35:11", + "src": "609:35:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_7bd893145ac435f339bb7c288622d270324b7033b011f693aca172f5cbc3c257", @@ -535,21 +534,21 @@ "typeString": "literal_string \"Roles: account does not have role\"" } ], - "id": 3038, + "id": 3143, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "581:7:11", + "referencedDeclaration": 4176, + "src": "581:7:14", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 3044, + "id": 3149, "isConstant": false, "isLValue": false, "isPure": false, @@ -557,20 +556,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "581:64:11", + "src": "581:64:14", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3045, + "id": 3150, "nodeType": "ExpressionStatement", - "src": "581:64:11" + "src": "581:64:14" }, { "expression": { "argumentTypes": null, - "id": 3052, + "id": 3157, "isConstant": false, "isLValue": false, "isPure": false, @@ -581,40 +580,40 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 3046, + "id": 3151, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3033, - "src": "655:4:11", + "referencedDeclaration": 3138, + "src": "655:4:14", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$3006_storage_ptr", + "typeIdentifier": "t_struct$_Role_$3111_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 3049, + "id": 3154, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 3005, - "src": "655:11:11", + "referencedDeclaration": 3110, + "src": "655:11:14", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 3050, + "id": 3155, "indexExpression": { "argumentTypes": null, - "id": 3048, + "id": 3153, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3035, - "src": "667:7:11", + "referencedDeclaration": 3140, + "src": "667:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -625,7 +624,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "655:20:11", + "src": "655:20:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -636,14 +635,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 3051, + "id": 3156, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "678:5:11", + "src": "678:5:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -651,51 +650,51 @@ }, "value": "false" }, - "src": "655:28:11", + "src": "655:28:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 3053, + "id": 3158, "nodeType": "ExpressionStatement", - "src": "655:28:11" + "src": "655:28:14" } ] }, "documentation": "@dev Remove an account's access to this role.", - "id": 3055, + "id": 3160, "implemented": true, "kind": "function", "modifiers": [], "name": "remove", "nodeType": "FunctionDefinition", "parameters": { - "id": 3036, + "id": 3141, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3033, + "id": 3138, "name": "role", "nodeType": "VariableDeclaration", - "scope": 3055, - "src": "526:17:11", + "scope": 3160, + "src": "526:17:14", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$3006_storage_ptr", + "typeIdentifier": "t_struct$_Role_$3111_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 3032, + "id": 3137, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3006, - "src": "526:4:11", + "referencedDeclaration": 3111, + "src": "526:4:14", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$3006_storage_ptr", + "typeIdentifier": "t_struct$_Role_$3111_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -704,11 +703,11 @@ }, { "constant": false, - "id": 3035, + "id": 3140, "name": "account", "nodeType": "VariableDeclaration", - "scope": 3055, - "src": "545:15:11", + "scope": 3160, + "src": "545:15:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -716,10 +715,10 @@ "typeString": "address" }, "typeName": { - "id": 3034, + "id": 3139, "name": "address", "nodeType": "ElementaryTypeName", - "src": "545:7:11", + "src": "545:7:14", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -730,25 +729,25 @@ "visibility": "internal" } ], - "src": "525:36:11" + "src": "525:36:14" }, "returnParameters": { - "id": 3037, + "id": 3142, "nodeType": "ParameterList", "parameters": [], - "src": "571:0:11" + "src": "571:0:14" }, - "scope": 3080, - "src": "510:180:11", + "scope": 3185, + "src": "510:180:14", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 3078, + "id": 3183, "nodeType": "Block", - "src": "857:122:11", + "src": "857:122:14", "statements": [ { "expression": { @@ -760,19 +759,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 3069, + "id": 3174, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3065, + "id": 3170, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3059, - "src": "875:7:11", + "referencedDeclaration": 3164, + "src": "875:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -786,14 +785,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 3067, + "id": 3172, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "894:1:11", + "src": "894:1:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -809,20 +808,20 @@ "typeString": "int_const 0" } ], - "id": 3066, + "id": 3171, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "886:7:11", + "src": "886:7:14", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 3068, + "id": 3173, "isConstant": false, "isLValue": false, "isPure": true, @@ -830,13 +829,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "886:10:11", + "src": "886:10:14", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "src": "875:21:11", + "src": "875:21:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -845,14 +844,14 @@ { "argumentTypes": null, "hexValue": "526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373", - "id": 3070, + "id": 3175, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "898:36:11", + "src": "898:36:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_9d214fa89563f4e6456a3929327e54500ea1cde2c0ba9fb2035ec106190d682f", @@ -872,21 +871,21 @@ "typeString": "literal_string \"Roles: account is the zero address\"" } ], - "id": 3064, + "id": 3169, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "867:7:11", + "referencedDeclaration": 4176, + "src": "867:7:14", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 3071, + "id": 3176, "isConstant": false, "isLValue": false, "isPure": false, @@ -894,15 +893,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "867:68:11", + "src": "867:68:14", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3072, + "id": 3177, "nodeType": "ExpressionStatement", - "src": "867:68:11" + "src": "867:68:14" }, { "expression": { @@ -911,40 +910,40 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 3073, + "id": 3178, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3057, - "src": "952:4:11", + "referencedDeclaration": 3162, + "src": "952:4:14", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$3006_storage_ptr", + "typeIdentifier": "t_struct$_Role_$3111_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 3074, + "id": 3179, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 3005, - "src": "952:11:11", + "referencedDeclaration": 3110, + "src": "952:11:14", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 3076, + "id": 3181, "indexExpression": { "argumentTypes": null, - "id": 3075, + "id": 3180, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3059, - "src": "964:7:11", + "referencedDeclaration": 3164, + "src": "964:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -955,52 +954,52 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "952:20:11", + "src": "952:20:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 3063, - "id": 3077, + "functionReturnParameters": 3168, + "id": 3182, "nodeType": "Return", - "src": "945:27:11" + "src": "945:27:14" } ] }, "documentation": "@dev Check if an account has this role.\n@return bool", - "id": 3079, + "id": 3184, "implemented": true, "kind": "function", "modifiers": [], "name": "has", "nodeType": "FunctionDefinition", "parameters": { - "id": 3060, + "id": 3165, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3057, + "id": 3162, "name": "role", "nodeType": "VariableDeclaration", - "scope": 3079, - "src": "792:17:11", + "scope": 3184, + "src": "792:17:14", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$3006_storage_ptr", + "typeIdentifier": "t_struct$_Role_$3111_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 3056, + "id": 3161, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3006, - "src": "792:4:11", + "referencedDeclaration": 3111, + "src": "792:4:14", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$3006_storage_ptr", + "typeIdentifier": "t_struct$_Role_$3111_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -1009,11 +1008,11 @@ }, { "constant": false, - "id": 3059, + "id": 3164, "name": "account", "nodeType": "VariableDeclaration", - "scope": 3079, - "src": "811:15:11", + "scope": 3184, + "src": "811:15:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1021,10 +1020,10 @@ "typeString": "address" }, "typeName": { - "id": 3058, + "id": 3163, "name": "address", "nodeType": "ElementaryTypeName", - "src": "811:7:11", + "src": "811:7:14", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1035,19 +1034,19 @@ "visibility": "internal" } ], - "src": "791:36:11" + "src": "791:36:14" }, "returnParameters": { - "id": 3063, + "id": 3168, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3062, + "id": 3167, "name": "", "nodeType": "VariableDeclaration", - "scope": 3079, - "src": "851:4:11", + "scope": 3184, + "src": "851:4:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1055,10 +1054,10 @@ "typeString": "bool" }, "typeName": { - "id": 3061, + "id": 3166, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "851:4:11", + "src": "851:4:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1068,33 +1067,33 @@ "visibility": "internal" } ], - "src": "850:6:11" + "src": "850:6:14" }, - "scope": 3080, - "src": "779:200:11", + "scope": 3185, + "src": "779:200:14", "stateMutability": "view", "superFunction": null, "visibility": "internal" } ], - "scope": 3081, - "src": "108:873:11" + "scope": 3186, + "src": "108:873:14" } ], - "src": "0:982:11" + "src": "0:982:14" }, "legacyAST": { "absolutePath": "openzeppelin-solidity/contracts/access/Roles.sol", "exportedSymbols": { "Roles": [ - 3080 + 3185 ] }, - "id": 3081, + "id": 3186, "nodeType": "SourceUnit", "nodes": [ { - "id": 3001, + "id": 3106, "literals": [ "solidity", "^", @@ -1102,7 +1101,7 @@ ".0" ], "nodeType": "PragmaDirective", - "src": "0:23:11" + "src": "0:23:14" }, { "baseContracts": [], @@ -1110,24 +1109,24 @@ "contractKind": "library", "documentation": "@title Roles\n@dev Library for managing addresses assigned to a Role.", "fullyImplemented": true, - "id": 3080, + "id": 3185, "linearizedBaseContracts": [ - 3080 + 3185 ], "name": "Roles", "nodeType": "ContractDefinition", "nodes": [ { "canonicalName": "Roles.Role", - "id": 3006, + "id": 3111, "members": [ { "constant": false, - "id": 3005, + "id": 3110, "name": "bearer", "nodeType": "VariableDeclaration", - "scope": 3006, - "src": "150:32:11", + "scope": 3111, + "src": "150:32:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1135,28 +1134,28 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 3004, + "id": 3109, "keyType": { - "id": 3002, + "id": 3107, "name": "address", "nodeType": "ElementaryTypeName", - "src": "159:7:11", + "src": "159:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "150:25:11", + "src": "150:25:14", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { - "id": 3003, + "id": 3108, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "170:4:11", + "src": "170:4:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1169,15 +1168,15 @@ ], "name": "Role", "nodeType": "StructDefinition", - "scope": 3080, - "src": "128:61:11", + "scope": 3185, + "src": "128:61:14", "visibility": "public" }, { "body": { - "id": 3030, + "id": 3135, "nodeType": "Block", - "src": "318:117:11", + "src": "318:117:14", "statements": [ { "expression": { @@ -1185,7 +1184,7 @@ "arguments": [ { "argumentTypes": null, - "id": 3018, + "id": 3123, "isConstant": false, "isLValue": false, "isPure": false, @@ -1193,31 +1192,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "336:19:11", + "src": "336:19:14", "subExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 3015, + "id": 3120, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3008, - "src": "341:4:11", + "referencedDeclaration": 3113, + "src": "341:4:14", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$3006_storage_ptr", + "typeIdentifier": "t_struct$_Role_$3111_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, { "argumentTypes": null, - "id": 3016, + "id": 3121, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3010, - "src": "347:7:11", + "referencedDeclaration": 3115, + "src": "347:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1227,7 +1226,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Role_$3006_storage_ptr", + "typeIdentifier": "t_struct$_Role_$3111_storage_ptr", "typeString": "struct Roles.Role storage pointer" }, { @@ -1235,18 +1234,18 @@ "typeString": "address" } ], - "id": 3014, + "id": 3119, "name": "has", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3079, - "src": "337:3:11", + "referencedDeclaration": 3184, + "src": "337:3:14", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$3006_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$3111_storage_ptr_$_t_address_$returns$_t_bool_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 3017, + "id": 3122, "isConstant": false, "isLValue": false, "isPure": false, @@ -1254,7 +1253,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "337:18:11", + "src": "337:18:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1268,14 +1267,14 @@ { "argumentTypes": null, "hexValue": "526f6c65733a206163636f756e7420616c72656164792068617320726f6c65", - "id": 3019, + "id": 3124, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "357:33:11", + "src": "357:33:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_0f76c3a3e97a37fcdff532c2741c10933ebf2b769d5475388e30ae4f7155f13a", @@ -1295,21 +1294,21 @@ "typeString": "literal_string \"Roles: account already has role\"" } ], - "id": 3013, + "id": 3118, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "328:7:11", + "referencedDeclaration": 4176, + "src": "328:7:14", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 3020, + "id": 3125, "isConstant": false, "isLValue": false, "isPure": false, @@ -1317,20 +1316,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "328:63:11", + "src": "328:63:14", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3021, + "id": 3126, "nodeType": "ExpressionStatement", - "src": "328:63:11" + "src": "328:63:14" }, { "expression": { "argumentTypes": null, - "id": 3028, + "id": 3133, "isConstant": false, "isLValue": false, "isPure": false, @@ -1341,40 +1340,40 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 3022, + "id": 3127, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3008, - "src": "401:4:11", + "referencedDeclaration": 3113, + "src": "401:4:14", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$3006_storage_ptr", + "typeIdentifier": "t_struct$_Role_$3111_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 3025, + "id": 3130, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 3005, - "src": "401:11:11", + "referencedDeclaration": 3110, + "src": "401:11:14", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 3026, + "id": 3131, "indexExpression": { "argumentTypes": null, - "id": 3024, + "id": 3129, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3010, - "src": "413:7:11", + "referencedDeclaration": 3115, + "src": "413:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1385,7 +1384,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "401:20:11", + "src": "401:20:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1396,14 +1395,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 3027, + "id": 3132, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "424:4:11", + "src": "424:4:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1411,51 +1410,51 @@ }, "value": "true" }, - "src": "401:27:11", + "src": "401:27:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 3029, + "id": 3134, "nodeType": "ExpressionStatement", - "src": "401:27:11" + "src": "401:27:14" } ] }, "documentation": "@dev Give an account access to this role.", - "id": 3031, + "id": 3136, "implemented": true, "kind": "function", "modifiers": [], "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 3011, + "id": 3116, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3008, + "id": 3113, "name": "role", "nodeType": "VariableDeclaration", - "scope": 3031, - "src": "273:17:11", + "scope": 3136, + "src": "273:17:14", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$3006_storage_ptr", + "typeIdentifier": "t_struct$_Role_$3111_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 3007, + "id": 3112, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3006, - "src": "273:4:11", + "referencedDeclaration": 3111, + "src": "273:4:14", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$3006_storage_ptr", + "typeIdentifier": "t_struct$_Role_$3111_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -1464,11 +1463,11 @@ }, { "constant": false, - "id": 3010, + "id": 3115, "name": "account", "nodeType": "VariableDeclaration", - "scope": 3031, - "src": "292:15:11", + "scope": 3136, + "src": "292:15:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1476,10 +1475,10 @@ "typeString": "address" }, "typeName": { - "id": 3009, + "id": 3114, "name": "address", "nodeType": "ElementaryTypeName", - "src": "292:7:11", + "src": "292:7:14", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1490,25 +1489,25 @@ "visibility": "internal" } ], - "src": "272:36:11" + "src": "272:36:14" }, "returnParameters": { - "id": 3012, + "id": 3117, "nodeType": "ParameterList", "parameters": [], - "src": "318:0:11" + "src": "318:0:14" }, - "scope": 3080, - "src": "260:175:11", + "scope": 3185, + "src": "260:175:14", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 3054, + "id": 3159, "nodeType": "Block", - "src": "571:119:11", + "src": "571:119:14", "statements": [ { "expression": { @@ -1519,25 +1518,25 @@ "arguments": [ { "argumentTypes": null, - "id": 3040, + "id": 3145, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3033, - "src": "593:4:11", + "referencedDeclaration": 3138, + "src": "593:4:14", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$3006_storage_ptr", + "typeIdentifier": "t_struct$_Role_$3111_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, { "argumentTypes": null, - "id": 3041, + "id": 3146, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3035, - "src": "599:7:11", + "referencedDeclaration": 3140, + "src": "599:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1547,7 +1546,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Role_$3006_storage_ptr", + "typeIdentifier": "t_struct$_Role_$3111_storage_ptr", "typeString": "struct Roles.Role storage pointer" }, { @@ -1555,18 +1554,18 @@ "typeString": "address" } ], - "id": 3039, + "id": 3144, "name": "has", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3079, - "src": "589:3:11", + "referencedDeclaration": 3184, + "src": "589:3:14", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$3006_storage_ptr_$_t_address_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_view$_t_struct$_Role_$3111_storage_ptr_$_t_address_$returns$_t_bool_$", "typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)" } }, - "id": 3042, + "id": 3147, "isConstant": false, "isLValue": false, "isPure": false, @@ -1574,7 +1573,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "589:18:11", + "src": "589:18:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1583,14 +1582,14 @@ { "argumentTypes": null, "hexValue": "526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65", - "id": 3043, + "id": 3148, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "609:35:11", + "src": "609:35:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_7bd893145ac435f339bb7c288622d270324b7033b011f693aca172f5cbc3c257", @@ -1610,21 +1609,21 @@ "typeString": "literal_string \"Roles: account does not have role\"" } ], - "id": 3038, + "id": 3143, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "581:7:11", + "referencedDeclaration": 4176, + "src": "581:7:14", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 3044, + "id": 3149, "isConstant": false, "isLValue": false, "isPure": false, @@ -1632,20 +1631,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "581:64:11", + "src": "581:64:14", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3045, + "id": 3150, "nodeType": "ExpressionStatement", - "src": "581:64:11" + "src": "581:64:14" }, { "expression": { "argumentTypes": null, - "id": 3052, + "id": 3157, "isConstant": false, "isLValue": false, "isPure": false, @@ -1656,40 +1655,40 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 3046, + "id": 3151, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3033, - "src": "655:4:11", + "referencedDeclaration": 3138, + "src": "655:4:14", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$3006_storage_ptr", + "typeIdentifier": "t_struct$_Role_$3111_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 3049, + "id": 3154, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 3005, - "src": "655:11:11", + "referencedDeclaration": 3110, + "src": "655:11:14", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 3050, + "id": 3155, "indexExpression": { "argumentTypes": null, - "id": 3048, + "id": 3153, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3035, - "src": "667:7:11", + "referencedDeclaration": 3140, + "src": "667:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1700,7 +1699,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "655:20:11", + "src": "655:20:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1711,14 +1710,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 3051, + "id": 3156, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "678:5:11", + "src": "678:5:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1726,51 +1725,51 @@ }, "value": "false" }, - "src": "655:28:11", + "src": "655:28:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 3053, + "id": 3158, "nodeType": "ExpressionStatement", - "src": "655:28:11" + "src": "655:28:14" } ] }, "documentation": "@dev Remove an account's access to this role.", - "id": 3055, + "id": 3160, "implemented": true, "kind": "function", "modifiers": [], "name": "remove", "nodeType": "FunctionDefinition", "parameters": { - "id": 3036, + "id": 3141, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3033, + "id": 3138, "name": "role", "nodeType": "VariableDeclaration", - "scope": 3055, - "src": "526:17:11", + "scope": 3160, + "src": "526:17:14", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$3006_storage_ptr", + "typeIdentifier": "t_struct$_Role_$3111_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 3032, + "id": 3137, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3006, - "src": "526:4:11", + "referencedDeclaration": 3111, + "src": "526:4:14", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$3006_storage_ptr", + "typeIdentifier": "t_struct$_Role_$3111_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -1779,11 +1778,11 @@ }, { "constant": false, - "id": 3035, + "id": 3140, "name": "account", "nodeType": "VariableDeclaration", - "scope": 3055, - "src": "545:15:11", + "scope": 3160, + "src": "545:15:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1791,10 +1790,10 @@ "typeString": "address" }, "typeName": { - "id": 3034, + "id": 3139, "name": "address", "nodeType": "ElementaryTypeName", - "src": "545:7:11", + "src": "545:7:14", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1805,25 +1804,25 @@ "visibility": "internal" } ], - "src": "525:36:11" + "src": "525:36:14" }, "returnParameters": { - "id": 3037, + "id": 3142, "nodeType": "ParameterList", "parameters": [], - "src": "571:0:11" + "src": "571:0:14" }, - "scope": 3080, - "src": "510:180:11", + "scope": 3185, + "src": "510:180:14", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 3078, + "id": 3183, "nodeType": "Block", - "src": "857:122:11", + "src": "857:122:14", "statements": [ { "expression": { @@ -1835,19 +1834,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 3069, + "id": 3174, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3065, + "id": 3170, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3059, - "src": "875:7:11", + "referencedDeclaration": 3164, + "src": "875:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1861,14 +1860,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 3067, + "id": 3172, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "894:1:11", + "src": "894:1:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1884,20 +1883,20 @@ "typeString": "int_const 0" } ], - "id": 3066, + "id": 3171, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "886:7:11", + "src": "886:7:14", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 3068, + "id": 3173, "isConstant": false, "isLValue": false, "isPure": true, @@ -1905,13 +1904,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "886:10:11", + "src": "886:10:14", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, - "src": "875:21:11", + "src": "875:21:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1920,14 +1919,14 @@ { "argumentTypes": null, "hexValue": "526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373", - "id": 3070, + "id": 3175, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "898:36:11", + "src": "898:36:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_9d214fa89563f4e6456a3929327e54500ea1cde2c0ba9fb2035ec106190d682f", @@ -1947,21 +1946,21 @@ "typeString": "literal_string \"Roles: account is the zero address\"" } ], - "id": 3064, + "id": 3169, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "867:7:11", + "referencedDeclaration": 4176, + "src": "867:7:14", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 3071, + "id": 3176, "isConstant": false, "isLValue": false, "isPure": false, @@ -1969,15 +1968,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "867:68:11", + "src": "867:68:14", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3072, + "id": 3177, "nodeType": "ExpressionStatement", - "src": "867:68:11" + "src": "867:68:14" }, { "expression": { @@ -1986,40 +1985,40 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 3073, + "id": 3178, "name": "role", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3057, - "src": "952:4:11", + "referencedDeclaration": 3162, + "src": "952:4:14", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$3006_storage_ptr", + "typeIdentifier": "t_struct$_Role_$3111_storage_ptr", "typeString": "struct Roles.Role storage pointer" } }, - "id": 3074, + "id": 3179, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "bearer", "nodeType": "MemberAccess", - "referencedDeclaration": 3005, - "src": "952:11:11", + "referencedDeclaration": 3110, + "src": "952:11:14", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 3076, + "id": 3181, "indexExpression": { "argumentTypes": null, - "id": 3075, + "id": 3180, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3059, - "src": "964:7:11", + "referencedDeclaration": 3164, + "src": "964:7:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2030,52 +2029,52 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "952:20:11", + "src": "952:20:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 3063, - "id": 3077, + "functionReturnParameters": 3168, + "id": 3182, "nodeType": "Return", - "src": "945:27:11" + "src": "945:27:14" } ] }, "documentation": "@dev Check if an account has this role.\n@return bool", - "id": 3079, + "id": 3184, "implemented": true, "kind": "function", "modifiers": [], "name": "has", "nodeType": "FunctionDefinition", "parameters": { - "id": 3060, + "id": 3165, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3057, + "id": 3162, "name": "role", "nodeType": "VariableDeclaration", - "scope": 3079, - "src": "792:17:11", + "scope": 3184, + "src": "792:17:14", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$3006_storage_ptr", + "typeIdentifier": "t_struct$_Role_$3111_storage_ptr", "typeString": "struct Roles.Role" }, "typeName": { "contractScope": null, - "id": 3056, + "id": 3161, "name": "Role", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3006, - "src": "792:4:11", + "referencedDeclaration": 3111, + "src": "792:4:14", "typeDescriptions": { - "typeIdentifier": "t_struct$_Role_$3006_storage_ptr", + "typeIdentifier": "t_struct$_Role_$3111_storage_ptr", "typeString": "struct Roles.Role" } }, @@ -2084,11 +2083,11 @@ }, { "constant": false, - "id": 3059, + "id": 3164, "name": "account", "nodeType": "VariableDeclaration", - "scope": 3079, - "src": "811:15:11", + "scope": 3184, + "src": "811:15:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2096,10 +2095,10 @@ "typeString": "address" }, "typeName": { - "id": 3058, + "id": 3163, "name": "address", "nodeType": "ElementaryTypeName", - "src": "811:7:11", + "src": "811:7:14", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2110,19 +2109,19 @@ "visibility": "internal" } ], - "src": "791:36:11" + "src": "791:36:14" }, "returnParameters": { - "id": 3063, + "id": 3168, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3062, + "id": 3167, "name": "", "nodeType": "VariableDeclaration", - "scope": 3079, - "src": "851:4:11", + "scope": 3184, + "src": "851:4:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2130,10 +2129,10 @@ "typeString": "bool" }, "typeName": { - "id": 3061, + "id": 3166, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "851:4:11", + "src": "851:4:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2143,28 +2142,28 @@ "visibility": "internal" } ], - "src": "850:6:11" + "src": "850:6:14" }, - "scope": 3080, - "src": "779:200:11", + "scope": 3185, + "src": "779:200:14", "stateMutability": "view", "superFunction": null, "visibility": "internal" } ], - "scope": 3081, - "src": "108:873:11" + "scope": 3186, + "src": "108:873:14" } ], - "src": "0:982:11" + "src": "0:982:14" }, "compiler": { "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" + "version": "0.5.2+commit.1df8f40c.Emscripten.clang" }, "networks": {}, - "schemaVersion": "3.0.23", - "updatedAt": "2020-02-16T12:52:29.807Z", + "schemaVersion": "3.0.1", + "updatedAt": "2020-02-16T14:54:14.903Z", "devdoc": { "details": "Library for managing addresses assigned to a Role.", "methods": {}, diff --git a/truffle/build/contracts/SafeMath.json b/truffle/build/contracts/SafeMath.json index 99bc74f..338595e 100644 --- a/truffle/build/contracts/SafeMath.json +++ b/truffle/build/contracts/SafeMath.json @@ -1,25 +1,24 @@ { "contractName": "SafeMath", "abi": [], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's arithmetic operations with added overflow checks. * Arithmetic operations in Solidity wrap on overflow. This can easily result in bugs, because programmers usually assume that an overflow raises an error, which is the standard behavior in high level programming languages. `SafeMath` restores this intuition by reverting the transaction when an operation overflows. * Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.\",\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"openzeppelin-solidity/contracts/math/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":1500},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]}},\"version\":1}", - "bytecode": "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820beca8827cf81a0cf6a80aa95a78992f9193996e21c6065c69b813148c6af6dcf64736f6c63430005100032", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820beca8827cf81a0cf6a80aa95a78992f9193996e21c6065c69b813148c6af6dcf64736f6c63430005100032", - "sourceMap": "589:4708:13:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24", - "deployedSourceMap": "589:4708:13:-;;;;;;;;", + "bytecode": "0x604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058207ecdd3a725bc08736a5568d0271605586781e67daf9f2890ad450a26359a93f40029", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058207ecdd3a725bc08736a5568d0271605586781e67daf9f2890ad450a26359a93f40029", + "sourceMap": "589:4708:16:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24", + "deployedSourceMap": "589:4708:16:-;;;;;;;;", "source": "pragma solidity ^0.5.0;\n\n/**\n * @dev Wrappers over Solidity's arithmetic operations with added overflow\n * checks.\n *\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\n * in bugs, because programmers usually assume that an overflow raises an\n * error, which is the standard behavior in high level programming languages.\n * `SafeMath` restores this intuition by reverting the transaction when an\n * operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n */\nlibrary SafeMath {\n /**\n * @dev Returns the addition of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `+` operator.\n *\n * Requirements:\n * - Addition cannot overflow.\n */\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 c = a + b;\n require(c >= a, \"SafeMath: addition overflow\");\n\n return c;\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting on\n * overflow (when the result is negative).\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n * - Subtraction cannot overflow.\n */\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n return sub(a, b, \"SafeMath: subtraction overflow\");\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n * overflow (when the result is negative).\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n * - Subtraction cannot overflow.\n *\n * _Available since v2.4.0._\n */\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n require(b <= a, errorMessage);\n uint256 c = a - b;\n\n return c;\n }\n\n /**\n * @dev Returns the multiplication of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `*` operator.\n *\n * Requirements:\n * - Multiplication cannot overflow.\n */\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n // benefit is lost if 'b' is also tested.\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\n if (a == 0) {\n return 0;\n }\n\n uint256 c = a * b;\n require(c / a == b, \"SafeMath: multiplication overflow\");\n\n return c;\n }\n\n /**\n * @dev Returns the integer division of two unsigned integers. Reverts on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n * - The divisor cannot be zero.\n */\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\n return div(a, b, \"SafeMath: division by zero\");\n }\n\n /**\n * @dev Returns the integer division of two unsigned integers. Reverts with custom message on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n * - The divisor cannot be zero.\n *\n * _Available since v2.4.0._\n */\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n // Solidity only automatically asserts when dividing by 0\n require(b > 0, errorMessage);\n uint256 c = a / b;\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\n\n return c;\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * Reverts when dividing by zero.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n * - The divisor cannot be zero.\n */\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\n return mod(a, b, \"SafeMath: modulo by zero\");\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * Reverts with custom message when dividing by zero.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n * - The divisor cannot be zero.\n *\n * _Available since v2.4.0._\n */\n function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n require(b != 0, errorMessage);\n return a % b;\n }\n}\n", "sourcePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", "ast": { "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", "exportedSymbols": { "SafeMath": [ - 3374 + 3479 ] }, - "id": 3375, + "id": 3480, "nodeType": "SourceUnit", "nodes": [ { - "id": 3189, + "id": 3294, "literals": [ "solidity", "^", @@ -27,7 +26,7 @@ ".0" ], "nodeType": "PragmaDirective", - "src": "0:23:13" + "src": "0:23:16" }, { "baseContracts": [], @@ -35,31 +34,31 @@ "contractKind": "library", "documentation": "@dev Wrappers over Solidity's arithmetic operations with added overflow\nchecks.\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\nin bugs, because programmers usually assume that an overflow raises an\nerror, which is the standard behavior in high level programming languages.\n`SafeMath` restores this intuition by reverting the transaction when an\noperation overflows.\n * Using this library instead of the unchecked operations eliminates an entire\nclass of bugs, so it's recommended to use it always.", "fullyImplemented": true, - "id": 3374, + "id": 3479, "linearizedBaseContracts": [ - 3374 + 3479 ], "name": "SafeMath", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 3213, + "id": 3318, "nodeType": "Block", - "src": "901:109:13", + "src": "901:109:16", "statements": [ { "assignments": [ - 3199 + 3304 ], "declarations": [ { "constant": false, - "id": 3199, + "id": 3304, "name": "c", "nodeType": "VariableDeclaration", - "scope": 3213, - "src": "911:9:13", + "scope": 3318, + "src": "911:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -67,10 +66,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3198, + "id": 3303, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "911:7:13", + "src": "911:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -80,26 +79,26 @@ "visibility": "internal" } ], - "id": 3203, + "id": 3308, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 3202, + "id": 3307, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3200, + "id": 3305, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3191, - "src": "923:1:13", + "referencedDeclaration": 3296, + "src": "923:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -109,25 +108,25 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 3201, + "id": 3306, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3193, - "src": "927:1:13", + "referencedDeclaration": 3298, + "src": "927:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "923:5:13", + "src": "923:5:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "911:17:13" + "src": "911:17:16" }, { "expression": { @@ -139,19 +138,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 3207, + "id": 3312, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3205, + "id": 3310, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3199, - "src": "946:1:13", + "referencedDeclaration": 3304, + "src": "946:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -161,18 +160,18 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 3206, + "id": 3311, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3191, - "src": "951:1:13", + "referencedDeclaration": 3296, + "src": "951:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "946:6:13", + "src": "946:6:16", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -181,14 +180,14 @@ { "argumentTypes": null, "hexValue": "536166654d6174683a206164646974696f6e206f766572666c6f77", - "id": 3208, + "id": 3313, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "954:29:13", + "src": "954:29:16", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a", @@ -208,21 +207,21 @@ "typeString": "literal_string \"SafeMath: addition overflow\"" } ], - "id": 3204, + "id": 3309, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "938:7:13", + "referencedDeclaration": 4176, + "src": "938:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 3209, + "id": 3314, "isConstant": false, "isLValue": false, "isPure": false, @@ -230,55 +229,55 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "938:46:13", + "src": "938:46:16", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3210, + "id": 3315, "nodeType": "ExpressionStatement", - "src": "938:46:13" + "src": "938:46:16" }, { "expression": { "argumentTypes": null, - "id": 3211, + "id": 3316, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3199, - "src": "1002:1:13", + "referencedDeclaration": 3304, + "src": "1002:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 3197, - "id": 3212, + "functionReturnParameters": 3302, + "id": 3317, "nodeType": "Return", - "src": "995:8:13" + "src": "995:8:16" } ] }, "documentation": "@dev Returns the addition of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `+` operator.\n * Requirements:\n- Addition cannot overflow.", - "id": 3214, + "id": 3319, "implemented": true, "kind": "function", "modifiers": [], "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 3194, + "id": 3299, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3191, + "id": 3296, "name": "a", "nodeType": "VariableDeclaration", - "scope": 3214, - "src": "847:9:13", + "scope": 3319, + "src": "847:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -286,10 +285,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3190, + "id": 3295, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "847:7:13", + "src": "847:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -300,11 +299,11 @@ }, { "constant": false, - "id": 3193, + "id": 3298, "name": "b", "nodeType": "VariableDeclaration", - "scope": 3214, - "src": "858:9:13", + "scope": 3319, + "src": "858:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -312,10 +311,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3192, + "id": 3297, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "858:7:13", + "src": "858:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -325,19 +324,19 @@ "visibility": "internal" } ], - "src": "846:22:13" + "src": "846:22:16" }, "returnParameters": { - "id": 3197, + "id": 3302, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3196, + "id": 3301, "name": "", "nodeType": "VariableDeclaration", - "scope": 3214, - "src": "892:7:13", + "scope": 3319, + "src": "892:7:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -345,10 +344,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3195, + "id": 3300, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "892:7:13", + "src": "892:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -358,19 +357,19 @@ "visibility": "internal" } ], - "src": "891:9:13" + "src": "891:9:16" }, - "scope": 3374, - "src": "834:176:13", + "scope": 3479, + "src": "834:176:16", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 3229, + "id": 3334, "nodeType": "Block", - "src": "1341:67:13", + "src": "1341:67:16", "statements": [ { "expression": { @@ -378,12 +377,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3224, + "id": 3329, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3216, - "src": "1362:1:13", + "referencedDeclaration": 3321, + "src": "1362:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -391,12 +390,12 @@ }, { "argumentTypes": null, - "id": 3225, + "id": 3330, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3218, - "src": "1365:1:13", + "referencedDeclaration": 3323, + "src": "1365:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -405,14 +404,14 @@ { "argumentTypes": null, "hexValue": "536166654d6174683a207375627472616374696f6e206f766572666c6f77", - "id": 3226, + "id": 3331, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1368:32:13", + "src": "1368:32:16", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862", @@ -436,21 +435,21 @@ "typeString": "literal_string \"SafeMath: subtraction overflow\"" } ], - "id": 3223, + "id": 3328, "name": "sub", "nodeType": "Identifier", "overloadedDeclarations": [ - 3230, - 3257 + 3335, + 3362 ], - "referencedDeclaration": 3257, - "src": "1358:3:13", + "referencedDeclaration": 3362, + "src": "1358:3:16", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" } }, - "id": 3227, + "id": 3332, "isConstant": false, "isLValue": false, "isPure": false, @@ -458,37 +457,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1358:43:13", + "src": "1358:43:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 3222, - "id": 3228, + "functionReturnParameters": 3327, + "id": 3333, "nodeType": "Return", - "src": "1351:50:13" + "src": "1351:50:16" } ] }, "documentation": "@dev Returns the subtraction of two unsigned integers, reverting on\noverflow (when the result is negative).\n * Counterpart to Solidity's `-` operator.\n * Requirements:\n- Subtraction cannot overflow.", - "id": 3230, + "id": 3335, "implemented": true, "kind": "function", "modifiers": [], "name": "sub", "nodeType": "FunctionDefinition", "parameters": { - "id": 3219, + "id": 3324, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3216, + "id": 3321, "name": "a", "nodeType": "VariableDeclaration", - "scope": 3230, - "src": "1287:9:13", + "scope": 3335, + "src": "1287:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -496,10 +495,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3215, + "id": 3320, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1287:7:13", + "src": "1287:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -510,11 +509,11 @@ }, { "constant": false, - "id": 3218, + "id": 3323, "name": "b", "nodeType": "VariableDeclaration", - "scope": 3230, - "src": "1298:9:13", + "scope": 3335, + "src": "1298:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -522,10 +521,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3217, + "id": 3322, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1298:7:13", + "src": "1298:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -535,19 +534,19 @@ "visibility": "internal" } ], - "src": "1286:22:13" + "src": "1286:22:16" }, "returnParameters": { - "id": 3222, + "id": 3327, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3221, + "id": 3326, "name": "", "nodeType": "VariableDeclaration", - "scope": 3230, - "src": "1332:7:13", + "scope": 3335, + "src": "1332:7:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -555,10 +554,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3220, + "id": 3325, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1332:7:13", + "src": "1332:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -568,19 +567,19 @@ "visibility": "internal" } ], - "src": "1331:9:13" + "src": "1331:9:16" }, - "scope": 3374, - "src": "1274:134:13", + "scope": 3479, + "src": "1274:134:16", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 3256, + "id": 3361, "nodeType": "Block", - "src": "1827:92:13", + "src": "1827:92:16", "statements": [ { "expression": { @@ -592,19 +591,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 3244, + "id": 3349, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3242, + "id": 3347, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3234, - "src": "1845:1:13", + "referencedDeclaration": 3339, + "src": "1845:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -614,18 +613,18 @@ "operator": "<=", "rightExpression": { "argumentTypes": null, - "id": 3243, + "id": 3348, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3232, - "src": "1850:1:13", + "referencedDeclaration": 3337, + "src": "1850:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1845:6:13", + "src": "1845:6:16", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -633,12 +632,12 @@ }, { "argumentTypes": null, - "id": 3245, + "id": 3350, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3236, - "src": "1853:12:13", + "referencedDeclaration": 3341, + "src": "1853:12:16", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" @@ -656,21 +655,21 @@ "typeString": "string memory" } ], - "id": 3241, + "id": 3346, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "1837:7:13", + "referencedDeclaration": 4176, + "src": "1837:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 3246, + "id": 3351, "isConstant": false, "isLValue": false, "isPure": false, @@ -678,28 +677,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1837:29:13", + "src": "1837:29:16", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3247, + "id": 3352, "nodeType": "ExpressionStatement", - "src": "1837:29:13" + "src": "1837:29:16" }, { "assignments": [ - 3249 + 3354 ], "declarations": [ { "constant": false, - "id": 3249, + "id": 3354, "name": "c", "nodeType": "VariableDeclaration", - "scope": 3256, - "src": "1876:9:13", + "scope": 3361, + "src": "1876:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -707,10 +706,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3248, + "id": 3353, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1876:7:13", + "src": "1876:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -720,26 +719,26 @@ "visibility": "internal" } ], - "id": 3253, + "id": 3358, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 3252, + "id": 3357, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3250, + "id": 3355, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3232, - "src": "1888:1:13", + "referencedDeclaration": 3337, + "src": "1888:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -749,65 +748,65 @@ "operator": "-", "rightExpression": { "argumentTypes": null, - "id": 3251, + "id": 3356, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3234, - "src": "1892:1:13", + "referencedDeclaration": 3339, + "src": "1892:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1888:5:13", + "src": "1888:5:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1876:17:13" + "src": "1876:17:16" }, { "expression": { "argumentTypes": null, - "id": 3254, + "id": 3359, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3249, - "src": "1911:1:13", + "referencedDeclaration": 3354, + "src": "1911:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 3240, - "id": 3255, + "functionReturnParameters": 3345, + "id": 3360, "nodeType": "Return", - "src": "1904:8:13" + "src": "1904:8:16" } ] }, "documentation": "@dev Returns the subtraction of two unsigned integers, reverting with custom message on\noverflow (when the result is negative).\n * Counterpart to Solidity's `-` operator.\n * Requirements:\n- Subtraction cannot overflow.\n * _Available since v2.4.0._", - "id": 3257, + "id": 3362, "implemented": true, "kind": "function", "modifiers": [], "name": "sub", "nodeType": "FunctionDefinition", "parameters": { - "id": 3237, + "id": 3342, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3232, + "id": 3337, "name": "a", "nodeType": "VariableDeclaration", - "scope": 3257, - "src": "1745:9:13", + "scope": 3362, + "src": "1745:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -815,10 +814,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3231, + "id": 3336, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1745:7:13", + "src": "1745:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -829,11 +828,11 @@ }, { "constant": false, - "id": 3234, + "id": 3339, "name": "b", "nodeType": "VariableDeclaration", - "scope": 3257, - "src": "1756:9:13", + "scope": 3362, + "src": "1756:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -841,10 +840,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3233, + "id": 3338, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1756:7:13", + "src": "1756:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -855,11 +854,11 @@ }, { "constant": false, - "id": 3236, + "id": 3341, "name": "errorMessage", "nodeType": "VariableDeclaration", - "scope": 3257, - "src": "1767:26:13", + "scope": 3362, + "src": "1767:26:16", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -867,10 +866,10 @@ "typeString": "string" }, "typeName": { - "id": 3235, + "id": 3340, "name": "string", "nodeType": "ElementaryTypeName", - "src": "1767:6:13", + "src": "1767:6:16", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -880,19 +879,19 @@ "visibility": "internal" } ], - "src": "1744:50:13" + "src": "1744:50:16" }, "returnParameters": { - "id": 3240, + "id": 3345, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3239, + "id": 3344, "name": "", "nodeType": "VariableDeclaration", - "scope": 3257, - "src": "1818:7:13", + "scope": 3362, + "src": "1818:7:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -900,10 +899,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3238, + "id": 3343, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1818:7:13", + "src": "1818:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -913,19 +912,19 @@ "visibility": "internal" } ], - "src": "1817:9:13" + "src": "1817:9:16" }, - "scope": 3374, - "src": "1732:187:13", + "scope": 3479, + "src": "1732:187:16", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 3290, + "id": 3395, "nodeType": "Block", - "src": "2226:392:13", + "src": "2226:392:16", "statements": [ { "condition": { @@ -934,19 +933,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 3268, + "id": 3373, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3266, + "id": 3371, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3259, - "src": "2458:1:13", + "referencedDeclaration": 3364, + "src": "2458:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -957,14 +956,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 3267, + "id": 3372, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2463:1:13", + "src": "2463:1:16", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -972,33 +971,33 @@ }, "value": "0" }, - "src": "2458:6:13", + "src": "2458:6:16", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 3272, + "id": 3377, "nodeType": "IfStatement", - "src": "2454:45:13", + "src": "2454:45:16", "trueBody": { - "id": 3271, + "id": 3376, "nodeType": "Block", - "src": "2466:33:13", + "src": "2466:33:16", "statements": [ { "expression": { "argumentTypes": null, "hexValue": "30", - "id": 3269, + "id": 3374, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2487:1:13", + "src": "2487:1:16", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1006,26 +1005,26 @@ }, "value": "0" }, - "functionReturnParameters": 3265, - "id": 3270, + "functionReturnParameters": 3370, + "id": 3375, "nodeType": "Return", - "src": "2480:8:13" + "src": "2480:8:16" } ] } }, { "assignments": [ - 3274 + 3379 ], "declarations": [ { "constant": false, - "id": 3274, + "id": 3379, "name": "c", "nodeType": "VariableDeclaration", - "scope": 3290, - "src": "2509:9:13", + "scope": 3395, + "src": "2509:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1033,10 +1032,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3273, + "id": 3378, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2509:7:13", + "src": "2509:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1046,26 +1045,26 @@ "visibility": "internal" } ], - "id": 3278, + "id": 3383, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 3277, + "id": 3382, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3275, + "id": 3380, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3259, - "src": "2521:1:13", + "referencedDeclaration": 3364, + "src": "2521:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1075,25 +1074,25 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 3276, + "id": 3381, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3261, - "src": "2525:1:13", + "referencedDeclaration": 3366, + "src": "2525:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2521:5:13", + "src": "2521:5:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "2509:17:13" + "src": "2509:17:16" }, { "expression": { @@ -1105,7 +1104,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 3284, + "id": 3389, "isConstant": false, "isLValue": false, "isPure": false, @@ -1116,19 +1115,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 3282, + "id": 3387, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3280, + "id": 3385, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3274, - "src": "2544:1:13", + "referencedDeclaration": 3379, + "src": "2544:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1138,18 +1137,18 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 3281, + "id": 3386, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3259, - "src": "2548:1:13", + "referencedDeclaration": 3364, + "src": "2548:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2544:5:13", + "src": "2544:5:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1159,18 +1158,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 3283, + "id": 3388, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3261, - "src": "2553:1:13", + "referencedDeclaration": 3366, + "src": "2553:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2544:10:13", + "src": "2544:10:16", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1179,14 +1178,14 @@ { "argumentTypes": null, "hexValue": "536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77", - "id": 3285, + "id": 3390, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2556:35:13", + "src": "2556:35:16", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3", @@ -1206,21 +1205,21 @@ "typeString": "literal_string \"SafeMath: multiplication overflow\"" } ], - "id": 3279, + "id": 3384, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "2536:7:13", + "referencedDeclaration": 4176, + "src": "2536:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 3286, + "id": 3391, "isConstant": false, "isLValue": false, "isPure": false, @@ -1228,55 +1227,55 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2536:56:13", + "src": "2536:56:16", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3287, + "id": 3392, "nodeType": "ExpressionStatement", - "src": "2536:56:13" + "src": "2536:56:16" }, { "expression": { "argumentTypes": null, - "id": 3288, + "id": 3393, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3274, - "src": "2610:1:13", + "referencedDeclaration": 3379, + "src": "2610:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 3265, - "id": 3289, + "functionReturnParameters": 3370, + "id": 3394, "nodeType": "Return", - "src": "2603:8:13" + "src": "2603:8:16" } ] }, "documentation": "@dev Returns the multiplication of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `*` operator.\n * Requirements:\n- Multiplication cannot overflow.", - "id": 3291, + "id": 3396, "implemented": true, "kind": "function", "modifiers": [], "name": "mul", "nodeType": "FunctionDefinition", "parameters": { - "id": 3262, + "id": 3367, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3259, + "id": 3364, "name": "a", "nodeType": "VariableDeclaration", - "scope": 3291, - "src": "2172:9:13", + "scope": 3396, + "src": "2172:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1284,10 +1283,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3258, + "id": 3363, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2172:7:13", + "src": "2172:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1298,11 +1297,11 @@ }, { "constant": false, - "id": 3261, + "id": 3366, "name": "b", "nodeType": "VariableDeclaration", - "scope": 3291, - "src": "2183:9:13", + "scope": 3396, + "src": "2183:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1310,10 +1309,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3260, + "id": 3365, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2183:7:13", + "src": "2183:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1323,19 +1322,19 @@ "visibility": "internal" } ], - "src": "2171:22:13" + "src": "2171:22:16" }, "returnParameters": { - "id": 3265, + "id": 3370, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3264, + "id": 3369, "name": "", "nodeType": "VariableDeclaration", - "scope": 3291, - "src": "2217:7:13", + "scope": 3396, + "src": "2217:7:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1343,10 +1342,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3263, + "id": 3368, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2217:7:13", + "src": "2217:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1356,19 +1355,19 @@ "visibility": "internal" } ], - "src": "2216:9:13" + "src": "2216:9:16" }, - "scope": 3374, - "src": "2159:459:13", + "scope": 3479, + "src": "2159:459:16", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 3306, + "id": 3411, "nodeType": "Block", - "src": "3140:63:13", + "src": "3140:63:16", "statements": [ { "expression": { @@ -1376,12 +1375,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3301, + "id": 3406, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3293, - "src": "3161:1:13", + "referencedDeclaration": 3398, + "src": "3161:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1389,12 +1388,12 @@ }, { "argumentTypes": null, - "id": 3302, + "id": 3407, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3295, - "src": "3164:1:13", + "referencedDeclaration": 3400, + "src": "3164:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1403,14 +1402,14 @@ { "argumentTypes": null, "hexValue": "536166654d6174683a206469766973696f6e206279207a65726f", - "id": 3303, + "id": 3408, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3167:28:13", + "src": "3167:28:16", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f", @@ -1434,21 +1433,21 @@ "typeString": "literal_string \"SafeMath: division by zero\"" } ], - "id": 3300, + "id": 3405, "name": "div", "nodeType": "Identifier", "overloadedDeclarations": [ - 3307, - 3334 + 3412, + 3439 ], - "referencedDeclaration": 3334, - "src": "3157:3:13", + "referencedDeclaration": 3439, + "src": "3157:3:16", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" } }, - "id": 3304, + "id": 3409, "isConstant": false, "isLValue": false, "isPure": false, @@ -1456,37 +1455,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3157:39:13", + "src": "3157:39:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 3299, - "id": 3305, + "functionReturnParameters": 3404, + "id": 3410, "nodeType": "Return", - "src": "3150:46:13" + "src": "3150:46:16" } ] }, "documentation": "@dev Returns the integer division of two unsigned integers. Reverts on\ndivision by zero. The result is rounded towards zero.\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.", - "id": 3307, + "id": 3412, "implemented": true, "kind": "function", "modifiers": [], "name": "div", "nodeType": "FunctionDefinition", "parameters": { - "id": 3296, + "id": 3401, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3293, + "id": 3398, "name": "a", "nodeType": "VariableDeclaration", - "scope": 3307, - "src": "3086:9:13", + "scope": 3412, + "src": "3086:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1494,10 +1493,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3292, + "id": 3397, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3086:7:13", + "src": "3086:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1508,11 +1507,11 @@ }, { "constant": false, - "id": 3295, + "id": 3400, "name": "b", "nodeType": "VariableDeclaration", - "scope": 3307, - "src": "3097:9:13", + "scope": 3412, + "src": "3097:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1520,10 +1519,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3294, + "id": 3399, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3097:7:13", + "src": "3097:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1533,19 +1532,19 @@ "visibility": "internal" } ], - "src": "3085:22:13" + "src": "3085:22:16" }, "returnParameters": { - "id": 3299, + "id": 3404, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3298, + "id": 3403, "name": "", "nodeType": "VariableDeclaration", - "scope": 3307, - "src": "3131:7:13", + "scope": 3412, + "src": "3131:7:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1553,10 +1552,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3297, + "id": 3402, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3131:7:13", + "src": "3131:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1566,19 +1565,19 @@ "visibility": "internal" } ], - "src": "3130:9:13" + "src": "3130:9:16" }, - "scope": 3374, - "src": "3073:130:13", + "scope": 3479, + "src": "3073:130:16", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 3333, + "id": 3438, "nodeType": "Block", - "src": "3813:243:13", + "src": "3813:243:16", "statements": [ { "expression": { @@ -1590,19 +1589,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 3321, + "id": 3426, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3319, + "id": 3424, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3311, - "src": "3897:1:13", + "referencedDeclaration": 3416, + "src": "3897:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1613,14 +1612,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 3320, + "id": 3425, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3901:1:13", + "src": "3901:1:16", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1628,7 +1627,7 @@ }, "value": "0" }, - "src": "3897:5:13", + "src": "3897:5:16", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1636,12 +1635,12 @@ }, { "argumentTypes": null, - "id": 3322, + "id": 3427, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3313, - "src": "3904:12:13", + "referencedDeclaration": 3418, + "src": "3904:12:16", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" @@ -1659,21 +1658,21 @@ "typeString": "string memory" } ], - "id": 3318, + "id": 3423, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "3889:7:13", + "referencedDeclaration": 4176, + "src": "3889:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 3323, + "id": 3428, "isConstant": false, "isLValue": false, "isPure": false, @@ -1681,28 +1680,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3889:28:13", + "src": "3889:28:16", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3324, + "id": 3429, "nodeType": "ExpressionStatement", - "src": "3889:28:13" + "src": "3889:28:16" }, { "assignments": [ - 3326 + 3431 ], "declarations": [ { "constant": false, - "id": 3326, + "id": 3431, "name": "c", "nodeType": "VariableDeclaration", - "scope": 3333, - "src": "3927:9:13", + "scope": 3438, + "src": "3927:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1710,10 +1709,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3325, + "id": 3430, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3927:7:13", + "src": "3927:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1723,26 +1722,26 @@ "visibility": "internal" } ], - "id": 3330, + "id": 3435, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 3329, + "id": 3434, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3327, + "id": 3432, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3309, - "src": "3939:1:13", + "referencedDeclaration": 3414, + "src": "3939:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1752,65 +1751,65 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 3328, + "id": 3433, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3311, - "src": "3943:1:13", + "referencedDeclaration": 3416, + "src": "3943:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3939:5:13", + "src": "3939:5:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "3927:17:13" + "src": "3927:17:16" }, { "expression": { "argumentTypes": null, - "id": 3331, + "id": 3436, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3326, - "src": "4048:1:13", + "referencedDeclaration": 3431, + "src": "4048:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 3317, - "id": 3332, + "functionReturnParameters": 3422, + "id": 3437, "nodeType": "Return", - "src": "4041:8:13" + "src": "4041:8:16" } ] }, "documentation": "@dev Returns the integer division of two unsigned integers. Reverts with custom message on\ndivision by zero. The result is rounded towards zero.\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.\n * _Available since v2.4.0._", - "id": 3334, + "id": 3439, "implemented": true, "kind": "function", "modifiers": [], "name": "div", "nodeType": "FunctionDefinition", "parameters": { - "id": 3314, + "id": 3419, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3309, + "id": 3414, "name": "a", "nodeType": "VariableDeclaration", - "scope": 3334, - "src": "3731:9:13", + "scope": 3439, + "src": "3731:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1818,10 +1817,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3308, + "id": 3413, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3731:7:13", + "src": "3731:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1832,11 +1831,11 @@ }, { "constant": false, - "id": 3311, + "id": 3416, "name": "b", "nodeType": "VariableDeclaration", - "scope": 3334, - "src": "3742:9:13", + "scope": 3439, + "src": "3742:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1844,10 +1843,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3310, + "id": 3415, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3742:7:13", + "src": "3742:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1858,11 +1857,11 @@ }, { "constant": false, - "id": 3313, + "id": 3418, "name": "errorMessage", "nodeType": "VariableDeclaration", - "scope": 3334, - "src": "3753:26:13", + "scope": 3439, + "src": "3753:26:16", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -1870,10 +1869,10 @@ "typeString": "string" }, "typeName": { - "id": 3312, + "id": 3417, "name": "string", "nodeType": "ElementaryTypeName", - "src": "3753:6:13", + "src": "3753:6:16", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -1883,19 +1882,19 @@ "visibility": "internal" } ], - "src": "3730:50:13" + "src": "3730:50:16" }, "returnParameters": { - "id": 3317, + "id": 3422, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3316, + "id": 3421, "name": "", "nodeType": "VariableDeclaration", - "scope": 3334, - "src": "3804:7:13", + "scope": 3439, + "src": "3804:7:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1903,10 +1902,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3315, + "id": 3420, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3804:7:13", + "src": "3804:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1916,19 +1915,19 @@ "visibility": "internal" } ], - "src": "3803:9:13" + "src": "3803:9:16" }, - "scope": 3374, - "src": "3718:338:13", + "scope": 3479, + "src": "3718:338:16", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 3349, + "id": 3454, "nodeType": "Block", - "src": "4567:61:13", + "src": "4567:61:16", "statements": [ { "expression": { @@ -1936,12 +1935,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3344, + "id": 3449, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3336, - "src": "4588:1:13", + "referencedDeclaration": 3441, + "src": "4588:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1949,12 +1948,12 @@ }, { "argumentTypes": null, - "id": 3345, + "id": 3450, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3338, - "src": "4591:1:13", + "referencedDeclaration": 3443, + "src": "4591:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1963,14 +1962,14 @@ { "argumentTypes": null, "hexValue": "536166654d6174683a206d6f64756c6f206279207a65726f", - "id": 3346, + "id": 3451, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4594:26:13", + "src": "4594:26:16", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832", @@ -1994,21 +1993,21 @@ "typeString": "literal_string \"SafeMath: modulo by zero\"" } ], - "id": 3343, + "id": 3448, "name": "mod", "nodeType": "Identifier", "overloadedDeclarations": [ - 3350, - 3373 + 3455, + 3478 ], - "referencedDeclaration": 3373, - "src": "4584:3:13", + "referencedDeclaration": 3478, + "src": "4584:3:16", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" } }, - "id": 3347, + "id": 3452, "isConstant": false, "isLValue": false, "isPure": false, @@ -2016,37 +2015,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4584:37:13", + "src": "4584:37:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 3342, - "id": 3348, + "functionReturnParameters": 3447, + "id": 3453, "nodeType": "Return", - "src": "4577:44:13" + "src": "4577:44:16" } ] }, "documentation": "@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts when dividing by zero.\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.", - "id": 3350, + "id": 3455, "implemented": true, "kind": "function", "modifiers": [], "name": "mod", "nodeType": "FunctionDefinition", "parameters": { - "id": 3339, + "id": 3444, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3336, + "id": 3441, "name": "a", "nodeType": "VariableDeclaration", - "scope": 3350, - "src": "4513:9:13", + "scope": 3455, + "src": "4513:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2054,10 +2053,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3335, + "id": 3440, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4513:7:13", + "src": "4513:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2068,11 +2067,11 @@ }, { "constant": false, - "id": 3338, + "id": 3443, "name": "b", "nodeType": "VariableDeclaration", - "scope": 3350, - "src": "4524:9:13", + "scope": 3455, + "src": "4524:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2080,10 +2079,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3337, + "id": 3442, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4524:7:13", + "src": "4524:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2093,19 +2092,19 @@ "visibility": "internal" } ], - "src": "4512:22:13" + "src": "4512:22:16" }, "returnParameters": { - "id": 3342, + "id": 3447, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3341, + "id": 3446, "name": "", "nodeType": "VariableDeclaration", - "scope": 3350, - "src": "4558:7:13", + "scope": 3455, + "src": "4558:7:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2113,10 +2112,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3340, + "id": 3445, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4558:7:13", + "src": "4558:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2126,19 +2125,19 @@ "visibility": "internal" } ], - "src": "4557:9:13" + "src": "4557:9:16" }, - "scope": 3374, - "src": "4500:128:13", + "scope": 3479, + "src": "4500:128:16", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 3372, + "id": 3477, "nodeType": "Block", - "src": "5227:68:13", + "src": "5227:68:16", "statements": [ { "expression": { @@ -2150,19 +2149,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 3364, + "id": 3469, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3362, + "id": 3467, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3354, - "src": "5245:1:13", + "referencedDeclaration": 3459, + "src": "5245:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2173,14 +2172,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 3363, + "id": 3468, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5250:1:13", + "src": "5250:1:16", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2188,7 +2187,7 @@ }, "value": "0" }, - "src": "5245:6:13", + "src": "5245:6:16", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2196,12 +2195,12 @@ }, { "argumentTypes": null, - "id": 3365, + "id": 3470, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3356, - "src": "5253:12:13", + "referencedDeclaration": 3461, + "src": "5253:12:16", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" @@ -2219,21 +2218,21 @@ "typeString": "string memory" } ], - "id": 3361, + "id": 3466, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "5237:7:13", + "referencedDeclaration": 4176, + "src": "5237:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 3366, + "id": 3471, "isConstant": false, "isLValue": false, "isPure": false, @@ -2241,15 +2240,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5237:29:13", + "src": "5237:29:16", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3367, + "id": 3472, "nodeType": "ExpressionStatement", - "src": "5237:29:13" + "src": "5237:29:16" }, { "expression": { @@ -2258,19 +2257,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 3370, + "id": 3475, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3368, + "id": 3473, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3352, - "src": "5283:1:13", + "referencedDeclaration": 3457, + "src": "5283:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2280,48 +2279,48 @@ "operator": "%", "rightExpression": { "argumentTypes": null, - "id": 3369, + "id": 3474, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3354, - "src": "5287:1:13", + "referencedDeclaration": 3459, + "src": "5287:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5283:5:13", + "src": "5283:5:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 3360, - "id": 3371, + "functionReturnParameters": 3465, + "id": 3476, "nodeType": "Return", - "src": "5276:12:13" + "src": "5276:12:16" } ] }, "documentation": "@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts with custom message when dividing by zero.\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.\n * _Available since v2.4.0._", - "id": 3373, + "id": 3478, "implemented": true, "kind": "function", "modifiers": [], "name": "mod", "nodeType": "FunctionDefinition", "parameters": { - "id": 3357, + "id": 3462, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3352, + "id": 3457, "name": "a", "nodeType": "VariableDeclaration", - "scope": 3373, - "src": "5145:9:13", + "scope": 3478, + "src": "5145:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2329,10 +2328,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3351, + "id": 3456, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5145:7:13", + "src": "5145:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2343,11 +2342,11 @@ }, { "constant": false, - "id": 3354, + "id": 3459, "name": "b", "nodeType": "VariableDeclaration", - "scope": 3373, - "src": "5156:9:13", + "scope": 3478, + "src": "5156:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2355,10 +2354,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3353, + "id": 3458, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5156:7:13", + "src": "5156:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2369,11 +2368,11 @@ }, { "constant": false, - "id": 3356, + "id": 3461, "name": "errorMessage", "nodeType": "VariableDeclaration", - "scope": 3373, - "src": "5167:26:13", + "scope": 3478, + "src": "5167:26:16", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -2381,10 +2380,10 @@ "typeString": "string" }, "typeName": { - "id": 3355, + "id": 3460, "name": "string", "nodeType": "ElementaryTypeName", - "src": "5167:6:13", + "src": "5167:6:16", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -2394,19 +2393,19 @@ "visibility": "internal" } ], - "src": "5144:50:13" + "src": "5144:50:16" }, "returnParameters": { - "id": 3360, + "id": 3465, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3359, + "id": 3464, "name": "", "nodeType": "VariableDeclaration", - "scope": 3373, - "src": "5218:7:13", + "scope": 3478, + "src": "5218:7:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2414,10 +2413,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3358, + "id": 3463, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5218:7:13", + "src": "5218:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2427,33 +2426,33 @@ "visibility": "internal" } ], - "src": "5217:9:13" + "src": "5217:9:16" }, - "scope": 3374, - "src": "5132:163:13", + "scope": 3479, + "src": "5132:163:16", "stateMutability": "pure", "superFunction": null, "visibility": "internal" } ], - "scope": 3375, - "src": "589:4708:13" + "scope": 3480, + "src": "589:4708:16" } ], - "src": "0:5298:13" + "src": "0:5298:16" }, "legacyAST": { "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", "exportedSymbols": { "SafeMath": [ - 3374 + 3479 ] }, - "id": 3375, + "id": 3480, "nodeType": "SourceUnit", "nodes": [ { - "id": 3189, + "id": 3294, "literals": [ "solidity", "^", @@ -2461,7 +2460,7 @@ ".0" ], "nodeType": "PragmaDirective", - "src": "0:23:13" + "src": "0:23:16" }, { "baseContracts": [], @@ -2469,31 +2468,31 @@ "contractKind": "library", "documentation": "@dev Wrappers over Solidity's arithmetic operations with added overflow\nchecks.\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\nin bugs, because programmers usually assume that an overflow raises an\nerror, which is the standard behavior in high level programming languages.\n`SafeMath` restores this intuition by reverting the transaction when an\noperation overflows.\n * Using this library instead of the unchecked operations eliminates an entire\nclass of bugs, so it's recommended to use it always.", "fullyImplemented": true, - "id": 3374, + "id": 3479, "linearizedBaseContracts": [ - 3374 + 3479 ], "name": "SafeMath", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 3213, + "id": 3318, "nodeType": "Block", - "src": "901:109:13", + "src": "901:109:16", "statements": [ { "assignments": [ - 3199 + 3304 ], "declarations": [ { "constant": false, - "id": 3199, + "id": 3304, "name": "c", "nodeType": "VariableDeclaration", - "scope": 3213, - "src": "911:9:13", + "scope": 3318, + "src": "911:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2501,10 +2500,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3198, + "id": 3303, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "911:7:13", + "src": "911:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2514,26 +2513,26 @@ "visibility": "internal" } ], - "id": 3203, + "id": 3308, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 3202, + "id": 3307, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3200, + "id": 3305, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3191, - "src": "923:1:13", + "referencedDeclaration": 3296, + "src": "923:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2543,25 +2542,25 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 3201, + "id": 3306, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3193, - "src": "927:1:13", + "referencedDeclaration": 3298, + "src": "927:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "923:5:13", + "src": "923:5:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "911:17:13" + "src": "911:17:16" }, { "expression": { @@ -2573,19 +2572,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 3207, + "id": 3312, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3205, + "id": 3310, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3199, - "src": "946:1:13", + "referencedDeclaration": 3304, + "src": "946:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2595,18 +2594,18 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 3206, + "id": 3311, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3191, - "src": "951:1:13", + "referencedDeclaration": 3296, + "src": "951:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "946:6:13", + "src": "946:6:16", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2615,14 +2614,14 @@ { "argumentTypes": null, "hexValue": "536166654d6174683a206164646974696f6e206f766572666c6f77", - "id": 3208, + "id": 3313, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "954:29:13", + "src": "954:29:16", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a", @@ -2642,21 +2641,21 @@ "typeString": "literal_string \"SafeMath: addition overflow\"" } ], - "id": 3204, + "id": 3309, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "938:7:13", + "referencedDeclaration": 4176, + "src": "938:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 3209, + "id": 3314, "isConstant": false, "isLValue": false, "isPure": false, @@ -2664,55 +2663,55 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "938:46:13", + "src": "938:46:16", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3210, + "id": 3315, "nodeType": "ExpressionStatement", - "src": "938:46:13" + "src": "938:46:16" }, { "expression": { "argumentTypes": null, - "id": 3211, + "id": 3316, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3199, - "src": "1002:1:13", + "referencedDeclaration": 3304, + "src": "1002:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 3197, - "id": 3212, + "functionReturnParameters": 3302, + "id": 3317, "nodeType": "Return", - "src": "995:8:13" + "src": "995:8:16" } ] }, "documentation": "@dev Returns the addition of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `+` operator.\n * Requirements:\n- Addition cannot overflow.", - "id": 3214, + "id": 3319, "implemented": true, "kind": "function", "modifiers": [], "name": "add", "nodeType": "FunctionDefinition", "parameters": { - "id": 3194, + "id": 3299, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3191, + "id": 3296, "name": "a", "nodeType": "VariableDeclaration", - "scope": 3214, - "src": "847:9:13", + "scope": 3319, + "src": "847:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2720,10 +2719,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3190, + "id": 3295, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "847:7:13", + "src": "847:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2734,11 +2733,11 @@ }, { "constant": false, - "id": 3193, + "id": 3298, "name": "b", "nodeType": "VariableDeclaration", - "scope": 3214, - "src": "858:9:13", + "scope": 3319, + "src": "858:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2746,10 +2745,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3192, + "id": 3297, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "858:7:13", + "src": "858:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2759,19 +2758,19 @@ "visibility": "internal" } ], - "src": "846:22:13" + "src": "846:22:16" }, "returnParameters": { - "id": 3197, + "id": 3302, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3196, + "id": 3301, "name": "", "nodeType": "VariableDeclaration", - "scope": 3214, - "src": "892:7:13", + "scope": 3319, + "src": "892:7:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2779,10 +2778,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3195, + "id": 3300, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "892:7:13", + "src": "892:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2792,19 +2791,19 @@ "visibility": "internal" } ], - "src": "891:9:13" + "src": "891:9:16" }, - "scope": 3374, - "src": "834:176:13", + "scope": 3479, + "src": "834:176:16", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 3229, + "id": 3334, "nodeType": "Block", - "src": "1341:67:13", + "src": "1341:67:16", "statements": [ { "expression": { @@ -2812,12 +2811,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3224, + "id": 3329, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3216, - "src": "1362:1:13", + "referencedDeclaration": 3321, + "src": "1362:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2825,12 +2824,12 @@ }, { "argumentTypes": null, - "id": 3225, + "id": 3330, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3218, - "src": "1365:1:13", + "referencedDeclaration": 3323, + "src": "1365:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2839,14 +2838,14 @@ { "argumentTypes": null, "hexValue": "536166654d6174683a207375627472616374696f6e206f766572666c6f77", - "id": 3226, + "id": 3331, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1368:32:13", + "src": "1368:32:16", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862", @@ -2870,21 +2869,21 @@ "typeString": "literal_string \"SafeMath: subtraction overflow\"" } ], - "id": 3223, + "id": 3328, "name": "sub", "nodeType": "Identifier", "overloadedDeclarations": [ - 3230, - 3257 + 3335, + 3362 ], - "referencedDeclaration": 3257, - "src": "1358:3:13", + "referencedDeclaration": 3362, + "src": "1358:3:16", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" } }, - "id": 3227, + "id": 3332, "isConstant": false, "isLValue": false, "isPure": false, @@ -2892,37 +2891,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1358:43:13", + "src": "1358:43:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 3222, - "id": 3228, + "functionReturnParameters": 3327, + "id": 3333, "nodeType": "Return", - "src": "1351:50:13" + "src": "1351:50:16" } ] }, "documentation": "@dev Returns the subtraction of two unsigned integers, reverting on\noverflow (when the result is negative).\n * Counterpart to Solidity's `-` operator.\n * Requirements:\n- Subtraction cannot overflow.", - "id": 3230, + "id": 3335, "implemented": true, "kind": "function", "modifiers": [], "name": "sub", "nodeType": "FunctionDefinition", "parameters": { - "id": 3219, + "id": 3324, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3216, + "id": 3321, "name": "a", "nodeType": "VariableDeclaration", - "scope": 3230, - "src": "1287:9:13", + "scope": 3335, + "src": "1287:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2930,10 +2929,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3215, + "id": 3320, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1287:7:13", + "src": "1287:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2944,11 +2943,11 @@ }, { "constant": false, - "id": 3218, + "id": 3323, "name": "b", "nodeType": "VariableDeclaration", - "scope": 3230, - "src": "1298:9:13", + "scope": 3335, + "src": "1298:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2956,10 +2955,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3217, + "id": 3322, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1298:7:13", + "src": "1298:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2969,19 +2968,19 @@ "visibility": "internal" } ], - "src": "1286:22:13" + "src": "1286:22:16" }, "returnParameters": { - "id": 3222, + "id": 3327, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3221, + "id": 3326, "name": "", "nodeType": "VariableDeclaration", - "scope": 3230, - "src": "1332:7:13", + "scope": 3335, + "src": "1332:7:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2989,10 +2988,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3220, + "id": 3325, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1332:7:13", + "src": "1332:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3002,19 +3001,19 @@ "visibility": "internal" } ], - "src": "1331:9:13" + "src": "1331:9:16" }, - "scope": 3374, - "src": "1274:134:13", + "scope": 3479, + "src": "1274:134:16", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 3256, + "id": 3361, "nodeType": "Block", - "src": "1827:92:13", + "src": "1827:92:16", "statements": [ { "expression": { @@ -3026,19 +3025,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 3244, + "id": 3349, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3242, + "id": 3347, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3234, - "src": "1845:1:13", + "referencedDeclaration": 3339, + "src": "1845:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3048,18 +3047,18 @@ "operator": "<=", "rightExpression": { "argumentTypes": null, - "id": 3243, + "id": 3348, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3232, - "src": "1850:1:13", + "referencedDeclaration": 3337, + "src": "1850:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1845:6:13", + "src": "1845:6:16", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3067,12 +3066,12 @@ }, { "argumentTypes": null, - "id": 3245, + "id": 3350, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3236, - "src": "1853:12:13", + "referencedDeclaration": 3341, + "src": "1853:12:16", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" @@ -3090,21 +3089,21 @@ "typeString": "string memory" } ], - "id": 3241, + "id": 3346, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "1837:7:13", + "referencedDeclaration": 4176, + "src": "1837:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 3246, + "id": 3351, "isConstant": false, "isLValue": false, "isPure": false, @@ -3112,28 +3111,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1837:29:13", + "src": "1837:29:16", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3247, + "id": 3352, "nodeType": "ExpressionStatement", - "src": "1837:29:13" + "src": "1837:29:16" }, { "assignments": [ - 3249 + 3354 ], "declarations": [ { "constant": false, - "id": 3249, + "id": 3354, "name": "c", "nodeType": "VariableDeclaration", - "scope": 3256, - "src": "1876:9:13", + "scope": 3361, + "src": "1876:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3141,10 +3140,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3248, + "id": 3353, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1876:7:13", + "src": "1876:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3154,26 +3153,26 @@ "visibility": "internal" } ], - "id": 3253, + "id": 3358, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 3252, + "id": 3357, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3250, + "id": 3355, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3232, - "src": "1888:1:13", + "referencedDeclaration": 3337, + "src": "1888:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3183,65 +3182,65 @@ "operator": "-", "rightExpression": { "argumentTypes": null, - "id": 3251, + "id": 3356, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3234, - "src": "1892:1:13", + "referencedDeclaration": 3339, + "src": "1892:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1888:5:13", + "src": "1888:5:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1876:17:13" + "src": "1876:17:16" }, { "expression": { "argumentTypes": null, - "id": 3254, + "id": 3359, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3249, - "src": "1911:1:13", + "referencedDeclaration": 3354, + "src": "1911:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 3240, - "id": 3255, + "functionReturnParameters": 3345, + "id": 3360, "nodeType": "Return", - "src": "1904:8:13" + "src": "1904:8:16" } ] }, "documentation": "@dev Returns the subtraction of two unsigned integers, reverting with custom message on\noverflow (when the result is negative).\n * Counterpart to Solidity's `-` operator.\n * Requirements:\n- Subtraction cannot overflow.\n * _Available since v2.4.0._", - "id": 3257, + "id": 3362, "implemented": true, "kind": "function", "modifiers": [], "name": "sub", "nodeType": "FunctionDefinition", "parameters": { - "id": 3237, + "id": 3342, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3232, + "id": 3337, "name": "a", "nodeType": "VariableDeclaration", - "scope": 3257, - "src": "1745:9:13", + "scope": 3362, + "src": "1745:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3249,10 +3248,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3231, + "id": 3336, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1745:7:13", + "src": "1745:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3263,11 +3262,11 @@ }, { "constant": false, - "id": 3234, + "id": 3339, "name": "b", "nodeType": "VariableDeclaration", - "scope": 3257, - "src": "1756:9:13", + "scope": 3362, + "src": "1756:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3275,10 +3274,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3233, + "id": 3338, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1756:7:13", + "src": "1756:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3289,11 +3288,11 @@ }, { "constant": false, - "id": 3236, + "id": 3341, "name": "errorMessage", "nodeType": "VariableDeclaration", - "scope": 3257, - "src": "1767:26:13", + "scope": 3362, + "src": "1767:26:16", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -3301,10 +3300,10 @@ "typeString": "string" }, "typeName": { - "id": 3235, + "id": 3340, "name": "string", "nodeType": "ElementaryTypeName", - "src": "1767:6:13", + "src": "1767:6:16", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -3314,19 +3313,19 @@ "visibility": "internal" } ], - "src": "1744:50:13" + "src": "1744:50:16" }, "returnParameters": { - "id": 3240, + "id": 3345, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3239, + "id": 3344, "name": "", "nodeType": "VariableDeclaration", - "scope": 3257, - "src": "1818:7:13", + "scope": 3362, + "src": "1818:7:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3334,10 +3333,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3238, + "id": 3343, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1818:7:13", + "src": "1818:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3347,19 +3346,19 @@ "visibility": "internal" } ], - "src": "1817:9:13" + "src": "1817:9:16" }, - "scope": 3374, - "src": "1732:187:13", + "scope": 3479, + "src": "1732:187:16", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 3290, + "id": 3395, "nodeType": "Block", - "src": "2226:392:13", + "src": "2226:392:16", "statements": [ { "condition": { @@ -3368,19 +3367,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 3268, + "id": 3373, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3266, + "id": 3371, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3259, - "src": "2458:1:13", + "referencedDeclaration": 3364, + "src": "2458:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3391,14 +3390,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 3267, + "id": 3372, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2463:1:13", + "src": "2463:1:16", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3406,33 +3405,33 @@ }, "value": "0" }, - "src": "2458:6:13", + "src": "2458:6:16", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 3272, + "id": 3377, "nodeType": "IfStatement", - "src": "2454:45:13", + "src": "2454:45:16", "trueBody": { - "id": 3271, + "id": 3376, "nodeType": "Block", - "src": "2466:33:13", + "src": "2466:33:16", "statements": [ { "expression": { "argumentTypes": null, "hexValue": "30", - "id": 3269, + "id": 3374, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2487:1:13", + "src": "2487:1:16", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3440,26 +3439,26 @@ }, "value": "0" }, - "functionReturnParameters": 3265, - "id": 3270, + "functionReturnParameters": 3370, + "id": 3375, "nodeType": "Return", - "src": "2480:8:13" + "src": "2480:8:16" } ] } }, { "assignments": [ - 3274 + 3379 ], "declarations": [ { "constant": false, - "id": 3274, + "id": 3379, "name": "c", "nodeType": "VariableDeclaration", - "scope": 3290, - "src": "2509:9:13", + "scope": 3395, + "src": "2509:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3467,10 +3466,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3273, + "id": 3378, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2509:7:13", + "src": "2509:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3480,26 +3479,26 @@ "visibility": "internal" } ], - "id": 3278, + "id": 3383, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 3277, + "id": 3382, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3275, + "id": 3380, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3259, - "src": "2521:1:13", + "referencedDeclaration": 3364, + "src": "2521:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3509,25 +3508,25 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 3276, + "id": 3381, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3261, - "src": "2525:1:13", + "referencedDeclaration": 3366, + "src": "2525:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2521:5:13", + "src": "2521:5:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "2509:17:13" + "src": "2509:17:16" }, { "expression": { @@ -3539,7 +3538,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 3284, + "id": 3389, "isConstant": false, "isLValue": false, "isPure": false, @@ -3550,19 +3549,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 3282, + "id": 3387, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3280, + "id": 3385, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3274, - "src": "2544:1:13", + "referencedDeclaration": 3379, + "src": "2544:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3572,18 +3571,18 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 3281, + "id": 3386, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3259, - "src": "2548:1:13", + "referencedDeclaration": 3364, + "src": "2548:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2544:5:13", + "src": "2544:5:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3593,18 +3592,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 3283, + "id": 3388, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3261, - "src": "2553:1:13", + "referencedDeclaration": 3366, + "src": "2553:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2544:10:13", + "src": "2544:10:16", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3613,14 +3612,14 @@ { "argumentTypes": null, "hexValue": "536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77", - "id": 3285, + "id": 3390, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2556:35:13", + "src": "2556:35:16", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3", @@ -3640,21 +3639,21 @@ "typeString": "literal_string \"SafeMath: multiplication overflow\"" } ], - "id": 3279, + "id": 3384, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "2536:7:13", + "referencedDeclaration": 4176, + "src": "2536:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 3286, + "id": 3391, "isConstant": false, "isLValue": false, "isPure": false, @@ -3662,55 +3661,55 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2536:56:13", + "src": "2536:56:16", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3287, + "id": 3392, "nodeType": "ExpressionStatement", - "src": "2536:56:13" + "src": "2536:56:16" }, { "expression": { "argumentTypes": null, - "id": 3288, + "id": 3393, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3274, - "src": "2610:1:13", + "referencedDeclaration": 3379, + "src": "2610:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 3265, - "id": 3289, + "functionReturnParameters": 3370, + "id": 3394, "nodeType": "Return", - "src": "2603:8:13" + "src": "2603:8:16" } ] }, "documentation": "@dev Returns the multiplication of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `*` operator.\n * Requirements:\n- Multiplication cannot overflow.", - "id": 3291, + "id": 3396, "implemented": true, "kind": "function", "modifiers": [], "name": "mul", "nodeType": "FunctionDefinition", "parameters": { - "id": 3262, + "id": 3367, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3259, + "id": 3364, "name": "a", "nodeType": "VariableDeclaration", - "scope": 3291, - "src": "2172:9:13", + "scope": 3396, + "src": "2172:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3718,10 +3717,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3258, + "id": 3363, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2172:7:13", + "src": "2172:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3732,11 +3731,11 @@ }, { "constant": false, - "id": 3261, + "id": 3366, "name": "b", "nodeType": "VariableDeclaration", - "scope": 3291, - "src": "2183:9:13", + "scope": 3396, + "src": "2183:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3744,10 +3743,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3260, + "id": 3365, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2183:7:13", + "src": "2183:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3757,19 +3756,19 @@ "visibility": "internal" } ], - "src": "2171:22:13" + "src": "2171:22:16" }, "returnParameters": { - "id": 3265, + "id": 3370, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3264, + "id": 3369, "name": "", "nodeType": "VariableDeclaration", - "scope": 3291, - "src": "2217:7:13", + "scope": 3396, + "src": "2217:7:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3777,10 +3776,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3263, + "id": 3368, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2217:7:13", + "src": "2217:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3790,19 +3789,19 @@ "visibility": "internal" } ], - "src": "2216:9:13" + "src": "2216:9:16" }, - "scope": 3374, - "src": "2159:459:13", + "scope": 3479, + "src": "2159:459:16", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 3306, + "id": 3411, "nodeType": "Block", - "src": "3140:63:13", + "src": "3140:63:16", "statements": [ { "expression": { @@ -3810,12 +3809,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3301, + "id": 3406, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3293, - "src": "3161:1:13", + "referencedDeclaration": 3398, + "src": "3161:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3823,12 +3822,12 @@ }, { "argumentTypes": null, - "id": 3302, + "id": 3407, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3295, - "src": "3164:1:13", + "referencedDeclaration": 3400, + "src": "3164:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3837,14 +3836,14 @@ { "argumentTypes": null, "hexValue": "536166654d6174683a206469766973696f6e206279207a65726f", - "id": 3303, + "id": 3408, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "3167:28:13", + "src": "3167:28:16", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f", @@ -3868,21 +3867,21 @@ "typeString": "literal_string \"SafeMath: division by zero\"" } ], - "id": 3300, + "id": 3405, "name": "div", "nodeType": "Identifier", "overloadedDeclarations": [ - 3307, - 3334 + 3412, + 3439 ], - "referencedDeclaration": 3334, - "src": "3157:3:13", + "referencedDeclaration": 3439, + "src": "3157:3:16", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" } }, - "id": 3304, + "id": 3409, "isConstant": false, "isLValue": false, "isPure": false, @@ -3890,37 +3889,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3157:39:13", + "src": "3157:39:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 3299, - "id": 3305, + "functionReturnParameters": 3404, + "id": 3410, "nodeType": "Return", - "src": "3150:46:13" + "src": "3150:46:16" } ] }, "documentation": "@dev Returns the integer division of two unsigned integers. Reverts on\ndivision by zero. The result is rounded towards zero.\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.", - "id": 3307, + "id": 3412, "implemented": true, "kind": "function", "modifiers": [], "name": "div", "nodeType": "FunctionDefinition", "parameters": { - "id": 3296, + "id": 3401, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3293, + "id": 3398, "name": "a", "nodeType": "VariableDeclaration", - "scope": 3307, - "src": "3086:9:13", + "scope": 3412, + "src": "3086:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3928,10 +3927,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3292, + "id": 3397, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3086:7:13", + "src": "3086:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3942,11 +3941,11 @@ }, { "constant": false, - "id": 3295, + "id": 3400, "name": "b", "nodeType": "VariableDeclaration", - "scope": 3307, - "src": "3097:9:13", + "scope": 3412, + "src": "3097:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3954,10 +3953,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3294, + "id": 3399, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3097:7:13", + "src": "3097:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3967,19 +3966,19 @@ "visibility": "internal" } ], - "src": "3085:22:13" + "src": "3085:22:16" }, "returnParameters": { - "id": 3299, + "id": 3404, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3298, + "id": 3403, "name": "", "nodeType": "VariableDeclaration", - "scope": 3307, - "src": "3131:7:13", + "scope": 3412, + "src": "3131:7:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3987,10 +3986,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3297, + "id": 3402, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3131:7:13", + "src": "3131:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4000,19 +3999,19 @@ "visibility": "internal" } ], - "src": "3130:9:13" + "src": "3130:9:16" }, - "scope": 3374, - "src": "3073:130:13", + "scope": 3479, + "src": "3073:130:16", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 3333, + "id": 3438, "nodeType": "Block", - "src": "3813:243:13", + "src": "3813:243:16", "statements": [ { "expression": { @@ -4024,19 +4023,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 3321, + "id": 3426, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3319, + "id": 3424, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3311, - "src": "3897:1:13", + "referencedDeclaration": 3416, + "src": "3897:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4047,14 +4046,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 3320, + "id": 3425, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3901:1:13", + "src": "3901:1:16", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4062,7 +4061,7 @@ }, "value": "0" }, - "src": "3897:5:13", + "src": "3897:5:16", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4070,12 +4069,12 @@ }, { "argumentTypes": null, - "id": 3322, + "id": 3427, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3313, - "src": "3904:12:13", + "referencedDeclaration": 3418, + "src": "3904:12:16", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" @@ -4093,21 +4092,21 @@ "typeString": "string memory" } ], - "id": 3318, + "id": 3423, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "3889:7:13", + "referencedDeclaration": 4176, + "src": "3889:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 3323, + "id": 3428, "isConstant": false, "isLValue": false, "isPure": false, @@ -4115,28 +4114,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3889:28:13", + "src": "3889:28:16", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3324, + "id": 3429, "nodeType": "ExpressionStatement", - "src": "3889:28:13" + "src": "3889:28:16" }, { "assignments": [ - 3326 + 3431 ], "declarations": [ { "constant": false, - "id": 3326, + "id": 3431, "name": "c", "nodeType": "VariableDeclaration", - "scope": 3333, - "src": "3927:9:13", + "scope": 3438, + "src": "3927:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4144,10 +4143,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3325, + "id": 3430, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3927:7:13", + "src": "3927:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4157,26 +4156,26 @@ "visibility": "internal" } ], - "id": 3330, + "id": 3435, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 3329, + "id": 3434, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3327, + "id": 3432, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3309, - "src": "3939:1:13", + "referencedDeclaration": 3414, + "src": "3939:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4186,65 +4185,65 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 3328, + "id": 3433, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3311, - "src": "3943:1:13", + "referencedDeclaration": 3416, + "src": "3943:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3939:5:13", + "src": "3939:5:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "3927:17:13" + "src": "3927:17:16" }, { "expression": { "argumentTypes": null, - "id": 3331, + "id": 3436, "name": "c", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3326, - "src": "4048:1:13", + "referencedDeclaration": 3431, + "src": "4048:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 3317, - "id": 3332, + "functionReturnParameters": 3422, + "id": 3437, "nodeType": "Return", - "src": "4041:8:13" + "src": "4041:8:16" } ] }, "documentation": "@dev Returns the integer division of two unsigned integers. Reverts with custom message on\ndivision by zero. The result is rounded towards zero.\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.\n * _Available since v2.4.0._", - "id": 3334, + "id": 3439, "implemented": true, "kind": "function", "modifiers": [], "name": "div", "nodeType": "FunctionDefinition", "parameters": { - "id": 3314, + "id": 3419, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3309, + "id": 3414, "name": "a", "nodeType": "VariableDeclaration", - "scope": 3334, - "src": "3731:9:13", + "scope": 3439, + "src": "3731:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4252,10 +4251,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3308, + "id": 3413, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3731:7:13", + "src": "3731:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4266,11 +4265,11 @@ }, { "constant": false, - "id": 3311, + "id": 3416, "name": "b", "nodeType": "VariableDeclaration", - "scope": 3334, - "src": "3742:9:13", + "scope": 3439, + "src": "3742:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4278,10 +4277,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3310, + "id": 3415, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3742:7:13", + "src": "3742:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4292,11 +4291,11 @@ }, { "constant": false, - "id": 3313, + "id": 3418, "name": "errorMessage", "nodeType": "VariableDeclaration", - "scope": 3334, - "src": "3753:26:13", + "scope": 3439, + "src": "3753:26:16", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -4304,10 +4303,10 @@ "typeString": "string" }, "typeName": { - "id": 3312, + "id": 3417, "name": "string", "nodeType": "ElementaryTypeName", - "src": "3753:6:13", + "src": "3753:6:16", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -4317,19 +4316,19 @@ "visibility": "internal" } ], - "src": "3730:50:13" + "src": "3730:50:16" }, "returnParameters": { - "id": 3317, + "id": 3422, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3316, + "id": 3421, "name": "", "nodeType": "VariableDeclaration", - "scope": 3334, - "src": "3804:7:13", + "scope": 3439, + "src": "3804:7:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4337,10 +4336,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3315, + "id": 3420, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3804:7:13", + "src": "3804:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4350,19 +4349,19 @@ "visibility": "internal" } ], - "src": "3803:9:13" + "src": "3803:9:16" }, - "scope": 3374, - "src": "3718:338:13", + "scope": 3479, + "src": "3718:338:16", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 3349, + "id": 3454, "nodeType": "Block", - "src": "4567:61:13", + "src": "4567:61:16", "statements": [ { "expression": { @@ -4370,12 +4369,12 @@ "arguments": [ { "argumentTypes": null, - "id": 3344, + "id": 3449, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3336, - "src": "4588:1:13", + "referencedDeclaration": 3441, + "src": "4588:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4383,12 +4382,12 @@ }, { "argumentTypes": null, - "id": 3345, + "id": 3450, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3338, - "src": "4591:1:13", + "referencedDeclaration": 3443, + "src": "4591:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4397,14 +4396,14 @@ { "argumentTypes": null, "hexValue": "536166654d6174683a206d6f64756c6f206279207a65726f", - "id": 3346, + "id": 3451, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "4594:26:13", + "src": "4594:26:16", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832", @@ -4428,21 +4427,21 @@ "typeString": "literal_string \"SafeMath: modulo by zero\"" } ], - "id": 3343, + "id": 3448, "name": "mod", "nodeType": "Identifier", "overloadedDeclarations": [ - 3350, - 3373 + 3455, + 3478 ], - "referencedDeclaration": 3373, - "src": "4584:3:13", + "referencedDeclaration": 3478, + "src": "4584:3:16", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$", "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" } }, - "id": 3347, + "id": 3452, "isConstant": false, "isLValue": false, "isPure": false, @@ -4450,37 +4449,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4584:37:13", + "src": "4584:37:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 3342, - "id": 3348, + "functionReturnParameters": 3447, + "id": 3453, "nodeType": "Return", - "src": "4577:44:13" + "src": "4577:44:16" } ] }, "documentation": "@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts when dividing by zero.\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.", - "id": 3350, + "id": 3455, "implemented": true, "kind": "function", "modifiers": [], "name": "mod", "nodeType": "FunctionDefinition", "parameters": { - "id": 3339, + "id": 3444, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3336, + "id": 3441, "name": "a", "nodeType": "VariableDeclaration", - "scope": 3350, - "src": "4513:9:13", + "scope": 3455, + "src": "4513:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4488,10 +4487,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3335, + "id": 3440, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4513:7:13", + "src": "4513:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4502,11 +4501,11 @@ }, { "constant": false, - "id": 3338, + "id": 3443, "name": "b", "nodeType": "VariableDeclaration", - "scope": 3350, - "src": "4524:9:13", + "scope": 3455, + "src": "4524:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4514,10 +4513,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3337, + "id": 3442, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4524:7:13", + "src": "4524:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4527,19 +4526,19 @@ "visibility": "internal" } ], - "src": "4512:22:13" + "src": "4512:22:16" }, "returnParameters": { - "id": 3342, + "id": 3447, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3341, + "id": 3446, "name": "", "nodeType": "VariableDeclaration", - "scope": 3350, - "src": "4558:7:13", + "scope": 3455, + "src": "4558:7:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4547,10 +4546,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3340, + "id": 3445, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4558:7:13", + "src": "4558:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4560,19 +4559,19 @@ "visibility": "internal" } ], - "src": "4557:9:13" + "src": "4557:9:16" }, - "scope": 3374, - "src": "4500:128:13", + "scope": 3479, + "src": "4500:128:16", "stateMutability": "pure", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 3372, + "id": 3477, "nodeType": "Block", - "src": "5227:68:13", + "src": "5227:68:16", "statements": [ { "expression": { @@ -4584,19 +4583,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 3364, + "id": 3469, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3362, + "id": 3467, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3354, - "src": "5245:1:13", + "referencedDeclaration": 3459, + "src": "5245:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4607,14 +4606,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 3363, + "id": 3468, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5250:1:13", + "src": "5250:1:16", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4622,7 +4621,7 @@ }, "value": "0" }, - "src": "5245:6:13", + "src": "5245:6:16", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4630,12 +4629,12 @@ }, { "argumentTypes": null, - "id": 3365, + "id": 3470, "name": "errorMessage", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3356, - "src": "5253:12:13", + "referencedDeclaration": 3461, + "src": "5253:12:16", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" @@ -4653,21 +4652,21 @@ "typeString": "string memory" } ], - "id": 3361, + "id": 3466, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, - "src": "5237:7:13", + "referencedDeclaration": 4176, + "src": "5237:7:16", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, - "id": 3366, + "id": 3471, "isConstant": false, "isLValue": false, "isPure": false, @@ -4675,15 +4674,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5237:29:13", + "src": "5237:29:16", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 3367, + "id": 3472, "nodeType": "ExpressionStatement", - "src": "5237:29:13" + "src": "5237:29:16" }, { "expression": { @@ -4692,19 +4691,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 3370, + "id": 3475, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 3368, + "id": 3473, "name": "a", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3352, - "src": "5283:1:13", + "referencedDeclaration": 3457, + "src": "5283:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4714,48 +4713,48 @@ "operator": "%", "rightExpression": { "argumentTypes": null, - "id": 3369, + "id": 3474, "name": "b", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3354, - "src": "5287:1:13", + "referencedDeclaration": 3459, + "src": "5287:1:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5283:5:13", + "src": "5283:5:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 3360, - "id": 3371, + "functionReturnParameters": 3465, + "id": 3476, "nodeType": "Return", - "src": "5276:12:13" + "src": "5276:12:16" } ] }, "documentation": "@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts with custom message when dividing by zero.\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.\n * _Available since v2.4.0._", - "id": 3373, + "id": 3478, "implemented": true, "kind": "function", "modifiers": [], "name": "mod", "nodeType": "FunctionDefinition", "parameters": { - "id": 3357, + "id": 3462, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3352, + "id": 3457, "name": "a", "nodeType": "VariableDeclaration", - "scope": 3373, - "src": "5145:9:13", + "scope": 3478, + "src": "5145:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4763,10 +4762,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3351, + "id": 3456, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5145:7:13", + "src": "5145:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4777,11 +4776,11 @@ }, { "constant": false, - "id": 3354, + "id": 3459, "name": "b", "nodeType": "VariableDeclaration", - "scope": 3373, - "src": "5156:9:13", + "scope": 3478, + "src": "5156:9:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4789,10 +4788,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3353, + "id": 3458, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5156:7:13", + "src": "5156:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4803,11 +4802,11 @@ }, { "constant": false, - "id": 3356, + "id": 3461, "name": "errorMessage", "nodeType": "VariableDeclaration", - "scope": 3373, - "src": "5167:26:13", + "scope": 3478, + "src": "5167:26:16", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -4815,10 +4814,10 @@ "typeString": "string" }, "typeName": { - "id": 3355, + "id": 3460, "name": "string", "nodeType": "ElementaryTypeName", - "src": "5167:6:13", + "src": "5167:6:16", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -4828,19 +4827,19 @@ "visibility": "internal" } ], - "src": "5144:50:13" + "src": "5144:50:16" }, "returnParameters": { - "id": 3360, + "id": 3465, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 3359, + "id": 3464, "name": "", "nodeType": "VariableDeclaration", - "scope": 3373, - "src": "5218:7:13", + "scope": 3478, + "src": "5218:7:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4848,10 +4847,10 @@ "typeString": "uint256" }, "typeName": { - "id": 3358, + "id": 3463, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5218:7:13", + "src": "5218:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4861,28 +4860,28 @@ "visibility": "internal" } ], - "src": "5217:9:13" + "src": "5217:9:16" }, - "scope": 3374, - "src": "5132:163:13", + "scope": 3479, + "src": "5132:163:16", "stateMutability": "pure", "superFunction": null, "visibility": "internal" } ], - "scope": 3375, - "src": "589:4708:13" + "scope": 3480, + "src": "589:4708:16" } ], - "src": "0:5298:13" + "src": "0:5298:16" }, "compiler": { "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" + "version": "0.5.2+commit.1df8f40c.Emscripten.clang" }, "networks": {}, - "schemaVersion": "3.0.23", - "updatedAt": "2020-02-16T12:52:29.811Z", + "schemaVersion": "3.0.1", + "updatedAt": "2020-02-16T14:54:14.904Z", "devdoc": { "details": "Wrappers over Solidity's arithmetic operations with added overflow checks. * Arithmetic operations in Solidity wrap on overflow. This can easily result in bugs, because programmers usually assume that an overflow raises an error, which is the standard behavior in high level programming languages. `SafeMath` restores this intuition by reverting the transaction when an operation overflows. * Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.", "methods": {} diff --git a/truffle/build/contracts/TestERC20Token.json b/truffle/build/contracts/TestERC20Token.json index 510287f..3fd21a7 100644 --- a/truffle/build/contracts/TestERC20Token.json +++ b/truffle/build/contracts/TestERC20Token.json @@ -2,140 +2,107 @@ "contractName": "TestERC20Token", "abi": [ { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", "name": "spender", "type": "address" }, { - "indexed": false, - "internalType": "uint256", - "name": "value", + "name": "amount", "type": "uint256" } ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ + "name": "approve", + "outputs": [ { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" + "name": "", + "type": "bool" } ], - "name": "MinterAdded", - "type": "event" + "payable": false, + "stateMutability": "nonpayable", + "type": "function" }, { - "anonymous": false, - "inputs": [ + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" + "name": "", + "type": "uint256" } ], - "name": "MinterRemoved", - "type": "event" + "payable": false, + "stateMutability": "view", + "type": "function" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": true, - "internalType": "address", - "name": "from", + "name": "sender", "type": "address" }, { - "indexed": true, - "internalType": "address", - "name": "to", + "name": "recipient", "type": "address" }, { - "indexed": false, - "internalType": "uint256", - "name": "value", + "name": "amount", "type": "uint256" } ], - "name": "Transfer", - "type": "event" - }, - { - "constant": false, - "inputs": [ + "name": "transferFrom", + "outputs": [ { - "internalType": "address", - "name": "account", - "type": "address" + "name": "", + "type": "bool" } ], - "name": "addMinter", - "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { - "constant": true, + "constant": false, "inputs": [ { - "internalType": "address", - "name": "owner", + "name": "spender", "type": "address" }, { - "internalType": "address", - "name": "spender", - "type": "address" + "name": "addedValue", + "type": "uint256" } ], - "name": "allowance", + "name": "increaseAllowance", "outputs": [ { - "internalType": "uint256", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { - "internalType": "address", - "name": "spender", + "name": "account", "type": "address" }, { - "internalType": "uint256", "name": "amount", "type": "uint256" } ], - "name": "approve", + "name": "mint", "outputs": [ { - "internalType": "bool", "name": "", "type": "bool" } @@ -148,7 +115,6 @@ "constant": true, "inputs": [ { - "internalType": "address", "name": "account", "type": "address" } @@ -156,7 +122,6 @@ "name": "balanceOf", "outputs": [ { - "internalType": "uint256", "name": "", "type": "uint256" } @@ -169,12 +134,33 @@ "constant": false, "inputs": [ { - "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { "name": "spender", "type": "address" }, { - "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } @@ -182,7 +168,6 @@ "name": "decreaseAllowance", "outputs": [ { - "internalType": "bool", "name": "", "type": "bool" } @@ -195,20 +180,17 @@ "constant": false, "inputs": [ { - "internalType": "address", - "name": "spender", + "name": "recipient", "type": "address" }, { - "internalType": "uint256", - "name": "addedValue", + "name": "amount", "type": "uint256" } ], - "name": "increaseAllowance", + "name": "transfer", "outputs": [ { - "internalType": "bool", "name": "", "type": "bool" } @@ -221,7 +203,6 @@ "constant": true, "inputs": [ { - "internalType": "address", "name": "account", "type": "address" } @@ -229,7 +210,6 @@ "name": "isMinter", "outputs": [ { - "internalType": "bool", "name": "", "type": "bool" } @@ -239,122 +219,105 @@ "type": "function" }, { - "constant": false, + "constant": true, "inputs": [ { - "internalType": "address", - "name": "account", + "name": "owner", "type": "address" }, { - "internalType": "uint256", - "name": "amount", - "type": "uint256" + "name": "spender", + "type": "address" } ], - "name": "mint", + "name": "allowance", "outputs": [ { - "internalType": "bool", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function" }, { - "constant": false, - "inputs": [], - "name": "renounceMinter", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "MinterAdded", + "type": "event" }, { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ + "anonymous": false, + "inputs": [ { - "internalType": "uint256", - "name": "", - "type": "uint256" + "indexed": true, + "name": "account", + "type": "address" } ], - "payable": false, - "stateMutability": "view", - "type": "function" + "name": "MinterRemoved", + "type": "event" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "internalType": "address", - "name": "recipient", + "indexed": true, + "name": "from", "type": "address" }, { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ + "indexed": true, + "name": "to", + "type": "address" + }, { - "internalType": "bool", - "name": "", - "type": "bool" + "indexed": false, + "name": "value", + "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" + "name": "Transfer", + "type": "event" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "internalType": "address", - "name": "sender", + "indexed": true, + "name": "owner", "type": "address" }, { - "internalType": "address", - "name": "recipient", + "indexed": true, + "name": "spender", "type": "address" }, { - "internalType": "uint256", - "name": "amount", + "indexed": false, + "name": "value", "type": "uint256" } ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" + "name": "Approval", + "type": "event" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. * Requirements: * - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address.\"},\"mint(address,uint256)\":{\"details\":\"See {ERC20-_mint}. * Requirements: * - the caller must have the {MinterRole}.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. * Requirements: * - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. * Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; * Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for `sender`'s tokens of at least `amount`.\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/mocks/TestERC20Token.sol\":\"TestERC20Token\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":1500},\"remappings\":[]},\"sources\":{\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/mocks/TestERC20Token.sol\":{\"keccak256\":\"0xf91ff489d08d5392aff86f45e7ddbe96ea5d5ae88e4c7795d38704838789ee59\",\"urls\":[\"bzz-raw://6804945c3f438ac7c2db938e7051ca2b0c0a36508f2e5ec77a45a15cdbc9dd9a\",\"dweb:/ipfs/QmYS4RBH2LNdoKCES4u2kFXGyUwWUPNTEffwQir1meLw2K\"]},\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"keccak256\":\"0x90a3995645af7562d84b9d69363ffa5ae7217714ab61e951bf7bc450f40e4061\",\"urls\":[\"bzz-raw://216ef9d6b614db4eb46970b4e84903f2534a45572dd30a79f0041f1a5830f436\",\"dweb:/ipfs/QmNPrJ4MWKUAWzKXpUqeyKRUfosaoANZAqXgvepdrCwZAG\"]},\"openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0xb002c378d7b82a101bd659c341518953ca0919d342c0a400196982c0e7e7bcdb\",\"urls\":[\"bzz-raw://00a788c4631466c220b385bdd100c571d24b2deccd657615cfbcef6cadf669a4\",\"dweb:/ipfs/QmTEwDbjJNxmMNCDMqtuou3dyM8Wtp8Q9NFvn7SAVM7Jf3\"]},\"openzeppelin-solidity/contracts/access/roles/MinterRole.sol\":{\"keccak256\":\"0xbe8eef6f2cb4e427f5c5d8a76865ccd06e55a4f1d6671ba312d45bfa705aedbf\",\"urls\":[\"bzz-raw://badf338a5e22c8658c01fe2ce89b487d9dbf6d2d9d5eb49df7415383e2498765\",\"dweb:/ipfs/QmP5aMkvFwMJyuQjKE8ADh5tkWYqonb4KjgkAjgYEVVFAv\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xb15af804e2bc97db51e4e103f13de9fe13f87e6b835d7a88c897966c0e58506e\",\"urls\":[\"bzz-raw://1e8cff8437557fc915a3bed968fcd8f2df9809599e665ef69c2c9ce628548055\",\"dweb:/ipfs/QmP5spYP8vs2jvLF8zNrXUbqB79hMsoEvMHiLcBxerWKcm\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20Mintable.sol\":{\"keccak256\":\"0xa2b957cf89692c504962afb7506999155f83385373f808243246cd5879de5940\",\"urls\":[\"bzz-raw://c44ae0ad1bce141c33b962f8b4e9228bdf8df36c8ac363b4f0bf9498b8bfc32a\",\"dweb:/ipfs/QmcSBRdFwVvy2wFZrBwo5cvqNP4UHh9Eyzf8jnxBgnPqfe\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]}},\"version\":1}", - "bytecode": "0x60806040526100266100186001600160e01b0361002b16565b6001600160e01b0361002f16565b61016f565b3390565b61004781600361007e60201b610a8e1790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b61009182826001600160e01b0361010816565b156100e3576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b03821661014f5760405162461bcd60e51b8152600401808060200182810382526022815260200180610e9d6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b610d1f8061017e6000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c8063983b2d5611610081578063a9059cbb1161005b578063a9059cbb14610243578063aa271e1a1461026f578063dd62ed3e14610295576100d4565b8063983b2d56146101e7578063986502751461020f578063a457c2d714610217576100d4565b806339509351116100b2578063395093511461016957806340c10f191461019557806370a08231146101c1576100d4565b8063095ea7b3146100d957806318160ddd1461011957806323b872dd14610133575b600080fd5b610105600480360360408110156100ef57600080fd5b506001600160a01b0381351690602001356102c3565b604080519115158252519081900360200190f35b6101216102e0565b60408051918252519081900360200190f35b6101056004803603606081101561014957600080fd5b506001600160a01b038135811691602081013590911690604001356102e6565b6101056004803603604081101561017f57600080fd5b506001600160a01b038135169060200135610373565b610105600480360360408110156101ab57600080fd5b506001600160a01b0381351690602001356103c7565b610121600480360360208110156101d757600080fd5b50356001600160a01b031661041e565b61020d600480360360208110156101fd57600080fd5b50356001600160a01b0316610439565b005b61020d61048b565b6101056004803603604081101561022d57600080fd5b506001600160a01b03813516906020013561049d565b6101056004803603604081101561025957600080fd5b506001600160a01b03813516906020013561050b565b6101056004803603602081101561028557600080fd5b50356001600160a01b031661051f565b610121600480360360408110156102ab57600080fd5b506001600160a01b0381358116916020013516610538565b60006102d76102d0610563565b8484610567565b50600192915050565b60025490565b60006102f3848484610653565b610369846102ff610563565b61036485604051806060016040528060288152602001610c33602891396001600160a01b038a1660009081526001602052604081209061033d610563565b6001600160a01b03168152602081019190915260400160002054919063ffffffff6107af16565b610567565b5060019392505050565b60006102d7610380610563565b846103648560016000610391610563565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61084616565b60006103d96103d4610563565b61051f565b6104145760405162461bcd60e51b8152600401808060200182810382526030815260200180610be26030913960400191505060405180910390fd5b6102d783836108a7565b6001600160a01b031660009081526020819052604090205490565b6104446103d4610563565b61047f5760405162461bcd60e51b8152600401808060200182810382526030815260200180610be26030913960400191505060405180910390fd5b61048881610997565b50565b61049b610496610563565b6109df565b565b60006102d76104aa610563565b8461036485604051806060016040528060258152602001610cc660259139600160006104d4610563565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6107af16565b60006102d7610518610563565b8484610653565b600061053260038363ffffffff610a2716565b92915050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b0383166105ac5760405162461bcd60e51b8152600401808060200182810382526024815260200180610ca26024913960400191505060405180910390fd5b6001600160a01b0382166105f15760405162461bcd60e51b8152600401808060200182810382526022815260200180610b9a6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106985760405162461bcd60e51b8152600401808060200182810382526025815260200180610c7d6025913960400191505060405180910390fd5b6001600160a01b0382166106dd5760405162461bcd60e51b8152600401808060200182810382526023815260200180610b776023913960400191505060405180910390fd5b61072081604051806060016040528060268152602001610bbc602691396001600160a01b038616600090815260208190526040902054919063ffffffff6107af16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610755908263ffffffff61084616565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561083e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156108035781810151838201526020016107eb565b50505050905090810190601f1680156108305780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156108a0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216610902576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254610915908263ffffffff61084616565b6002556001600160a01b038216600090815260208190526040902054610941908263ffffffff61084616565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6109a860038263ffffffff610a8e16565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6109f060038263ffffffff610b0f16565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b038216610a6e5760405162461bcd60e51b8152600401808060200182810382526022815260200180610c5b6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b610a988282610a27565b15610aea576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610b198282610a27565b610b545760405162461bcd60e51b8152600401808060200182810382526021815260200180610c126021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff1916905556fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63654d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a72315820724712ebda008cdbbd50792810721ca934604a79fc1cb3a1af7f8974394f121c64736f6c63430005100032526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100d45760003560e01c8063983b2d5611610081578063a9059cbb1161005b578063a9059cbb14610243578063aa271e1a1461026f578063dd62ed3e14610295576100d4565b8063983b2d56146101e7578063986502751461020f578063a457c2d714610217576100d4565b806339509351116100b2578063395093511461016957806340c10f191461019557806370a08231146101c1576100d4565b8063095ea7b3146100d957806318160ddd1461011957806323b872dd14610133575b600080fd5b610105600480360360408110156100ef57600080fd5b506001600160a01b0381351690602001356102c3565b604080519115158252519081900360200190f35b6101216102e0565b60408051918252519081900360200190f35b6101056004803603606081101561014957600080fd5b506001600160a01b038135811691602081013590911690604001356102e6565b6101056004803603604081101561017f57600080fd5b506001600160a01b038135169060200135610373565b610105600480360360408110156101ab57600080fd5b506001600160a01b0381351690602001356103c7565b610121600480360360208110156101d757600080fd5b50356001600160a01b031661041e565b61020d600480360360208110156101fd57600080fd5b50356001600160a01b0316610439565b005b61020d61048b565b6101056004803603604081101561022d57600080fd5b506001600160a01b03813516906020013561049d565b6101056004803603604081101561025957600080fd5b506001600160a01b03813516906020013561050b565b6101056004803603602081101561028557600080fd5b50356001600160a01b031661051f565b610121600480360360408110156102ab57600080fd5b506001600160a01b0381358116916020013516610538565b60006102d76102d0610563565b8484610567565b50600192915050565b60025490565b60006102f3848484610653565b610369846102ff610563565b61036485604051806060016040528060288152602001610c33602891396001600160a01b038a1660009081526001602052604081209061033d610563565b6001600160a01b03168152602081019190915260400160002054919063ffffffff6107af16565b610567565b5060019392505050565b60006102d7610380610563565b846103648560016000610391610563565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61084616565b60006103d96103d4610563565b61051f565b6104145760405162461bcd60e51b8152600401808060200182810382526030815260200180610be26030913960400191505060405180910390fd5b6102d783836108a7565b6001600160a01b031660009081526020819052604090205490565b6104446103d4610563565b61047f5760405162461bcd60e51b8152600401808060200182810382526030815260200180610be26030913960400191505060405180910390fd5b61048881610997565b50565b61049b610496610563565b6109df565b565b60006102d76104aa610563565b8461036485604051806060016040528060258152602001610cc660259139600160006104d4610563565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6107af16565b60006102d7610518610563565b8484610653565b600061053260038363ffffffff610a2716565b92915050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b0383166105ac5760405162461bcd60e51b8152600401808060200182810382526024815260200180610ca26024913960400191505060405180910390fd5b6001600160a01b0382166105f15760405162461bcd60e51b8152600401808060200182810382526022815260200180610b9a6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106985760405162461bcd60e51b8152600401808060200182810382526025815260200180610c7d6025913960400191505060405180910390fd5b6001600160a01b0382166106dd5760405162461bcd60e51b8152600401808060200182810382526023815260200180610b776023913960400191505060405180910390fd5b61072081604051806060016040528060268152602001610bbc602691396001600160a01b038616600090815260208190526040902054919063ffffffff6107af16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610755908263ffffffff61084616565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561083e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156108035781810151838201526020016107eb565b50505050905090810190601f1680156108305780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156108a0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216610902576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254610915908263ffffffff61084616565b6002556001600160a01b038216600090815260208190526040902054610941908263ffffffff61084616565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6109a860038263ffffffff610a8e16565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6109f060038263ffffffff610b0f16565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b038216610a6e5760405162461bcd60e51b8152600401808060200182810382526022815260200180610c5b6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b610a988282610a27565b15610aea576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610b198282610a27565b610b545760405162461bcd60e51b8152600401808060200182810382526021815260200180610c126021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff1916905556fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63654d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a72315820724712ebda008cdbbd50792810721ca934604a79fc1cb3a1af7f8974394f121c64736f6c63430005100032", - "sourceMap": "99:43:6:-;;;318:24:12;329:12;-1:-1:-1;;;;;329:10:12;:12;:::i;:::-;-1:-1:-1;;;;;318:10:12;:24;:::i;:::-;99:43:6;;788:96:10;867:10;788:96;:::o;786:119:12:-;842:21;855:7;842:8;:12;;;;;;:21;;;;:::i;:::-;878:20;;-1:-1:-1;;;;;878:20:12;;;;;;;;786:119;:::o;260:175:11:-;337:18;341:4;347:7;-1:-1:-1;;;;;337:3:11;:18;:::i;:::-;336:19;328:63;;;;;-1:-1:-1;;;328:63:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;401:20:11;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;401:27:11;424:4;401:27;;;260:175::o;779:200::-;851:4;-1:-1:-1;;;;;875:21:11;;867:68;;;;-1:-1:-1;;;867:68:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;952:20:11;:11;:20;;;;;;;;;;;;;;;779:200::o;99:43:6:-;;;;;;;", - "deployedSourceMap": "99:43:6:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;99:43:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2500:149:15;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2500:149:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1559:89;;;:::i;:::-;;;;;;;;;;;;;;;;3107:300;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3107:300:15;;;;;;;;;;;;;;;;;:::i;3802:207::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3802:207:15;;;;;;;;:::i;502:140:17:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;502:140:17;;;;;;;;:::i;1706:108:15:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1706:108:15;-1:-1:-1;;;;;1706:108:15;;:::i;607:90:12:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;607:90:12;-1:-1:-1;;;;;607:90:12;;:::i;:::-;;703:77;;;:::i;4496:258:15:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4496:258:15;;;;;;;;:::i;2017:155::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2017:155:15;;;;;;;;:::i;494:107:12:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;494:107:12;-1:-1:-1;;;;;494:107:12;;:::i;2230:132:15:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2230:132:15;;;;;;;;;;:::i;2500:149::-;2566:4;2582:39;2591:12;:10;:12::i;:::-;2605:7;2614:6;2582:8;:39::i;:::-;-1:-1:-1;2638:4:15;2500:149;;;;:::o;1559:89::-;1629:12;;1559:89;:::o;3107:300::-;3196:4;3212:36;3222:6;3230:9;3241:6;3212:9;:36::i;:::-;3258:121;3267:6;3275:12;:10;:12::i;:::-;3289:89;3327:6;3289:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3289:19:15;;;;;;:11;:19;;;;;;3309:12;:10;:12::i;:::-;-1:-1:-1;;;;;3289:33:15;;;;;;;;;;;;-1:-1:-1;3289:33:15;;;:89;;:37;:89;:::i;:::-;3258:8;:121::i;:::-;-1:-1:-1;3396:4:15;3107:300;;;;;:::o;3802:207::-;3882:4;3898:83;3907:12;:10;:12::i;:::-;3921:7;3930:50;3969:10;3930:11;:25;3942:12;:10;:12::i;:::-;-1:-1:-1;;;;;3930:25:15;;;;;;;;;;;;;;;;;-1:-1:-1;3930:25:15;;;:34;;;;;;;;;;;:50;:38;:50;:::i;502:140:17:-;576:4;395:22:12;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;-1:-1:-1;;;387:83:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;592:22:17;598:7;607:6;592:5;:22::i;1706:108:15:-;-1:-1:-1;;;;;1789:18:15;1763:7;1789:18;;;;;;;;;;;;1706:108::o;607:90:12:-;395:22;404:12;:10;:12::i;395:22::-;387:83;;;;-1:-1:-1;;;387:83:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;671:19;682:7;671:10;:19::i;:::-;607:90;:::o;703:77::-;746:27;760:12;:10;:12::i;:::-;746:13;:27::i;:::-;703:77::o;4496:258:15:-;4581:4;4597:129;4606:12;:10;:12::i;:::-;4620:7;4629:96;4668:15;4629:96;;;;;;;;;;;;;;;;;:11;:25;4641:12;:10;:12::i;:::-;-1:-1:-1;;;;;4629:25:15;;;;;;;;;;;;;;;;;-1:-1:-1;4629:25:15;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;2017:155::-;2086:4;2102:42;2112:12;:10;:12::i;:::-;2126:9;2137:6;2102:9;:42::i;494:107:12:-;550:4;573:21;:8;586:7;573:21;:12;:21;:::i;:::-;566:28;494:107;-1:-1:-1;;494:107:12:o;2230:132:15:-;-1:-1:-1;;;;;2328:18:15;;;2302:7;2328:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2230:132::o;788:96:10:-;867:10;788:96;:::o;7350:332:15:-;-1:-1:-1;;;;;7443:19:15;;7435:68;;;;-1:-1:-1;;;7435:68:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7521:21:15;;7513:68;;;;-1:-1:-1;;;7513:68:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7592:18:15;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7643:32;;;;;;;;;;;;;;;;;7350:332;;;:::o;5228:464::-;-1:-1:-1;;;;;5325:20:15;;5317:70;;;;-1:-1:-1;;;5317:70:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5405:23:15;;5397:71;;;;-1:-1:-1;;;5397:71:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5499;5521:6;5499:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5499:17:15;;:9;:17;;;;;;;;;;;;:71;;:21;:71;:::i;:::-;-1:-1:-1;;;;;5479:17:15;;;:9;:17;;;;;;;;;;;:91;;;;5603:20;;;;;;;:32;;5628:6;5603:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;5580:20:15;;;:9;:20;;;;;;;;;;;;:55;;;;5650:35;;;;;;;5580:20;;5650:35;;;;;;;;;;;;;5228:464;;;:::o;1732:187:13:-;1818:7;1853:12;1845:6;;;;1837:29;;;;-1:-1:-1;;;1837:29:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1837:29:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1888:5:13;;;1732:187::o;834:176::-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:13:o;5962:302:15:-;-1:-1:-1;;;;;6037:21:15;;6029:65;;;;;-1:-1:-1;;;6029:65:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;6120:12;;:24;;6137:6;6120:24;:16;:24;:::i;:::-;6105:12;:39;-1:-1:-1;;;;;6175:18:15;;:9;:18;;;;;;;;;;;:30;;6198:6;6175:30;:22;:30;:::i;:::-;-1:-1:-1;;;;;6154:18:15;;:9;:18;;;;;;;;;;;:51;;;;6220:37;;;;;;;6154:18;;:9;;6220:37;;;;;;;;;;5962:302;;:::o;786:119:12:-;842:21;:8;855:7;842:21;:12;:21;:::i;:::-;878:20;;-1:-1:-1;;;;;878:20:12;;;;;;;;786:119;:::o;911:127::-;970:24;:8;986:7;970:24;:15;:24;:::i;:::-;1009:22;;-1:-1:-1;;;;;1009:22:12;;;;;;;;911:127;:::o;779:200:11:-;851:4;-1:-1:-1;;;;;875:21:11;;867:68;;;;-1:-1:-1;;;867:68:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;952:20:11;:11;:20;;;;;;;;;;;;;;;779:200::o;260:175::-;337:18;341:4;347:7;337:3;:18::i;:::-;336:19;328:63;;;;;-1:-1:-1;;;328:63:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;401:20:11;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;401:27:11;424:4;401:27;;;260:175::o;510:180::-;589:18;593:4;599:7;589:3;:18::i;:::-;581:64;;;;-1:-1:-1;;;581:64:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;655:20:11;678:5;655:20;;;;;;;;;;;:28;;-1:-1:-1;;655:28:11;;;510:180::o", + "bytecode": "0x608060405261002661001864010000000061002b810204565b64010000000061002f810204565b6101a5565b3390565b610047600382640100000000610d5561007e82021704565b604051600160a060020a038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6100918282640100000000610122810204565b156100fd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b600160a060020a0316600090815260209190915260409020805460ff19166001179055565b6000600160a060020a0382161515610185576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806111e16022913960400191505060405180910390fd5b50600160a060020a03166000908152602091909152604090205460ff1690565b61102d806101b46000396000f3fe608060405234801561001057600080fd5b50600436106100f1576000357c010000000000000000000000000000000000000000000000000000000090048063983b2d561161009e578063a9059cbb11610078578063a9059cbb146102bb578063aa271e1a146102f4578063dd62ed3e14610327576100f1565b8063983b2d5614610245578063986502751461027a578063a457c2d714610282576100f1565b806339509351116100cf57806339509351146101a057806340c10f19146101d957806370a0823114610212576100f1565b8063095ea7b3146100f657806318160ddd1461014357806323b872dd1461015d575b600080fd5b61012f6004803603604081101561010c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610362565b604080519115158252519081900360200190f35b61014b61037f565b60408051918252519081900360200190f35b61012f6004803603606081101561017357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610385565b61012f600480360360408110156101b657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561042d565b61012f600480360360408110156101ef57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561048e565b61014b6004803603602081101561022857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610501565b6102786004803603602081101561025b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610529565b005b610278610597565b61012f6004803603604081101561029857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105a9565b61012f600480360360408110156102d157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610625565b61012f6004803603602081101561030a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610639565b61014b6004803603604081101561033d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610652565b600061037661036f61068a565b848461068e565b50600192915050565b60025490565b60006103928484846107d9565b6104238461039e61068a565b61041e8560606040519081016040528060288152602001610f4a6028913973ffffffffffffffffffffffffffffffffffffffff8a166000908152600160205260408120906103ea61068a565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002054919063ffffffff6109af16565b61068e565b5060019392505050565b600061037661043a61068a565b8461041e856001600061044b61068a565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff610a6016565b60006104a061049b61068a565b610639565b15156104f7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180610ef96030913960400191505060405180910390fd5b6103768383610adb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61053461049b61068a565b151561058b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180610ef96030913960400191505060405180910390fd5b61059481610c0e565b50565b6105a76105a261068a565b610c63565b565b60006103766105b661068a565b8461041e8560606040519081016040528060258152602001610fdd60259139600160006105e161068a565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6109af16565b600061037661063261068a565b84846107d9565b600061064c60038363ffffffff610cb816565b92915050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b3390565b73ffffffffffffffffffffffffffffffffffffffff831615156106fc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610fb96024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216151561076a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610eb16022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff83161515610847576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180610f946025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821615156108b5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610e8e6023913960400191505060405180910390fd5b6109068160606040519081016040528060268152602001610ed36026913973ffffffffffffffffffffffffffffffffffffffff8616600090815260208190526040902054919063ffffffff6109af16565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610948908263ffffffff610a6016565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610a58576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a1d578181015183820152602001610a05565b50505050905090810190601f168015610a4a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610ad457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82161515610b5f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254610b72908263ffffffff610a6016565b60025573ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610bab908263ffffffff610a6016565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b610c1f60038263ffffffff610d5516565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b610c7460038263ffffffff610dfd16565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b600073ffffffffffffffffffffffffffffffffffffffff82161515610d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610f726022913960400191505060405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff166000908152602091909152604090205460ff1690565b610d5f8282610cb8565b15610dcb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260209190915260409020805460ff19166001179055565b610e078282610cb8565b1515610e5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610f296021913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260209190915260409020805460ff1916905556fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63654d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa165627a7a7230582071e315d19e64d15b18a2d7d15d7421adb8570bc2ba59dc95418698a3255cb92e0029526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f1576000357c010000000000000000000000000000000000000000000000000000000090048063983b2d561161009e578063a9059cbb11610078578063a9059cbb146102bb578063aa271e1a146102f4578063dd62ed3e14610327576100f1565b8063983b2d5614610245578063986502751461027a578063a457c2d714610282576100f1565b806339509351116100cf57806339509351146101a057806340c10f19146101d957806370a0823114610212576100f1565b8063095ea7b3146100f657806318160ddd1461014357806323b872dd1461015d575b600080fd5b61012f6004803603604081101561010c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610362565b604080519115158252519081900360200190f35b61014b61037f565b60408051918252519081900360200190f35b61012f6004803603606081101561017357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610385565b61012f600480360360408110156101b657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561042d565b61012f600480360360408110156101ef57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561048e565b61014b6004803603602081101561022857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610501565b6102786004803603602081101561025b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610529565b005b610278610597565b61012f6004803603604081101561029857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105a9565b61012f600480360360408110156102d157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610625565b61012f6004803603602081101561030a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610639565b61014b6004803603604081101561033d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610652565b600061037661036f61068a565b848461068e565b50600192915050565b60025490565b60006103928484846107d9565b6104238461039e61068a565b61041e8560606040519081016040528060288152602001610f4a6028913973ffffffffffffffffffffffffffffffffffffffff8a166000908152600160205260408120906103ea61068a565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002054919063ffffffff6109af16565b61068e565b5060019392505050565b600061037661043a61068a565b8461041e856001600061044b61068a565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff610a6016565b60006104a061049b61068a565b610639565b15156104f7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180610ef96030913960400191505060405180910390fd5b6103768383610adb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61053461049b61068a565b151561058b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180610ef96030913960400191505060405180910390fd5b61059481610c0e565b50565b6105a76105a261068a565b610c63565b565b60006103766105b661068a565b8461041e8560606040519081016040528060258152602001610fdd60259139600160006105e161068a565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6109af16565b600061037661063261068a565b84846107d9565b600061064c60038363ffffffff610cb816565b92915050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b3390565b73ffffffffffffffffffffffffffffffffffffffff831615156106fc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610fb96024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216151561076a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610eb16022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff83161515610847576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180610f946025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821615156108b5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610e8e6023913960400191505060405180910390fd5b6109068160606040519081016040528060268152602001610ed36026913973ffffffffffffffffffffffffffffffffffffffff8616600090815260208190526040902054919063ffffffff6109af16565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610948908263ffffffff610a6016565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610a58576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a1d578181015183820152602001610a05565b50505050905090810190601f168015610a4a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610ad457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82161515610b5f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254610b72908263ffffffff610a6016565b60025573ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610bab908263ffffffff610a6016565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b610c1f60038263ffffffff610d5516565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b610c7460038263ffffffff610dfd16565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b600073ffffffffffffffffffffffffffffffffffffffff82161515610d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610f726022913960400191505060405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff166000908152602091909152604090205460ff1690565b610d5f8282610cb8565b15610dcb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260209190915260409020805460ff19166001179055565b610e078282610cb8565b1515610e5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610f296021913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260209190915260409020805460ff1916905556fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63654d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa165627a7a7230582071e315d19e64d15b18a2d7d15d7421adb8570bc2ba59dc95418698a3255cb92e0029", + "sourceMap": "99:43:6:-;;;318:24:15;329:12;:10;;;;:12;:::i;:::-;318:10;;;;:24;:::i;:::-;99:43:6;;788:96:13;867:10;788:96;:::o;786:119:15:-;842:21;:8;855:7;842:12;;;;;;:21;:::i;:::-;878:20;;-1:-1:-1;;;;;878:20:15;;;;;;;;786:119;:::o;260:175:14:-;337:18;341:4;347:7;337:3;;;;:18;:::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;401:20:14;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;401:27:14;424:4;401:27;;;260:175::o;779:200::-;851:4;-1:-1:-1;;;;;875:21:14;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;952:20:14;:11;:20;;;;;;;;;;;;;;;779:200::o;99:43:6:-;;;;;;;", + "deployedSourceMap": "99:43:6:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;99:43:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2500:149:18;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2500:149:18;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1559:89;;;:::i;:::-;;;;;;;;;;;;;;;;3107:300;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3107:300:18;;;;;;;;;;;;;;;;;;:::i;3802:207::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3802:207:18;;;;;;;;;:::i;502:140:20:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;502:140:20;;;;;;;;;:::i;1706:108:18:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1706:108:18;;;;:::i;607:90:15:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;607:90:15;;;;:::i;:::-;;703:77;;;:::i;4496:258:18:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4496:258:18;;;;;;;;;:::i;2017:155::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2017:155:18;;;;;;;;;:::i;494:107:15:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;494:107:15;;;;:::i;2230:132:18:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2230:132:18;;;;;;;;;;;:::i;2500:149::-;2566:4;2582:39;2591:12;:10;:12::i;:::-;2605:7;2614:6;2582:8;:39::i;:::-;-1:-1:-1;2638:4:18;2500:149;;;;:::o;1559:89::-;1629:12;;1559:89;:::o;3107:300::-;3196:4;3212:36;3222:6;3230:9;3241:6;3212:9;:36::i;:::-;3258:121;3267:6;3275:12;:10;:12::i;:::-;3289:89;3327:6;3289:89;;;;;;;;;;;;;;;;;;:19;;;;;;;:11;:19;;;;;;3309:12;:10;:12::i;:::-;3289:33;;;;;;;;;;;;;-1:-1:-1;3289:33:18;;;:89;;:37;:89;:::i;:::-;3258:8;:121::i;:::-;-1:-1:-1;3396:4:18;3107:300;;;;;:::o;3802:207::-;3882:4;3898:83;3907:12;:10;:12::i;:::-;3921:7;3930:50;3969:10;3930:11;:25;3942:12;:10;:12::i;:::-;3930:25;;;;;;;;;;;;;;;;;;-1:-1:-1;3930:25:18;;;:34;;;;;;;;;;;:50;:38;:50;:::i;502:140:20:-;576:4;395:22:15;404:12;:10;:12::i;:::-;395:8;:22::i;:::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;592:22:20;598:7;607:6;592:5;:22::i;1706:108:18:-;1789:18;;1763:7;1789:18;;;;;;;;;;;;1706:108::o;607:90:15:-;395:22;404:12;:10;:12::i;395:22::-;387:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;671:19;682:7;671:10;:19::i;:::-;607:90;:::o;703:77::-;746:27;760:12;:10;:12::i;:::-;746:13;:27::i;:::-;703:77::o;4496:258:18:-;4581:4;4597:129;4606:12;:10;:12::i;:::-;4620:7;4629:96;4668:15;4629:96;;;;;;;;;;;;;;;;;;:11;:25;4641:12;:10;:12::i;:::-;4629:25;;;;;;;;;;;;;;;;;;-1:-1:-1;4629:25:18;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;2017:155::-;2086:4;2102:42;2112:12;:10;:12::i;:::-;2126:9;2137:6;2102:9;:42::i;494:107:15:-;550:4;573:21;:8;586:7;573:21;:12;:21;:::i;:::-;566:28;494:107;-1:-1:-1;;494:107:15:o;2230:132:18:-;2328:18;;;;2302:7;2328:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2230:132::o;788:96:13:-;867:10;788:96;:::o;7350:332:18:-;7443:19;;;;;7435:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7521:21;;;;;7513:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7592:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7643:32;;;;;;;;;;;;;;;;;7350:332;;;:::o;5228:464::-;5325:20;;;;;5317:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5405:23;;;;;5397:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5499;5521:6;5499:71;;;;;;;;;;;;;;;;;;:17;;;:9;:17;;;;;;;;;;;;:71;;:21;:71;:::i;:::-;5479:17;;;;:9;:17;;;;;;;;;;;:91;;;;5603:20;;;;;;;:32;;5628:6;5603:32;:24;:32;:::i;:::-;5580:20;;;;:9;:20;;;;;;;;;;;;:55;;;;5650:35;;;;;;;5580:20;;5650:35;;;;;;;;;;;;;5228:464;;;:::o;1732:187:16:-;1818:7;1853:12;1845:6;;;;1837:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1837:29:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1888:5:16;;;1732:187::o;834:176::-;892:7;923:5;;;946:6;;;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:16:o;5962:302:18:-;6037:21;;;;;6029:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6120:12;;:24;;6137:6;6120:24;:16;:24;:::i;:::-;6105:12;:39;6175:18;;;:9;:18;;;;;;;;;;;:30;;6198:6;6175:30;:22;:30;:::i;:::-;6154:18;;;:9;:18;;;;;;;;;;;:51;;;;6220:37;;;;;;;6154:18;;:9;;6220:37;;;;;;;;;;5962:302;;:::o;786:119:15:-;842:21;:8;855:7;842:21;:12;:21;:::i;:::-;878:20;;;;;;;;;;;786:119;:::o;911:127::-;970:24;:8;986:7;970:24;:15;:24;:::i;:::-;1009:22;;;;;;;;;;;911:127;:::o;779:200:14:-;851:4;875:21;;;;;867:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;952:20:14;;:11;:20;;;;;;;;;;;;;;;779:200::o;260:175::-;337:18;341:4;347:7;337:3;:18::i;:::-;336:19;328:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;401:20;;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;401:27:14;424:4;401:27;;;260:175::o;510:180::-;589:18;593:4;599:7;589:3;:18::i;:::-;581:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;655:20;;678:5;655:20;;;;;;;;;;;:28;;-1:-1:-1;;655:28:14;;;510:180::o", "source": "pragma solidity ^0.5.2;\n\nimport \"openzeppelin-solidity/contracts/token/ERC20/ERC20Mintable.sol\";\n\n\ncontract TestERC20Token is ERC20Mintable {}\n", - "sourcePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/mocks/TestERC20Token.sol", + "sourcePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/mocks/TestERC20Token.sol", "ast": { - "absolutePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/mocks/TestERC20Token.sol", + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/mocks/TestERC20Token.sol", "exportedSymbols": { "TestERC20Token": [ 2575 @@ -380,7 +343,7 @@ "id": 2572, "nodeType": "ImportDirective", "scope": 2576, - "sourceUnit": 3984, + "sourceUnit": 4089, "src": "25:71:6", "symbolAliases": [], "unitAlias": "" @@ -394,10 +357,10 @@ "id": 2573, "name": "ERC20Mintable", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3983, + "referencedDeclaration": 4088, "src": "126:13:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Mintable_$3983", + "typeIdentifier": "t_contract$_ERC20Mintable_$4088", "typeString": "contract ERC20Mintable" } }, @@ -407,11 +370,11 @@ } ], "contractDependencies": [ - 2999, - 3187, - 3897, - 3983, - 4052 + 3104, + 3292, + 4002, + 4088, + 4157 ], "contractKind": "contract", "documentation": null, @@ -419,11 +382,11 @@ "id": 2575, "linearizedBaseContracts": [ 2575, - 3983, - 3187, - 3897, - 4052, - 2999 + 4088, + 3292, + 4002, + 4157, + 3104 ], "name": "TestERC20Token", "nodeType": "ContractDefinition", @@ -435,7 +398,7 @@ "src": "0:143:6" }, "legacyAST": { - "absolutePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/mocks/TestERC20Token.sol", + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/mocks/TestERC20Token.sol", "exportedSymbols": { "TestERC20Token": [ 2575 @@ -461,7 +424,7 @@ "id": 2572, "nodeType": "ImportDirective", "scope": 2576, - "sourceUnit": 3984, + "sourceUnit": 4089, "src": "25:71:6", "symbolAliases": [], "unitAlias": "" @@ -475,10 +438,10 @@ "id": 2573, "name": "ERC20Mintable", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3983, + "referencedDeclaration": 4088, "src": "126:13:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Mintable_$3983", + "typeIdentifier": "t_contract$_ERC20Mintable_$4088", "typeString": "contract ERC20Mintable" } }, @@ -488,11 +451,11 @@ } ], "contractDependencies": [ - 2999, - 3187, - 3897, - 3983, - 4052 + 3104, + 3292, + 4002, + 4088, + 4157 ], "contractKind": "contract", "documentation": null, @@ -500,11 +463,11 @@ "id": 2575, "linearizedBaseContracts": [ 2575, - 3983, - 3187, - 3897, - 4052, - 2999 + 4088, + 3292, + 4002, + 4157, + 3104 ], "name": "TestERC20Token", "nodeType": "ContractDefinition", @@ -517,11 +480,11 @@ }, "compiler": { "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" + "version": "0.5.2+commit.1df8f40c.Emscripten.clang" }, "networks": {}, - "schemaVersion": "3.0.23", - "updatedAt": "2020-02-16T12:52:29.786Z", + "schemaVersion": "3.0.1", + "updatedAt": "2020-02-16T14:54:14.900Z", "devdoc": { "methods": { "allowance(address,address)": { diff --git a/truffle/build/contracts/ValidGasPrice.json b/truffle/build/contracts/ValidGasPrice.json index ee04783..34dccc5 100644 --- a/truffle/build/contracts/ValidGasPrice.json +++ b/truffle/build/contracts/ValidGasPrice.json @@ -1,49 +1,37 @@ { "contractName": "ValidGasPrice", "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, { "constant": true, "inputs": [], - "name": "isOwner", + "name": "maxGasPrice", "outputs": [ { - "internalType": "bool", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, { "constant": true, "inputs": [], - "name": "maxGasPrice", + "name": "owner", "outputs": [ { - "internalType": "uint256", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, @@ -53,12 +41,11 @@ { "constant": true, "inputs": [], - "name": "owner", + "name": "isOwner", "outputs": [ { - "internalType": "address", "name": "", - "type": "address" + "type": "bool" } ], "payable": false, @@ -67,33 +54,39 @@ }, { "constant": false, - "inputs": [], - "name": "renounceOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "internalType": "address", + "indexed": true, + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, "name": "newOwner", "type": "address" } ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" + "name": "OwnershipTransferred", + "type": "event" }, { "constant": false, "inputs": [ { - "internalType": "uint256", "name": "newPrice", "type": "uint256" } @@ -105,15 +98,14 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"maxGasPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPrice\",\"type\":\"uint256\"}],\"name\":\"setMaxGasPrice\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"isOwner()\":{\"details\":\"Returns true if the caller is the current owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/lib/ValidGasPrice.sol\":\"ValidGasPrice\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":1500},\"remappings\":[]},\"sources\":{\"/Users/jzstern/Go on.... GIT/bound/truffle/contracts/lib/ValidGasPrice.sol\":{\"keccak256\":\"0xab0eb602f0bd70cd9390021ec9d1e0b2a32f91b6c0af55fb6ea0b138f19be9fe\",\"urls\":[\"bzz-raw://153c896e4996d59fe5b747a28d8e8682f6afbae210587d7b7e2ae35ced2f1592\",\"dweb:/ipfs/QmReY8Thw4XDSKFdpLfvkEphdzBtbNr325DARGVSY9sUFc\"]},\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"keccak256\":\"0x90a3995645af7562d84b9d69363ffa5ae7217714ab61e951bf7bc450f40e4061\",\"urls\":[\"bzz-raw://216ef9d6b614db4eb46970b4e84903f2534a45572dd30a79f0041f1a5830f436\",\"dweb:/ipfs/QmNPrJ4MWKUAWzKXpUqeyKRUfosaoANZAqXgvepdrCwZAG\"]},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0x6fb9d7889769d7cc161225f9ef7a90e468ba9788b253816f8d8b6894d3472c24\",\"urls\":[\"bzz-raw://cf4c00fc3c37cc5acf0c82ec6fd97bab67d72c2567fdc0ebf023d9c09b30a08e\",\"dweb:/ipfs/Qmb7TChG6DsEDX7LooJ4vmxot19f7VXX8S1zUGPeJTWbwZ\"]}},\"version\":1}", - "bytecode": "0x6080604052670de0b6b3a764000060015560006100236001600160e01b0361007216565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610076565b3390565b6103ec806100856000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80638f32d59b116100505780638f32d59b146100bf578063d2fa635e146100db578063f2fde38b146100f857610072565b80633de39c1114610077578063715018a6146100915780638da5cb5b1461009b575b600080fd5b61007f61011e565b60408051918252519081900360200190f35b610099610124565b005b6100a36101df565b604080516001600160a01b039092168252519081900360200190f35b6100c76101ee565b604080519115158252519081900360200190f35b610099600480360360208110156100f157600080fd5b5035610212565b6100996004803603602081101561010e57600080fd5b50356001600160a01b0316610270565b60015481565b61012c6101ee565b61017d576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000546001600160a01b031690565b600080546001600160a01b03166102036102d5565b6001600160a01b031614905090565b61021a6101ee565b61026b576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600155565b6102786101ee565b6102c9576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6102d2816102d9565b50565b3390565b6001600160a01b03811661031e5760405162461bcd60e51b81526004018080602001828103825260268152602001806103926026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a72315820529c60a91930de7918c7b6cdd755def66da059a3a146e13514430f21f193c3b064736f6c63430005100032", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100725760003560e01c80638f32d59b116100505780638f32d59b146100bf578063d2fa635e146100db578063f2fde38b146100f857610072565b80633de39c1114610077578063715018a6146100915780638da5cb5b1461009b575b600080fd5b61007f61011e565b60408051918252519081900360200190f35b610099610124565b005b6100a36101df565b604080516001600160a01b039092168252519081900360200190f35b6100c76101ee565b604080519115158252519081900360200190f35b610099600480360360208110156100f157600080fd5b5035610212565b6100996004803603602081101561010e57600080fd5b50356001600160a01b0316610270565b60015481565b61012c6101ee565b61017d576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000546001600160a01b031690565b600080546001600160a01b03166102036102d5565b6001600160a01b031614905090565b61021a6101ee565b61026b576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600155565b6102786101ee565b6102c9576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6102d2816102d9565b50565b3390565b6001600160a01b03811661031e5760405162461bcd60e51b81526004018080602001828103825260268152602001806103926026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a72315820529c60a91930de7918c7b6cdd755def66da059a3a146e13514430f21f193c3b064736f6c63430005100032", - "sourceMap": "91:356:3:-;;;160:10;131:39;;698:17:14;718:12;-1:-1:-1;;;;;718:10:14;:12;:::i;:::-;740:6;:18;;-1:-1:-1;;;;;;740:18:14;-1:-1:-1;;;;;740:18:14;;;;;;;773:43;;740:18;;-1:-1:-1;740:18:14;773:43;;740:6;;773:43;664:159;91:356:3;;788:96:10;867:10;788:96;:::o;91:356:3:-;;;;;;;", - "deployedSourceMap": "91:356:3:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;91:356:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;131:39;;;:::i;:::-;;;;;;;;;;;;;;;;1684:137:14;;;:::i;:::-;;899:77;;;:::i;:::-;;;;-1:-1:-1;;;;;899:77:14;;;;;;;;;;;;;;1250:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;347:98:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;347:98:3;;:::i;1970:107:14:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1970:107:14;-1:-1:-1;;;;;1970:107:14;;:::i;131:39:3:-;;;;:::o;1684:137:14:-;1103:9;:7;:9::i;:::-;1095:54;;;;;-1:-1:-1;;;1095:54:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1782:1;1766:6;;1745:40;;-1:-1:-1;;;;;1766:6:14;;;;1745:40;;1782:1;;1745:40;1812:1;1795:19;;;;;;1684:137::o;899:77::-;937:7;963:6;-1:-1:-1;;;;;963:6:14;899:77;:::o;1250:92::-;1290:4;1329:6;;-1:-1:-1;;;;;1329:6:14;1313:12;:10;:12::i;:::-;-1:-1:-1;;;;;1313:22:14;;1306:29;;1250:92;:::o;347:98:3:-;1103:9:14;:7;:9::i;:::-;1095:54;;;;;-1:-1:-1;;;1095:54:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;416:11:3;:22;347:98::o;1970:107:14:-;1103:9;:7;:9::i;:::-;1095:54;;;;;-1:-1:-1;;;1095:54:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2042:28;2061:8;2042:18;:28::i;:::-;1970:107;:::o;788:96:10:-;867:10;788:96;:::o;2178:225:14:-;-1:-1:-1;;;;;2251:22:14;;2243:73;;;;-1:-1:-1;;;2243:73:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2352:6;;;2331:38;;-1:-1:-1;;;;;2331:38:14;;;;2352:6;;;2331:38;;;2379:6;:17;;;;-1:-1:-1;;;;;2379:17:14;;;;;;;;;;2178:225::o", + "bytecode": "0x6080604052670de0b6b3a76400006001556000610023640100000000610072810204565b60008054600160a060020a031916600160a060020a0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610076565b3390565b6104e5806100856000396000f3fe608060405234801561001057600080fd5b506004361061008f576000357c0100000000000000000000000000000000000000000000000000000000900480638f32d59b1161006d5780638f32d59b146100e9578063d2fa635e14610105578063f2fde38b146101225761008f565b80633de39c1114610094578063715018a6146100ae5780638da5cb5b146100b8575b600080fd5b61009c610155565b60408051918252519081900360200190f35b6100b661015b565b005b6100c061023f565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100f161025b565b604080519115158252519081900360200190f35b6100b66004803603602081101561011b57600080fd5b5035610299565b6100b66004803603602081101561013857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610313565b60015481565b61016361025b565b15156101d057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6000805473ffffffffffffffffffffffffffffffffffffffff1661027d610394565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6102a161025b565b151561030e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600155565b61031b61025b565b151561038857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61039181610398565b50565b3390565b73ffffffffffffffffffffffffffffffffffffffff81161515610406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806104946026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a165627a7a723058200311c705ab1c2807c4e6d69cb4901077d2c4819e611a7d83653ba4daf2be17350029", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061008f576000357c0100000000000000000000000000000000000000000000000000000000900480638f32d59b1161006d5780638f32d59b146100e9578063d2fa635e14610105578063f2fde38b146101225761008f565b80633de39c1114610094578063715018a6146100ae5780638da5cb5b146100b8575b600080fd5b61009c610155565b60408051918252519081900360200190f35b6100b661015b565b005b6100c061023f565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100f161025b565b604080519115158252519081900360200190f35b6100b66004803603602081101561011b57600080fd5b5035610299565b6100b66004803603602081101561013857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610313565b60015481565b61016361025b565b15156101d057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6000805473ffffffffffffffffffffffffffffffffffffffff1661027d610394565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6102a161025b565b151561030e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600155565b61031b61025b565b151561038857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61039181610398565b50565b3390565b73ffffffffffffffffffffffffffffffffffffffff81161515610406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806104946026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a165627a7a723058200311c705ab1c2807c4e6d69cb4901077d2c4819e611a7d83653ba4daf2be17350029", + "sourceMap": "91:356:3:-;;;160:10;131:39;;698:17:17;718:12;:10;;;;:12;:::i;:::-;740:6;:18;;-1:-1:-1;;;;;;740:18:17;-1:-1:-1;;;;;740:18:17;;;;;;;773:43;;740:18;;-1:-1:-1;740:18:17;773:43;;740:6;;773:43;664:159;91:356:3;;788:96:13;867:10;788:96;:::o;91:356:3:-;;;;;;;", + "deployedSourceMap": "91:356:3:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;91:356:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;131:39;;;:::i;:::-;;;;;;;;;;;;;;;;1684:137:17;;;:::i;:::-;;899:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1250:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;347:98:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;347:98:3;;:::i;1970:107:17:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1970:107:17;;;;:::i;131:39:3:-;;;;:::o;1684:137:17:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1782:1;1766:6;;1745:40;;;1766:6;;;;1745:40;;1782:1;;1745:40;1812:1;1795:19;;;;;;1684:137::o;899:77::-;937:7;963:6;;;899:77;:::o;1250:92::-;1290:4;1329:6;;;;1313:12;:10;:12::i;:::-;:22;;;1306:29;;1250:92;:::o;347:98:3:-;1103:9:17;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;416:11:3;:22;347:98::o;1970:107:17:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2042:28;2061:8;2042:18;:28::i;:::-;1970:107;:::o;788:96:13:-;867:10;788:96;:::o;2178:225:17:-;2251:22;;;;;2243:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2352:6;;;2331:38;;;;;;;2352:6;;;2331:38;;;2379:6;:17;;;;;;;;;;;;;;;2178:225::o", "source": "pragma solidity ^0.5.2;\n\nimport \"openzeppelin-solidity/contracts/ownership/Ownable.sol\";\n\n\ncontract ValidGasPrice is Ownable {\n uint256 public maxGasPrice = 1 * 10**18;\n\n modifier validGasPrice() {\n require(tx.gasprice <= maxGasPrice, \"Gas price must be <= maximum gas price to prevent front running attacks.\");\n _;\n }\n\n function setMaxGasPrice(uint256 newPrice) public onlyOwner {\n maxGasPrice = newPrice;\n }\n}", - "sourcePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/lib/ValidGasPrice.sol", + "sourcePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/lib/ValidGasPrice.sol", "ast": { - "absolutePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/lib/ValidGasPrice.sol", + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/lib/ValidGasPrice.sol", "exportedSymbols": { "ValidGasPrice": [ 176 @@ -139,7 +131,7 @@ "id": 142, "nodeType": "ImportDirective", "scope": 177, - "sourceUnit": 3493, + "sourceUnit": 3598, "src": "25:63:3", "symbolAliases": [], "unitAlias": "" @@ -153,10 +145,10 @@ "id": 143, "name": "Ownable", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3492, + "referencedDeclaration": 3597, "src": "117:7:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_Ownable_$3492", + "typeIdentifier": "t_contract$_Ownable_$3597", "typeString": "contract Ownable" } }, @@ -166,8 +158,8 @@ } ], "contractDependencies": [ - 2999, - 3492 + 3104, + 3597 ], "contractKind": "contract", "documentation": null, @@ -175,8 +167,8 @@ "id": 176, "linearizedBaseContracts": [ 176, - 3492, - 2999 + 3597, + 3104 ], "name": "ValidGasPrice", "nodeType": "ContractDefinition", @@ -327,7 +319,7 @@ "name": "tx", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4079, + "referencedDeclaration": 4184, "src": "220:2:3", "typeDescriptions": { "typeIdentifier": "t_magic_transaction", @@ -403,10 +395,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, + "referencedDeclaration": 4176, "src": "212:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -519,7 +511,7 @@ "name": "onlyOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3425, + "referencedDeclaration": 3530, "src": "396:9:3", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -585,7 +577,7 @@ "src": "0:447:3" }, "legacyAST": { - "absolutePath": "/Users/jzstern/Go on.... GIT/bound/truffle/contracts/lib/ValidGasPrice.sol", + "absolutePath": "/Users/feewet/dev/ethdenver/bound/truffle/contracts/lib/ValidGasPrice.sol", "exportedSymbols": { "ValidGasPrice": [ 176 @@ -611,7 +603,7 @@ "id": 142, "nodeType": "ImportDirective", "scope": 177, - "sourceUnit": 3493, + "sourceUnit": 3598, "src": "25:63:3", "symbolAliases": [], "unitAlias": "" @@ -625,10 +617,10 @@ "id": 143, "name": "Ownable", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3492, + "referencedDeclaration": 3597, "src": "117:7:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_Ownable_$3492", + "typeIdentifier": "t_contract$_Ownable_$3597", "typeString": "contract Ownable" } }, @@ -638,8 +630,8 @@ } ], "contractDependencies": [ - 2999, - 3492 + 3104, + 3597 ], "contractKind": "contract", "documentation": null, @@ -647,8 +639,8 @@ "id": 176, "linearizedBaseContracts": [ 176, - 3492, - 2999 + 3597, + 3104 ], "name": "ValidGasPrice", "nodeType": "ContractDefinition", @@ -799,7 +791,7 @@ "name": "tx", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 4079, + "referencedDeclaration": 4184, "src": "220:2:3", "typeDescriptions": { "typeIdentifier": "t_magic_transaction", @@ -875,10 +867,10 @@ "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 4070, - 4071 + 4175, + 4176 ], - "referencedDeclaration": 4071, + "referencedDeclaration": 4176, "src": "212:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", @@ -991,7 +983,7 @@ "name": "onlyOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 3425, + "referencedDeclaration": 3530, "src": "396:9:3", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -1058,11 +1050,11 @@ }, "compiler": { "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" + "version": "0.5.2+commit.1df8f40c.Emscripten.clang" }, "networks": {}, - "schemaVersion": "3.0.23", - "updatedAt": "2020-02-16T12:52:29.745Z", + "schemaVersion": "3.0.1", + "updatedAt": "2020-02-16T14:54:14.890Z", "devdoc": { "methods": { "isOwner()": { diff --git a/truffle/contracts/token/ArtistToken1.sol b/truffle/contracts/token/ArtistToken1.sol new file mode 100644 index 0000000..64d1e22 --- /dev/null +++ b/truffle/contracts/token/ArtistToken1.sol @@ -0,0 +1,13 @@ +pragma solidity ^0.5.2; + +import "./ETHContinuousToken.sol"; + +contract ArtistToken1 is ETHContinuousToken { + constructor( + string memory _name, + string memory _symbol, + uint8 _decimals, + uint _initialSupply, + uint32 _reserveRatio + ) public ETHContinuousToken(_name, _symbol, _decimals, _initialSupply, _reserveRatio) {} +} \ No newline at end of file diff --git a/truffle/contracts/token/ArtistToken2.sol b/truffle/contracts/token/ArtistToken2.sol new file mode 100644 index 0000000..40f8989 --- /dev/null +++ b/truffle/contracts/token/ArtistToken2.sol @@ -0,0 +1,13 @@ +pragma solidity ^0.5.2; + +import "./ETHContinuousToken.sol"; + +contract ArtistToken2 is ETHContinuousToken { + constructor( + string memory _name, + string memory _symbol, + uint8 _decimals, + uint _initialSupply, + uint32 _reserveRatio + ) public ETHContinuousToken(_name, _symbol, _decimals, _initialSupply, _reserveRatio) {} +} \ No newline at end of file diff --git a/truffle/contracts/token/ArtistToken3.sol b/truffle/contracts/token/ArtistToken3.sol new file mode 100644 index 0000000..85149ed --- /dev/null +++ b/truffle/contracts/token/ArtistToken3.sol @@ -0,0 +1,13 @@ +pragma solidity ^0.5.2; + +import "./ETHContinuousToken.sol"; + +contract ArtistToken3 is ETHContinuousToken { + constructor( + string memory _name, + string memory _symbol, + uint8 _decimals, + uint _initialSupply, + uint32 _reserveRatio + ) public ETHContinuousToken(_name, _symbol, _decimals, _initialSupply, _reserveRatio) {} +} \ No newline at end of file diff --git a/truffle/contracts/token/ETHContinuousToken.sol b/truffle/contracts/token/ETHContinuousToken.sol index d407118..31d45b3 100644 --- a/truffle/contracts/token/ETHContinuousToken.sol +++ b/truffle/contracts/token/ETHContinuousToken.sol @@ -2,9 +2,10 @@ pragma solidity ^0.5.2; import "./ContinuousToken.sol"; - +// Artist TOken contract ETHContinuousToken is ContinuousToken { uint256 internal reserve; + address payable internal artistAddress; constructor( string memory _name, @@ -14,12 +15,17 @@ contract ETHContinuousToken is ContinuousToken { uint32 _reserveRatio ) public payable ContinuousToken(_name, _symbol, _decimals, _initialSupply, _reserveRatio) { reserve = msg.value; + artistAddress = msg.sender; } function () external payable { mint(); } + // calculate artist amount and send rest to contract to mint + // send 1.2x function mint() public payable { - uint purchaseAmount = msg.value; + uint artistAmount = msg.value * 200 / 10000; // 20% artist cut + uint purchaseAmount = msg.value - artistAmount; + artistAddress.transfer(purchaseAmount); _continuousMint(purchaseAmount); reserve = reserve.add(purchaseAmount); } @@ -32,5 +38,5 @@ contract ETHContinuousToken is ContinuousToken { function reserveBalance() public view returns (uint) { return reserve; - } + } } \ No newline at end of file diff --git a/truffle/migrations/2_deploy_contracts.js b/truffle/migrations/2_deploy_contracts.js index 700c575..f38c68a 100644 --- a/truffle/migrations/2_deploy_contracts.js +++ b/truffle/migrations/2_deploy_contracts.js @@ -1,21 +1,9 @@ // Fetch the Storage contract data from the Storage.json file //var ERC20ContinuousToken = artifacts.require("./token/ERC20ContinuousToken.sol"); -var ETHContinuousToken = artifacts.require("./token/ETHContinuousToken.sol"); +var ArtistToken1 = artifacts.require("./token/ArtistToken1.sol"); // JavaScript export module.exports = function(deployer) { // deploy the ERC20 Token Contract - - // ETHContinuousToken - // Deploy the continuous token contract - //deployer.deploy(ERC20ContinuousToken, "ArtistToken", "ART", 1, 500, 0.3); - deployer.deploy(ETHContinuousToken, "ArtistToken", "ART", 18, 500, 330000); // 10000 = 1% -} - -/** -string memory _name, - string memory _symbol, - uint8 _decimals, - uint _initialSupply, - uint32 _reserveRatio -**/ \ No newline at end of file + deployer.deploy(ArtistToken1, "ArtistToken1", "ART1", 18, 1, 330000); // 10000 = 1% +} \ No newline at end of file diff --git a/truffle/migrations/3_deploy_contracts.js b/truffle/migrations/3_deploy_contracts.js new file mode 100644 index 0000000..6dd5088 --- /dev/null +++ b/truffle/migrations/3_deploy_contracts.js @@ -0,0 +1,9 @@ +// Fetch the Storage contract data from the Storage.json file +//var ERC20ContinuousToken = artifacts.require("./token/ERC20ContinuousToken.sol"); +var ArtistToken2 = artifacts.require("./token/ArtistToken2.sol"); + +// JavaScript export +module.exports = function(deployer) { + // deploy the ERC20 Token Contract + deployer.deploy(ArtistToken2, "ArtistToken2", "ART1", 18, 1, 330000); // 10000 = 1% +} \ No newline at end of file diff --git a/truffle/migrations/4_deploy_contracts.js b/truffle/migrations/4_deploy_contracts.js new file mode 100644 index 0000000..f8740d8 --- /dev/null +++ b/truffle/migrations/4_deploy_contracts.js @@ -0,0 +1,9 @@ +// Fetch the Storage contract data from the Storage.json file +//var ERC20ContinuousToken = artifacts.require("./token/ERC20ContinuousToken.sol"); +var ArtistToken3 = artifacts.require("./token/ArtistToken3.sol"); + +// JavaScript export +module.exports = function(deployer) { + // deploy the ERC20 Token Contract + deployer.deploy(ArtistToken3, "ArtistToken3", "ART1", 18, 1, 330000); // 10000 = 1% +} \ No newline at end of file diff --git a/truffle/package-lock.json b/truffle/package-lock.json index 2eb5b8c..3c7ab72 100644 --- a/truffle/package-lock.json +++ b/truffle/package-lock.json @@ -6,6 +6,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, "requires": { "es5-ext": "^0.10.50", "type": "^1.0.1" @@ -15,6 +16,7 @@ "version": "0.10.53", "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "dev": true, "requires": { "es6-iterator": "~2.0.3", "es6-symbol": "~3.1.3", @@ -25,6 +27,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, "requires": { "d": "1", "es5-ext": "^0.10.35", @@ -35,6 +38,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, "requires": { "d": "^1.0.1", "ext": "^1.1.2" @@ -44,6 +48,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "dev": true, "requires": { "type": "^2.0.0" }, @@ -51,14 +56,20 @@ "type": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", - "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==" + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==", + "dev": true } } }, "next-tick": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", +<<<<<<< HEAD + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true +======= "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" +>>>>>>> 01404183c25291eeb30b2de9bb98d6631ba73522 }, "openzeppelin-solidity": { "version": "2.5.0", @@ -68,7 +79,12 @@ "type": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", +<<<<<<< HEAD + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true +======= "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" +>>>>>>> 01404183c25291eeb30b2de9bb98d6631ba73522 } } } diff --git a/truffle/truffle-config.js b/truffle/truffle-config.js index 643c50e..10f0512 100644 --- a/truffle/truffle-config.js +++ b/truffle/truffle-config.js @@ -2,7 +2,7 @@ module.exports = { networks: { development: { // Ganache host: 'localhost', - port: 7545, //8545, // CLI + port: 8545, //7545, //8545, // CLI //gas: 6000000, network_id: '*', // 5777 }, From 20c8a9c6682e1b2466693ba6ccc7ed7962bddb9d Mon Sep 17 00:00:00 2001 From: feewet Date: Sun, 16 Feb 2020 08:23:32 -0700 Subject: [PATCH 3/5] recompile front end --- frontend/dist/css/ArtistPage.02cc352e.css | 1 + frontend/dist/css/app.d4953d5e.css | 1 + frontend/dist/favicon.ico | Bin 0 -> 4286 bytes frontend/dist/fonts/SF-Regular.404e4373.otf | Bin 0 -> 310148 bytes frontend/dist/fonts/Syne-Bold.327a2544.ttf | Bin 0 -> 82740 bytes frontend/dist/fonts/ultra-system.34e817f5.ttf | Bin 0 -> 73808 bytes .../dist/img/KaytranadaAlbumArt.0860b12e.jpg | Bin 0 -> 1951707 bytes frontend/dist/img/boundLogo.62253b94.svg | 5 + frontend/dist/img/graph.e9fcdd63.svg | 55 ++++++ frontend/dist/img/lock.7aee2123.svg | 4 + frontend/dist/img/pauseIcon.fe9c0941.svg | 4 + frontend/dist/img/playIcon.1fc9ea3d.svg | 3 + frontend/dist/img/tokenNumber.00b0ca2c.svg | 4 + frontend/dist/img/verfied.815c6157.svg | 3 + frontend/dist/index.html | 1 + frontend/dist/js/ArtistPage.cc88fd13.js | 164 ++++++++++++++++++ frontend/dist/js/ArtistPage.cc88fd13.js.map | 1 + frontend/dist/js/app.b2e5940b.js | 2 + frontend/dist/js/app.b2e5940b.js.map | 1 + frontend/dist/js/chunk-vendors.40fd1149.js | 63 +++++++ .../dist/js/chunk-vendors.40fd1149.js.map | 1 + frontend/dist/lib/fortmatic.js | 1 + frontend/dist/lib/test.html | 1 + frontend/dist/media/Kaytranada10.6fd40029.mp3 | Bin 0 -> 4520365 bytes 24 files changed, 315 insertions(+) create mode 100644 frontend/dist/css/ArtistPage.02cc352e.css create mode 100644 frontend/dist/css/app.d4953d5e.css create mode 100644 frontend/dist/favicon.ico create mode 100644 frontend/dist/fonts/SF-Regular.404e4373.otf create mode 100644 frontend/dist/fonts/Syne-Bold.327a2544.ttf create mode 100644 frontend/dist/fonts/ultra-system.34e817f5.ttf create mode 100644 frontend/dist/img/KaytranadaAlbumArt.0860b12e.jpg create mode 100644 frontend/dist/img/boundLogo.62253b94.svg create mode 100644 frontend/dist/img/graph.e9fcdd63.svg create mode 100644 frontend/dist/img/lock.7aee2123.svg create mode 100644 frontend/dist/img/pauseIcon.fe9c0941.svg create mode 100644 frontend/dist/img/playIcon.1fc9ea3d.svg create mode 100644 frontend/dist/img/tokenNumber.00b0ca2c.svg create mode 100644 frontend/dist/img/verfied.815c6157.svg create mode 100644 frontend/dist/index.html create mode 100644 frontend/dist/js/ArtistPage.cc88fd13.js create mode 100644 frontend/dist/js/ArtistPage.cc88fd13.js.map create mode 100644 frontend/dist/js/app.b2e5940b.js create mode 100644 frontend/dist/js/app.b2e5940b.js.map create mode 100644 frontend/dist/js/chunk-vendors.40fd1149.js create mode 100644 frontend/dist/js/chunk-vendors.40fd1149.js.map create mode 100644 frontend/dist/lib/fortmatic.js create mode 100644 frontend/dist/lib/test.html create mode 100644 frontend/dist/media/Kaytranada10.6fd40029.mp3 diff --git a/frontend/dist/css/ArtistPage.02cc352e.css b/frontend/dist/css/ArtistPage.02cc352e.css new file mode 100644 index 0000000..51480af --- /dev/null +++ b/frontend/dist/css/ArtistPage.02cc352e.css @@ -0,0 +1 @@ +.btn-cancel[data-v-6be94cbe]{border:1px solid grey}.col1[data-v-6be94cbe]{float:left}.col2[data-v-6be94cbe]{float:right}#currency-amount[data-v-6be94cbe]{text-align:left;font-weight:550;margin:10px 0 20px 0;border-radius:1px;font-size:18px;padding:15px 20px;background-color:#e3e5e8;border:1px solid #000}.modal-mask[data-v-6be94cbe]{position:fixed;z-index:9998;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.5);display:table;-webkit-transition:opacity .3s ease;transition:opacity .3s ease}.modal-wrapper[data-v-6be94cbe]{display:table-cell;vertical-align:middle}.modal-container[data-v-6be94cbe]{position:relative;width:350px;margin:0 auto;padding:20px 30px;background-color:#fff;border-radius:2px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.33);box-shadow:0 2px 8px rgba(0,0,0,.33);-webkit-transition:all .3s ease;transition:all .3s ease;font-family:Helvetica,Arial,sans-serif}.modal-header h3[data-v-6be94cbe]{margin-top:0;color:#42b983}.modal-body[data-v-6be94cbe]{position:relative;margin:0 0 20px 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:distribute;justify-content:space-around;line-height:300%}.close-modal[data-v-6be94cbe]{position:absolute;bottom:15px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);height:25px;cursor:pointer}#left-column[data-v-6be94cbe]{width:50%;float:left;text-align:left}#right-column[data-v-6be94cbe]{width:50%;float:right;text-align:right}.btn-cancel[data-v-231b042c]{border:1px solid grey}.col1[data-v-231b042c]{float:left}.col2[data-v-231b042c]{float:right}.modal-mask[data-v-231b042c]{position:fixed;z-index:9998;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.5);display:table;-webkit-transition:opacity .3s ease;transition:opacity .3s ease}.modal-wrapper[data-v-231b042c]{display:table-cell;vertical-align:middle}.modal-container[data-v-231b042c]{position:relative;width:350px;margin:0 auto;padding:20px 30px;background-color:#fff;border-radius:2px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.33);box-shadow:0 2px 8px rgba(0,0,0,.33);-webkit-transition:all .3s ease;transition:all .3s ease;font-family:Helvetica,Arial,sans-serif}.modal-header h3[data-v-231b042c]{margin-top:0;color:#42b983}.modal-body[data-v-231b042c]{position:relative;margin:0 0 20px 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:distribute;justify-content:space-around;line-height:300%}.close-modal[data-v-231b042c]{position:absolute;bottom:15px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);height:25px;cursor:pointer}#left-column[data-v-231b042c]{width:50%;float:left;text-align:left}#right-column[data-v-231b042c]{width:50%;float:right;text-align:right}#pause[data-v-0fc7ea69],#play[data-v-0fc7ea69]{position:relative;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}#album-container[data-v-0fc7ea69]{position:relative;width:100%;border-radius:10px}#albumArt[data-v-0fc7ea69]{width:100%;border-radius:10px}#pause[data-v-0fc7ea69],#play[data-v-0fc7ea69]{position:absolute;height:50px;padding:150px}.btn-cancel[data-v-0fc7ea69]{border:1px solid grey}.modal-mask[data-v-0fc7ea69]{position:fixed;z-index:9998;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.5);display:table;-webkit-transition:opacity .3s ease;transition:opacity .3s ease}.modal-wrapper[data-v-0fc7ea69]{display:table-cell;vertical-align:middle}.modal-container[data-v-0fc7ea69]{position:relative;width:350px;margin:0 auto;padding:20px 30px;background-color:#fff;border-radius:2px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.33);box-shadow:0 2px 8px rgba(0,0,0,.33);-webkit-transition:all .3s ease;transition:all .3s ease;font-family:Helvetica,Arial,sans-serif}.modal-header h3[data-v-0fc7ea69]{margin-top:0;color:#42b983}.modal-body[data-v-0fc7ea69]{position:relative;margin:0 0 20px 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:distribute;justify-content:space-around;line-height:300%}.close-modal[data-v-0fc7ea69]{position:absolute;bottom:15px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);height:25px;cursor:pointer}#locked-content[data-v-662da522],.card[data-v-662da522],.card p[data-v-662da522]{position:relative;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}#locked[data-v-662da522]{height:600px;border-radius:20px;color:#fff;font-family:Syne;background:linear-gradient(224.38deg,#000 1.05%,#537466);background-size:400% 400%;-webkit-animation:gradientRotate-data-v-662da522 6s linear infinite;animation:gradientRotate-data-v-662da522 6s linear infinite}#locked-content[data-v-662da522]{line-height:200%;font-size:24px}#prizes[data-v-662da522]{position:relative;margin:auto;max-width:1130px;margin-top:50px}#unlocked-grid[data-v-662da522]{position:absolute;top:100px;left:0;width:1130px;margin:auto;display:grid;grid-gap:1rem;-webkit-transition:1.5s;transition:1.5s;z-index:-50}.card[data-v-662da522]{cursor:pointer;color:#1d1f20;padding:1rem;font-family:Syne;font-size:24px;color:#fff;height:250px;border-radius:10px;border:1px solid #1d1f20;background:radial-gradient(114.92% 114.92% at 50% -14.92%,rgba(6,0,251,.76) 25%,#a624bd 50.14%,#db4d7f 74.96%,rgba(255,191,0,.96) 100%)}@-webkit-keyframes gradientRotate-data-v-662da522{0%{background-position:0 74%}50%{background-position:100% 27%}to{background-position:0 74%}}@keyframes gradientRotate-data-v-662da522{0%{background-position:0 74%}50%{background-position:100% 27%}to{background-position:0 74%}}[data-v-2fa309b2]{margin:5px;color:#1d1f20}#artist-name[data-v-2fa309b2]{font-size:48px}#verified p[data-v-2fa309b2]{display:inline;opacity:.4;font-size:18px}#verified img[data-v-2fa309b2]{-webkit-transform:translateY(6px);transform:translateY(6px);margin-right:10px;opacity:1}.tokenOwnership[data-v-2fa309b2]{float:right;padding:15px 20px;border-radius:5px;background:hsla(0,0%,82.7%,.1);-webkit-transform:translate(10px,-75px);transform:translate(10px,-75px)}.dontOwn[data-v-2fa309b2]{border:1px solid rgba(0,0,0,.5);opacity:.3}.own[data-v-2fa309b2]{border:1px solid #26a200;opacity:1;color:#26a200}#artist-title[data-v-2fa309b2]{font-family:syne;text-align:left;margin:auto;margin-top:24px;max-width:1130px}.btn p{position:relative;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.btn{transition:all .4s ease;-webkit-transition:all .4s ease;-moz-transition:all .4s ease}.btn:hover{opacity:.5;cursor:pointer}*{margin:0}h1{color:rgba(29,31,32,.72);font-size:44px;font-family:UltraSystem;margin:10px 0 0 10px}h2{font-family:Syne;width:100%;text-align:left;margin:25px 0 15px 0;padding-bottom:20px;border-bottom:1px solid #fff}h5{color:#1d1f20;opacity:.45;font-size:16px;margin:20px 0 10px 10px;font-variant:small-caps}ul{margin-top:15px;line-height:120%}li{margin-bottom:20px;opacity:.9}.shrink-top{margin-top:-20px}#artist-page{max-width:80%;margin:auto}#artist-img{width:100%;height:200px;border-radius:5px;-o-object-fit:cover;object-fit:cover}#artist-card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:20px;width:460px;height:560px;border:1px solid #000;border-radius:10px;background:#1d1f20;margin:20px;color:#fff;text-align:left}.modal{position:absolute;top:0;left:0}#curve-card{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:591px;height:600px;border:1px solid rgba(0,0,0,.5);border-radius:10px;background:transparent;margin:20px;color:#fff;text-align:left;-webkit-clip-path:inset(0 0 0 0);clip-path:inset(0 0 0 0)}#graph-section{-webkit-box-flex:1;-ms-flex:1;flex:1}.graph{left:0}.graph-lines{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.numbers{height:40px;-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.btn{width:250px;height:60px;-webkit-box-shadow:0 8px 12px rgba(0,0,0,.1);box-shadow:0 8px 12px rgba(0,0,0,.1);border-radius:5px;text-align:center;margin:20px 10px 0 10px}.btn p{color:#fff}#offers{padding-left:20px}#card-titles,#primary{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:80%;margin:auto}#card-titles{max-width:1130px}#trade-section{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:210px;padding:0 20px 20px 20px}#trade-buttons{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;bottom:25px}#price-and-token,#trade-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}#token-number{display:inline-block;-webkit-transform:translate(25%);transform:translate(25%)} \ No newline at end of file diff --git a/frontend/dist/css/app.d4953d5e.css b/frontend/dist/css/app.d4953d5e.css new file mode 100644 index 0000000..5e2d697 --- /dev/null +++ b/frontend/dist/css/app.d4953d5e.css @@ -0,0 +1 @@ +#wallet{transition:all .4s ease;-webkit-transition:all .4s ease;-moz-transition:all .4s ease}#wallet:hover{opacity:.5;cursor:pointer}.dot{width:6px;height:6px;border-radius:50px;margin-right:3px}.green{background:-webkit-gradient(linear,left top,left bottom,from(#398557),to(#33c16b));background:linear-gradient(180deg,#398557,#33c16b)}.red{background:-webkit-gradient(linear,left top,left bottom,from(#d34f6b),to(#d16969));background:linear-gradient(180deg,#d34f6b,#d16969)}#wallet{width:143px;height:34px;background:#e3e5e8;border-radius:4px;margin-right:30px;padding:4px 8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}#wallet p{color:#1d1f20;opacity:.6;margin-left:5px}#logo{transition:all .4s ease;-webkit-transition:all .4s ease;-moz-transition:all .4s ease}#logo:hover{opacity:.5;cursor:pointer}#logo{margin-left:20px;font-weight:700}#navbar{width:100%;height:65px;position:absolute;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-bottom:1px solid rgba(0,0,0,.5)}#navbar a{text-decoration:none}#navbar.router-link-exact-active{color:#42b983}@font-face{font-family:UltraSystem;src:url(../fonts/ultra-system.34e817f5.ttf)}@font-face{font-family:Syne;src:url(../fonts/Syne-Bold.327a2544.ttf)}@font-face{font-family:SF;src:url(../fonts/SF-Regular.404e4373.otf)}#app{font-family:SF,Avenir,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;color:#2c3e50}h3{font-family:Syne;font-size:32px;text-align:left;margin-bottom:16px}#content{padding-top:80px!important}.card[data-v-73b6502a]{transition:all .4s ease;-webkit-transition:all .4s ease;-moz-transition:all .4s ease}.card[data-v-73b6502a]:hover{opacity:.5;cursor:pointer}p[data-v-73b6502a]{margin:0}.home[data-v-73b6502a]{font-size:22px}.card[data-v-73b6502a]{background-color:#1d1f20;color:#fff;padding:1rem;height:250px;border-radius:5px}.card p[data-v-73b6502a]{margin-top:15px}#card-grid[data-v-73b6502a]{max-width:1200px;margin:auto;display:grid;grid-gap:1rem;-webkit-transition:1.5s;transition:1.5s}@media (min-width:600px){#card-grid[data-v-73b6502a]{grid-template-columns:repeat(2,1fr)}}@media (min-width:900px){#card-grid[data-v-73b6502a]{grid-template-columns:repeat(3,1fr)}} \ No newline at end of file diff --git a/frontend/dist/favicon.ico b/frontend/dist/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..df36fcfb72584e00488330b560ebcf34a41c64c2 GIT binary patch literal 4286 zcmds*O-Phc6o&64GDVCEQHxsW(p4>LW*W<827=Unuo8sGpRux(DN@jWP-e29Wl%wj zY84_aq9}^Am9-cWTD5GGEo#+5Fi2wX_P*bo+xO!)p*7B;iKlbFd(U~_d(U?#hLj56 zPhFkj-|A6~Qk#@g^#D^U0XT1cu=c-vu1+SElX9NR;kzAUV(q0|dl0|%h|dI$%VICy zJnu2^L*Te9JrJMGh%-P79CL0}dq92RGU6gI{v2~|)p}sG5x0U*z<8U;Ij*hB9z?ei z@g6Xq-pDoPl=MANPiR7%172VA%r)kevtV-_5H*QJKFmd;8yA$98zCxBZYXTNZ#QFk2(TX0;Y2dt&WitL#$96|gJY=3xX zpCoi|YNzgO3R`f@IiEeSmKrPSf#h#Qd<$%Ej^RIeeYfsxhPMOG`S`Pz8q``=511zm zAm)MX5AV^5xIWPyEu7u>qYs?pn$I4nL9J!=K=SGlKLXpE<5x+2cDTXq?brj?n6sp= zphe9;_JHf40^9~}9i08r{XM$7HB!`{Ys~TK0kx<}ZQng`UPvH*11|q7&l9?@FQz;8 zx!=3<4seY*%=OlbCbcae?5^V_}*K>Uo6ZWV8mTyE^B=DKy7-sdLYkR5Z?paTgK-zyIkKjIcpyO z{+uIt&YSa_$QnN_@t~L014dyK(fOOo+W*MIxbA6Ndgr=Y!f#Tokqv}n<7-9qfHkc3 z=>a|HWqcX8fzQCT=dqVbogRq!-S>H%yA{1w#2Pn;=e>JiEj7Hl;zdt-2f+j2%DeVD zsW0Ab)ZK@0cIW%W7z}H{&~yGhn~D;aiP4=;m-HCo`BEI+Kd6 z={Xwx{TKxD#iCLfl2vQGDitKtN>z|-AdCN|$jTFDg0m3O`WLD4_s#$S literal 0 HcmV?d00001 diff --git a/frontend/dist/fonts/SF-Regular.404e4373.otf b/frontend/dist/fonts/SF-Regular.404e4373.otf new file mode 100644 index 0000000000000000000000000000000000000000..65f9ea5eaee37921461fcc29f7dd84c8250f8763 GIT binary patch literal 310148 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

?PYna{i3wz6+V`?ghZ?* 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%0AV1)AcS0mJcN9N0)#?@ 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�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�Usqc^{wCBBU^!6 z;-f_rbp~BwQ#`3}X_mPw&bda@;iM=xcFfWJ6lJCTO=@q7Jp(svTrAhLdkER_@xc&6RMn(6vm^bI5f3Z$!_4CMAodoqpsQSj@?AQkF&`+hHdX(kNTWew0hrFx3oH%_aAt zG^F8fc{)7aC9_91*O8s%$fWpK)Wk=2{CYgHl5~3IG=3Hd)%v zNWs-gYpfZAm#b<6;Z+nE9T*iBid_C_Cco(HFfzcCe`#+s=M7EIkG}E7i;HIz6wD}ASJ&-oowKX1Zr7aFU3I4p7tF1!oSUCd(CH5qk8#RDzld2mOKg08tS8}#8K z2-$@0dY}Wa*Z?-;Ff0!*Ju$x66fnR60Rce)L3EK!C>?=K$K7iMP{-$4^HK}U>c*8F z_DynK$IAb_yLt2G7I}kx_K!c(^bf}Pt;byxNuts=qBo8%$G|iRTdaHJ@ZUk148}IP zEJeev*G)5vRws!>YXl7(oom){mr&Pr{jfe>nc>)m&6sHUw*|v@Uoc_wM77@7Ji<0> z#;}6=sO1UrW&2%Wz2^;;y9dlFpSxnv%whfViVF)%5@1d^cj@6Y5K$T*eO+Dx`(L8K z>EKYb6{HYYi+f$*G=wdOCRy<9B(%T`bn?1)Ty!LPj6`8|(TO0MG@4sn=~5V;r=d|% zw75w9j`@{GSC@_6I_ui|QbYc}@4d9z0qqSnQ`+WE8rLN6Dwth1qP1vQ>yYAJ5|;?Z z$L}3BBEN9RuwoiZ@bCEFq3HgpzP3!TFqku>`d(mUR14z;7711-xj>D#KX<(xW5@S6 z(oNT)k>2x!S_RyW2IU_h%51};A%}5yX?K-87dQ`Nm`@wAFit1G4eGN|Oh`+MiAfuf z*1vC7OlnL@-@a)U6Rsw7cANU`axftDh0R;OBu<@**Qtc z8IBd!w2ZvGj5OHNWAVVvo#JMY{a9)@xvSJH(L?P<`~7Fx8DK1ijH*I?#uBEsTWAQF z9;mF#aY-|>kPRj~SSbJKfn?ub-ure!XKwSZs(Zh3Vr}Q@jqAI*hQ!U&<0WMgFf$kv z8(T19+ql#5UTIZcVM!SlV$`RkP8;SD(#xY;A>aowA(3jZ29i|sVaX+QEY-~et^Pc^ zd2JgvwzW@e>^NIDudy3F#5s3;L7JR=;99v+dSDuP6aeUTnD0zqj3%3y$r6;|qRA_i zg2JU_SyDKt2F(2_bIY2ZysDa&t)OZv_jGpbsp;J`H8wUDnvs+S{kYVe)D?ZXDb3d6 zRXJ8_TIZab#;R=(57vU-!P^iZKo&&;R}3gfAx#vYcpf3}|sUtk8c!S`6(#NsBSy zi56pce->Uz&Zg>xN$E^rZH&YXPOzeR%w9jEW)jgEHyfr|z^`Mm#UH27lB;GxSa z?{8|n_Day;M$q6|qQRZ`>u78HLNr+8QU71iV0Hl-oPxRT4$O75F8geLdFk>@^2=&J zrzydG0^^_FefMp*fAy=kcMJ}8bgo<1DQ-G>$L%Li-hRi)xfga!PR{Pwym=?h0n*A7 z?%X9?eWaO9)*cnH0m?%hfj#t=%QY?;S?4t)8Y2rSX1+O4Y?*uimnV1u7*+o8*qpTUnf;kRHbR^uZV zGbBqmk`vdpTKs=<&r5*3ex{=CVDDW$jjf|2P0fAcCO{4*5=;s1Hv&@vuF~bFe(}w39yxOFy+_(dM%vrQMmv12+`IRxtM=}_a(q=& z)9TetO{?Ts*Z|zD$6EK_9}DXp{5gz;$;n9`IqBE~{MRGTZR&bFh}xqP>+yZ+dfY_c ziCB-{tggrZNn@d6zF%Ap82*1;m%O&A{MP-QSI}%YRI_r;Kv|Jom;AzUU(mA2QqIn` zF8Nt}3egYrC-ko)|J&o?bs7)7Yp7TK_}-V6%kj`QGSt%4?=~K2Y2q3W8k5VJ4YZ&3 zbN;P)anF)@5$$C|eXp0}=?J7jRR4|Q2>R>)?s&SkO&w2lY1(+|Z){t)rlon1pTT%4 zDT<=;6cJf4YO5M6bo{BjD!;I}3~Mvu@&C@h$8U6wr_YeboMSvW`KYtzm#)p5M@Khp z9?8tf&dSWm$>cX~TeoiO)^+Q)IexGrH@B!LH&?DPR33i{vZ;S(Op&&2AfIwPv}e~J zdwP0)*W-9Wj#Co`%6?Ak!yFjok&*(89Ee~b_<$%1>nc^-hcsPu>uArlEiep14n5=p zg(OmPOj00H-W>~oX8ct9+3mIxu*R=7B!+?4%1DRKBR zBo0diOI%RAv__{fysia;6xl3DY*dQhZ-=@v8Xv#7w?g8E)=a zQ?v5>$(co!jiq6c5fM3snZcpqfhF~2S!r2hd<^m#c^^Bi2~N=I1d`9Fn_O{D2@T`h zpiu((7gpj-k6+w%2u4EBXvc>v?!>yqTqG(}MLCESgjk;^KbzT^6?UD@T_zoE_mnp{ z1Q@U;kb)toyhEov$!O(w=571Yug3Gfwr*X0eSPO&Kis`fZQEkB?Kg1K{4!dLL}M*N zmv4N*wa79SLu-*BxfW4%?qMBiVeN)BTT&rzX)r=4w5okgSI3w#AgpOH+_F3|*U;|A z6JGX6ZaPy_YOAj=506?F9UbH6ANsrQ5sl_T7R0Z|n4m{a zn;<|VnGjy`UPlOpqHU%{QloQ3>9Yj~K@UD?SrD-;fh-_A-YBPi7qeLi`R=khqOw6xTeoZJ-d+gx7R+FTNr6lT8T+Q9Fdqhn0w=xDPXN6yZES={p->eQE@|WJ37>#qv~NsoefPTV^z7`EcJ6V&|-EDMG)d*W0kYw6vKm39 z-fR?LsS(K#p)ZP#VKMO`*zEAcg%^;-7s&Zm6*9x>H8B$E-L^d9HFIj3IU+nHN>nOU z)`GH%CjN`6m60(qrqJMs$RNF!k577ONqY85DC&X<#jWvSfIES``B;J!sWsVS0W!24 zNV0}0m-dUH0V_8;V8c~!9L8B7;1V00BLFO4A~X(3U_;84L~fE?APr$A!!=Q(oC_zi zrJgrF7!<+QyWrE~I5rwBJ}8bRbBl*3jC`nc7FP9CVV^dagK2TYppl2IC@d>hDtXwl zu+Z$n!t|8L2wo;i^Q|i?Ma0U){EDo=$k4#JoOpAXzn4DAnwwnY4?Mu$!0P$;xd-|l z6!jm4s5cjTAfY|Gshu;>Gb}NN3^SL=b>|iKcdx-;J;IbFUHR! z8vIoLW9KOU5s@JC4@Y>d41ZjMj|P&$AK@om<*V(txPN?GD3ypii>1E z_bJc|#@L3wEi~U}&>w?gWdf5MDG1<@O<(|-yud!5^%u9?G6O%vO`6}#POJri*BIccKsHe1>D@>K8boi)9Yhyr|7;q_boSM=wf8%c%i z=g@Nbl6o$We@Q!+S2lkUdzt@%$(z&pHXPh|Da@Az9%K9oz7273sfgWIi%WXKy8yR^ z|D4~0ypb<{75u)0x4cgZHr8)Jy^O53$-W$P1ZzgR>(rZy@u*FtYChuzdd-}Ew_kUaGUG%a}zUE*8IIFt5lYST{v)km`-qk z5VmxnVhSRt;2w0Lv@OjK_%cF}*K*5s2M_We&&>2X(07qvE`BO-hA|8l2<@uv(+t|K z!cOCUG=qVG*1FbO3XF+h4-O~8p{h?ORV_xR!M@DJi46NMkP6g!Q7MM~$Qiu8UXjZu zxwcy<1f(;FF*1t?Ktr)03JmeYeN=MYN>_tfa~IY?uth>v+rD$fmqsorxwEdUyb?<4 zD=z980wRB~XKZNF&~)GSf|8>2yb;^nx2Se`^OuWC(FmMIv5Qn3WYGkp=w=x1tHUWC zLIp5QjfUe-ihdKrv28;i&>)}^WDsD*vMB}XguVFBmjttctcV3RR&iz*XCSOW+OBOu zA)3n)r|w$fvY9(>x#gQh7xi4KR;jieRoc&AnVEZS#O7Wh>ieba74{3>D0@AF8+;hI zzd{|EW9#%Xz5#r=LU)~##22Dpyxb(ePAg3uT5^1Y;}d=r9s}aB6kf-FCSJv@98tD# zC@z!QGEOoHm?)A1Gl~W#4>yv1iloBuB&)G7oHz7!^sMgaJ+Sy8cKu4Ss>K>Zde87c3f5;fvK%zRCVjv6MQ4=-04)=NZ@H7vQTHjUMZKykM4% zPUs0C&-x}TiHZPEF}gUm5gbb_W6NWg#gK{ybt0^y7mof0lKHbx;2Zr&J`2Zx(F#y! zqg&U%_TYoNpWgil{_uLx@#@o0^J{Kca|C~DZWz1)e}gxmI>1x>{2~5bK{l}5=iKi) zezuWki=UkNZlXfe=^XL&MqbFjJK=b7V<+My5^jh;d>b-1qAQTv6XoESgLvQ^5SSo^ z#2!Rg6tQTuW4|C6N-Yc2<4Q*r|L)wyL|7N+2`g&g^T6ex(<;hAfCc?lf{q9mlv~|t z2;~ZNxM+w7B^p9?QT4x~Au9_9elJzm_81L|XvjGRH`E<_G&*81w$bg4i;|p^AS_NJ zi2^k!N)Cf=3y1K;FE~satmeK`HodJa5 znphc_Hlw zsR@6%YVF#pnu5m0f*b4Jy7J05Y70xgziaoiP%B)L*2jRfazPA3vvNB+X){vQ$n>UX zcklXsNn!09S6=y69Ym8zn={|a4=W~?$<{uGD@a_1JEBQ`1fdSjCt*g^f%4PR2y>XU zMrJxY6r4Zo9?Ljfv|-lF%&^3nO*EWgPyqDDf@-J`slTWg2C%Fo$paIm{Ugo%M4_1< zKI#_`7|>Ev(}I`ZQODnu$T0tahNh;50RON^g$IbI!m`t{N@5CY{rzhTV@k5pvcuK~ zhh(fROU?_*gxTE8puFU=wHYD7RL?%t^SG?%z++J~g0S2ov*1)us2S-t5H=vbgw#^y z2we4C61sSBqeCPn#9IPkA&~B2W28tZ8;t5`#5M3vdm5_nf>vVKu#@eA`tw+-kH3F- zq~iFStZ#EoO|z^o4^Se*{r&k@WJPjQZG-6{!RyaiAa(gEoAP;|$l`b=MQhE9=jEM0hNn zZ{RjrMtzfg84$S0Fx^5Ai9%e-O2L>Ap^R(_X#`QdksOE4Q5sn-43~SD=KSA%mFpa5 zIu!5qXHwQvS^4u{#+dl)g~!B}bB&3Gv~o}w6oXwUEBtgTyQRiE+O>U zj&s|{2s#kvcxPI{-q-Ex{G4f(fVp&D=}cP( zJ#O#$qez={%rI7c0iNQRfmQ2K7sY$76iPLyhm*$_9DMZBZ_F!6{3O3ZJcBhrFblH< z2ZQTSgn>0;XtAAM;%G^x*Y?ipzQ{P~pj85u#jil# z*Wvvkdrm}yU-}SJSu}1F#0o$}t1AH2A@KxQ*eMB%b3M`se|0?)>;gh7dZA3UUXWd% zf~8_-8J?~(s0{>cUd(xoN@SMkP2r80=KI@%ZEQAAC@MsP6F9 zwVgctKXB<9*Vj1yTy^WM)m=#6&VodcE4{Z7@<6Qh6=K9FeNv$a`k>+QllA=Sy3S5m zS9E+@{U4`l9CNo;b$35ARJ9@!9fVV8{X+{pV|&W2 zsr);8SFhfSAdD3J#EEAi4L3tR)MTq)j=2CPbwCr$On9~5+1f6AoNpQ?7 zdK`VFeG1wo((Az3fS$%7pO}P%L?dYq65ATC>0FT%%b4WSwKBj&Ww4P)Sdp*?TG7OwDXPq;TYpduTW_9U2+OS{XrRFw@C z^6N4jiJ6b7JXrkvU9dASg!1FrDqDLXnll3C0Zf=0aS8?%2*6bojnIAtYYjVB(16?z z;V+DhDL7xLTCS4D0Kw41#25qK;>^fwS$tR|%q*!k!QJe{p#z15(N%Ow3e-Ofbz$Mq zFboxkJ#If3>R;oxX-~%uYXfTn#Z%4?b>tQHh z%xBPVVpUR}m*WRTdB&yyUZ7t^tUujlog#XK4egW0ifx54k)c641qXykjTiRdqN75B zb-dBr3mbG)BT6!k8G)qOJWXkhPsvQA%OP>F6zc~Fq+PJnN&4m`}n!UM~!PDU7xnBw-(C={44d;El zj0P#0z_J#%v*RLlIx?>nF&?*N?xKXv0Ui9XiN5Yo-auhecH^4p8sp74TY~n8!wBAl_DCWP zemdOP1RZ+CpjU8W3LE1Bt5dp$L1G{6fFxvXny!Hjg%W*WSYVJRK!lkSx(t?hrX&F5 zRM>U_4pttZhlO%;eFFd5+(+3}zSmBrmytk~fV_ED=-}1B#n_4;ystW2I=I=3-M}Ls&nEQpK$EvD<#heSV~v}f0923SPYNC0w?$b zm#hYYnzFssd-hiC#s59k+(UC!?b$=?dj<6<<8MM{PjU!vhFeOIpX9qSy<&o*)?PBf z>U4ClU9%c)q+6=c!gN4Ok2kNo<(AtVojerN<+cq+M@HtsiBmh}vP(n+e^{2I=}5|A z2x(yN@p7{F*sEfcy8*L1B&KrhN4ev{Rl-sH9Xt<@jQoUZPwik35h4}+0R0tntDfdo z-T=cqFn%nTUJBX-vJbq_S4lD^4++6Q9EpkW$b*JPbVm?#)IdJr_~zZq-aHd$TXye% z#J=%Kylwe6dE>;$#eo|~CPwxJZW%$@YgrEewFrVB6>DyZ_fUOOLP8<`wd08#Tp#^@ z4)5La)S8=a?k5~@+$WdAPipZ2B=|tRF(E%8{Odd<*YPB;%jI!5t$Aw8Q~ki#+WC+9 zt0Dk-d$BlJ-jeb-v=KN{stx6bfrq*Th6_6Cq?WAEanV;D_r&4e_`j!F_?Y7;Uq5wd zWc1R0M<%JUu}#SLT`gbSG_K|gzWdzSCJ=bOf^vP%aSv}zcYKJPkML2)om&r0J=lNg z=uOB~wlDH^@SmX%`Lkiw7-FmksJ3fFFdV_hfLxIKM%ygsjBpM)5Lr_|&fan~k#HE> zk|fcSM^Z6t&Dwx+{E0u~sN~)2cJIc2#~(G=ve+6?0f~MjHW0tpWRC>>Ztwvc0LBrb zARtjNy7$4;%hTHncflGBus*aOolhPI!|I-S>ewcR+0&~J>lLGir*Q(eIThL-`- z;YOJkSh)TFP=5jECw|oF82e7$)anm9@}L4L~dc zA$d3sn$Yxoc2GgSDAhOC#H~n)O%02QTcb6bxLSRU_jmvlWS5J`7DPvDy;=pLKgip-Dt#rt584hW_QD8+}&XK%hj{xpw;NK z+YkYV^}u{+XZ6ScDxzPp)W7dB&`brCC4r8CnZ@*sqgO=Teb)%eYU2N7Z;1(5o>|E= zus)URt@)!Q1jnBO`NGrUP4P8I4b9+Kq5l&eg7Q+5qoW{!^oBiV*k&emphnn_1jDMz zHzpumK;k|UG7#g9lZ|n4acOa>DX9s1T0)S(1;}+VuNvdZz-}jk$1{ZLRPlgjzV^3!4W6`l?!v#EWxF9P9ZvN?>j*dN5K3grLX6f>tvJ5-k zZVKls44G}Y-^P>C9N~D*pw=s&wd;VFbB?O(N@-lj2 zO@z}_(t-0-z&Z|8rKH5*=wwQMN?uk*Oma+;#f)sC65|uSW!<#OB__%KLjpBaPa1w# z&u-F^2|WzgV!Iext1`2>ynL#*ds|WQj_%s2^774<{TCG%ZSV6aOKh?hug=csTHzS# zP0#9IX>Cd@GxIY=!=y7LjK%*in;QQv)U_j}jh@^cn{E;2|L-q zrZdq|WD|mJO7zA(V@&4*%wVOr@TC`Y^AQ=;h#;-B1SpsQv=LhFr_he5dd(4Ka8@`h zH#@^K5gwaA$(=Oz*0i%_aZD5&XZ_mvm-g z@}_NI%$LqP+`_P)2Y;#B;tJz*2wsXt&p|rE!^7jlEg6Z4D(P?zFW11LJKPpdMbkzg z-}qw3()-(9b6wpgzJAlU`)GQ!xKVgL}8KE?b9yaYx>a zbs>%{f<=`#A{liC?7|8nb1WIRNRs(>7=hHM>synPV`2gVbUO9IsFil(n$vz~7=Set2?NR|+WKiII{^A~~mEu@FKHjr>e0+6cR%TLCR#phwW2=)g zvl7We9Fck}j<5E%wD$J4w)A#pBqn8KBqe4zy2-1r1zzb%iJ2KmN$KE)lIM>q|5#M# zm5^6#w`~>N+Y5S#xc>=8Ehl`rf-Y=C{r$Poj~GK7ruJZ7Faa|W$h`x&r?=<03nik} zX3NWSqQcf>Ypku#TbWm0Ty!3^1YH0vx-W{ZyH#{qmZEEZiHGCe_3Kv?LNAQJZ@SRu z!e}R9v$v(Cuagi=-ZTo?!2C;MT>KjJCBzme4On51Sc*e~IW0btAZ-sUG$tkJh4}^y z+8b&}V9D>gs(J38!n64*h!tf%V=NDLvJW92+|vd!1#uuIV9|ix1O^K{L@JJ+w-ufie9VuBoGx@+kIy{AsGs9bSxzzwQZgX3 zlw30AblwPJD<}3v1(+?8ONKlXn=0n;q(UX*gZjfQ1ar$_RkV4dpxO{PWAmQ^_BIuE zsBMDA8le-=2-vxxW9*Bv1{egpYH>i(Lne#O-ta>4grDQ6PyybWujgAFNBze1`Fv}w z9)MRJL2;0L&tJMLkG>jZrQHrqk8jD=#{@rmQpnj6FjKVtvzLqIM( z=l7gj;AW(T~Oc?1|T25?&}4xR+uak!i@<^VK^Y=Jm9qAxYGsPm>!rO z<3B9q+iD$0DF0I6xI*F>Z3#^Y==jnis}b$F2-Cz$vo_8=jm(RCLG3y%AxTQQjnI_l zMY40$U)3x;-{Ci?g6AWg)=^^&*uq|{7tQsUFabYc1|kG_!zI&YU|@&@AAJO8!BC5E z@dUukC!j~g4-5C!@U4ZX6+Y@Ws?SFT1pCK;JrJimFk^a3=y5Hi7o?V0AwsvBn7~C1 zii1$JqLO{Z1wXn>aAA`2@dpiu%N(XM>gV-WVd)IlW{5jU?tY^XH>%aTL7*o&{sm?d ze}eVT&xmowN5bIoSa6Ux?Exf&tIaFNk`cqoXhf%3UaK{w}C%0pD#;c|Ye z{IKeB*veCpJ=WFppNIpnaZBrWkH?I9^wHcjPelnYOcDniuQ*=eN%!1)?|r<(@c{4P zJ&p%XojOHKQ!M0e<&g9E!-`8ZGh@cc1YcRgDsbAVm36TJOb{E`7HDZbWV=5f7FHo1 zToxS>8ssB*S&=mj7S#IMn`(3c-rKiLZ`nMtVQgs4K$Q;*&@~6qh(W&#klL*wo&qML z44XWHVL4al?;Gl)^YYetZ3y!d-T?vLef0JY7{)R-z&ikE9oyO(8cIt^$g+NXaCmUI zXLVawTi2@2hSrAGmgf4p(u&dw+scBHf|BADIoX*R;bGXICF3Iz7%~gy5!BfhtIe?R zeCU*6&NUR$M?8Hbg(Z>O8gI1HmmYz}Q2Mdv>twja3jVh+pMET%x(_CtCD zrV+Ly$?OyD1<*p7?rnuFd(nFRwfpyNomw+cQ?)$P=)B_AXhcKF|8fCKrY-Wb3k!^B zl{j#5c&k6O7fAo4LNcvU;=<8Fv|7Ptxe+>ph?cL0CMKyuYndx)K!k-S;)ga#3MdQ6 zvZ++9JhB`Bf69_k1Ea)3ka7rzJSqYVAv)nAt))Avn;qJj!hJ1aA%!V+iyQ4DhWFiM+&Q-Q{bIk6i{m-Y9dBKlsyt zIGsmOk*+c%Ixfp>8Vy*NZuM(M|%a}Dk%Fo9je2tL_erY=IuoTbkph(j)OUU-l$wwz+ z>PmflBEtL~TY7xMb^e#+K&4jYiT@!!0_{j(IqV{vR{&HA4cr531XU#>3Hxx6D?x-} zFmmQ$03CtJ;$idz2#h^ERQ6t)NK5;yn2;({bRju?c~>1-xCu(frM@J%rPY|brEyh3 zLiPpM#*5Xg$KsVZ>|8Xu_-G$2Z*3bZ-&l6V%*1T)Oz@@;7jT99=tGIE0)Bc>Thpw3B zm+U{2x3WC{%=_=ZzjTDN_m=h9DFrn+-AN)P{_zGJT*&|I6zZ+3QqxoP zX>7G%9i$;29T$`s6&D=8aE}RgF4XgGP~f2}el7h6{;`-*H71cGbRW~Q4F3ZnP%lcJW zRz-7ZSDYoSI4r`?E2OGCtw0x1l$KhVFwknj-db#ozn^(UMv7I}78j^XSQZfz;H{5? zsyqpWaKo(fAL44vHp^Kd8m2CYd?k9{;i^f17JB^e~x5EOb~bHGCf zL*D2dN*`VdAE8}3-bu!@KOWRgIuGl8Q+&fcxv!8ZtziYffx3P zy$Kf`*p8!ZwNlE$Q*Xqs-@lQEt!znh=su!3J}(UDq49ZEYL%h_>x#S;xnM8SQWF!f z2wrFzzt7h)*o`M0cI<4E21}v^;_5=^G2_iQKDTA^2bb>u!Q_@7TrzsJx95)W@uNMx zN5}4b^?)TUby-hj+IY{KNl90=KqAn0WmD6YeZ5z=b`*|RSC3k)qt(^pV9W;-k`zO9 zWMOWwZ|BXX=n`rh1v;gF)cJuP8NusDuo_!su%9=WM7bXZwz|jL0|bL4{t83_uwUxs z<=KN>V6Sy(AFnnK4^p1>2=RbKDoE~+`9MVxs-|*VEFsjA1pCEC$kwoEfXMxYOZlG5 zcPO@5-nO%i&+fSD@R?J}$uo^2dEL4@KKW$FuAQ@=96RPXwU%JR*;BrY-zd~G%tdnK z(0UUxy>r?sT6&IIL;Cql8Qw55+S)cc+LoDX%>cE`DCR4~+~%X z51>5QBUF4*9^JRN&Nc{Xm52z%Di+n!85C$c2->B_UK4hynPL!%VV@Bp%%B4|isdA9 zI>_oNCMMV(HW+9EG_a2FaK^%yhsQ=mBIB^&z=$|c2ujUKL{sHF1VJozmT*kgU<{8h zq$!8&id~UAa&!OX^5GZ6jeGLg$%=(<$j3b2bFT&~H~faU;A3D&qke zmB7Z6@RT;;uuhd%KtPED`~|VDbU=ZQ#~F+rMNq{psw%2nS%$0&65``6!HMzlboqkZ zxF8-^a=KJ2Ij>?5TJl8d!3xz)9I;k&GDM@QS5uIp|8(`Lrd1x{Go96&ii@|@cT9#J zh>VMi_{n#k`Q?jGHttT0&%Cbl=HJZjc=a}@;*2+5TVEp{dGg`jk*e&{p8UZQ?0Pho zu74yWD?9s|Yp%WS+B-sn8^WUcAKbCy8(ofgY2kEh){6OgN2BPUe~RvT7M*jS(6F1I zpN|y-^N+!Hzam;3KRU~=YYxU|&KJ*7j{F{x`E}3zMT-}L{2oGnLfAgOaQ^2i^MB7T zWWH$rq4@^^Tb&9Uz8{-^5W0mwcf5tWiPgQXB6Y8eaN`UY)r_5aO$|Tunzk3l9j$zP z{xSX_hUVwh;Z(56-sHHAKUh=4xFdm2B0b3#zF7LL{QlBX#^?UU{tIoFhxD56p#tjG z;QuYOjUwuh_ab=EUM(_CyXfbq(BJ6XSqR(&=buHtrgz#8KydQx z2|*4uPt@Tp*|&?;JOPpgH)=dZexDoX*!IfjPu(J(pP2!iP8bxi0_wCXoK3EBs$H-z z)Tdr6Td;45W&E2;1n7D=`@cR%f85ZJmxm|JWD284ENhhCd5yK^@NknUJY3q9T7b36 z39DnH=$ofII~1|Sp;POG>kIqlzb*YXIUTCB!x`SFdE@+}^WTTu6MDzcpw!MmhLZ5thy|;55c1W~SYD1> zaDGkK+6>YKH=vc9<^yqBFc4*Ic3_UD`a7PPH)BUU41QZ3Qso5wex2y!U#9v}8R+vk zU&Q%NoXUiVGuUdh{MW-z>=pmK3mI^>MO2AE)LGtPj>(mzcmhnC+bS;59Au{bL`HK3 z%wbq_aYdDJgr^En?;|f4x3EVDxiQ!!ye~)aPCR5t zRF#{9wFF-&a=v=#tJkhx4S??I?Ui{<;0}y?P|q;3FA)|%N18BGa%^9tij2~@6{eK1pd`PJQd!;xz?|oV zndkzFBZx`X?Sfe~ehOx|&>GIa+1G#VHx7MW^!4}OrQ&f6IG26woH!4+j6Hlv!?|FH zE6Qa17}+vg6k!Ks2``mxBLyFA3zu3e0ne`wePuoGICRH)!V(IE{9Fw4Td2P=Sm=g_ zldciqZCX=L07MMWNA^1=&5MNhd?RPZM-KK?DcU+3fP-)m{HRkXBJSe7rh zSWG61s3^1MmX+mN%Zj6;qobmtVSZiWpjR|t9ICgIW6?v}9B48;bR>t5(2fNb-2fCf zPSBNXFo=Q!Wh8XK!r6$OOp^X#QBAk5ffeGnr^AdvNKB;fpigtjvh?MVrod&y!gh(mZEL^e3vgPh0-~}fX8axdF?669F?O+u*0+zH2= z{;2X8;u>jW$v>o1PR@f?>whtKV!l~_ROX}w(o1aTr@^ygUrh;RfuHBmU5R);SgG$| z`DZ=T@SmRlRB^sJzAx~I|3sV{k(c{(3H&Z$3A`FK<^#44@73xv|HlQl>W6#dqLfU; z$Af#7=&9D;+V}kLbxjDr{5;Q5lDuVe^0K1Dq$J4+bxNlzg^w(Q~18bZ<9mr}MRs)*it3Ag`YP4xZz1 zd*J<74c84$JfDSIH{7{!OMah)GdEm)7LMHU;*JX^4uJFc&-3X1j(C3rPxA=gOP@c& z?}QAeIPtg>^MVh527KdJ5zqbkE~^pW#nAO(#q6K*$;KPc{JZL#Ws7jtpW@IXu0k3- z+#h!`_%j>7SH8|_3CJyUFjaDOh;p6+e;S#71Y3-F!~ z{NIGX+EJP_| zk-8e-`$u?AvPk7`cz;c{b*=alOU8H%0c|Q({Bcjm?^!-XCXraLEEfk@9PYBq65m3< zI>w^KWy~zT!BTP8OguQke0~{=5x25L_^a_A1MZ(fybZ|j)`h-=c#&wY0#|;IpPiq0 z7N>chWqo)W@KoVR#Z!$ZO?$7zI}cAfo(*{F@l@hT#8ZKX!fe`;2OAsl==+hd{bYh} zx0(L{a=xEqjGSQ6d_N24Pq9?~7~*`+cxd-z-U9nZ^(>2Z&97Fz4?H5RavJa7Fq3i% z-d8cR@@Kpq_>+5hc3W>VQrSi zs(279!<}QLJcqT=BWBPhGc1qd&|C{0(-h@e#QQy9r^gwuh9!&Dh}VvGq2~|K=>7u( zw}lL1vIM{&me1uV5d~+V0BcsEdN`8;bGNH-=ZG$rIob0Le)>?SU$ZVH3FG{apf}F|-zQkIZW;W)#|99045#dp>5cDx z?YorTx?IGEALwwdGRR`V542zoj2CZUuFYq0%Ey>bp2yrg06d=p3{`B59`Pv~g1w1$ zB?R%~5S~LeZ5?1i=VKQhM>*Uf3*YWxF1K5_qZN51Fb25;oBKP@MqRsryDruZca!{H z20X(pnz%)1Zu#AXwJ+i#{YE@{kp3OD?75%7{W2cNj~x5(K7sdy1``-h$0j__@IQkG zx&-T|qii#uXA^jDfUfQs#{U@ZDj(zb!QBP^_*;zDoF4dB1crN%O|e7RQ-2sYXuina z;>mnBe}=!v-{OD4R(g?u?KId}{;_yf`~{MUASGTYQ0kQ~WuNk%az^K&i_+EV4(YzG z_s~Z{eXm^Kt{>6Q>i6qkF&GR%hCD;9q1P~G*lD=m@LQax2s0)d^Njn9M~p8S-!^{i z5#SN$k>^qC@vz4;o~@pTJx_c2cy)S>dF}K%;A`{U=)2qZ8sEEo?Y^)2{>6{^1^LDM z75LTr_4`fwo%B2H_glaB{T%+2{`>ro_aZP@m9` z!?uQ<2s;(_)3DdW-V5&xe>nV!h~|i+5%))&h&UDT(}-6h-j4WN#F@z4$hRUtih4Eb z-RQXJ1JO@JzZCs;^v5xIF|{$hF=H`1V-CbT5%Xru`^yZ=B9^5tD_B;)Y-ZWZv9YnK zu?4Y}u@A>S5&Q9SvD|NY)bhmTxy#F!e|`BQrexENrgzNE=7Z)V=A-8O<5-+e94@$s zD~-E9?oCU!rP9)B>9>5{@`&Xr%X5~OEU#PMvwR#c;uGV0`XY2a9zUfi7e44F#?L+*@?F&-j{eh@tMRQC%&BcR#JUZ zS8`%+Ql)Wj3Qf^AQ zJ2fUXGj%5Qxzv|ZUr&86_2V>==9e~@wlQrsZGYM|X}6}`lV(qQI_-3NQ2N~&MHz=P zewyi*xjXYj<}b5MS;<*zv({%#W$nz`mvu$fby+uO-IaA;)+1S;WXEKWWdArv7Y{^R{Zko zX+&vaXAuq6mhCUQsqCJz6J^hq{j%)svX9Djb zr~E|u>GIdh&#d%Y8NV`b<))Q4+Cpr*ZHH|4*soeSW{ioRWn<2Q_X`lr)o~uyj$B`d!jC^ z?m*q!^$$1b8f*<48?I=$r{R@GU1Mcqf8*B1qm8GV!kV6IdZFn|vrqFy&3|i&YiVxT z+wx#*UhAPY(e`lLi|xAh%=VG?E80)Czta)YvAW}6$K9PLS3T2J*|od7xclkVhgZMS z6V+4HGuU&m=b4_5d;5Fe>;0(L(dW?@)ECni-Oy7aN8~cv; zz0~(k-zWWE{So~|{gwTV{UiO8{nzy0+<$lfgZ=OKe>}hjyaqxBVg?civImL>ss~yJ zdIv@Z_75B$xM|?QftLn88cZK-9UL3HV({+4AFuIPBem+pc6J8~gf1C&#KBPyv1>v7 zp7smHjxfpb!nmJnt&1%T%}qA~6=`lL5@FVs@-0X=LYPf+>u?UIOLOa)FI%Iz4e;Nj zxjo>&U2}UvM`OR{_C`L}X>K35zmA-_&J*QtWhXT^)K+++<`!^gYHkJmNrC3p;k5i( z&8=rqe5>X*z@O~OP@W#}CmRan_GB@zGoZS?knVX$m z(%sb4T0&kKW8;g<+O=y}=7<`+g+eo@ z#%IZIk{}v$00@&FtVS*~fMWtVO`)uXoSbnNQd4PD=vULI#SG%M$nP=a@LBcR z#pquqFyNkgiz{uWtjVm5Me!zGIHH^vV`x3f)#OFw=s z;w~NV{0KV&O|3*W$L7I_=)rmZ5qpl%o@e9OX*|t-47H4(a4+u7QgExozqk+gWog`x zrGp#(DSMv1z&>F=;{iO7Ww1<+`|)@%58K2B%+Jvee!-)8 z473Hm&Fnab@MrLL`Ft6V<+$~Vo7mgzQ*LI3JdRsMd^umqZM=e4 z@+w}ZRKQLa67+S1UgNHR{XwL4G+_iGP3%kPdz&td(B{x^fZg#2DDa_OjjlYTW<#HTETT3_boY zpoiW3T7DhB9x}Hh>_6EVtaz_tJ^V)gWquR?3hQP2Km#vjm++hUE!cs(jrFm9emlQ| zALVy~Mh~+0`CaTO{#CYy-_8Due~o{ge}mt{@8$RLZ}R*31N=e$5bRoh3$`P_&F%ac zKh7V8YQtl&|pMlH$Ie&@&g8!2LioeW%&0pca;lJg-5w;;bg_rOaKEhY{34alQU63FVEJ8%6 z2ovErUmPi-M6`$z%S5bLE=BuZDY8U1 zc0Y2375fSKqCgaiBFu&UFy;}<9>To#4Hk#F=lkqR%u|>%usT~IibaVih5XzHXN!ke zIaba{c?!yMp&6w@} z%KpZl0Ij;7nb~so6?PN*GW#Yd@I6??SF#(~QLH;|WA}^EY)*dR8F3D_Li zEGBV_&6JoHTg5gpBesiKu|w<>yKoQ9#bP&3)$J8u!d>STBQxVW$Bh+RhA}Tr87rnY zOizt(_Np42o*fyHfT{B+@nJ8u6cNL$LzSFS>~-~V6D_OBLhRL8r13*l$Wp6Ol|OO+qh$D z!|=?GEtA7LW{quX)`m_sey3af`~t%&=__;2%_-7#0Ukq_Ta=~OF2Olx9-O#gPW_ahgci%#wp-*}l`eib& zeivfAE2K~6_U+kLZ?z?)JD_4Au@)$EkZvEXt+WpnF!|wCLC|RlW+x`WYRH_c+)AmE zwU++ARioo$6O)s}YAm&#Rd7(@qHM=_5$*0O?_mc)=D)%?NXY1X{5Y-Ex-+bZEjGu zErqge0m`67T~g-bqxDNQ(>AwE)sCwAtG!iCAVJO7>ZA5sHPWgDP<>aqx16jUy0scj z?bdF2733~_C?uBOpQ zm(^>7D~fI-NQLJ_=H&F~WLIaCnAl{T&=O6!C$bhACS^qold=?zh*jw(k(FUe4VrQb z$}3RDLBysPQJZNsYr~8hf5t6-exYHz^wkK}3f(Lbv01k$1y(Jr(s#$AY;f*7IjHkfRENM)zYTjGF3aO>aX@zHGxXRwEC$1 zR*kfM0aV}Z?k%Sgu@!1GwOhO8RiNTpi=`3r9d1?Hv9wA%+^V!_IB2=5V?z5-2ZsFc zlA}X9z11Ni-2ranLRyAbdL* zy(w~xlW2q@OijoPJY;^;+t(W@LwZw=czdc@!sQ|Jln%<2;!v&>N6nU8YQ7XnW=xS} z&a*0{cu~HyPDp1pNa;xSAy#YL18?Gn`%TspdyT5U8`{ka@!4r2Y_4aJSs!RQ_GM}wG0_i zmLXlTjHw-4W@H)CL1mCbD}$VB8LErQknyMt8BZ-kI@K~{L|F#8WN*o?RC`T!rOM%E zSIS8O+=BGag&r5h!&~+;yz{m10_|O>y^FNBGhK!Do$ZO1kmYamku9LQw|i5YYHlA1 zs`jC!%hBGs-s2aIP7ZI$gfMK}Uv-a7@0ya|zT0+;Z=Z#`?yP{glcAYc5u4c!~w8!|Ct+N+zAD>lYRpuLqXJ)2%?bxaUwxSR- z5x!+^npcsh^rGT5pB1VPL7@2*s6Hdpvl~^{j;&)dc5P8@t>5sLtq>m$PmM|V+&;mm z=NN})i881yWzCit&$eb4dP+(&I=yAYQ_>l7QE3RP^j6?e8+U5WRwp+tojQqWA1dGK=c<8w7I|(TIqv!8x@VEAPDg5fxhl8pwLrJM7N&Qv z1;Xs(K1ca4nPa>bW`IC!shEXVPXMB>Mng0kH*Uq%h;eMv)_&z&JH`!Tt zZ%v=c)bs@N>u9nYR`vJV^P=s^eM9R_hr4_2B4PMR+F%_WwTwiY&34vjXH}N!y0p`prSBBZMFSb|bz7gb#sne09m zII4!n?7H@gjze&SZ0zRo7&G}E_Y38fF(x=ImB)j5Fv2W$*4{hbcRY+!%nZ9O-L9nB zL#ukJJbPGGl@=k|G-k4&YPahW`;RAc->RC?8oQyU*KAi3`Z@=C5jpyBugTut4li3@ zw8>sXuA;s^(=jzRAWDXp_GPkXQ+PJTJk{Q70yYj0o9tfgy+iOZQJ5FG3dmJ36g>p1 zInltD-KT2Q&N_STOx^@&#y1Y*;aVoMJ+^81i2ycAF`m$~k-omM;XXT0>+92M&}SM$ zeJquI8FqcTsm5g2B@ClZ#;W#SyU|i<_pnr=1(0MY!)}o11}02n$BZMDCJLnLMyue{ zuU#3c8MW(E%?PYA9X1_CS;w;V3BXWC?@)X6aA#kyrO(`FvfEbmA}pHlqJffOH>TS? ztJ01`OfIqRflq9xqPtishwWlyy`7H&5W6uo!|s`GB53_kEgc&{6u@g6>Z2$_)e>5- z^y8j>tg5Cm)$Hmx-sy`wl8>4TPXh>5sQQqp=CEa$8dV~jMN@;=P0;|-2_>4=GF+_| z;d`Fs_IRX1VprAN6Zuj9w^Tj~b9hP(nkd?0?n^}{_D?@1M2&rHxH`igkd7*tOm_dO zMyeScXd!z5eRbk1K(<#PG76ALF#!jo0Nfr}HDo$GWU>bWZ5j5U^ro)fW4f{GzIeOu zxaFb@dvJPFM{mXfMbgjx`{`3=oA3G02 zTPO+by~k)A0$r7d(ZVP;Ak}O^GN&8;fx;;XMlyx=p(b^JzYe~O8|yqxcnl}pEI@LV zos}QQ$v4>_Len887d2hI_8?28smAVy?&oVkmqS+!fzJ?NcswG4Lqr?QDl01q6CnTu zVaGx|((G5KMaQ9^hoQ2eX&LtL^kbaf5kNe>Bh!y5^o~kDrlWUs`Y}DdW73Zq=)Elc zn33MG>Bl_iy*&MxC%x0sffltP?1mwr++xbK^EEVVGVJMYfnlz|ZE9eKTVSFqa7GO@ zr8B#K+W9I>b$v{&D^=9JerD9q1i0c*KYCkGKYGWbe)LX2{pg*D`q4WH^`mz(>PPPs z)Q{e&s2{yE(@mvvL}jG|#Sud$P(MCIonshpdnR?>>~wopnmr2xGY4a$4qf-0BhxZm zWFZRwnK95WGwiv}wm#-(sG+WB&q+O|=b<&dppMjvRyXvVFHT;%DPKaKkKELJYR;w? zAVcSbmi$>5l!fqDU2Z8lmd8V>t_8pcDsav;Ll`x~MH%+O^vv+m413XqqN0b7BKit6 z5erK&Wt!@UHUPB^hY#0T>OhNnF$049VrnYlJTwFtE(Q?`vxg&^4s9x<5fBP~HIlke7CK9*6Bi~xpik6rVJQWg z%3MKqFVGN^sn$|Qg;Fb)JHupUR7~4hS8t}N6f-+PFH}!t>S_wRApu_v2y!toY9pTA z^M)*1Yhen=u&;EMCb6$I*AQ_!ORMZ`VjJj3CSkGG9$wYk9*xP>RN9w$ESra5+*T|K z?Tl_;6k53`)S1>jzojXv((T1*?h%}coCQ{=+e^|8qx(@GJB*QjKG@Kpnf7deSR<=U z-8fOj{4hARO10|Loh=w?nHYI$g=*7}d12C_-Y=jvepPA?{W6CEqH6h)ie z`ir?wgR>3C~rKEe-pCfA;I=S z#A!~qufVH?uvi0hn`$u|JF(T8P956b0yMX!A7`uxMvn&Ob7C;d^-!Ya6W;ld;jS6}+0*f1woKU}Kc0LA0vH%RfMYYoMduC)|T zy4F#dHHbDuWs+l<$|T1Kl}V0Kic=5A7{wvSIK?5ydWu7i4HB+uxHd|-$TcD1BG)Df z7r8b|xX3jr;Ud=-2^YDhBwXa0298Tz4Y*Z)*=-2eraCL&oFSxBGIS+3@HKy^}t%Ty;tIEc6_UHM%uzhr(_s7{K0rRt>Uhmdlmn%`Bb zlOh~eofP5f^yA)=#kCuvkL!d|gVht}vcAeRyT`a)iEqEiIibtLxL6FH?gVSeufuew zF8{V3W5&u8EG-&$N|W>PY@Nv?$f$U!UwI0@a0wcw2#fhraJ}o8E<_1RzA&a z@*jOa313!yES?|gz$)QTFMW?yA4{h1Cp?(y!K(YBk0p`UQy%-F?PWVO+9hKmfc_rO k6>)|Tz2cYp1fRd$uDcdfcJ-tBF`P55CKiEK)A;-U0EO^}zyJUM literal 0 HcmV?d00001 diff --git a/frontend/dist/fonts/ultra-system.34e817f5.ttf b/frontend/dist/fonts/ultra-system.34e817f5.ttf new file mode 100644 index 0000000000000000000000000000000000000000..0e0b00c23f66e6d45a04b116afb9d05e37772ef6 GIT binary patch literal 73808 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 z zv|Rp~)6&%uF#wXXL@9Aru$b|J03ZYk0VvAhQc}4yY17t^mW-lP%WB}j1dtEPg(NM+ zET_Os6c_-Fsx>7GN>Z{%OAeFgL03YXDl)VxWQ_+;@m5(m+g4&1um*{6i=>nKKo-+} z)Dg-BVL3rE4y6A88_+QfuQ5Q(49o-5_Mk*LkxL24b`n56rl>C~L28Bmk_Cw#wJo0H z1Fo8$ze)nx3rLc&X&MRAk0h+RRjIiITdc;Gy$X; z;D82VB1iL4D>u%JkR%+p*4Fc?T9cYmB%1>_8_*#claW^hX{V2|@}P3iq??ik(tS<) zP$2{>Du|E)D2YC?NAIC&GFu=M0?O+^mn9^EkhFlAjlB9$N${YAl25>&@M`lVO9(=g zNY_gpWcH(y92Y<+6Q5E~Pbv;)v`*nhOxUa8K?n;dl$avdl0@tND3GwE^ALpsM%VlD zs|28i;O7S6I#ngRqc{p9v=i6Tf-MI&Vv;~am^ZNb3Lg+^Qjn>%pl)`b-l+iulqD%x zHn6eZ?9rCIB_$9|$P4SW04)VeHsybG2=pCK^HD28$OQ$>iI_3xMzUX06iLrBtomM; zn3lXt03B~{@+cXU@^}8?=AzqGDQM4{N&?IU#DYI#RFokp5}+0}1nJoHp-OXVPxk^3 z*UIz+r35K(5)^<+fHD&s{OY~-))c=O>-D1$P_UHvCT^f4e)Jj6QVC6kheOlPwG*le z4zD%kLIy$xVgBfZsbM)XW!Qs0f}l`IUSkG4QwP$bP*nh^Eup3KqLapexlgp*&&HOR z%x#d!&6q@v{lCRA3dl31R|Y01vndFircd_?fg1Lp9O&h&g^pSjcQgJxsIsXJEN+Pt zrMlFWW$}=xF#_OstM-9w@XEoN+BTXBLURIzB$)gqb1*lWW#>q)udB-Xo+6n%GjC@a4*U9ui7_Z{M{c zO&rTY6VwkWx{bKso`ZdYkFiEhtNQWLRk%`By`QN}ah( z#`<}R=b;(SM2V5&Yycz5y$=e)r70<4QMn`K@%`)Oe=FpZoO}NOjq&;S9SkE$L?{kg z<`i>Go#fYD2ysERC(jWUVK8Yz0P!r13`~gMq0+V-9#!W|p$5S~YDV97 zugv$>*XlUuA#o%KQ;Um9%LCHUY9ut3pk+v0iEwC0={s8Ve3dwroPakVm=G_x6i7iO zXoVu*(*%X^F6DTbd6aoQkNUl9D?K?l+>uW^NSfw>Qa4~?k3vp zdRiGJobXp{hVvuOb7Ow>tq58Z;UN;E;RfFd;_DJrw(bf7NlcX3TjNVY98l(jj%fE} z08c_AZl|u5q%^21E+Gp-d_^`X76em2ETV@TDON%PLJ7J-8hz<%Esem0c+=pU1qEJy z=e02lC@uh{1b|G0$DHm38^}pXN>pU~%W(ViwY1)ngxv&4AEbasfNwoJccPk6no#E{ zON4?Oh!&oeYDcnhE-FIFNd-1?JM_H8F_i%76z)dWHzEkzeLyorsAVB2@w>~8V7^=G zCsX{?f@rCyb2*)~Hv=RP5+W(Zvfz@Oi5~I;U}$9==Eup!T=t-X26E^Kcgt+0f5`Ywx z5JtLOTnW>)U*)DONC1qG6jKp4`hS{$rqRuCW<;nQpgFCKnC+nW)~q^OWM))sK?Y*l zM%!P?l!Yw>EwtoWDgk5@Kl@Ketr%yL@hd;mBmjVR?sb{cvaO&XX82D{!S zn}%qmOcW@oXGN$$P!m3y*wrCf08^?~Xo8+tO2OJj`&01mCIsgx5SSpu&X?29xzId^ z6!H#KlBkDPnagPscMu4pcL$WEM3Ak)5>h%^zhAPPFR_tUYD!!Tzq<+*7pq5-p zO^{#ocJxIYi#jg=v7<^@3uIfIMXi-LDO{{V_o(&dw9 zT(JQHWPva?@8@dHw=+1YH!~0}p{<8mKRByfO0vBQ&v}&R7n{fcM%1+>#GnwOu_7g2 z=|8koL#bMuK|)a^J2^-M04>_rr>hc2Fh~e+%2F&q+WqhGnhV3JS$?sGo<+y)g&# zQlbYhnu(8SVCR7cxTTbr$F)x}eG_G>)2DCdk%mF$oZ}&A0m_o77Z*J?uApQkj!otP zP#zLYOn;4O^f~LoI<z#B@39i%wjF{i&kl_UKz&G9u$xPxJ{&LukZ(2?BOT!$dtk)kQS`O z3D@rT+PUrEK)7VN2Wcj4shEr3%D3Rz$cE5%5zGYX-=@DxnyOput2tB^polA-ZSO}* z$E9U;Il>%L(zh-q=#IkH+tRwut)&DkB}5oWPEsv5xxJ$Glk&yo1qBxzKp+_2b&nz= z(y|fDMjWFu;X|0ObQmfdi5f?G--B35C2gC@4uCJWoZHJ<*oI3EoTbG!$%KRAlfI_= z>q6sgsW6n}5;T<*r_Z7OD=lkVPa)@5DhNR`AXPM`3&1iL>`z0^|ARW*49Y@~P$i`p--33G;!sG?z%41_bdVcljN)eqI zL`;OIELeGLKYGcE!xvVz(zpjxmSWq_W2mTvu0|UkaA663wG2TZ2bP=6-1q(KYWP3r zTXD`v8BK{+m%N{+kgWKeIFcN6MupUwDhE;l``($uv5LT85Y9z%gh81gZlly`SN{MH z_+Bk3LirA=B!rSK4@(L1rM9LJ+mP5o73}ha_PkENwP?mXG0yYa%CcK6g$S_dK+v6L zmxODYu2ybT5a0_S5{&^pwSzTgwc!5%EVLmiIow$Qk)WNzPe>KZ#NsnN>qR91%1A)C zv|G2WF>LZ3Ado|LD{KgZ)6?lR46;0GSOsyIEbJpoYabe5X9C8!9fuHHb*73)3Lu#g zd5enl?PHtA;L9W>3rWgXFi5mdSiJR$^H^q4hQ&7HM2zPvrYu%JWAd)fHwIm20Ok#O z90?{As4iZ772 z;Q*+eW2JL5HHX7E)5`!K>JmI-q zvf_Q!ZaWL>rDiAT=W*zB2wOtSjq^abfG?%A6wE#u%rME7D?-voHZueAo7Zm>k7J(h zbf*wr@V15C1a#4p&3d+RGgj9 zuhxvV=b&-MaX2x`OCrV#figwr{T174;~`|a+FwYPRdJ|D?{BePXSmD!HyrFXhY^WP zjM{bdiL7{>HX-K<$WjBAQHUzFpzY*#G=zE&!+4w`a8BVIRn$F?Fy<}x`oJ{5#ODKv zb+odhkT#1*fOj7|MS1K3Fp3U0jaGCZN^{ta@7x`!Se`1koK_q-u;{v0qn9`zsP`W^ z6vX)Z*Jp;S4T;4zmxyT+6U}gcNR7K4x9?q5{w5e^{{SWeTR=%jC){)U6+3P{E5@^q zdls}Pw57<@5CUVN{%caymbgK467nFpS}n!FHc_+J>ix`^!tkKD*!Rrga;c= z9!w@Dn3)! z=RJg93SglaWx!7{xxT%7_WkQaxEC?pD-@)uZDH{3gsHSogezTpe)WZNFx*oS`SHkU zE{sqr2yQ_xBwwZS-apND@$2Rz1oP>IqH>{E%s){l;3I9OxnXJHSVpl8G=-LwGMJGg za68OxtXEeb#2Ck;35r{p7(UUq`CyxkN0sE&m+h+!j7v>Ej4lP$l{QFR5CA)QMeCB< zu{gy!%}85eyv_4GAOm~#od`AQF+Yf~xQ+_m69|vX3^0QUy5{lqI#(})VFOr}p2oQW z#Y(5fJVXe~r%P=}=P%~R8QvBcajaU2b@x(I;#;yajpBdQS8<$nA*>3SLK24D&Fvaa zV&L4w+x+*gr{cG`RtVvlaRt6pN(o37&9#Bs#aTEn;x=EwwS&RoTf=~oq`2U+$gv%X z79e)2X4^L&WewtZZY^s@1;*b{BnXmZSwxM7y{nFl4;12V{zbOAXeA?-ukXKG#M~PC zPyYZ&+fNd~;ufVlnTs~lc1a^d?c1)VyoV)*PDNQy4vzWR}=sWLSHdN09#2iNq!zBzjVM7(-SOgs6PobL0hII-K zFt+)x=FCVEN;N(Gde=W6m3UXw%QJ*qrD3O(O410wVJ0oKRQ9uzF zCmPJk+i3`Cw*tv=!*qgtW=NT|`PO4B^jjm2Eigr(FbCO|6X0>22?>B{Q`A;DOlp4_l6S#}-6VkMPb+<6BwUmb%CzP##I)XRS)y!jxyMu78 zqT*a?>E;=1TGQ80jS;rBVzKP-r#VHai53KAA_!65-@RzT@vqIRkn8Kn^pb|v0VLnv z)Q#X)4kLtPh`9d%Ey4;3QfvTH%0XO{c-zvrj56*8rqqU#v_K6yY)Bd(DG_R^8Is4Y zZ-}kjNy1^-ZD0!_w895+cei`Zd5^@ImBzDSvagy`B;5djcRIzsHqyF|VjRXdhk3U~ zaNGv~fe|wmn-;d;;!GsKZf10I%@TUsPcdGjgMK8#U|m}*u;wEaq}YVy360M~-nh8DN-)l16NyqC zan*AfQ({6)?d7)9Moz7*SR5WD%oA9LNMj5fDahA`Ob>|YX~7tFut~(e(nF|snHh6) z1m85+NcvJ2k6LhnfC3n8;GqX8QMe=?`ce~&IL8-&ZrKx>!$i#G3O}lK5o=U4+3#Y@ z&XI-=Eub=i5E}qUBgp;hS-&ff#$pN^K*BB63%_e`2UB~WTi0iXVlZ3>Im0yDjxD0x zymMt5!JYflaXdvB%nN1A>_5y`j15M)NAtW<9$EDsd0&T-{{Sb5B@4v9pb{BzSrObo z@~)%!MKX*#j-eQJtYuJ2WI*>UH`hvQh&wkr1t{F3?Nn{DQ~u-E~$eaeLi(D zpNR07Y*~4QA(<8pr$M+K>?=Me@rD}?R<*58EynpO4)~Tv#*#C7sfpvim*K&uidp~? z0tKf@9p=V*)?5b?#&PG{2my>dmWzc!CtJkyBYu_0Tgl?MjO7!DZ9!hsQmC}{6StKP zBN(JS+FE#*KcwIW1Vlx=qv1N%_^%$PAHn!e0vS@yC1_7KBZ`*XT z#5kYJG&3Q#?V5jKKD5JKj2;mKg)NlJn3qOZN?-(@=Y6X;8{vw>;n3rXZEmzk0ZKj) zH=X+4`cm8DO`&KwR4Inmuj;8&26g%mtp^mvA;8g7V7_h?sgu^)caK@7BW{Zehkc|4 zyi{9pIh!%3kn0mZl^*2b5Wpo)5@fhk1@1xfrKb?~Ck@WUV$p_d8?8X3XNj2Y^7vPk z#(pki^Gm|vSzb35gOp+jge2%p{4LYHZ04!#9XMui=OYL&sm#(ws~dWBtk{plOk&jY zj~wnB7TQ$&2A_Sa%QuF`Vq04Hh9O7^a#WU#W&}w{>Mkz_rA{b=hHW2_!=+16g5XIc zh=60Lu$tcyyA}AwZsHe(!?H0Ct`w&nfe{dUY2~GK*M`Pp2~+B96#$ax9_X=%A1J19 z9s(J_vW!a&?4>DZFaV2=v0j8=u*|8pu?{1YqwO0OC$wxkAC*_H!Y@)h-Wv?#?K+Tj zIZJLB6Eb`B7Kp8Q^5+V|6)Jx$vU5C5$(xw@9X6`P@$4@LOTZ~EJ81s(6EPFH{j0>| z{{Rs2zs7D1E*v9=;Es88rVmJs$6@QzQ{xm$)kpuo*)LLv6xP zR%DagtO%}?!hQ{W?D0M|_=U`_pyBY~pmNUluc+gn z=V+`AaP?weTHgiIBiaB+a?vsH`xK2Y6M)2GIZw9Rfu{_%?EbmZcJuCQoyA(kH2zYK zS_B-4Rn!jCwBJsVUhV8j#I}a;_-I38m(81`gx&zK5pKHICmF+Y;TE@X2@k0tNj6RG ze&?rp*-@`AhQ;&REvFE)SQ6*!Bnun%uSdghAuKIVViXpHhXY8EBEotDpsz5l7VZlZ z$pDf;iTy~@#OeXsy3DQa4&G!qTtjyu!)F9sM(`_a-=%BNU{Ej#Dk%$mneeaOS+)H? zYVH@Y7^j2StU)XUgeAfwLoVlkzf#>+H{We@BWl0h~gSywB*Dr z_<=gc*SCMB)gCoE^#u!cPCOE<<1$GN##oI3)b<@_x(F!2;ZXD0iV-LDkWa01Fc^}o zGpc#;F=+`R0Jy!csn_9L?jwnN64@bBhj5ZJjY*Oxp@J`^Pl>KK;#__$RZ4+x%5JqrK=;@AB`kNslA{Oif_zs0;g4kB>wI*EvwB-;IkhrX2Ok1xZWzq8)s zPCJbYeNcizRU!rUnA&|w+L-U-X1G=yr4Jm9BqSO4he`9F+Puyg82Pl$5xC`)*9kOCVA+7WUUHUr4l8yChu;M^Ejnol-to?MZ< zp4W?Q73A9g0H}D30}JJ`3ve4Cd%z2Tbq7k~GsJN(V^@fMvirQr$mr{!2KK(6=AwKz z@_D_pSm!ZL1R*MM4U43ZLA9^eJ#AfX9>Za1e~5V75tS(-=Sc24jcd&C*Kzo?py8kb zGxGo!JD-M>JZ}?-!!+w9#5sytj#^WeM8O2~>l@VgZNtsq{7v}dhv0EbZ-nJ-w1H!8 zUcip95Bsh+4&oTjDC?NVme^hMI7lFoZS}SP0Gji>AB5r@bxT?hY)M93x@%Daz z#x~kU6_?Vs0=0{%ZK%*1zw49KOzyiF?l9{Ow$sFx9Z}5UNCXVG1EIHQy*mT=$#^uO zwK$YC+NQ%VcpqBvyjAQ$1-v=~_;DI0#6^$aTF-_?DaT8>d1ycY2V??cro+FLSM^M9 zoqIe_;|Ct%Yb8m21xJ>PhSh5kIto$Z*o3Lb%!byIN`Z~!dE7^kuQ!HuwBmvi6AZwd z(je{gFIh=G+>#;y^3+y6qC$15tioKc};q* z6TndRDWw-d4Ot*6Z@iP*-ToEepZr1jtVA;i1OgWzkU=DTqP;%>($EB^q;GqLDFi+NRk9^$Sz$rz_p z!(anqM1@}6LH;YVi~McE@asZYM=i#bN45qMtp}E9)OQuRb(Xx=Cl>M)+eHiIwqQGy zN^R4p+*hH&@piB+HU<#l9Bn+sXBQFg{oa-_cs@Cc3d67ih*1C(Tp2Qav^O6b=kdNj z`3yshN>F43fUM!j5^i*WZP$IPbA4ibj^ZDTxT4)dPqGg!%&BPIZLTeSH6JR&iQ~Lc zZ8YnRhTD@lM4O>5nNGNnGXc38Z>Ozh;(R;tCmnrFHIXgJ z4W~jz;&%Qfy7Te-_vtsU(HP&vF5+=2X|a(=GFO`@9-VZxJ)AZfayn1Sqr44mLyE*hg~AkrBKuzXkHTiX9z6alpOyT* z11rLC5zIhrm=nz~iPlVPGzZeU4e@4piZX}N_zDUIZUZ*odD_+B9^g2xB;n1>TW#9p z2)?7vE-zl6fPNQocqMYmd08OaX^msG`c(DDGwhvTrjNzHjFE|WVQ{UXygN{k8_-7P zG&ZhI1MyO@3J{2Bf&+_)UqNeEqyGTtej5o6;uhEu4i^+oVLvT2>sM^S#$70&!C{@2()5&r zqbUVI1Sn49d6GaM&2oPTG%=Wm+$%1ag6Au^I*5&6!2PS`IBZ5Mo`)WFZGf*5hJ=kS zeSK@Sh5ToT;Z0;_0|`h>c$8ClC0)s^zXz;|pCo;Ek8vC)2jQjHo&|p3vv;+kwJO@)|KqC}l@6R&8l zh98M14DvATgdizFvCIJF9XvV-+ghji!W+Z$8XhoY!hB$8K{^8wZ&|Chv(pOj7^Gs5 z!kpzaM=`PtHy~V|g4zn_VqWFrIY}-KU+XCYDcp}fy{pu{iTujK!Aj5s+<;bLgdSU=7~FXJ$C?|E2`%dI8fRec%l8A zY@CiP>H#;>)1io=b^IR(c((JhR;4tM-LHM4uKlYMoL#I|B??Yu;n|W36%K2u*b9O^ zYo2R$-am)230n^0UQ{|gm?|DwMdSlD*>ixW41vf&!@3ew-$@#a>UA~ca2#c6$F$;< zk{eJt93>=l-ug^$y>z&ze_z#+(};m?~SI6Am~mZ=`9{y(bO$u#O;0!9lx3-$6d2 z#s{4b8+!=pTWBJ{6JrXswZHCbfb&>pTaZ-4gquhcdq>aKs&OhWZr&I12$iX{lC_0| zk>Ub%27a}~hYqcB#J{SDktmT1GufMjVr3 zl_4TP9r}*-*~4+hcuNH>Gz`o*TbPdB1ZYioTvr-K5yFt-OKkv1YQ&zT?nbfYUUBX_ zh;>+mEN4+r1Ql3;^*&VopC;dz9@mUS3X>At@oKiEk zB{7()bnRpOR~rMx9YW!0E$aXQX(N3H-K(hg7{o|qpdqrH&5IaDzAd6Q?_2$O>NER4 zE`wOSPYuK8Le$U+fQTB%ust@9rEgyz9tQkOEwBOR86&N`_0qgXKa0wxlCqN61QQ2M zdJFw4oSa@Il@%qm1Ee_J&zSp~e@6Yc`?KlvrMxk|7SN19Xe{My5M!1uZo$GU^bWPpMKQsLSxQhfCz%DMPX zJ%nujU6r)ncM^H7L;^1c+G&23+Q9Ly9r>lKwh2RJFzSL)It2i4n_G^Wik`W%?kaUJ z<;~&mCn!sA(o1SaI3y{)Yt5v(>T zNN^l0ys#9Y3>Od#a|t#{8d_#8YtpgUpz{u4nD*_hDO8;xn|bNHU&^BUTxj7hVezR6 zQEhHElpkzzwr1ek_a0wb?qE2J*kola64(R=oDzZnnI~Wc#jDBi&%+NXV-tiWZZx2% zSds5U9;6u-9jmzBFf>rxq^p0q3A7@QDWiBo7o5*#hIppesKnUZzVJpN4mqg@BMqie&om5|VK z>0c`>#*zi(l6rU2YoCbXk2C-kpaMvNM2hKZx9Rz zn>JJsEgQ~Z_9=#`SjKa$q@@KCu$8tU1P-^iNz;8RJGch%1TEAnmQ^9MJ}Zfd(8&?B z0(7mIcg7hDL#RkwLzpB;f+MUDM`=B2OT?>?yfWmhBm$+85Cniu)*A0&R^4UBG?uW^ z(#czcmU(fI07Q^2I&1K(>r%?noI;d_o+VjkInRO+_Y5uxWGed_?bYu%8l?IE5PqQNA&sz!fG}L=9V34)D z`en#2C;O8hUHVo9;9p>e6yXiuE@ue@SSS5Sz1BS_gVFvnaYWQ2sp>C)<`L&|w!~X!cOU!=}Tlm@rcFK^K5qzzp;&qw4 zh`1-#r}E8l@ko9U;8OYE2U}`>v0cteu>3dk z3p4qG18ks@4zOdiN!-|17ydQ1gY6qQh5O`bd(L6o?^>u;zSEDAq^Ba#d7uR9dYmt)jWGS~8eX{O%22so- zJj7=B$bdc+VGQCH+a4@3gJ2b06Cx%(dh4}3Eah{NnM)u`(r&x1U;Dc{#_N zLfb$ftbuR=9XjvnSbyXmLc&(c5Q!mBr~n@E>DtwyhZ5sWtt(2>70hnH1#BdA`qtug ziy4V=SXbCm(%LghNJ%mUqzdN#LGDuBSpLULDD(NmVxbhSV8(D)AQXodw-nQVIahDw`KybLBapLvzv8^AF zMjb`eq%7zl!M>K*_BEl_l(!sxz-|Ji0467II@@)U61T=V(pxGh1Phq-kxON6;jsst zgb*U=7M&tCG5gaIgfO#{ArOc{H0kS0N^`PS5=d{tLZ%gcJp0u(yYuRN@`~Z9g0Fi^ zT9#piAqWN=_kYl2(F1TX~{;1L<27@Ip#d;%uK$=Nb>@xtP343q++wxPm70 zzMCCBHK~=HOF>P*ScIklFkl;ZI@Mz|)|T3FaghZDBb6z>pJJojP~qAtLH1;3f{+P1 zN07L+B|#-BR#4*0a-*%IDe-AG2^(8V!mKgF29}aCl;#8-2Y&Rj7oRcli;@A?_nj|YF&f#4cb^dG zSBlOc#E&kNSqj^Qs=`zn4Zt1y((rcC#H1UH9}H0}IUFL=hknpxQS70Cd)xQcx1N0vlbt8q90{ zC@r4>NKKZqRA;C9rJOryaLDDV@3rY);5K<=ki_HH3y=x2DmX=Or z=U%4U?^zQ>+q|L{gefjqLXL;ae>zv@e?$;;AgXRJZk4FB`Ii;}L`Jg_Z3)_o^2}X1 zMsPsofqf(n^INQEW#@=+fR!GxG17j1cBXPjcO-K|VpTi+&1re$q@orOB*!XjYa_VC zv{Hl_2HEF-Kb33>SPO6kub2RVCjS8BZBFEcx*Gipwe3BxtWvp%#5ko!Nb9HitqWMs z;ZjP?fxWv`1maMHI+TzRl_g0eYBjj|RtC}*=~}Gm>t;c9DM4$AlO{H~@~cuB zWfBN0pXzqwC#IEhCeS5CDbxT& z8|pe%XJtem7cYPCX^R=uNg2lDtpd{Gd`7_a^Z9L87^E~LsHWhNWAPD82mz>(bJOnB zx3ZxSrzGkicBQ3xKo^m4cCGsw*vd12AZTRiSzJ7|kWNE!0L*psp<0yfvcS9(O816Y zwuGJQWJZr6B}FP7P2#krO3MmVfw-iyOoapOCgLqXR;8yXoo;$|pck~+$eyFull3P>*k~NW0se@xW z2r)H66a@=_iTU@SQpyTcB;Mz(IVzb`grA?KFO*GyAat8l!85IAEZc3pK6PtsL@G9d zMHohcAPq!odTEQLUT_D>vqE_x30Y0X#BWxd$T^7d&f*8HF=z=eod&nsjVJ&Vft@5+ zY(+G})QpKq%A+fjYKdzx@a0%KPw!4~UL9=`WI(LRIe}I}H@TqLh)PtPqylG6dwgp_ zLJ|*zts7cCA3Dt@0+S${Oncs9nCgZ?a;Rtt8(ZmI>Vo^nBJz^pCNJgntV%#xoX{o+ zA0suS`&5j}jl0sBWJYtT+xQi8)13kv(B;(VOvjZ<=_3yafPzsG0QIR;raLPhGTLSq z2moqi&4m)sGZLVJQLG36ZQNBWDQuFA?rEU-o$8kAL$FGaPykU_k}LEN&EU>#!9qj~ zxrn!~-qjMI(nK~1CfB#8nW4%ShYDN(`C1 zHgXRVj=gs8QgbK|3vg^fke>J3S}6d^=6O(GE>oCJQ~Un_ngXR}Lu!xxrqRB;)vYMz z<{@0NW>P)v|;?Mh=y0m! zOdw2j1Nk&61SDozA|yzO^{Hej1wIMdH|ys?63|G5DL3(u58v2|nSscBL=o-{0Uf<) z%E(#FpKf=}aUBN!R0P7a6_iJaESt&K{7@2>r5OeRJ}b$c$@|)c1vvqNv}piIJ!taX z%*iN_0RZc!-wV{woxrIY9MWUvC={gwE0dZaiJR;^=&}SSFa*u5aq0YbqEx6z%^-o2 zbv=7fmrF2n5C*H8N!-wh8AwiGK?H>lob>XlO6-Lt0e}7zP?OTFX~< z?mqq$5o!o=YTq{9Xpj`?Kme_|z2bcPbfm2rLi6}Vy~DrW^v7Kb2=J0-00!jhLG++B zyOBuuCL%;m_U+|BwdR5pNe*1dqA;+rssTFMJic{uq_`BJ1ehjv>1ri1l!6eFAwb6G zK+x=aUwvvetD#U( zHa8we{L!|erNCU6jV;rDy=hJ7ARz>Zh?~eCy%Z#pgn|?R0K^N=*`g}R;#o*D1SaA< zx>c_tToPtB0{Tzil?y6L*EwK-NohCuP+HVmE3_glAF6~WHHkeAvF2irJd#92Nl?@I zsgTM}VPOX#-g?khLnJ5_tO-(xlN%Ctj+0lH#UO(SxY7sKW9v~#_I6aphJSC3LcbWy z0?tu6f0`@`DM6I0J7CH~g5G3qXo?8{Kv>I_BS;Zy5G^ykx=^WE5QRt}S^zptUUL%w1#9Fq7of4Y%&5&NxHpv*dK2GN|UAX7YTP8)<7z;bav~ z+sLm+!?5Upr4=E#l!2>U`Zs{ zNEJv^O7PvbfqETfpD z9Elc`-b#A;X>U4nN&$J0*&)Lz8i8ZC@ljnODUh}03D0S{_qy9*TCm{>P@MT2HV#|Q zPdj|+Eu}6eB4xxaxH+fUnYMxrX>C9N;zHX7VZx$TcehBcbot#lBz2EmSE5$^$FZ|?vt+TClN zbcls7I8wks3XuXo`~ZJh%yO12L0xohE(|} zxasGwTF!==S!@HH!*V8mJpmFeT~-i0MEi0* zqKkq8PSY3ZMfqmKEvGWMKxQa|;xlcg#-~)|sVYY?<)9HTmjruHyNce22vQUlprZhp zu(aH3J?I?6kl;{EA`QWSlW*MX=}`y@yND|*l2n2OpSZnHu1;`Fz|D0V0X+eoYSP-3 zhAK)`kuYIq>Am9iI@8jXB|r?;@pynGN4Pq4qf$hOY#@!0497#;rK&VqQk*+MJkDCc zy3%}o#r~D02vbSQ4rFMO;h5W4@8x>Uh+aS?u!M_CgF^%1YBss3N%6QpMfdgT9ePwz z4jiY(r29>U#0k@&)}ts|7O-W=BPdcJiPZl9irkn&A4-&xwD_P42@!F)ip=6S89*NM zGZHQ%@8eP!mO_yVQqy9kNfHK^Jx;$mG-5(s35Ce&Vo2M*n$lFG$tgbWT%@ko17BS? ztm;BZ32j9QY=TGz3G3Fxd23UPcCeV!%|=j=PKCljAkKrQZnVWbf>D?VP`9+qO|9|% zYnoKN`Hb4hDF))kdw%gzlhe zaVs-mFJe0X05mF>P+JNB%s?~0A-5(D<~JQ+PsX0d4MWP66>_A)^BaS#6XXFkV46_m zW>3C6AfS^yujdmn(&@`9 z2Qf(!5`b;xq3fj)sfSXXakaWbc~2}7WfCBn@AR76h8*Pu1gT)8lD7a<4?eWCvJ}A$ zsE0MoJ;Sy74ZGHeDo86yC9x1>TTYkhQCVsDcGHj{#U%sYNhF-6H9l9d>Drr!Q%U9I za0E;^E&`BlExG<{D$wI;@tFg}+DMIW1nzw68_q4I7cPJx1-Pw=u=T#ZD=~()l?*$X zQz^|Ul|&@!pDS9hxV)=x#h%atZQgtgGo~2@i8Vnb?r;T zJ&{NWRD!7r8jWOkkYXw@brp#SQYFAMjHN(ZSihCDz3WOFQaL~*#LPB40{Z^|o|S_R zw%vt6LqOa%CoPVHrK?gF%dI#TkPJq7@y7P_oi^`NLq8}(Lpp(I0da8HnZA?1m0m<4 zjDUjXR4bN~{npoUSrLd^r3wTTI3yGa2HJpbPs61+sq{8w%I4k=9nw zvB_fLFwL1`B83SamrHpYY0l&G9fZf9Zuez=`Um zsOr4S$WJ^F*+9ConP0=okZ{T^Im>V?A+Sqg-DF9yooiVZ^ViyC~>m4 z6J<6}g2Y_>N5Zi@u%xbks61Iffn%ZXucc&fiGE#wn_;O#V21+ti|9N2s=!I(;nY(=eETs*usW#w(L0k8+WI*x;1g;6U5 z{@M4=P+VH|11M2Hvr>sl7$c>EIu$4M=j%4TzFOiy2xab9KA6fZhk@e~sV8=VJV z=9!1P;JTGJh9nXP_eQg*lt+qX;@&JWK206NO!>dxy?Eudv2T#|oopUrH8u;wA8KEQB-+H?eKxRL8^ z>rW7Q++GNi%WZ|KQvzW1CtTIWIHQcgw#&&9AoB>5lXxEp9clbGiQ(C0)VhV@2~Jdk zL;ya7^sL5XqP#u{>;ZI?3}aBB7N6?_u^o5vq?ED5xO&#gTWxKsZgp?~B*uohtg>-9 zjO-~~w;TZ?Yyq2QI{v~db0|YNcwQgC(^*_>NS@>Gtz|LO;csAgM*%sKF%G3!l7}3C zxz!|V>t26}VKQLf#Q6UJF1LIwn*j%7z5Q!P1418iRurHNK@wwcht@W(t~``s-)$I# zp$#Yipi>7hojmFJKC2cL331jjDj)%9(F!AP=gzzM4mL5dhQnc!Tye#C+?fV65%Ilo z*UQD=P^Gro9FUUY)Itn(8%1c~FEfG0XFfG8C7=*UByIbN+*H!djf^c=JTs+eRwE{^ zx^jSbAYWnUSoq!tAAmoVSM@OsX0o9XsJE_@*1FDdMxDXo&KW6R<Be_ZZwC4qgPlr$RW28_Yv-U^EHq_iFHbV=JxZZOo07g5yMzv3MU? zuG8D3y4=f2;bFD5q%CcZW0DDybQ<4d-m&oxHTnEoX9yNrM5!oIjKVv5+C(HuhA?;>HZLwMVZ=69%I0aVfE~g4c~=?F&0sPA0Fz}2Kyj{F&Yxya=p(6v z9<`lHRvn}|tVcH+%;l+(dvuPY*0RSt?mZSa6yFZU@|NHM$FpT>!skfdYgZ5B1(wbX zpy4piyj*eYpp}9&8&92ud2BPR;j!3Pu@4DKkqHW%pv-`EB4bXvSE5Ja4jS(aKFgnr zCIEu#j7l3jtAx+=eWEhOT(a&Bn-rYbj{w~ht9hAoDLzU!f`&%KuWV*BC(1-DZ`^3jzhu3gg23=Ou!~B+wLk`zVXe(rM0p7 zM3C804i_66#HqBAyzQ_vwOTL_gojuw$l{7ru zxY)*DoHA6|ZL}#tD*{O%?0#O8UHk?urb;=)y4!>Sh;?2Bxe=K?^|wpXILG2KhtH3X=qD^V+eigW|EuD_Kec+A0l@ zKoJJre75zf;z-0YP+C$(6awIBN5+%^1OPf~uUg1>)+Lvmd8IAJ5;;Z3B!Q-YY&z2x z>TwAPe=Z>^aDBhaFH2 ztiyy52#`EU8y!6&jb&|zFu9DjsFEZb#C7gE&1xN1KP`*FqZqNsbC=9zMm5e(@zF9yymf{YAKTfB$W+&g_$$JvprFja;Rzlj=n%rq+m`Dsu>Hi!HFqRfG*RIgb)Av6HzFJn5KxygL?KP)I_Oka>zXol1Lm z-n7zN#In&0yykYmDN5o(hoz3ymya`uPZHs4<)-qM(sn%*KizcSz&7qT4u(=&Z!O&_ zBy^BFZ`!dq^2RF&hcX~G{!_VCj-zhh%?VC%k;!#n7d%;nD5Mk9u#GEL6AUp(b@aHN zd<(0>j*+}YshG?L5e&5sEyqDAETZBz?>}0}fkK045aQ8>QXY_(bpZ7Pt-Db>u6`}G zVKB|C6}qsfQ<<{(x1Ny~jYW4jB9h;?N>iPp3yr41K~p2Ji1Zcb@!UkV>uAL1ai!g$ z-JoqJeXG!Lj4H8sQ0nmj5VF|AvQA~lnV-Grb$xpZ9A%Tr!~h%(5Yki$w$etvl&m^l zY@yW@mhCA7s3;9S5$jzpFUjIKTsv$f7(#~Rj#w^FbLX{l67vbetSv;mk)N2~xK4n1 z^zG|ROum~Chw)h1!<8cmh$b8(Dgs0p>TY5@=rQ~)cwBnMa<&VcvW8$Bz-lMT55lt} zj6I7_ny+fw*~9+;3u17ry4sZFwsQwIlRhcZEz-23gz2o2}hm3wbMk|FJ0uYjj6S-I&dRlGTxM|~0qn2=E+94z_;JN# zVM&DtXI_JTzLlSeaE7>d5?Ud*TqnZgrhHpMPT$1UNPb+mu?ypTZ3uG=p@YNwUu+6T zFzBf3y!zLTAxeWvnQ5W>y3x(cvK9IUW5vRy1)T%`LbI z%&5z{j9Xo#&z)D>FSm1u;|~?YH1eB6VICblp&bvO_W7FRJ%dxlX?11XLg7Im=2~s~ zMvycUv8|^Pg@(cu0>OtAL6A?%Iu7)lTWJc)_AL#Il?O(HVT0A;;_zIIHUVf` zg||iEA9(wqcb!P`rQ`Ubuv|ICl%c~JvJ)iQKW#eEs}Y98GPN*;IOJP)$f2o1v>QK%4;#tS@2kFLa{HndFS!^N>mJO5@yZNI+~f2`z1-&W79nEUgaKf6_35Qo zJlZ|Yyq z^G+xhuEV{Ilm%|(Tr*bW?TI=E2#BmfhmYQvCsaHc}-1nOBSdYYvw&y)% zBbKW#y%!Kdzom<|zjS#6q1zWrGq^eJp(9eIkuG z@~;YgqRIZVX^1)*9ePE1j9=oWv4<&bNC{NH1jkY*y{ItXiE$_kLrl2bixsLo?Y*r} z3VA)=8yAar2B1`i%OVIc0;baj!(;KTVlhJv`G6D_vysIGND0tL9(#22t`-~dP9G0} zTW6LWaDj4EW9iUeX&0>j0H1dpr}C(_GTgX(&5rN|yy@VdDA|qTxfIg~auz+OIRfT4 zF`y*JT4L6665>@Z091vTAb#hsdh-VnhQMNuDKB#fIg}8hK}CQ)?;l!?elR$&hOjtt zS0t#Iy8i&QeWBl(sHy`iGr*ZX3bzT(k^Bfv{60uwz|E-%5Aa=;nUjoACI<@aC8aF#y9(c%s|J zfNSUtbNIu_;spi#_(qfBNG1w|##8DK#<0DQR|jmR$zj6gSR{U(1@yH1dRGe*$5n}K z#|nd3a(q0%NYY|H9#zJ3w^eDFpTjIX%d5l;jQ|8rVtU_Ur1sLe{{WfcoH0vd3YNL% z-}d&)IvGCjmxrFo=dn#Mk)a`|luN{QBb zkT<3A1*Z_&Q-KRX11n=M$fjWIZCyXD&&}=l#yt{II(`Bq^?K}%Lxv|m}i zyG?B44>zE|wT@-9ynv7v+yH?wH=TFhuw}>b6^3w#4gxa7To7(#{pniS;<#p*JjcTg z$ZR7qQEJ!I*X-7x{+96W7RpnHX=`?5uP#~s!P`mr(=X`qXy8AD@Z2@TFNm!Q0Ys7S zW?tk@hfgZy{vcKp7UQj8&>KXMry)ex!6$gGMl`4DY&uq=~;Q!&fcdN z_?7%74aByRaV12kxMU<7*b7aq{%e}f2)xJUF@&N)Ds8Yq%0!Fq3`MVMzs$0XXj{ov z95$dpgqIKrluhsD=X%kP{7i-6OHChdm;j`BisyUnt;g+L{4e3YZ5TIDj6AlWw_BfP z>Vdt07uV3*CtA#gaG0zM?-ZaqqErhiec576W7d9sd?N-B%cq#wjE%urJCu%upOty^V%5em zfA=abEPFB>BKzDJh`+B&)h6yM+)LhrLy5DXs4Lk zn*?T2F$yLi#1J>Ol~d!-wt2nZ4rhem881Ah)=H7e@eKUC#e|bOA1>9)Dz?a>XbyD3KA+>3eTn{x6UGn>a?&_;k3CT%MrL z-j?38`gH!xd)_PfvkQaa?()YlmkN$aR$a1yekMEgub)5ojrWxepb?ma_)UySI_m`0 z@Wlt8O7U34ftM86+jFh$y<0D}nefuE$wO%~Klwz!N_t&d@7}v}@y=0u(Qve4 z)ca~7)uCrEfNLEOUn=z~{95J#hTKCdQ(y}PNE5gz5r6kf;W+FIAqaIr;$*13FB zg<<%7~Cb@BDh-^*umz0cvl`e*+D2-oJZt|b_ZvT(>umW6@TfOhzkrE_@q z5#h|@pKuj7$sEE7%0L8;U!Ozpu0|*Rq2f4`4wqh97a#`PP%DdP?|33-Seo(NUydXG zM7-xQ1d;&DBnhx5a}oY4mp>O)?@pJ#Wc2RwAH=u}N`n}GW~3V+l62UZw0v(_pT#=k zd0KBeOJ!11B72QCtQ8-~IL z*~7e6@k|oTrU^O^k)FmXf38}8Wp_A!3~?ue_`Gp+1I%n+JaoRX-=%c196yBcd|4dC zEHmB}8f7QR1e`Y>`$FbOaV$bDee4}ZN#pDagovWXZ!=nd;Z7$-_w#rCMstm-y2IOsV zULC$GiFor_1sRNhHJJYZ6x=&F?ku3UN}FiF<}P_)4aquH&x;d&O+Oiq>NkoG7`ED3N#(f+u*)Sk&=X*EgIV!>H}Z={WVViCN%l(3 z7rghib@)gMagIYtawOzIAQ(=E`3HL2B#hgw7~D%(d?rwa$OIw_prKYWbnYfPS1%pM zgUxskHENKcJuDI?y9xHgZ5_0Dz5vbb12DAqIDyOscfCvYPyb-j;j=sS(WFomhbthu_EA!$2I z>UEL)))&7EJ%X0h;u5vO0KM<2ojP``xcm~3NG5Uv?FrO*dR+O{{{W5pXSmb<05pZ- z78?P9%$`_411RYR`qo9^zvVzB!r2omL6zL>0HSNU+>R~(JWfi~;5@k~QMlObHhwq0lzlOz#x4bPXtE0s~XB;1=7sTq@9s5aVeX5Dt<_-YuAz?QvYZdi=%tN1#XI zh2Ykg9CMi211n@^Lt-rxta?XU>?Qi3H>hQ0`IKj`z>E$6N2ykQ)Cn+Y-K+{{(uZI1?e6j4Y z7z2X4E{u-?V5BK(Shz~JFlVjBt3Ck?Cm6>xx)m-dPy$wiVnU#Gwf4|gGYq^-=)o;v zP8PxoWD(3alqaN%^_jkvqZZH)=V6zY!qiMiFjzdp9hDsf6cz%Jrg(#g!*L^*DS3TTXuv5QPW^P(O6*P(@>q;Y@oYH46a6%0Ley*^K-}zRsmx0lpUkq-T3eBk z)a8SfX2#~=WdKK=rmiDg0>Ak;S`ID}w8M!_!bq`#HI9R5xu>Ivs|NFIzUxi64=Dks zGnA92V02Z4>sj$wFzP`{k{?=(3^K;2t-v3qfBA1TryuCP}29f ztQ;xaQ;dF2NH7CVWGiV1(n7yfn9?TGT`U$G1;cRx)#4lvmZeak5Mts4i;@7f&YRX) z+0oo#=CI8KzS7r(3CaUW%Mozk6LL++(D@2AyxtQG1|ek`+ip+1;n0O9HW!hk$FBu^ zVK|3Ym4{Xops&(_VTUdd_v5hf>P-vmWDEmKV+DX?jx}a&M_BB2SlXLiY z7tJdPXh?A-Y6{CY1nrhJw)MzbRJ1zd2o5Z(z}vnNI(h*UH?h{e7BiKAXtRuY1@{{& zC7?(sIsjtlOZUBVR;A+cZY(yEGNU^LfDC~k$vX*yA1X%cn}>T9kKzHRhC)@8%4Gyh zOm&U>S6>stIUGR^FtxhpFWHXEu)bx#~aiuTr6aATyY`oF{Lro8Pw#SVt+{xBv-|Cx) zLBqV)HBeC55Va2xxsp0S9i=e($niLF5?gZP)yt=EwtXSaRoNnZNz&+n2_dEa&2*~ zpxdSURAq;8?UZ4%LQ;wxjAHt^VdL3zfGF=U7`d}$D4O}!>&w-c^< zFw4c~Nyx)P**W6)sH(JK@oD_wz@f!BhZPOFr0JRfAkRrYP<5UYD&<3~OPV_Bd z{{S!o5`iGO{Zb_V0P1AKM_c@B9ud^y@jT4RLek(4HnHzXxd3auYg4Z;*`S<}l=BlO z!b}dfHl6KRhL4J2mhLzP8!i^_%pws7d+02FRhJ)v3AolO9h07PjvhU{i9H|a@fYH&4~ zE~#-jNs00wO4*IXrxK(F6ggoz5=o6Lf8N!BVbvE|NK0r;0H-WT>DH=2p{zMTSwRRw ztN|w5+qRv?w6&}Sp(XxBoUw@eg&`9`g`kt}ktCbOooibvl`JF`tQbfFG%@OCx#+Wke+=R%EPOeGM}cn5Bl-0SCZ9l|uC&O{*FnT9!jY zD})k2IfAWLs8cHrsISE!e{WAq(;KGZClbT26^uFxrL=)@c-OUNMj5rJCA{tc1BzTl z{{XsrZ9uRToQ4XBn=elBwM62Ka*&XO?g%6fq@I&ojM8$MQFIcpAT78vf6_miSY_2b zQ2T;gfsrYjZ~kc246Jia%vcB?;+clWhaW*{0M4o-zsPs1LENM%*k{=^u{Rz+KTn-6 z7V#)|$&D4s%jTBwjYX=B+vf>*rPJEcmH^A^`Sg zK(^bC)NJ68hE`0&mNTSN(6GW}iCGX(G$XAc7?r%I8Yu%gk7!5-uc#Ga3vA+7Estv0 ziJOk%sZFN`i6E<(a*IH}lznSn9U+jkslY%;l?|_~ZY!UO#THeUAmzCsBXiKzPid}` zSj4F=DNB=Vpc&UK}^16>Rkjl?1VKI)Wp z8|_<|%|`PCAgnC~8X%nx#wm-$p|zB@l#?23d9_5Z!mx!W+04R?@AhVvjDdD2TF;3# z-0FQOwv0=UElUoN08HoY)A+2-;gZk_30To&<=bL9)|@LXggQW(Aed1w1;)DGw{!W= zl_3C(xf9VQdUUANIjUt)65@yjFeDHSwWbs$rjX`jm4RZr+kd^QRx1*&VNz5PYdEv< z^S?^Mm4v^Py9?ZyHtk3U5yUbj&UA?viMWkF)nP&d%jPH?f-Jk*x3{&c1RnK-ifyc9SbN4jHGzC zAI&Eevx#N2A!I2YV8`xjV<<*2x6Jp>b$F~b>MJ7Nbi9BLL#PKzYpo@ggrF6{xG-bO z_oB)c)TnGA1F752x=dkwm1PQ12nO;Z-Kz02kbsdEnLv+PYSffA*~$XKL~kcUOXn9< zRzM(&oqyfvGNDUY%q0U~~k`PMzs$b|e*Rd+unnsY?-a*3(;w7A=ybA`=9SXpolDK|~a31X%gfLi550 zfgMbcBDZ1MMtHQZW4&ecwhT+@4`c}-fgW8Zk$1c)NP=|w){J8*{Lw)mgQtHwq6TeB z#7P46(pNf#Dnn?IeTU!5mZgBO6EnCXn6PmQ3Yp3_)Q|C0@+bt5C`n~5W@T8%HM({L;) zjxr#d)np1(6-LK;>8Ti6eeHS;yZ->H1rnht)Scp~U?o{dxgB&gNlI2i)u<%iun?4( zBu`Rp@S!UUNC~(fAMr%2ppuXXjjn3oEn!|67N05xAV`xc2T^FArnF)glphjcnId$Z zZ%IN+Y4AwCooE-4c>??j0>~8#CC5sLg?32L(KL}Ol2H~Smf#ZrnHr9@5WIv)A}upF zt4aLA>CB}C>~@hy%?XmM(WoTE{{V_o5NwqTd%)^V9z`HT70tvOUV?bYu(0iag)tTo zr3IB*58bKEww0$aQ9%S;ZQhi;xri5)T<&TVFyfFxVsEk2yws)LYl9gTsM34-O-c_$ zw?R<>L<73hrT5+_l@LZ*-}nUd^65g1s)Yqa%%p0b{q6OmS`<(TkdmT-CJg<0SLh#? zQb0*@2%LpS+JxSwe6m3AW2{gmO2}nHnJ{3Ge7?13+6ho4vtmWa9$yLx%28QN5>O&F z@P9Q(QdWSXxK4zFr3qS^l&9ZTv8I~M8q#G7QVwVmCL(~jg-SqJBnw+hX?>!FWl(+W zldRm)XDY}NqtMzQ&}7Qu;Dx7j0|(``56C|foZ*zA53xf#h>B?}O; zz52xwURMH_lx4UeY31^u8!Zi+a`l0%=xQNFB)6QVF91j<`Jy8`iwe|C%4|Q)TE=vs zt5c_Fpam`z5L94*sEsXiYte~9hGh^-dt45c5ts#7X#`BiQ*TRED>BwZ=On=ixX<^} zf(+;|+GTgSv6H`ZR#Idfn#Q9yb7QS74TyH`7V38(o`T#cv>p*$b0aPghNf0bf zo|D#s6O=6zC0EQa6_cscBNYXhKPY zB0c_~{{Wg|GLlG%22I52bLJ}BMnnJ#kVq;Y%>-Pub4XKv+$=~mwJc=|3sg<>o2vb4 z)MaFVlpNL|Y3tUAsa)a|=n`)ca(D0LKr%A~jKvNKNVFc>UiB9#ZK45M2fAYB_a2|U z8j@N}sALA(X%!uet3Dtm1+@GAC@m-?Ym^X3K-Bgglo?KPmq92AffqfflC-FhR#p$h z{hwO4mZF|o!66c;O@Wc5(M5rjA_74Pk^zbCJ5xL)c+$4>T+izA=qi$ew#$Zc5p5(7 z+NnwQ(n^ZO^qBPf+Ja`vCpbVJ&pb?%y+W`P1!WycO`}8FtvQ}fViY$pWRa)FY9R|s z8$wAY35l@t_|QZs97K^Mf(!{IQE2N&lph+Dtb}D9qW=JXbOH)8<-Ej9T5VBCP$6Yd z+F%G9bRDR*rJ_f|@S19G2P>q~Xb2r2L#Jt{~v zq2uLR>GIhA`J*%dKDQGH>99hNak=ix$>s!C01;YqWkW&;=1C_sk^$I_Yd#$=awa8YX14wB_GyYkjI88P zX$iZDT=;KsHxXRxq-zLu(o@XNR+%}(A0yHu=~_^gB`~BY=mM5ch(L*s^F2Ll01Hcm zEm;<`m>?Zsn1j}s;@nHzVUwT^$VR=Y{qFEb49U{Cd=Rp$bxh(GXN} z#Qby}Kh>ponz-(l!d9rkfNaql;nv~+<9(1s|H+KA$iDJgp^4( zzP`R*RJ1S}acd|*t-8$!u#XlZ^N$O8M%!%nq{^OCY<2nI14M2scf? zNE;rsx1Qy#X?&-cNGix8+Ie*w&}(N9RFnr2;tIefY)Z(E_xExQVRo zl7+aDC~zFIfpOelNVPfaTVMpCO1a8On+V@&-`2AmsmW7AA+SUeLbC!+fcDyj5{OU> zZM4X>u1U0c%ygP+9tcVjmouRPKp=@f+iO=l6O72T610ZatjQn|F?jAI@79=Wtj-~n z6ia}p&Qja}l>G;sQ3sOruR_^v=7I>mSV^`_#{Q>Yr7dkID%G^Y zh)m@WFB=1KA6nyKv58t-0D@ozC*Fyhj=J8q;oNk%wS_ArWwVfWfOn4d7A2z+GJv8o zW-tL7_8yjj%oVJckm>@189HW+ZLty+bvP=1_Bq1_& zH|}Ho(WuIbylM%Atb>>d3)aWI@8wN-V3G=;whT8gKpS?Col=63JQI>G4)G*uJI~pr zy3?S9%9?Z>w~(ZNTQtE`l6ncY@K0*)DFcua;RKBhl45iCrOE$4!%@xA+)b6X+R1kP*OZZZ{^>& zt!G-*KGh*;CzqXI*hI&lr%FN3!{St>w%g=5TOmPYh&S*F?SCrtm}RM^-6Tl~DIi%2 z1|)o0>pgB2vdK)v3owgOJ`}z?j&4 z>Ga1j*Hw!{pr{aaLzX?fk9);x!YN9?lo&$ccLu=i1X_P;v4bw8Es@Jwbi6?Xfy}%e3M_k2@CYeqtbaF}W6vWWfm_xOppcyvD~q2x z+4)s1v@)WC*(90pm_7E>m1J>k!aUkpv~gnCsHjzlAAylseui z#Nn}xCp;|w09Sc~Zo1JI_8dwTiAn|AY(XTZ*D-DX0M@ms?_DnN{Rszq=x)LE1kvBi9?}AVY%@%?&v%$Pj-=Q~ zf}(bvw$is&t3@TgHH`h zMgIWlfKnDNK=Sjh8XY(cTX~xR<|@pDh*XG?vA4+8OQfw&VhSA2(o&m{r6k|vARByZ zULO)MDOymGhYkC_N6$lCBs>^(2}%~)9tJX|=|9{)HL%do zNIxI*K->7tI|bCVlD6b>!iZVz)D6vM1aVi@%3})p3c?ow;xikF6V}~(P+=C7;vre_ z3v6YT43I##ksUO@omUiT#J7i1O57zRDZ>^&TMZ_#uN1Tp5b8t=s4Fj&A5sq0vMxPy zJbA1d1ctI^)gvq~S%da#9zPR2MfDf5a}-ntSRhHUJ8%0}kHumZj6+FuD7dC%a@D2c ze`xsAu{b<-Bl7N~73OXs1WKS-#^!3gQ{f}jV;;e>}DqphSqTW z#_U!?+)e)gdwNs2Zw11z+wJ09TV+6`I6d>E5H~&gR{S0S;aGDP)1|No%uuZ6K-PM9 z@~#&UTgk^QEF&X?mCJ?-c9}j_^r@cNF8W~OTpYa9nE+{cQJa;_DFg#}J6q#Q#5`KY zI-D!Yb+sobDiL5T02|uiiDg*D6|ORtN@gM^K(?O` zI(iv%4A@h^^AhS|vtpki*Jj4ZajOjxPQahGJ0KRNfB~@(j8COAG%1@!0nwfmmeW@a!~se5}hn!gDMv zTKxx?TE&aRrwpNlQ%9I`IHe?=0k@$wG9H}<_#sOt6OVa3twSvt$eyHi(oH$6V=HBC z@{(2_Bq)+x_hM$*K-h26l)P_04z#Iq<60CM@G8RlYDHn;xP>-xXObG_ItU0enQ7{J zK|Qsm4@H1h0WD%u;#G_)Og7tOfE)q`GHs;TQW?S}=CI0TPOP$!qQXf8WwfN~p{PD) zvn02KKzNZR6s@vJu}{R>w(#yQj3N-G!Em%l&V@h?o%{7P$1DDo#T174vv|i4jE%ri zH$a28@;cJ-cyIZ)Uwx+?E@oe|OKpHyfe)N;b%YkyOI)Vb;P4T!zJNf#dKNOJVJ@v$mkf^N<)_5~QKr3UxW+7?BNEcu2x(l5mrCX&U-XWZ#T-E4)P|I# zu)qolbwV{a5qW|)^rxy<#c+(fnXE7se)HQs?uQ`mwI(SwYYYB4e1^~XG{{U}8)Yd!? z3SJS|#^W2q6^{`^eCGk1+*k`!INumv5*cOC<{dy3uXrNj1%N(Rfmzn~IJV-7TWAO} zEUSP)6ZD;H89t8VsK8-a{MHKyqCTGoLu1n7`h6f1KWCg}mk(xCp$Xm9xm6a@>Qxb$cqB$-r-IIAU^U}IpaYF}z zC>V9Lyf~J&%s1~E`BMwUiUt{dNo7lYz2l*@d<1c`(E>}u7D z#&JfPaAd+Ym%{`Fs0{%ZDthi{lL`P82$D@1o== z%F2$WI?q}TbC?_ptb#d&qV5X=J9oaGw9Fn44)f*ZGy_dy;B(H-b)baK}Vljb^HNb;q%hHC+cVa_7?aONsdXcL;+ldsw7Sl)ToFvAf3Axq3N9PR-F zZ8W^sjpHAPabJlDV}zwahSePJ0Np?$zt9Hp)206adcJwJHS2#6{x9L|9O-zzupvz< zGm|=f=@VK10OpBKZ*JQUqTwL2zg5UUj@0 zu{f3D9eX$jn9a@aeSR}t2a$=yVw%FG$iuBhbBlrwS>%q9I(@mu(T@>kaC#|5zrHgQ@92?MJZfq zo*RjASaF{$a==Kq8WXf%?kkVOczW^3TCoZ!&Mz)VGjRmOZ|PkWaMo3T%#?Fb(z&EB z!hsfnZL0DP_X@-~^XDUpK{st=WivZ`$J|#p6^KE{=W%|~X*s-7V0P4={#DM!aYtTw z96M@4XDJpWfu#4oqosMj#4hm{TtiqVGCn~Z!5{t5I~u-t+K08`Tyuor3f08l0Uqj< zq9t~*1NZ4_@@@VoMkf#xg=OVovlt~Y6Ws1>D-Ypcz~!gi#ql>rFia^bPbN3uT#e!^;w38pg4{-7Q^no;^=#*B2M~pBaN}BMjOa!~+30krssmv`G85C!ON> z%c3jE@srRUP>>mxoV+)IUtl;Pg z1qrvheK+k*JSn8&J)RvXSQ0lX5n(rj8~N9JlY(WWFY_&-#?+*gpM0LN{Mx-937#0d z3dSYYn*qGOH!_8P7W!8CR#%0=hA`-H$J^zhBiWY;kb94_S@@S8!!m~XW~vC3BzEPx6EZOAY~l~`tz?K=i%dxOAcbOszMc~FF_~a-Yd5=eb+mGO)YUO zE2>k=a0djOqf#}V$9jwWSNX;YF!&>o5ZYXJ$3IiQOIJ;<6T>j=2HI{DZgZ!2>+3#K zSrvo|#O1;?lgp4}LONA?Pq#k}!xxF4%{W}mbuvsNNw-6K^n4jC@Yj*ZX`pi?4fGbd ztZ2nynMqon8S_}?1Oq*H9jloC02_ViN?TGIE$Xut(tcFSS+YGF%%SCyr6IAJNFD)g z$n`aoiE#!nX$`d~Tuj6SkG*Tjv&J1!$R1dWfB*p^;F&)v*1kJ};jLwPO}epf8mGB4 zRsD4yaQC?WJxs47O91NTQY0Cf?cTXK&Ir6;5pmpGq^zE1dFixhYc~`8d~mr{g&>iC z2!j!%dTG6RM1Cd5@eFS{)hwn#AXr|#Tzp-9<~eopN4&#fxON%fkP?6nli(glUG%<{ z*1_?PO2`f+fRP7DB4c{+4Lgm+B=SNq?e4cNn9aY{HxQ<Ne7y= z+zob_8xHlvlrnQ+(c{VqfKB@i$*vC-{7S@1O)xmJst}IaFrA#1?XBr5JpXX?=JHQa0A&BQX(Et#lL75+~?ANa1 zJbM7n2nI0;bYD3^fCR+$&{Xx#dXSxdYpC}J;iz+x;=>5b2_XElZL|}qohv4MD^IqJ zI7-?eB)D5S5;U~HA2|lRvi|@OKg6+UZEhowM(cpD@+}``w{aiFoHqx<{{Sk}C1ej4 zRSU0JjUaUz_No59o97*FFO3)m3$2v4;BFmUfNvI^v>tWkaBVM&V$xsniIL2am`nh6 zzVq>~HHrLC_BG<7l|CmjLX$WCZ(R&O9LDmAXcmG9P)QkXMZEWl?LHeKKe9f7h{9o6 zX$V6~TUJDoX$DRAJC4z{bFu#bl|u0>E*x8K5el;01nCo{J5a9qBCBRL=Jx7qxn&&UPir19?0E*%R6O@9ofoV5LNhBVCe2<+P@mSmn z!-!MOFDW5vAT2|5!1S^B+J_tXhZx&jlnzoZ;7y4Dn`^9UCvLR2SBQAF9c{cIaxMjn zhjH*dtzBgOqR}#}W;tLfO6Dy>43cfRkM&xyXip8p{$cDnaG4pl&BpKVZW6#+HL(fc<;ryRUy{d zE4p%_#V0SrVov9!W#W8Y=UPJCQe&pWat~jn6HM@yp2(FYXa-3;4wuvCF5jJsH$@+-Ia$1f`8aDT;T27=Td5=vxRPB$;`Bv%M;xrSlAs+aPdEfnizJ~gwCW8XE?l#JVU}s9|2fDKAsHoh+u-Y{2-)n z*dDR1W#gWYD;*v+jK<=S+TT$?KI>p+gn<&BejaAAVp>)Sw`}$!IrdPjwy}<}JqGm5 z9vS{Uh=&PNh0MjXpdcBKoOv2}I9wTRlFG|OW|D2pi(FeM8+W~IndzHcGsJN!Gm$+N zZv^lBR?HqB9=wEwAUJcTOcG;liP|@<7``RVZ2QXvU)@nbv2!QX?X5h8DYcBg~H+$iz;NTazUKHf-GV+nZCo$xF7RJ6Nm|Au3N4vn5P7r!N1nGpa(G6 zVEb!r4W}wp(aLSu>ucQhsJyOMMGWCzb@ZVP@|AKD4}^Yzk_NJS#8G0=gu>y&t*IZI zDJgXGC9||AL7~v-M%B&6afY6R;Nb{qBsNecLDMnUP4CjQVYqf99F!{*^7(DToN55d zEwQoGX{}F>?Y>NS2i5t7rDzL}5QrMu$E@rtpuQB-ZZ1t z&ZY^_>9~sGabL#RykZ<+sYRt2@#;rQL>S+tJsb_yBr6!;<^o~4xPfnv&*4i;2`v6& zkd(06K?_Ej#`f1YtZ7*!pX|1{=*4jrk7U!0q79MaH}a?AFx*vcj&Ln=KvABT+hg0l z)!)KmS-=MQ45Y1h0kst((HnI$@~rs&BZw@vIV1rGI>cun#FN(7>*-g&>5Mo$CLz?R zDhojuGD#_mz!sC%x(#9x!yI#(u4gSt%yU3UBIbVdu4~xlP}v|j;_c#c<0j-ssr9ZN zKNS8o@`eM8Y!Crf-N@Mg05!9nPnJD?FN$H@Sar-(tyqT4!2@X{%GS2^$bX1D;>p6d zn9K!_44nuk$lkCuz|`2ooL(g@hh(I=F#}Mp^ETGCo;QWUp|oLe=bqoXw>(qaPMcb{ z#!sVN3=a(Ad|^#CUs}Tbpbku@xg$*?x(x6fIvka{j9CLkI{?@eNQl;LT)YDKml8lz zX?0*Xl>{3SFRzr(TFr^YyDmQB5`ZplJ^uUJ(NSeyy9&U8h;@Y^k@Bd% zFy{mur2>HH=1P+b7nq$U+Vq|4jQ10L)|+uCPy`173d|B>4D|m1J67x(4kVT1kV?Sj z7hEP)ack;-&1L8IZ|SMdHHyTkWt9v*VG!NQr&#H|s{=eyrXFahDZ<%@GLs3pzhAr7 z{A0hDZN%Z!8(^st?zV$qeD|%7ejiG3&vVx3!~z^qbdL}x-jVS-)cR{Waf*G^Eom-t z$OSSo8yWErG4QQS;4s*PIf!wkHh^VCVnU6;%q?<8oA#{kaI7{Jw|TE9Gzd;clO#Z# z-E}e6xld!%khYRiSXq*wks(p3JO2Q^>ob0pD`)4B@F_!i0U+d4U}e}w#C8|1;(rn= zhM@r|24_1? zPmEIYD|NFI#Zd9h&B=-8c%a>)O~C25?Y%SpYYfgE)N_!R3U2_b#t8tDb=2wFxR`Dj zwF%7y6XOH~4fQ&hl4Gqi4ZzWe#J19kn24pj-w{? z2q3u1%##8@3jH%<9$VHWaJ4139|+|sB&EPyf}?8yEu6-b_mIELp|v;`gK%83)J^Vo z0A5dejEmP(42(N0IPzU63v4Kd9Fk4;Hy57{@!Gf?OBaU5rN&>lUXE`)0Vy*&kSu@ORg#k zfDnu8l~-fFQfSdpi@5GG=FuQP%O z#y73x=t zIR09kcrC>!q@lx^1-PA#f^_Ndt(g8eoJSABFzXMN2n9UAl8J~aY+BmKmWFG5>{pDh zHjEojGUKi~{&yAZ(2@Xvo`A$e_o&M)w&6)vF~Hd&1cHDpMEs=r*GmKVZENK`!pdD+ zq%c+>ZzP>2(+1mDpkD;T@hmAgpxcNc)l z+D=y7Fxm@*M05aZHiLPNm4k+1vf_f;05sa57L*o+UJZx6ubr!$*91@JaRp7M4iZ6S zBo!I3fz}DrYjm!L3xux*@9H>olG$;=2(UdiJ7w16txiwHHvVJMV0dHLmkJwE37%S0 zmI{r@5;{%06VjOf0Oqi`zE&WN7cH)5F=;Y{D&@|ZwFK`y>z<#*yg{5Rd5YJC$Qdhg z84}MoRFuTM^0W$O|=lgmCY3>EtlkU;OIyG>{G-^u-v@1Ec|cZ+Wn zxr}YJtn!>ENCI}u9oI4MQ!ZxFk+bLk#NRcE&*y#pMjqA){e-b~20p?l_ zqm`SK5~7F`>MwiNCqEKC^Ub6vHnzxFTHGT#RiT5^r*A5$@l*RFsgGft0Oc)VfY=HR zqbV5+hTz0oslDh?kHaAVGW$xwkcX1B*|13&^Ck|G0qd=)58zzlSbRGloofh(K;@ZH z=R|^)D@0pkwY7>Y9{^Svuv#wuWvevNP=Mswv#{4)?WJFg&vlz!RB`qe<{h?{7M6m- zTEz}la7hFyNg08F4DAwP!nq%u!6yvjC1PZ>1O>APtlaH*+)-k<7{lVg4+n839B9cg zI+97!GY+Qx1yh_EY`LAKIfv!~8f8F|LDElH2HW(cklH*l)yzVc>Xt+(7RfFtP)tUo z4UW_6T`U(HPCo~TOSpj3unUT5DJ6D<7(VFDw9cluyc2~zisBH$oqhEM7TZEqBmg`@ zA|M4==@+crO9zeoE5=+z^H?zHbv`V^`;NLt@vU!+zK<%~j01@V*=-?tn=cj{8W9_x zQbbIf166=!I5mb4k{(G4&KxAB^K`_YU1zmCadxpdb`-;^hz_>#Q~**Sqz%OEK%3UT z%(Z~xf0@LUAr6whU?Np<1t8s8&QZ0hJ^eTRxliKXYZC4$YfwiqQjiaV`=;<#EeAoDII)n`b~{$)7pxeKl)@)S>&w$`!ZmgX-W z;t~skC{yup;ZVG61pF>`tnt-OvDo4G{4#N%Vjd1H!DT5jR3|oLHi2V(PeC+>z>pLs zZgn@2(zbki^nYeOq8?lPrkiB9iU5zxhhsg7Ih1ZEUw|F-ArInG#vo^H_X60Iq9!Dn zR&aduPQkE&pg^+Q;oFRN47}-$SH+Z#_XpDyo*9P3l^~(ytTo{(T7jLTTWcE|*DDg!t)Q*OiG4{*(vsi> zLVu=aN|Z?gKEb`mvHt*(4Um`M4s&bDqS#bvBH>U$B1Nl_#BuGsR^y6G;i85^=(jS_ zY40GCGyqgiYkY>c63;c&TbO{(Qrv|>ktv%3M_sK`{$KMs64If3sd3i~g%P0A0TH!j zRyhwo*#t_gR*47)q@4%=`p_?m;r{?AvX+B|#F6b4?g>62u#J!LHGVAeX~RCe9xOcj zODz=SbwwZyu^?}-9%RjK#3|QV4v=lGZ9^@sw%IE17YIOHgh4PlfNiMnF*mLz7aoj8G%~DG3Y^O7oN=(ECpEUvjl80j7gn>Is_4_7&Bo z-ybod5E4i#H=AxX*8QnT$2e8Zajs)`Ah9YV)M#%L^`l-Xw1yl)i>zHHV6H(C7mlAQ zjHa{VxN_WKN<*t{z@y7-4~&7*J~S9U8Xw5&Gc2k~fhKJ;ZDUzFR*Xj$EHwI{koCzh zGie}4mE*S6<zjU6sNROgI!2MC@Z((moYaO^pcTF^5=lA`l0JPHT-|jRo}@(wf38 zYRv4d69nvH_BEU8?l8ZnW@(=S=muqeca*-M=(GzG#^N=o49Uzi_1tWbdp_Kii(GSmYt~>rcsxW z6qjuQK-(x2U^|mrD44uci)6xiVq!UR4d-3&y(r;F$zGB@&Xn3RpDh-{ke&V+h6}01yG#L`Ovw)BUZ99!>*N09L6oRLm zJ0i%PHv7`GVzD_eh)iPJkM8rrF+r4SS=23OW5QtES zHb<{}Rn%x*#&eRsQ2{qe5q`R#xu8}VN=W5qCsf)a&a^3Qge1y=kT<<-5ltW^v^LrHW(QKTJ=4~(xrB0E5_R#UZyoEQnMJS`QWNc^Z}-)g+zOafy1$I`Z9UP2wn z+ENyXx%c$>e$=K}QC?%?S_g>))yj-#{JG6?n~dH&3KGKD_Pohhw4hjZp7C43OKVAV zfZ5z42^&pO4RRNUX-JYLR0)yxD|Ba41B60?SO(r91b)#~ig^sF0EDcd>j%SqE!TQj zZRb?9tYr{H_(ah@G*h!qA z@BZr#<(f-!l}d%eqh7b^RJ5tMB?K?sQGh_+)i~DIRxvF!+5vA+uS(~mm{f&0qSfFT zywRhZ0ZGh&3?wW>QKtr{L2*lxH8UQyUrenCaVSVl!B)4jPNVO=T5x6jGRa(9+DVNK z$KQI$g@j^?TtP$~jKSP|>r;;@ZRJ&h2p|&>Iz=&{bCALojMp#-wTP@(*PsT(2!%=1 z{{Wh1X)6g-?n?ec{8HUOTZ=a?lkcv^sz*A;TyvC#2?Yn?)4gnEw5`1PiW4S4>l1$U zZl{vjOb|$!14_uU<|EyJPJ@5DRsFHCMJDYD>7l=bCFrc$z18U6cnibd^+j9Ek4OPpr{k4-j!H3x>-tM z{`BV9jpnhar^F&aG6d40N>BiTNx4lHMJO&(tz?bsa}%hwNHLh&=S}IzxYYYGnF=Q4 z$q_JqlmL{kl?q4)LnmIoRW706NG9-&On0gfmh!1ZSGL;R&w4urttvn(iPB^5_M$+A zg&h3Eh}7nh_xw{@lw<))Lx{LAAo|e3M}wD~7@4%|Y5pqEf?GL65oiX){{SX{6YY?K zl#`a=j>hy#LbH&7qCY_*FRU7q;tG&}1eGL%_HRMrUQD86Q#1#f=(X-eya4wf%|)X> zh)N7dzS>)DzO)HgfNlvl;Xpk!^0@ReM#=rq%xbyGlM!d*SUP&7S zn2qQbm5^*fE@jWDnut(J&;*z}n;+te5K57tNCe0J@!xUhP$l?|K9m3#+k% zyvg#W5_7FGp$Aj71!V)oR-^{TRO%r8?^LxFgPIiv3F#Wu9}1QNitjP0Ge(~Rp=g;O ztY27)3tn^?DqDI%jrzxHUWM1CYgrZptXo2U`p}e>T|rU^8P)oF>rr4yPGpslI|>6x z$Oz6;FeM_%1JBdtK%{0dCP%wA_?jf$+<`}+gEDuDpVfr>i4!r`Z$ByvYsYEuYElGS zy+jo{@y=seN!ELh-k1LXjk2_kSUG`S=c(z^uas1)5D-iQ`XgO;JtzqiARCe_b+plD zT2!4}K~AMQ{hQ5JQUsJIB8f5x1ox`4&VSYb1R}b7n1Fl7cv?kd&HIzd{M)+g4eJdgsT zAQzapI>k((4TmxX*uV}UHN^)h@6@W5W6W6e$>Q3IZOHfKwtcP+l@8(5WKvF~%DZS07tVW%v(+evSR%gX>ZTGj< zf|1}-m2iPNoeAsSt+_xsRm@p}Kr^PgY3bU60_QT6+26w=I?*G<$RjoM07RJD-8Z0# z%7ulaC?mp91i+oUfxQyQDEESpJ>nt&o#?rsDZI;(q#Mn&sAUEevCJk7q=omQfQ0}c zq%I8QCfC@Si2_1GM!R+XDzku>5>g6?iI6xcK2@P=3KBiR z6M3ZKedH!USRhP&&-kdW(V0-R0pV;Q$sp^})L~vUYJ>wEv}@%;yh2!76ckGCkf0_l zze-y!7gX7CM%N_kUVoFUj{Nht9p*w%loX^C>&1#JjM0B zqeIiLpsrgnE9C*L%JwsVI?{+jLuw^WlLfTeZ=fAMb>y+@=DKM~@Fbu`;Xv9!8h49L zL_M5%Msh9=ZvuR$t!HI#be6ZNh}a=Vb0%$vmTC-%9mEW9#qfL9=k>-RBS z>~xjVL+Q!@4ojLrm|XPQG_4H0Ig$`uHw4CH2p1!-(z&fZiClpS(l0wqpFgc$423xe z%7Y#lxh8ZSt@5sSmr2vmHnWIjpuEYDM3@FP7u)ArIYlZBjHnPLCh!5U_-XTjTt;!O zAR-f=Lz!2JJ5S4c(2gXug05ik5$znXC%;WAmFBxnqqN(FEjCJ0P~pnx&6;#1w=eC;MSxV?prv^{z6pB3uYb1g6&1oxjC34x=^C zEi;taK+i$&8rE3dbc4A7Qq%1P$&I>CsUy<4%Eu!TVYqEkn&K@pAV*7FRXvC<2SG@& znFc0xi`(g0^T;S{5FAlaAu+H7p4FJ$Hx9HqjHL=IDk*U)j}7gYx!SZXZ6OE503-!k zG|-Ov{o0bzZPs&zkbyAcM^1yjrrq_Xc-fK=w;Kccd8g3M)1jssDJU6=l$&W00)1kb zrJ-mUkfb33z!Blti|S1&5~SQDBQ|bj&9nyE>>{4H%FvaR!p-CfHu(8bOn;UP zm<^~n6&lGqpO0F<$d?)V{U)#_YH*aKj|HR7*F81Y=UvVv2xuiPEymrr8DJ5to`+is z;HjkZTgpHt17PjyD|z;fbT9}Ql?=eG1p6|G5o?2OJgd2bd4^M+!k>6Ju51uC5J!~y zb+0zca)oS^QOH!oK1zO3_{Y5QIY~+t6&ev zR#!0!c(4LnWEpbjHSc?EXF5q~gyd@G@aQ?lBYlhj_xwf_5USXsf#p_QpB%zQ1OL=ab+iSqOlk1tbm6dun{E1~y(8b*wa#APGX!APAX1xYG1*Jmac; zqx!;1`F2;GvjjmMFJXPBZ-r&V@rUtg zPEeU15edJb>E5@(vtFg1GlpTQD+LXV#d;xDwqx4%r2hc)g@&;?TTyYsn>d7n)5Rp% zeD$?>-}u~HNF^z42w8wZi**V3{OeN~M7Fh;ikz^5Mo|ZIwEZ-#{11fjK%Wi64W=P~=zxcE#<8AwxLHls5kAc*-6-DbKBEGVHlR_Jc( z&a0Ub9ldLv<#M}Uo5mWCcNp)OOOR#j)4NXBb?{$c4735`Y0QHq`yi zAxMO>_dm^X;-dzk&JnmCJye4qeK<%208k#B{oqk(whTSA-{0$j=?#5?rTmSc1b z;Xxs2mkpF8N!0Y)t!p{446Q0sfkeZE#`+IIwQoR98E$f$8iGc-k5D#^Z`!hPCWAL@ zfV`xE9`AUa2DK)TrG++TbCNUWNF!4oUs%?ZklMk|%yC5L9Kt*&-q(Jfw7fcTIEKnp z+>{bZN}$fZ^l#Ry4hC5b=V*gu_z1eherj z4dMill!yY|#ajw}NaPV@DoQ~))HEdZK3!`wxD~W{%_U7c1zf}&$Rc9ntXizqJNb?h zw0}>QZUHie_NS{5yijdP5;F-yiZ&bhdQrOao^1`{P+BHrlmHcRzgWHd^q^80YZHb^ zJl2q`$y{x*p7*|#HL2w!xV3_%qbxTnB4laTc=^{c)Ep))4ktcI6%0 zvN1R{cz_{$*a6j1pwr>rv8kCL8*-K6Zo+%dPTlGwC3An`W#NfRVJor9q2iOJ_v>9e z9v2Fhxv`NMU?hH+m=V|SdS)4a@#JCrNMYh~6iETnX7l?|<2Z8LcMdS_h$$S}l_*DoCMuzXEt4z5FLAcoLx-+1%-*8DacaV0*S zLV^~7Wh=uw7#r>04``^oIdF!G)VB#XSO+*8p0N}e8g>5w%sP}fGrJ*3Yywm#Q8pgE zcdnlf#Ej?d0rXNvCD9o&1pxG+qKPQz_*QkYm1Hjh;tB8o zU;{d+ZhwPKTNrj7ZML05h*3`Gy-&k zKTqbl?BklkmlP9`X(1;$nOD;P0I{N_ckoyiSZ&5!D#WyiaUm(ZOd0MkTJiiT2uOwV z5Lyj}g0rsU=5(6j;CSn}H9ml0vLXUZka~9{-=|6@u`e@;aomdwMZ;xXr5EpTYcV-Y zz+;(Hi^4jUMd8w6dTTpJTHx{g1}VHU8d8HG>8P-ta@ zCN&rPy(1NbTbNebXg*3vE|&lc2Q8re+O~RhpKe|Q2D~#_5(!&|G9S{oiJvdIuKpPV z4TU&|ii_w0Axnu)u%!!aW4e4*$D`;-Cn;P>t-3JF-UM?0z*J^8_ozP zd+&MqRg`!>H;Tey%9=@ifC!Kx6FQG6_12iTj~2r=R1=GRExaNG3y*qz>+E_(X~Ch4 z1L|7x6g(G{PF$(dXK)9~dQ^LeV4PEG!=6GJO2;L*IqkG*=hM!K{JBWPx`eGbl%%1{ zw}_v51;qRyQ`L;a;nLw{YCOcH#e=SSxE*QO95xFbh(l`;hk%z`SeEb8<$b9!NtfaP5;!@(ri0L3so}U_HGhM7t5eUbx7@*sWQu3&e7!Z*+(g3g;Ru{O4 z=7PupZ51~zD!`v|2-ibzg>z0B%tD<@7?m%WC)vhEmOr!&$hGN=@bWPH_8LQp3b|R@ zHUiQ#G|1NMXEDYbe-Pq%YriOr$1v4j4ZgJ2R=jTz#$pzh$1$X_?L^oBsgC9?*u^2| zQdQt7!=be1o06E+$@&Uk2YD*P;u{&AZ}SjVtB?qZ>--T+8WQsJHbconzBCrfgeGUS>F-lO7K#w!%dXFm9 z-xy;K8vMxv@~@#qWXRkZBL4sl#bzR*NJ^b_1t1^;3H?a~5CHr5(v}vyS`>gr9mSGT zJZK;Z@hjyUS5-Ld9y0>!OCbQtQnwYAw8^pRZ9cTDdrn}mhz$ezM$9CvLtzAKZqQHf zTFr5|hYTvfVjV(($nUZ(oh?3F>sk0#Aucna3v)Nv6Fa;bx7m35Ae6xsgMZtWgV=3-B_ov~y^q=zz#PIO;M6GQ%$|4~G z@pHX%__rQjFYx9s1c%FLT$MD0G90&pN8PJpIJPCuLyoCP4W@i{Dk%}= z13^o9wjPJp;$Q=nEs2$rGxw!Th}Rd0{wGoZNMS4lfJ&S)2KVcy+}7L&8-I;5gNQCV zKuBr;$(CqvYZw39<{*ujP2&NqjK+<9{1 z&EyfJ{OhCme}=J!Wwc_%KrRKXB71B0N0nv8aMaa(exfytn&ojX#|cBn4S*_GP$U2*<3ZRTl_xg+GgvV=JYO5e zJA)2#8xzcR%>V;JI*@x>YpTjHpNIKBmSEx*(LhoTqAW~r^`(9n!MA{C61;klF$IHwYIh6o{EAW{L1G!x#s`@V;B0g3+rlIA+n#u*JrA*R4C4_#oztGtdh z!z`gKG=~%cQ-wz|{D9bwqsqL70hh2CcJSH3ZE4I)mxHjMSf#CQVaaUeWHvH|%oQa{ zymp$5W%l&^N#ryF*!H-R1BO6WPa)-c@|d+^c$3`MN}MtPSphIkkUk#@?%?s5c9?1P zGdUBNJBB%PJ8R^3n!v^(tVS^`;nJr<6rung>6;$bwd$v&!HfggYy<6NQNx6g?t4h+ zCqZeiFU1}pKCWpfaWGvb{$DLT^sis|km9iiB9st2=lKk#Ksqfvys&s zK}-;=s~XJh2CIf^v-oceq;S^SS_`3R0IZNVn{^(V8tCy1OB^Q%UBm*?%4e2TbI3h< z_vv0Ig?=RC976ya;h`)Bugp3tw`l1|WqkMCQ}4dxq)LdsVgT!4C+S^$J^M?ujeirw zpBR_Di(~~BL`)rzttq51Ahwc12<4l}GIi25(9~-lhMQYXCJ?I(qzDIV-^TZ-i&E-N+GMzSPZxQ^a+vxo4ZiNs}f z4mk~y09A)_e}Cq>PGtK|{+EgTeZ(<{bMlx~uQ8J_AegxydeU9tTz%#kefLt+ZksYM zJ*IE1c5$3b1;a4tecX*cn9C$9Fu(f#E6Y9j=M~44;}{l$Y&a!krr>oSf6a80{{Yh* z?fuqVOYd;3LJ+sriFBS>4VjUwMv+WT1Bm0&f8^b9rWbUD4M`&8{J^ak9v6V&NI0xR zigC~+m2OV4^`iVk__v2(n+eRUOdBF(ks1qW-nxDIkB$r z9h~mY@OynGu1P=kO}q5v55$gr|0)I zw->>Y!|Ky}9CqyYeQ72A)FNw?i`>*TiM0c#)4TaKkTaheEN1L5Ua*NH|P`(-8R24tU= zA0Fb5@vKCpwKIooMpS)ttSI4*Jn}P2?*IeWXs=H*_Ve5NYT?YBbNuoKKxCwdnEwD( z(R&u#*p-AfUv_S=A`EI{dgnT&;5le{N@xfqBGYXvp~11mZpIauLJnf`$9?^TFYs1#5!_i&PXRN+K%y8d)xGk$iard;<1S4E$BT-)W^=% zy9b8D;hHaE+?;|^iJZsF_pTok{7l*t$-*qSjYeS+{O??p;xTx_RJRr5)SXRS`1-!@ zqg} zD)qcLVsQ|M5)je`XI@#DI>70t%D1oanHf5k?ROEtn`;Q(cY#71B&`ks16bO3fqC_> zCyPq)Tvd2%6p&6{VveWjKfQH-F7F=123QION&pZ3r`1zvz5PXcE*FR4{{V$>n1@su zTfDO1al@FSU?#vDPk9jerKyM^Q~*0yx0tDe|D;Bm}s1 zAdP44W|@oPAC<#7fxxo_go5D`cb|;a$enFx@i@bv7TRrq6U)k!PTE}S2Fj{?@#@(; zhKDozlBCQKfBa+D;46`V{4nMzNOu;W3vOX&H1Ueb3Xqan+ArJg6C3%uJuXD^pK2(}-HjNLaF9>l)70)5AW|<-bmz z0~w1?h$VT|3(K*CxjF$mR*pB1#;hYgAx9BFAP zyupZ?9D4DbuyJn|+$rUj-BgtHpPgrqzh<-H-Nj+Ce8$upT7}%VO4^J|_+=s25KwZL z5{U2^5%Ili{5OU#6h5ZXFxO11NY5Ki{p+j8INu6h2@Eu_#x1Q00xVCw0J+oB+g4le zF`D7x_~#bHB@H&GGCASa;s%CvirM&g@Mb%VKHJWvOgA}0h7lU>dI4Hf_{WFgaEZh4 zo*B-><|mlya}Z(ozZWW$=v(lr$U8(Nk@c^vl$r zW`D=<&%?=Y{^+@j04Yt`O&K~!Izaf>KZ%Z?(p`Jgf2D7SO)l~8#xkAqrH#Wu5!be zM&}el01^^O8rVPwO|N}xlZfK3zWUB}0HG<1kvfA><7;Jl7ID}<7V_T1GC7F%Odk}B zDh&Ss7p_+m$KqdU9OdT|9y1w#QH_lJYc~u=Cd+N5n}a1Y1nyO+9jl=B9S=C!#g%|t zHb4Y~4#!K!oZ6X{TETB zDeNB&TLTu#IZk^gR~cGJItkQ~sFSQyaNmir&GOh~lm{D6g~)-BAJjKH-lu<1*B=SO zvFeY^sIUr%4`L(*5H}meyrz|g;!NNYl9Jo5-7WwKDFjI~)O>3P7{}xImMfQ)YyzTE z8zcfuXa4{-&O9d)gdse@rX0U9vmz(Oeg6Q+s+{lHE=)N!Ndeyx_xrW!F(0lH!{-i_OH`7?{_lm4g%bqYZ_|kd>*{Lq(&avje&6 zb_9Oan-9V9oJ=?t=PQ|cU67%-ZoREq@c#gV@VI76_?HrgQgbT~7vdr|J$Hd7CbK!8 zYW8b9e*=$n{%a4Fqn>gmAQ-)dw!frBKl8XOi~P0~zX2)=0>;u)+)jteHK4|E2pa4Qo z#$-XZwc|LK<78s;Glyi$NdYV75h+N3Hj~uSUaZJV9j+z#slFS5cZaosWxUGFRvpY0 zmO)4W^;OM{qPQF*hdacIGBnbhCn$~Y3eEGj`c`%^n0Cxs0C(%W-S9?PHJ-> ziIIdr7*>M$nsY>BM#WkkdnWAH)ytP56s%UJG^@ti*PxJ#HsYi@VcU{1YBzy1KPUy zFT^7ahWxN<6mt8w%ho@}wKt1Bo=3CzZNwm~tt-TlnMKI}3F#KK$n~zGhyMV3Oeqb9 zRJ9T;6LL>1n+bs)N4*2QR}%ABfTo*id3nL)E)C)gY&}1k}|m~31CP2^w1br#>fXKn05*lt@0Q)yaco5TR4KwQ6#NuNR6 zt!iTo!#U6v9m?FP(FJLMW;@^3x;#7ahYi82^D1kW=tvGUw31#EYwS+oi|bXNsB0b% zfN>E#sg92dw`c}>tgL8_$hT15CNDewjE>mz|T(M)0t4CHny7&g>T{Pg$pIsEoxK=5ow(U z(OjH=5yYXDsiw;a=3T%|!JB!16r5_j?0XzOIC2=oVpQH6Bc2lCjL8RWdxCn_e1GG7 z77qYIGoeHQ$Vl)e;@v=ti=L+Dyc@$F>p@FO(I+7$MBDg^2KXK!X-b_jn8XX8m302D ze>ET3*Wx`I{{SDju!b8-5YSO6Dnx{h#Or;|wDf)|YaXSo+~wE`m7Kv>x|RLM&$X+| zvA}V7rzZ`DQr@3u;{CS%is+{wr_C@e}0j=zscF!pnTsDNF;MK&}bc zr6*Bs^fkYV{{Yn@>H=`eTS)y2N&-pB{+P*2O>cmk?_*F zylV-8!?xR4R|?#0l&N{AHSO3|PmAKW8~vTg>JP-N;+BDkbwLOrX~`-gOpzzulRp~l zqw%A7Hr>PFR^v^P04Z6nV)74dH1n?!!*CC&(6pjP^QW&*I_tCeR~d?B4vaF23xTj1 z8MDcYee|m9FD14TroI5%FBGW2vWm?GH3N)`-t0mtX~yl5R?am2LAx2=}=Z# z_rWo6b?aP|@U~b&66@I}WhYqc8y@FDT&^JVcygsSR8~A9PlS!__q}tUA2#G)_F4A# zI1GLZ0H%l~+d1sqvuOe+uTv9Yy>>DDV+V{&Wu~zR8aP`Su9M&ioguT9JnQ6`d`>GA zpwlg>!87dt07#FOYECy3hGQvO$_`ZsS()uo*YUmmu6*C=^i#*Mygh_+T1wE{fGe7O z8eG6OI(h-+TDVu@*08wjg>E;8aAir%6hHu<3cpOrHofcR3v(-_K;}XsBp5x%@mug1 z*C*P7tNyE8i+yT3{xro;p1!G!{8G*}Y$cYL%z6uL;h{XIZeb+ZNirZE$7+vb{gj_* z0!wW+wG<&F%*gkQ?;~E8uLXu%%6ATzY}y;JQ*sCwuse~py4P!lalRqNTx}>zZDGTc z&T_!&04H*MzE$SG4t+b%n||Kc28VEnY?P9=Y{K&d1}0^-YvdK{v{KpOYsG{FB~V-T zO}5bm4r`UcxC6Ao^R71);`n|8!80)X3w6NXEhzx4SwsaH{b?ZFck{0-$K(Dbh(qnR z`rBc~iWZbOL4z8dVs-6NJ|4RF7k*x6r?WzZrR5>4*>7-XXtkoeyAHI@Fyb)|r=F4$5z7WGX&t(My7ago#aMP8 zOPD@Z9iW0sSd`}`Y(hlYThG?I--`3}=lzqfu_J+EID)ekA*6VGc}lXA9vBxk9X>VN z;k-4!!~8+aO7i2)(%}Ru-Exp**xnMo5=5fO6Pg`FRWjeKewV@0p4m|#X~D`CR*kdxcD(}*s$6< z&stmDErxJ7MJyKFal^_6K>(^C8^la>wX2(f{BGtM*3uKq z;*>p!I5nk)%L>ZlZ4{_zV79KL7$ZR&)cAJKK7VU-fa4gzVqL+nISS<|O`zlgZQ&+w zb2k>FV~lYO150~}DOg3})G~rRZUQYE&ZgTF1Zi9){{YmyRs#;UnoyWiNpZx55R(~+ z+-!XM*Bcx7%M*^nVj3RBr&I}Tw7?M-6QHm=UV7Jg@b`Y=Z_CX3ucn2u#vNk~gcyYq zrE=x8f+U}NTN|5PPg>|=aVu{b%1X(0d8u2&+NdPYT&XtHnKKrzi=&D0EGz19DGs)% z(4Jh8Z!2wD(fGHGEw-@XY6xwz+FL-;2lW2{@wqYHvi|@Y{@Xry`j$1-KEqGpu>qsZ z1`_AGqU4EzDw8CR@ey21RxG~GEu35E4yZ3OpHI1RN`qnwNh2s7PeEJ^HX9gY^Ei;V z+aW_Ey{DK?gbth5ek9A-rDrNGB0{;Ux+LiY?Z3*Rd~@qteo7zAF97;VN*0Mqh(XMh zldbJ|f!e(TpNL+24~BUdv_4xlLIei$l3-iHsWGXU+PsSRYLc#DaRtMefKAc7!PBPo zOml7*iX6P&ERiJZ>IJ=PwfN<8o!IrbHQ=%ni)l@A3xJX{WiVusrlm2siQb8y#4pAj zfa7npgu=OGlmwHS&^3q?*SW7Iw_SS>7+)+jpK4O!keF zYH!73XL{+kf^lpFHqk~AYLznBm~hMiI*<*4)Sk7<3@LchfSf`cBQo89k`90o*2`MC{8784&zQjp=Gx61d?ncRY*SZ z*odg{mAhlCyeV;SgplLwP*5SlS_m7NFp>z1?LBKl47Y}P2=Ofj9OkY9O|E5DBWM>f z)X9m^*#Vchbu!!nl`I5W^{147UZ<7)QgzMePFh7Fp@i zU0@g`W7mm79zjEC4mhGfSb_i~PNw6^Em*L>g$lEh$aSYB(CF}j4Wx*%5!(H)TNjK_ zZN+2(@UTk_BRNUvdXqNuwRACDQKTiN+Z?<(OeuzrYm+go>%PL#YR$9g$l(veZa0yI zEiJxMQW69NM~HJe>NM&`)a(ZXP9>B&g@&55W#>!;xOF{mdk)@p+ihyYVcaWHS7Gdw zQ_Q{OoyY#V3)Xhsb1RP{+PLX)NNv`_kVHp(w=e*q$9mx-7W&~Yww9KZ$mJ*82@(&f6X*?kR3NhJxRTpYQ!Sa8i(XEWE;Y4BxC^+G zDusr{!`2DB_+&x7_9kg8g_XbKi-cz3vpfkAC8NS6T$1Oa%qkWRfKmZu!y=|hFZ^U$ovIVM0hAoSil zQ}G;B{%ME8l!u#W5J?j!U#7lQn-_;1vR`#hoi3FW=>954pDI8kgCAQY~cXN(Z z0%j)1)SlE%;gs_$OE%@hWx%NhFRz^~>@#6dmH`NDP#YvTunzs?o6?=fKZC@esR@8H zC@AK+w_P;<0Cm6c)IwRpCQ{pIBm%8u4QKr5X$!@3Lxg1{LQ2T7F|_J*sz^A_AXXBT zNhxfg01{(GO^0utUMmRp6yX*KL2^{4vdK?UPTHEF#bJWm%<7QQabd7yU^El=b4_cC zuPcbdw4}D9;v@nf{HI%r=c!6tlJcOzP;adCJ@t)stb-8gO4@9e@Zt}I2pxWvvLjt5 zu}jJkoxVZ{lmc!6*YBk$VTxQ@1D*ro3oYg&xEtQyw1e&i<^}L(X5GB1zc%|XA!<=y zFl8WG{U`5A+-9`5g>AM?ieb;vZb;m9?@GihVHWyYYuTs*ORAYYscqu10eRiHDv+`P zfjd>F7}LxlDhE4J8syjKR%lYojp6yKB&@+JS=4sxNlF%6vB{TN-1V-4oWraP&o^}1 z{r=!l;+)Qs!$C!~q$H3$1f9=L)jF0u?x8>;G6;noN#ED@p?ObYNK>mkrI;dPm^=E@ z-$L4D3SLs_0$b3gC*x72w5CIAN^`&|<_mNpsB@hQ0dQ3+yrLwZDkP=%lb_rwAVD`Z ztqUszD9e*&py)IaH<9xdn-Y|vS)5U^J`@O^^+_HXE?l8WQld=tqUWipPE?Hd0xU16 z^Q`{>@?qtWgoFS!Ad-D4C|a^CDK{bk>wcS6V9=)0w)vhAhQ)|F_WiyUl>yMv2nWL= z@oPl+)16XVNlSjvuTXFPs@C$5yTILOB4^K~Y(pA3s|iRs+zA491nx~e7+Zvq%WlHJ zlB2mbp_W=_n4qOWCII-%d__zq7`(R>w+a#y2XF?|(S*zHFE_gos1r7bt$9|f6cU8o zW$D|!GEsz45$=Etrs=G2mvJPr0Bq(2n9`qOGV(dVGE#=chl)V{DUPiz6ttKV1RaM_ zQ3!1fEcjf52O_WM{8ARRtszM9#rcc5HmeSI8hxQR2_z?(cp68Rm6gsaq$|N3#41FH zp5C{ohL(glm87A?2?2Tz-{!NmgDUY6E1157`O;%4Nm=EW2n*6Ltn4VAb;S~^BmV$~ z(kd-UN>LgpNP-Ca6p*(v$jrI2N&YLOOLiX)oUN&9C37VsP&;%rscS>HV!8b$5Jb-3 z8sx1{3tZX>kBvEP_z+FNxdZ4ba5V@xhMNw7n!qEkpL&NP)>MUrB48mJ13OSH!OsfV zjJZgd^rqpEtUzof24IT|d}xrZYGF1;LaW$FJ;h{Jaq6;U+gN($1S{Bt{r>sj$H44DPVxFp1O@~h5UWqAw;>8{m+G7z1# z&)3qbMp|YZ6d6$~>L&3_TFRA`IdW_iA|O^?VpNsH0~0jC;0jczlb}6orXxb~MCBe4 zrT+kmdrcUHrsPL>@})TLbdC?&X9u$x*7dqC4DLIYQG7aNS z)U~VyWk^vo25L0gotR8O(3)x+1e2ajYHxqyfe2u!Xc7SGHva$>peO$Tu3vKzQP@cd z9@6`6YC9exs03IYwA-y_=ogf%=f(xCHJl-1Vb;~7lrkQJLOSmhg(WIYl5!m>0^I;8 zUU#Ze6tYEx>oh=>IFWlFUs`&K7XcuI9VfMJ;z(@;Dg_{eF(X6wdV6_7Ou^g^pU$*s zl`2kI>U678^(rFb!5daup_gG1G3i;>=y+V*$DyHlCPl9>J5ufjV`;S{4pL!I0M4Tj zZxt7yOo9SUk6pf01zspY6S>x*@eIWHB5P7Z%gmz$=GLVVDjpybHISXW>QzDQl9cJp zSpb~K1_>KR)hrt}@v2gxoawRe7qtpw+60olj8DVkP%IMIPEif$3`Kpn=2ndPND#Dd zum^D!6)GiZaL$0m;wMkBSIf+#AxJ1*P@=SKI(Pl5n@YmMNlKKE|G{`6%AVCowL z2{tO+_nIVw%bcJH*FY*QU?@bDkvF)X+O0^;xDIImf_I})&^#hYI(8B_=|Jj`wSoqs zGA8HaMzjEgqzMz4NwGeCYAk~UI7n>7L>}ZC3IQrmCn#LViv#OZz!RJ{HGqNp(DGE^ z2p$4V2?G7c%8eO{&QPZ8Gbo5RKOxeBXU?fHpDYqDBU$O%mY9X02+yj{-{y}vAQYu7 zkJHRC1HWTdhO;l0Mw>)Ux|#q83RL()2p%^6o?BH3OKWijC17~3t?JaYEyD;YC==o` zCO>~#ET}@8)=x_hKb-}xa}@=gh&euhS(0FgS|nsbZewp< zs%BR$wMZx~ZRhovpfseV0ZE0Rsv~(jcKxUnq@W{Ekg2erh@x9Y=QONaB*7o&N-XF^ zl_y`;HJ{)78U^1_l&U5WNfXvO4&HQ1bb;VK!P?bgIb+5aWr>rUgK$< zznTM56q6*81P>CXZLI$FFO(#S1V+$F1cQ3Apvp;62nR!H&-~BAl`xbkY6OW8Z#U9` ziAj}(rE5ZV8r*B=JJ1BBL!kOpT$lx7!c}OW^FbHlP#}$F z0I;^SJlxln1rKyhhihmJF))}Ulz?GA2?KxLg?W&pY=DU*T$$cv!jjt3Z!>g}C#~us9wHJF5C@FJp7B%_nWX@gYo^1~%W5YSrI8Cv02DIl zZNC1L0#p>W9I+c|>IGhLn4G3WTTpu+I++raEw&1jCowYvxA9ObzzHe@mC)d3Kxu^r!6#r~i%p_8 z(xQ9?YR#W;y}_Z#8c9x41mzj+sng?4N>!dfNWQ0A53Q&xD$v~Kl>jFo%0Qh(2}uMI zVs#O&v??5<`f>}&w0-GB=2v~xtzc_6^NImdiX};Hz~oGTMAJECX+R|?ZWkGc#yj_+ za#o;~0wzfzQv+-FsHAuo1ddrGp((WK{7_QBNhF{ZkpvP*+R;bvppv1S0tr4S28C_{ zIf+qk=Wf(#l)Q~nKoV1H#+~T3CB-QxIEC9P>^@^o)V;*4WRnUpA1;JbVB`g~4`w7c zI}Pg^h*%*+X%~;5YMR*=wPglRj2ZTVWav!Rcb24+l_4b><-Cd|tUu>)Us~3Ngsnj#2s$l9#7AFWTGGf345?3yj|xGV_}gBWuPv`cjGUFYPDJGdT?J5d zyvN^KC!ysLmR6*~kFQRb`c|bwOIq5P0A(43fJa!6DDtD15>Tm+c0^l9)LZFOtHw+^ zGbooq8HpsF2%QM*Vw%d;;>_fLWWm&RJxyBHLr^8M;W{c#*7Bv|7TSQBLdlX)nLU6# zH1wu4=hT2&Qc^MjmITPYlQVi`bB1ioZ3_fR1jNOT=g`+X5b-V*rFka66y6q>A3Vs?(!^PyYi4dy4> zB!v4h5gwCz%B)IrE!7fMu_-AxwxE2kO)mwZW0)L4Rm)%uy<~NX`?Yh$=+^fo@{${E zK#ag_XWbujHMtnll1g(x0wu#H_CNZKtCP(sIS5D#QPXkXsqay&Obo&%{_!N+r*q%6 zJXJb$e=wD-yOj$PB*a`^ex{lpQq`FrI3NVMx!V0atDdJyayVRz$u|&VQL&1z%@mx$ zXy#5(+O#pKC*fJ*uP0>~wHAtk6i81mnXyLVJ5v7uI1DtkAd*dx*%s7~jlE5CQ;G-~ zfQ-ffn1FQj+tP)lHlhmFT+ken0Xs!UgM6L5K0GP*Qk0~ZKk<_Ullno}TTfcs`NXY* zlQBxrZ*>Jh)a|W#)UH>`$QFbdN-YN0zLE*jj6Ag|w25ry1v6-in{@vGBC_z`C!%8* z5*CE403?9zh*W4|ZcQo7PJAIxF)ME{YcIMK4xVObMJ}CCfq}*aONr?f=J6SBkb*2mex#w4`#1*V1P!qFm93i(h%x$ z<&wDmqBCpeDksN?Z`x;E&VJhvH`=$y4<}OwsCA;11VTVmjW@U5t82|Nlq{$O5pkSK z;C=74ad23%nZFrA)*>?M4_^LN)WRVysj&(Nmk?BaC#boou~L`G4LVYksPhCLXA)-r z0L64TO3GVF$Vhf1W&jAjiq$mQC*-1Hwk_i{zNVc0A(T90iMaeM&3>2eS^3&{9Eo(xO zgEKjE7&h1W7N%h1oI*-kFhs272UC}?`=ZIjxU#ey;3-Z@Qck^(O?_({xCao~2<9!d zg@MdgY~6=I0QuKh%m`?Z3UWG|lA8iA5wXA0iPSQt%F0!s@Dmz~NZLl@d90NWD%J-M zu31x%veJ~FYS?kgi0hVc!dml8-xxV7&-_g>YJk<4WdW?VQRkloTjiJ#kQ>0mK1 zP}vy}L?j@n*l zn!q<;qko3KDgvCzAwZBIWIp+xzbk!fFm$q9&Ya~w0yH2FfNm`jwKZ!((uP!`+5m!6 zb*gLt19|>xNZEr)N>JhyP)Q^g4BMaw%HZiWw+vMXSxC=0tfL-%ts4H-%WfByLB$u~ zg_hNuwTGsIdYE1!Fph+v3Ah4!>}JQWYUg5|_pwC>nv?=0WmrF6qOrfkdFWadDh4dvz6|E~}P;gi7uUXdpq2=V-l72i0@ucQ<=0&@~oFedZTE$ezGP_V+>l!p(y0F$uP z{m)8b&U@IPep!61sSrh{{{UTQ)1?DXHHvKnH3q;myM!oce7bF1wBsE^fFmKwq5;kC z4aZ_P^Q~!VoXA^bIN(g4WDdJ%0J-l>8aRW8ieb=#3@Ce>^d6epxGGD$CHy`hfyyQm zm0mJ*lc647b?TPWPoM^tmfUcXNlDT+9WUox{wsrCI|}ky@GK5uU=J1TCw`T@+#MV* z6~kiijs!_U4S`SunY4kl&Ah74EFqU2PDD9ksn~1N@5;Dq;R(d@@fbk17UFrC;wIYp z?b@8)Cla|%DDxK*kVHt|QEw_@9SmMMIJ^=XNCgdhp*JE1{r;l$j|upN%my%F-UQg? zE&&QAMf{|FirUU3a`|cYWSqY2nD5dp@${~D<%TgMoRJ`M$qIdm3_@*st z!(xU-C2c6I&VUFS+WXJSwsYE2`73QMWt5v;LLzOr(hVaL%2wtXDJn`os-i@JYlG#d zT`0XD3|pARWOg}(M~d;8!ft&!d3K{l^SE%9+X`4h6*=1kk=8}5Ct5aJQW8*=xa(m=a|OYj zb9cD)q_M;OyMDRF|cyn&&ry3tTsue#HgI-=xt3DE25S@x-Q)>bkceOM+7e831ykgzr&9e0tva);s!L30w7IuPImRuRlQ zKsKyLi!Ev9FpTRh!SP08x2^T8&tb6(#5DNK<8GxwM}-Q|ljbXAZap$Fj5C8SJhr)o zT-P&dH=f!P9qX0<05D!(Ikc6b3bLH=k~bEX(26396L z4VKEJEGt~6Q$6>juM>>K734^0W|WssK_kN-0~Ey8%xd%Ezc9#GEm1xxo5pE7$Rpuc zG1%YCL&;IX;m`QF|xOBd}AyV-P!=lCHHghb0?QIY7T?{V=!M3&* zrI59@L3IFtqdh-KsK`0_1|ur?CkQ5T^Nk2C?&ko8xD99 z1>~ItfR8KIhn{83J|mRhDN;zhSews5eJWubWt2J)qT%I*DI!1sMZN?c^c951oEso5 ztb_Id`u^hvRPX;e>5LI7Wkfu43#6*!Jn$(y%2c;y9L!BbHQBlq_7B*R|v2 zTN>d_g*ZdNwAe#b68tOOLn%*354*2}C0cp^#Qth{mAsoI3E0rw$+h@j1DsV*dc!T9KVC zAUH}CK}c{P8I6jKqV>tcVpIPB9x&$Zi3%LB0!-?EnyEA=inJfV;@VK>%VkANP|lJ8 zlYX|-_N`niilhEKCB&I@qFOQyyZO>yTCprN5L9)N3<B@wei=LkvVot?kFzDjAg6>9; zjF5)TVj|Y)PW>yWr@|EO9E^<+6ck7#^t8bPNzm7w#Qq*-JWmW=#-zCd0#%q#V;lGH zUZXP%H-_aUA;bdLh!Ri^sutGTZA&6;VdEIE;|P5KARm3lB#kW{EOo9w1mmhaS;tb( z{DbmZZKb4?18JXt^sd(t#NpGxu`etWhgg)3<|p2h)by_}_TU>MM}<9?yk1bOnO5{YFF)2W`(&=UX|onnx1ic#L|BY_IajavMU8 zk*K&E$-kv^7s2rS9n3gV6zhu|*BsC|dtTt&p2F3^XPNouR@P?uP>>2_sa<|&rj@y2 zc#MzYN{fV88=)H5Bm&bUEDO(7_lqV3W3r25rPgvY}7_LSc zBZW9YO4hd22+MNVKYm{tPE)T?>n%Kn~Br-jqo5?@Dd7Mi)j9cRq#MGs`p=2g(G@hVoT})2_;r{@Fa6xT4 zhw<(tJj<#!>2&qh+gCA!;<1D+(v>W@GPZ&?>G#&Ub0qpsy+$JpoF55B8N7&-pcZkn zzkcV-T`QG~;mE?_zceyuM3dqJn1SWLYWGR}K8#Z-Tgyi@M~Ul&n3(E+#du%DEU9j` zm1l9Leb}3gBfV!S-FX~eA9E1;Fx)u`TkT14;rfBKyp3zZ{s6_jgL4y$QqY1$tR#`R zJ5JTt;oKh$fW`Ch&8!rrORDj~n6}>xhrUOnA!F9&Cs(EdYJQRxDrR!jv}N4RHom;&%1k)qXuxc}VKcHl}J%?&7V=E{Hx64e;B^<;Vx&BDa(G-DC8$!0+hMnWVbsMfM!cypMR^C?i! zAe^`Ocd3nJp-4k5=YT;y&3DPJTT5>iaX6#_B!j2UK9%Y)yp>_X99j^v3c0Ey=!mk2_N)r{&x?BLLxd0R_+^6deXkR*Ty)<@R3c>H#JKw}RsAyeQsniaE*ae$RN zaL6WaZNGY6ckJ?X_?O}w7Y`+zI&-+%#5ixaL1;hCd2T57Cy61=k0zxknBS#4Pn z?Hx04ZLeC&{yE1zN8tjX+uYALgq2M&rA})XNW{Zj`MEP$fZD1GRQB zTvPM7?_m&>0_xBJB^m-wgJIUZjwcwy7;wvIm67c?llxYz1~BmaF;bEo1cecv3Fv#* zE63%!?_z%uy~CX-!!(pQh!b#9MeJrZ`d2dx!|_~m5Lb(RL@rij5)c006H3Ey+hpgB`TYY^Y^7q$k(FapM`KdIiw{;w@UAwB31zr zF`+tNPQ=px01{%@!nczvM*+@407KHX z3ke`xb-iwWnR=w+aP6>N#Vtkm30hR)a#q^LrZ=}}HOYI7g%zU>hDsc8kf$WU1Z)n5 zqx_X!P6RsIWB|ATOhBJcO3b`+mxfw`TWl;qaUDI}r>KArrEU_H#s2^@hSY_oO72$Z zzh6!Ct}Y)47Bj908Xy_2g7LxRtxv3ze7wQhE$|gEV+b8>Ys#`)l9rv&M%@qjuCruf zkm~U~oE{qrfD>?3cht=Je)XxZ!T5*XXyO#UW3YK>PG=OOZ~*>msK*k+VbbCfwz=yE zm`Iq7HQKQ`_@kQBjexd>spXg_?|&;+ZTtqjgmByf+QO~AYF1M4Bodp#Z}It4{{Rer z7)KZ*5yVpGDGuc&8m#M-^tI&eT%Hln;+T-@u(Sz@8up&L3iLd4jwKv3^2|B;ciAwf z0l7Aj8u{BmHZ?X`={NNbAdaG_N=SosKJ8U2Rguj;3nYh9#oX^d`rsC;*u7!6dc_>JvObJ-@>LnmkZ*Y7x2zZK)5BfH zK9J(V9CXdW%R24*RpXPwb{*r$Ex67X4yM{^xP*Wg&`#Y9Z58L8{6G?*sd2?X1k7pmAMTgL zxcO2!cw}-D00I>!O=sirt_9X~^s49MpOam;IFp#QEU8%=F)2wl*nhg~aLjR)^46cs zL;|@dNS^R7dh=rmkpnuf5>fnvy_ww z5J}xq29wgf=NaN?#w`fK$Y~$b1uzf7)*II;$DPEXWR(QO08Cq;>)y1Zg}H`aSJGSG z+6b}J<5M}2yZB5da^U4py(kLe2?H;K~q%2`JXcrx0OfR#va5=6kT>#xSCyjn1g9#~m$sDmd{);k|c=i@&M z*RBq}%K>V86@=wM0mR8|1cM!Bl9^R7bplGO2W43hD3?zL>H1bxX!Jpp3yKhe05q zL7T+hu1g!NYrwA&id-R0f#NNj+qBo9!+sQd6o%4Q%3e}LrrHxWzPp~a%sg$3DuZaw zv>Qv2`+nMsRXg~t=U8>T=|gfOAQNpP@Aj;-s!JY=3HUV_htbW(Hh>Hep9-?U>!iUx zqSviMfnhL>Fyb)_D{U$O7>#T#t&GjZ$6E1c@eVr^hsqvbg>sWJzahVR$oCkG( zZqrd~u#gz8L-_1t*x{y1ADq zj=u`&V804F5X$i?Q7c!4w1eUiG4#`}lqc~L)(SAlUny59P!~)K7}RSced|sej^do< zA(V$-Y{*m`kR$;fwkP%#HuTqDi13^z4Qmd(4jVf~CnQ(uc zQcQlKJvOMtN^5Lju)z;3De;(S4czM*g#Q5fT`fh5;^E~YSZEC7WCBqcV%~A(VkqAAc&J9c<~)Rt@L4VRsVZ zd1WLxhY2Mr8car$r%_W3-VX|v8B1uyt!Mt;QUVlzStEUIsrptnc$PB~=={bblv1pv zvXH#p0qS}aN?Xbe3@#m|E%y}xPUa*;oeqX;JXbodjx&$o_)=P&KzdRP7G>000F!CU zZzI;c_Y(YT&LrX5L0M2d$3RgqAP*?8tbhF+#$$Y3z~YFIl&WA)*I%7<82lQRSZT*3 z2L;?V2wy|ce~z_se0=?;-mlY&9e)%vJfn~U%K*fBde>JE!f<)QFNr1+m82MuB*^+# zRlmaxAsNyTA5qM-kZs{In9z2;&uU`$Lx^o^bC%O~Q$b3yl{y$E2>DX?FVQ*ux}okK zj0;WSFpZU)D2XmMMS#pKMTs*y)_i{(dkuj&X)U3&Wn?!gS#Xc)NHZE+O*N#rrg&?< z&E*7TE+x_cGH(DR_BQyPtBk%RoMXhP)uursOAsw8+yQFkIds-{xN@;6Li46nKtoA0 z;@`+m(uKYXvg*r?N`MK-P3FW~p}v*S!D6tj0nHGDDhg~tO7lREOASV~rwzrB!`aF} zD^D%)8FG=ZoizH@`E<;MuK;*kZ8p-A4zfuuHUWcpw1O{V-jI$K{w2k9+u zK?hOkT}CnZTwW|Tq?XztIZJ9zM5HFr4W`i=ZCz|<;*1Xq;ryhpnTuDn1l?;AJSrex zOH4$bwa2J(K102N`SRTBos~NMvoeziK_bfj1zg|DT=qw@mxMM5 zAT3dt%oFVM2@4a0&ooB!a0s1Xe2mPz#P((Ab}$0dwF)M0TEu0IPARX=w^_LU)!x4|ct*lDW+Xcj^Auuxc2U)r7FH38uGM3T;P8y%5uHys z?VyPh0{(Gs@mO(uRm@B8D-VWBS#ZE@SIP#r_-R)sSM3(_KAW*TZSEw>8!YmhZWNZ# zsq_b3CbVJr8s2HAQtKtPg(zqWFBU$2wzY6D?BZTasx6j8Wh;o({{Wlztqa932-=u+ zzyKgR8aarIMs2=guJibe-`lCezXzOh9DU5W0r3#vh`bPH^OaiZ9c^7_u>21IhQsLm z!qS;jl0?VpAZsLzdsmgiai>|x)*moJXDZ2vpW4;8gS77w#xUdQTJ%aoU;>%Y0n&Xc zI-Pym-fa9g;}X;`yfz%I#FAWf(Ud5WVH!Z|`x?x{E|(C6CA3`TdI_CiL9`yaUc2n# ziz!2Rc2eRSS#K-?7H3F3_npOcIAb^u4kH#ETc~W7%WV~A2InwTL|l%Q!_OV3FADw_ z9;e%J#}e3bA+=}#KS8AZYpl-&cNp7gYZ&{l<;+@iT`p$OdT-vln4BIZ{CRDJAa2H=Cf`gGE-CME3ZcPMluX3h%1pWqk+ zt?3Kld_fJNPA105A;WVQgVc1U-`VT*+rz&HKgB}u>^PoSvVsUoLa!1$#co&O3_4g- zuB)2siOrSI2Ow@28|q+MH?AHV1&(AmbGXvfv<&%4jK<`hjgQW)}^{Rr`A;P1-ygWW+Or}i0W0>&h^1-i#&md!-O(I$`VN#R-{bo zI-fe%!#@zA#x18vdAxFI0E(zbfn$Mpa&OEf@Gp(mG zt2q)jBu&yt0{dUJbFh411?73M$yq0uM3q|ee-wRhwR#>K#Y@<56c>nYM4J_xkrHkR zCdW$}p1HH_eA!yRHl$($%MUomEde~T5ux{i+~&Oe%_T}(F9y>0G4fX~CdD8VB$4Gi zOn0sxD~Tz$N>H-5GhMYPgig>m@Y)Txu7(?i<2dtec#(%~)ykG!ke0vz0tT^|TBE}q zJe_QMvb5_>I;ZnAEg?L%;0RTu6BBJIE@R(&22$~J36t4E2=Q1(_aP%)2sKP@+VZUyw%5m$_9oC~0~653GQIh)3a)F#`T+pvCJ-ViUNSpE7M^cvykl;b*ld1bhQxkorW*=6 zxMQV>8c3z{h65RicM*wOIE3a=S#RD0+>m@wK%Jw#as!HJg^-Z$9D7FFFj^-`oi(}M z)w3oa46I8JIx%>VEZJ{GnDHBnp4)Yg1p+>Fi(paZ0BriS_&(}i_BEnN4I+m4oq1wK|lW88+xT)@>ZDODV&;hDrn|$Wh$( z?GdkP%5kUi|L%4+%y4pj&^b$HxrHy5I84;W%ISYR2wqkBc zo|}19##UTrY)%xEsZD3`C@e?cYFpSx4iyOv0NFQ#5#0B!s3~QIreRi=;z=X7@A0iT zY$90k5El5pdDhN-0k<$vSQHYJv_L`Y)pb6?o9kEMn|!a`!=0OAbyeMG+g8@=*$8IwSh7I z;&-e&Vv0LehrvWbpWi+f!TVKE(3a!r>3JD;&3iG&RR>HcUP;f6{QvbCseG#&fW8N<3U9Haz+5SadJq>&caNgT8zM2{s@_W)*MZvt$8M zL6RcFy(5~R)Z&7OoS;m4^{og)Xmdp8nF@^2*wT&}8Oc(!m@4XgzVB5qFA}8|^7u$9 znLR*(L(Bop>&)WqAbfAsP3uxx_tX~%$~~Oec~D_kL+KzaHjJ`Y_xn|7r?EW6i-Nel ztsTCRQCP5&Ie}$hNw^f&tVUUaLW7Nn2|XxW!?lO;r6pj==tqAp)EQiCa%2MK;2niA z>^?!A(6Io)Kt8{4Q;<)m-&!T9IacyXLdtIj%JTE5mF93M!l5GBbn^ODAO%5b$b^%S z<~JuVeuA^lNRgWN+9AC*p-4&c#VJ6WW=i~$t6K~gy(`iYNxcV>|%q+PxU0pjr^%CA=jMu zg~a&Hs@Cdrl@J2$-?p_8i{_}L0EyN&^sb0E5Sc;}*d<{yLD#$r$&i$Sr1*3&ZP-)Y zb!7@lJP6hap3~)7(Aa4!F7)2h<(UGA1m3XDDo~{bBHPoEg(*@Lq?9CFTI0M572*jY1!_VyJBa&= zk1b_6isZ?j)xOd`VhfQ0M}A(NWSS82Qq=ei2mszM^`&9frCtP2Nz$SMQnM!J-^DNz z+%5@Ow#UDv4}?LG41;^sC21)wkeHFaz3P{15KwP7ng0Mapi;86z>kIMf)$|u02ZT5 zS;kOf&wueuSShlS2p5BE3TPa@5E4L<`aYFTD6Ga@f;aoMF6&Svz&0fBMuh}`kR*)> z-_C(=N>B(~-a1lHvmmKTjcrVI1w=s_LA6d!RD%FtSgVOKL?ti*nA^P)8juMfjbQ9) zIS3>HBXphU-9YgGrRi%y`__WelDPn;Ngz(2ed%jinLddZAXE=203Z-o5v=*q1RI%E ztN_>iQA=%NbC5et{{Y#eLd!%Ob28}~%|%E|fHDgen}JDOstGVO9YG(p1X_G>5?2QF zYD6f2A!Aj2XV!p96iEpHKohMyFj|h0I#yJJAk{=%Ya7wRNF=E#Go%tKXSMU+r7Z-Z zD-j^sRjN#(E7nYC2DK;_r4n_4p^B7C*fh0DNj80Ybwa#003{2H6P}_>+>oRn1vHFe5WuQi+$_866Kp)`&58@tu;xq zPbiQKfZ0DCC=i0ALQ*dv+9$V_5@HdO%1n}AHx^gJrBs>m6rAEnKnafH`Knj+iT?n_ zB_U_8>}nO1EGIELjPdqpA|ZYw5!PUVyzM<|0-MUy5G>$7#af!m*NGtn88fd)jcj+S zT$X~CRp7i4sF<0cv?Cxl7V!Xn>?)mwC3YfH59W$Nse)P=J7K00bSqepNhgc)U;}Q=r&5ZxjX)5Lp!XG>0y$#P3EpS!)KQ8+P#)|e#2AqpTj%Fg zJVqu_H=RM=^axFxDM{Yq@+pc+PD_LT0JdveLTD=TVIV0p;@euUc~Gca{{T&3ecrDz zL?k648=mw9Xi`v{%1O|jdQAoL?HPwGs0mOoPk_>QJ(6#$_zl$(Dw78L4=Qjr@7 zGp+5gs!~GTL?uN8k(iOEZuAzAf}je}vSf1RV0Y5hO9d&+qbLT_V2S;zI-3Nf=Qe~9 zrA(xe%ghFrzEkFRqE-_-fP@_iiN9^=J<^M$ixLmed^MvhQj`>{Bx*&;fvG-K5TXT$OFp|G@)N&CG-_yc1o zBQ{V00%$1-T95%b&@Y-vDj&sKf>b%G3rQy_C>N9bP%NjKR6zr9tx27>>1r((Aw;Z` zXqccSIJK%u^P*)?K?lw%vna9vaZ-&EZEl)()}XLaQ2>FVJMC90%mkc?h>P3LtpMpT zCi#>iJwL}oKweN(7y3u@-j6g4|o%h+-L54QA$LlPE&K%bo&)D0G?pH zSb{y-Gc{?LxP)1m)>8)u^Z}sDcgiDL(H? z&4@|31hyvgsPm|Ir}<5{h(tqr(x9J}1fw#0nvh57pw zN?-#C***Hnrkr`^fd^U0u^sjM(!PD-*U+6~x~x-hfHM~0T}LkWC#_T1^raygQe_~d zkvG_UC$!g}a~0w!QOHe(a%6+|^QFCwDhU9DBI*Gbj?t;x<5~S`{>Pwqh=n-VDv>Ze zt<&IrD!=4X`>S*#*~tWm@azHlZC-ctsdW&UQVd;U{rxqlA4|A$K}Rf)>CNLxe_8#G z+j#Z8bX%7apP=pltt{kG%o3&MwomOE>%ZLB2@c5$Q-T1>2{J$jc>9B0hH)+B4UkS% zLW+bS-)QqXbTdoFHg@PE37Mj$s1*Us4ihH#5_jt$Q*h|^h)ZQ*VMHjpJ>M?1m3%}N z)}CNlO5$3%*4|_9dM9|I8p;-BWJ!Z`o}e1#<6S3F(r9E$Wosfyi4so0MzIiUS^-8L za{z@4xKn>V-nHjk;{n#zR}F$ZP%Yg3`PR?*QlXt{&P?V|1X#uU{?XpK-YcZ)I_pUa zFDXR@!FyR<1P%WH#VoJbNLrRxIfZ~99ZsHAgY$(=$teHQ&jqvu`Y7o zll?yt2Td+L1*$w(DeG8U;3Y0OB4D{IH~L=R#afo72IJW|a-!(DBXxBe4@=fi*ya@_ zCN%+Sm4ONF)xO=CUgetfX_05F5+^f?(&u@xcj-Fxyu!&XDr0W1%AU z$`8Ur*kJ4T9MXwj0D4wrr!g=@GE>u6uZ7t3?H)F@d2YaR$-fdaQ=J zpP4OThqY5ciSdg;wZ`Ylx)@#~%H_0MGAx(}!F^}!Ry4DbB|s?|Ax2^~i3jOP$T008 z!_CP#R9w|3Ko3prQR6DL(!}v|h*vEQ5QvP#WhP>O-Dkt`S2@IIgUpP9B5We$ZQpv% zyhCMvK3j)X5~Fkd!gQ=yhE&S(C?&I$I5ZmEDD@PaPovH4cvlh5obRbw)*+Hkup`ETa++Em=ZAAb?g!Q#(a+o_XF<0#z~~01T6` zOl{a2=i)KWvas#5k_t(i`4Q_s8t37v@_Woft|dbzS8@kXQYq_|Q~%SZi~*yqK(t z@r>DyKs5axU&Ry47?wywV9X$ny^irC?AM!nim=4q1?mAV6cYJAllaHbL(Dr7sVgIaUNobT#y{)+$(VwxA8UZ z(ZiW7guGP(Wg-bw4IJ|6USo>zMdFlG1QifU^(pKJ?0O36#h+C-{Wak@`Vf?6P(ifi zw2q>6uDUp*IF=Svg!m7N3GshB{43`VaJN`|HJMTs%xw!YZmMcAIHak0eS*-i0>!}E zJLwmzzZAbj`7h=^h|(K!6oq73W*|o}?|(X6Bq>P*BGOXf_lHOu{Ka_QANY?E!}GNI z4nSf6l19H9*QLVoX7S`@KG8!miirkJ;0@w$t#Iq(yt?z$tqwdKLL6!)OdPhExj#y0 z4Z{cXt;LXJrBkF##CFz@s8B*ev#5cpg!lC{@5BE9(Q(D*AUJ#tra``k=j&Xr)26mN zg&DFO>qxV5WZzT%J!ua%rD2x}O4tpB0TNPXE%2@3G8-TG+#)*+w`Tn?n&NKdl_1h1gCpYs&VLKoSdN$2)Ml50n=FNSTM|? zlsbf)=l9Fw0cfDf6@g*#_!klr|+-NA7x`5Va(*9Lg)i~RW zQkToHAg^4J^Eyy)rd7(rIO{hgd~{~X6J8)#xFY3 z`Kv2&D$ZibY>;9jZO-&OHJnShw@Y9&g+b-USVoeb@M}`=2}Uu}Gli(-$PQ(w+9PjG zjdL9KUO07l5EOt(7bZ+ZsCLpPd7*^|mb}m$QI^nWE|!hFjdpPjB~9lEf(BO`I-a`w zzw27!J&#gUaO+xI&UtQ4?-tVYq}4@5wajt!Ev1ImA+pTGk!ua+)f-t>EI8mC)?qdf ziQIQ5YtuL<4{_{UiBVEZYW*H1$3Z=9@UEZY91Co;yiN)WP8_<}pD5E_^`?gmp^id1 zAg2)Oj%2uE=X3Di&WjVmog5_Re1g-E5aFD_TuAMIg=1-4oFgX;6`p;d2IV5xopl!% ztyp9~h-uU{E;tZEk+}2Nh~Hy0#IWE}-X{p*c}hXbPcdy~1RZQCxV(A7wTD}1Pd5w@ zk^l-qr&$}AziQ|6%9a9<0>~jMjKJGfcb`*g3}J0ewpO(`;htek*g&}0{{V`-9VFr~ z{6idZVFjk_9SAuhO{gny zAYL?!3hLpXJY8-!r7H;AP5%H=B?31-pXR2)F_?hLR_JiIl1PgoOB1hM?O58yy7FIX zB^d;$1U5vd_4(2n!v$iWD^g!tLgb-Sm~5bQ&{pgR5f~C#$dc|*l{RG{P3_xL@TM(= zoB`!ol801Qscj$!It3p&znxAghQwi7!*f*_V5B+=Y6PU4E=b<==Yh@P;^hi^LUk0>rjZ*%IOY<2qLX=3n6$=A3;T zqmwWO`G5vM??`8g9wfHg!%7gPLcCB?b|m>)DzO#N#o`ojgAT$03rH#fAdm&W&ryE0 zofs^^#i`%Sx)UL=CgV+ZtvsWJ&fALzn5jq+25v-lG~7-Zd7V=^24sQD%?nGL55J9T zS@3SMzsd6w9YaL65a;UN(WUn%;alG$r)^QlL3`&)UY&4i)iONU!4zoS$j^E-p zIB*9HpxdzlNibm8ncA{F#2)6Col~EfaD^#Jkpx=jq(w5G-A+E0VczB7$K^2Dt-FBl z1~j&|t~+fs5h}!U79bL8^Y&Mmx^pGM3LM{#WFndz)d^OBoDWQd6;tJYJYyom-M8WzuuKN&-f3_r4N^JE0dcsM9y8Hb&Y;i z(QT%&D11o5Fb-Z@XWBV3O|^sGxHy-;IB@)x@|tLr*hvSh?KgK^}5A;3a! z8M+?FNd4-tdafVBP`of&QiL$noP$!M*RT7oKNkN0w{3YGb$%Bi3xYXh>_O_IAq?kn#{mTg$VnrlnDwH^;4#H7w~GG&wn&r9I;DGA!DPK6_ti&9~BZoVkhsY?*zti9yByIcGAAvuEz;Vn@8OBF02rcK-DlSH#?;WdFFAk=j z#KM3%K?MfnY&#MA8slM|7+=JB#4X2IlHj;8sRvJl8tKd(Y({-l*`FU4Y6Zn%8hCmI&LOFmnc^X`I?^}7d5LX&F&&w|iu%^O@ASliC zl6ReLS9X|K2Zaa(qcLeKxCAkoZQIHO@eElhIaRRJ24{^|3 zMS&nd=t1}z>mxPn(THakfnZE{LZI1aYik03)nIjb5)_pdh}5}f6W;rG?-hldN)Q%8 zk1Rp4IpqAr2^Q;9p3>5{`D;-vkfOUTI`=;-)=1HCg|dd$pp?E`b48@2+R@%_W^1BeHvlkA(GSRqmhJB`M^Rpp+EG{{XOT0EP1;r6m9uw2skUbA|g36z(C_p$<6tNI(-JEj*Ys>F7YQ$Aq;SJASDEn0Y3<(pN32MY{z2u_ZD z+NLXvD+h;Rn>8w&fm(JQ`_?79&Bd^kcr{X-nUk>p06Ge9;;_niYfdDzIbZ!w*4D#& z{VOLv@Yk-!ek*zA5ZiDEEF`upwG+3fzravpc#?_+P&1naf-h^>b<%r8S09But|Sg1 z0z%umfZJkvXejuj?Y`PDp?NLg0!V@1ef?@YV|9&OUED*tn?^(!<{a7>yo>(Eu;bA2 zaG)$oph&!fzol+>ABS(0Tp*@2AV+!c*1W$N{8Z->c}#Hj$#&qWaRdJVZpTXP&o#S|Yaa3@;7|ilpaL0!zzux5PYsqmQD~jWea&YKVttdcBv`Cn)w+Z|pr*R`2#GOLh zQgcSa@MeBC>s>A}iNWyK@?q3gwV6vO8b-!6_}8bO9xtzT!>zO5roi%Brsx9ki1&Wi88%p{Qi}T4E4*nm9G^lncc)l>FmRwqrG9L&E-gS!YCtclfwnof4u)Hw3Z`3vn_ zCUAf9J|~o=gL|8fvs=eA{{U!%ae2Q(AQ1;J3KQA zS||)Za$-s8e?Fb-nT(t>Xtb3H3L{GNd3k*}=6$u|G3sC-AP!xG3-=#=sqC=nVa!2U zM&@F}t#a@g9eEjoi6Uo7J6A>gV~So>B1bRJ);2X3XQuA^bFodijaW+D31|s3R^n2n zqX~x+wHPjGKjM{$Q;!f3qcL(tb$C_*tRqJl@g-;lNE;aY`BmGIpOahRjbNMwz}a;W zqDrg)J-(IC<9~=$Uqg6xtpNf68jo7b#(2u{Dq34vGC?a*l5N(xxLgC+$5H2 zuur@WmOW~53}P^8S`z@tK*&4>H>>mfL}QTq&a^@vTAV15o9R@Sh;7BCQ4#F?{{V^y zvl&v5MBGM#i-zG9#Bq(cpr3%M{4uYD;S%Ec&ZT()7D>7L>$P?r!zp-_GUv19q&5Ie z(c8H1-nxjw{{X~bn^SD42NDTU7rukeK0cMte~Bvtjs$>*FFw$^XK)mJ{(Wnex<{_z zJWZYw+ibgq!;I|!mqn3bb0TjM8&0CRJa6&lCliP(WT7s&2z7Y^LzmFjCh+RVq~dXl zUK0k|zoj{s&;g{F>s+oUjA0nQYfxKRRzO79b@Ymf#MVmNfNK?wZP2igwWttXkX)M) zJ->R;@{xu?b$FEm70TuT<5EAkP5%I&l_!Neh{WNYLq$Q52?8%C-vg+L9<{;zLbdbA zTbbNXg+@X7?^ik6-F6lDt&AoW>^>C<&Q4V31ms6<`}VzN;kf0v>uG z5)MrRnqG}hFELD{S`TiZcdafI{{T^CNI}*&>Gmr-U}ImI4TJAViSqbXvroWaAI3Pf zj~PgqQMv8rdRD9-;jCsg*2+?*+9n)zb_qM0)b|^0rki64h7E+>ImG3+yn3DcQ*mF3 z@#@30&;$(G+c|thzykV_ZTg<|9@Dj}iQ_Q8hp>&|@T+Opa;$!3uuR^-PNThfMY#L& zN{!4CKb`77nb%gg+$59YQN0rwg*tM8N(5M10Ii(iJt$yOm;peY%-B~`hA`e0PP>Ru z3JsFmV{&(&y=hD07+f|LVF0+~g4~~XTEN?Qo+9FmDRN4zH78i_+OsYDHP*%PmT=fd zaQJxvK_2jfB5&KuxhvvtzNC~0a9c7pkG<=9{{Rk_;JUXol^$8K*dCs>wT=eg4@-`` zQ<15VOa~(IJ#>-Ulg1uE;NOH?#;5Z*=Q%i3_|#OZk+gN4yz5{5mJ^1l)|kjlWKd}Z zyu$n5{ZCyviS99u;{-As<+i&NfeBIDP4@Nok=4SlTKk-KQ)b^i^bFq(NIJPC%kk&+d&<227y%QgV(Do$` zaV$__*HvUV2tA1>W7kU0#JH%yGVTeLC2b&$u6(xxuU%-(aPb@;62VY?3uu9u^AnaQ zN%N&1RurfdEUa50v>v4X)aBw<>dQ!3GUbUgKRWGj-@?tjka16d>cpiQ%pK222i7Zh z_TA67l?id>cu;O)5I$AtxL@Jtme5uuwIL1=mi?TSP2?VtH|<+o#Nc>n!MM=$Z^SOI+AJnBII^-cBn!#cd5-m#+w^NjAYk}nJT7O&l2AM`acR@j z>$NKfgFHm%e-ImC8iJWQL7ld|4TRPN@k}NKWGFb}pcr(V*N6k57p`tAi(>enEeR{g zlybrnYymoXO+@6{_Kfkq7x;bFizyh4Luyb^UyoZ_&^I=(JCEbeW1T|C%I;}YoXb!e zW+zjiy>po1PO0Y*@`Ggn5)@#b*WRtfI*0NgC2E82U$psC#vhj49vI@#LyjqwK~&j6 z5H00h4ETH^o907~X3RnH5PC`2>+`QYiNvXu1SM)p0g&F1e72|Iu(-T?dCcUpNwD(& z0Ce$Iy11@Bg<+7>35X`+e(~|H4+qtCm^vi$K$36H*h_KR~#I)izPymt+ zkbB!oUL%9L(L+iObILQOH1eM<>(%4G8LtrHl;J|lLnt7?02#RMbm?Ak?j*y>619f~ z$TI+5cl(-cY`?OTz}P}cl=@bS7zz?W*bnZlDd7Aw3ULa=ViPHnln_cB=m8r{39dur zy5h1pk(f?UNdV51*Gk!j;O=7FZ8(<}--cTY8NDOpOTU`eKOc={$CPl$Q)q|@I|Hox z)-)k+D&hxNuS&-TP9etIWs#JV;>&Y*0{Z&Jbe;S@-wJOKrxlsbT(lG>9FPd_drq5^ zPdPn7=lE{{Q^YOuTf>1axIak!&uaDjAMiUbIfN<*TT#q-W{{*zfFj_ZjdIhD{GvjY z?ABFe!IZ|3H2!@nqW9uAQHPjirwkP-vOS@&B-#Md;s&+HtJQRlpBUhnP6>&`Fp%4< zwxZfflOzx}8)^@4I?sm0G`?X<64bYuwS?W*Kl+%B2C{uO70qXhHuJ72;&BTuM>W3^ z&a$aCBeA}hwQK(Xo5Er6{F46wEH>iY2<4qLnbxBi>tXm}*~1613-PkZ%zf!Wm8L+@W#oH~w)ax6;Bk5djCHRrM zC$8I8j(ZHP#$3cFBT6opii3sN0zyvWBSEpftCfpFu-wL$_dgGlIY+xGfMoTZx3zKj zha4G*Wkqh-=S8Pjn+-;_lZ#b)$Fz5e;MirxF)k(6-BO&+QSWseyVnyP#Tv}w zaM*>R3k15Qkf3ZLQlHdF9#!NO`Mhoww-uPQiAW(Q!zOjDzwuaPvX>pikmbBB#mq=P zRnz+9`%j&}OgQc)x1JynQ90y@J#`yR?Y%XJ(ws|fVn6N+YLeQLA`g|1l{*a19rhMf zg%C7RBxTxdsWIhRPXkNJN)UkAN6EuL70=h zc3R^2UJ~1DNF3)A1VJlooyMLhk4d%bg6<*SEb7#?E(?-jBXe_A&i?@W3S)TH;#S@r zhP+_OQ(yy|ayIg=qkJ_9Xt?k~mSV!>Uh0p5*Wpd!P2n(DH_*10vXSCi97q>2H_&zS z-iPz5d89RmFBZdI(E%g?P0hBj6V{`vze}I&FL9THBM-_To48sY_OToO(^Rx^9wzgW zgmWALB`P2Y*d2k~dd9R(aC~WP2P=6Bu7vLwBjup4PSd}Y;qZqX=C8yd;58;9|d_#w!UJWlcG~`8mr3jt!!QahH$GVE@p}dB#9&|#$;^-c~?o` z>v(iDQbBH9OWCr@36d0lv|LH-X&9_Ruvk|eS0@nB1hQLf6SyPN3Ufx)K33M`d3$ z2_vrXbUzxk{wICxGpr$`mW<}+vJS+Mfjx?a9dsLbK&Fkgc>Ydk&i{{U~#N&f)K zGZHTlEM_;;zLn3!@k|a0F0qG7IG$!uw+|~J89{+N0XmO5;o-QVaX7XW#BoY-h$!T= zN=$UNml3@)75JkJ)0lT~SSIl9GUC)kNHTPt`bFaXYoCX9`}VIX_!C$jE%=@0ko)Qw zW~2v{jL~bvT|j+0)3KZrg>aWL7y0g@0-NRd$-J2sFk@Qc67z(rPcRZDB7F4~+s6KGCuix~Z~ij`(Jj27@w+;NCp%&l0#c@|0#H?`it!<%F0)zwzHj9C2gRj<=`J6^7RN3Y7(neuy zqAjk&%X;fE#xTmmrwF_;<-81JAPl5Qf!gP+$gTJuD}_pVigi5Yq^C0421Zru=51%S$#B>x*a8?7gieZnMzE- zfjxW4I$EYHhCG!I%(}M`nQ7*WhoHbxMzA+$DDg~=Lt?hL^`@H2mv>l;or zjKaQ*J1I{nOD=~lf<$Sd-T}SoZley%ID+G7UM_u`YBmTl5C();)-__@P9!gohMUR~ z6b*8I z-_y#wtzsL&si&A@n*5kA5~Kq#Ndortwf2e}XBgrSCAG9v`ES`08W2f70wcPNZC5Qv zrzP$igIi5Dg)-Bn;Ed}Kk$nl6(sZ>Gcmt6OOe8vaEfoNV6m$fqUEs%Q=~xd8;t#yE z1c2ZNRRJ+FHV1lAaPKm!EUrKRfE6QCe>&@*?VJ9c$C$$~>*>muR$M@Afd~W=52?S{ zr?l=FSZ~U<>X64aIky&q0VxLH?`?f+%D;o+2yncFsJA2s8!|r4Q!HW`#3!F2%$IIT zOc7cAd-*4S>FffsHn5yhGqR;AYCanQ3W5iO8v)SiQ;%_WarqciXmcsb*=fA1RQ~|u z15CeK^T^@qeIJ+w*5XHu!V-7CK@~Arl{1Ltr7AAElb4kTG}>pbrlZ1Y{GFUOJxyan ztHmry4u?S*!hndKzyyfY#YZt%o**(d^NVNz(w$$1Kr#=h+h{e-Yw*S-kd+~#xJ&>_ z#pX1UNHx+=;fzit_2CqSq4tte5E4j%HzRSis&9<^wp!53SY~0i-9jCLTOrc1%n|}^ zx$o+0Tg|$%wBeA9LlBF)%#aSSbDV}&2#I8&Yi!{fy~3=Qt)UfxLa+}KIk`_l)*anI#3KtD_R$Xa2Er1aVp9a zyd)7NR}s{CSDtxzv^v^x305Qll&JJ$aCewxgkl>*q0*BIFl9ts+vFzEJ*nelUayF* z&MCQbCx;@Mf=v7)b9&8$!M~1MVZ+Qy5_yf8ks6f~VHOq97)0V)ZLozui^L?jqs##^ zMU;C8Gv1wrZ6gPU=A`o;3Qs5;t$-s>EnsWcdY{8s*>$#-0e2&5hTK9f4X48z?QXuc zYRBg#w^}ZsxigwidyRYVwM1Y;oUpPvY^4@%V9C(@ej=mXju!VJmeUqI#p)vWjZEw| z0<+Phdl02D?y6h=0LHO)(V&z7fG-mB~n+-X3!Fd67HEiy-b`W}<5V?0beMohqhBgPEgydnTflDEN-TQet1{q(Hv;vd8ycv29h5UJa|bg72n%1}Y@ z7c!L$(h#BMD&+mMN#_SvRuY!ma7a)WCrv9DL#<*Eu%bvHfP)cTCR%BrNK}V>AP;=} zHPVD(KQdz`Kt{18Ms6mqRNriPmyqTt6rAV>T;CzuwKm~OIQC8A2o ztOsHKDiW%VRZ4Y|2 zEaX`V3pzqNMzm!Kb;k)*0Av(j?r74qp-D)DX(|Iw(OMV~mVqkFvJH?1ox9RqX=zJF z&8(ksv0ya&>r8cH4~r>UjDb4XPwiN-Pq^_$OsE;IuBNs?)hQ@_q$KA-5?qZ8Q9STl zT&6{$95bQo{%a!e+~q8|;;uhcr|-Qn=e!6?0Snn=-Z%5A!5Bg1X9S77i^=O(h*&6; zLx`9f{7-vQ+gVs8DDi^=4xW7~kl|BgkQQd;%So-o7m0aApcC*1<^E|+Vcc2esWt-h zq*q0pG9FWfV7h;_9emAbdlHO08BnCi0#ECohQ)0Htm`pp*a>Pr5o)a+aqdW3{HXCB)&-g(W^PlP7WO zxA>vUoo6rrppD=TpIV(pGA>Z)Xb>P?{{XcUZIps+Y)n>^Eu=gZkOdpaI?=YXmcr36 zjU%Nsn8v(1C&X2dSOIe&YfCCmEQEs*`Y#7+(w}PTuM%Y-ZTHfej5-jlN&yigUiDgG zcxLjnw+SNoVHewDq*B^zC?!QEM};9#o3(3M2pLjM+scy~_m7QZF9M>Fs|_G#^Q37A z_IdLgk*OA%N}daNnel=8E%qs{Ai6UGI)f4CG`5?CWr!V3;;tb1ZE4jB<4E!^3{vw#be0E@xuO(0lF%@MuTI@1yCiBU|Lh#fmp zRPI&XBrNOVqR*W}DvW-Rb*rGBdR!6`zL9C9p+Zkh?fcO$GMs_|F&-T%B^j5MFk;zu zq)EfXgcTik0%z=0S}tM;8pWoj9RndI!*T@0Q;RurnMZL&DOy~Gl1GkcGu)W}05r9% zu0a49`!#4h!8t>od(#p$%92P`^^Gmsr5aI@1dsp&;yQ|yQ`VrREqLTO4VN~b+O5?E zxtN58)#4=`0Q=LeQUZ{i*m*RtjYkXnw*ri%2f+tmXw;$LQILR~p(5}{QBfr-X<7oZ|UKoUpY>XM~$!s1p&Xg35+%>B() zR2P_B?y#!K_rI1uSDa!*>>s6aK=qa5f6A`zS6RItwc%-LedG+bqtqLd$d9a%( zNl~5cZuA1Q0KCT{!~h9DNUJD?qd5SRAdS2F^sBPL8S}MuPrL_H=R%d1wF8$nxgehO zA)KIF8Pk=t%!A@0G`&O>8I=3Pl9-&o3IdFx0aC~$z&4)U=+uIQ**O+QZDfw#Q9%^7 zr3e6^H8NEfJqaS?Y7E0Mgb5ddeeUPwSNcHAb_qRCLUy%NsY(?p1Q0Yv^QVxpprvFb zN=s{51|XOn?Wr`vyuk-DbL*ZUNAE$LsWPLafIyhv;S~%7tp;F;Py#1P145Lr45?ue zVe&F5D?+mj&`JzQI*I5tqe_&twhD~Fw8wh5fL5pnP_&r0Z@uU#B&{VYf&}lZcd5!z zSttQ9s?NjjYNV_n5t}YUHWU7;@}vQm#DN5OZ|Cu#h*=3a03d^uZ$Gz`(8q>uB!W)D z-%sX^C{hB`1O#eGop&OmP=ZYItYJFDeEZM}{{X0D6d3UvNsp8cwGf+g7LyY>y87!^ z$`*8xBnjqjBG5Zk=UN+dDIydnNfZ&d=4%KtoaymK^;T5e5u~gMh}ij2=LrQ#Nmv5p z2%g=jR+ToQtfbs3O}3pkpj%!dg!ppIAS&`d#TI2H3xvReA$ocqwP{I!PmU~R!^_Sn z)Y+S+P=YtGKkN3OUPQv6f`sbe)O9mNw5P|g21!AZPm%kzR$QwqNdyC84q`9f)7pW z`E-e(7LZh*7OEuN=r@jriz!k9QI!CabM8p#Q6Wi5C20sqkiAJicB)T=Wk^X_FmH1k z_0oXUl?5%up%F4bxKDVcg&7DdBoQMmr~JhcL5nDWZzFqY*MFT5QkRJZ2q3QH9ZrMq z)KGwI1d^o{YG!sF0j4N(R8u4!8;H<#=~SSCyue>ExDht*@dk%0Y9T}gtfU-+OKM~8 zXrxNBDMVQV#gLu5MN%b6&y>vQZclo(5FG;~jZzM$*J>{j0ZCSHWI_bo_US<$Lue#t zCf?-EQPzKo6)sX%LD0c~4{uFqhE8Bf@Il{G0@2p=1s(#OKTsy%cAyBzq7(uIfdz0= z{{9t6LUV-=X53|PED%MyZ%3OlfKdf#vGAQJos_ubtf1xrQE~~q#THP4nOFrK5MoE3 z)CyV33Y4TEm@=&g-Kdn%RgjR2%+34#??B?Nd1E>az!M)jmB^)*@|0fU#2(Y}tZzM( z0<}zxpp87Ku6xi;^#(N&e=e1a5h+Or+==Zw3ggvw;sx&;`l)S+1OpWI(c#rjUKA!I z)&{0d;14R?+ESuaRS-X^5f$_PPPOj%<~H+6*Ciy*#=zA&_C~-dnLaB{WAM{&jU)3R zb}3LRGJK|xw}VSq1dwGnI#-JyLRQXsb-D1YAp^qzM_^}3rL~GEC`zSb#GKJSo|Vs1 z)art=5Q|x|E!YaAgX5HdJ=q55w`zE+$+^sGlomsY^%JIpsO=qTE5rpkDp4{4gnd5s ztY~>zRB|O|Hj^G-I;5>@SOO&25_|Nj@Mn{-<*66jY8_MnZw&KqT7!mx1S8?)|dD`_B zDpY0Xmggxc$ojvgnI&UObT%^;NW{H|E?hSQGDto#Bx&B>Vw|>8(aD&!vOx$chy+aa z+v!7yZKP*W0b#&EJ128-`j1cXP_VBO8CXC{!ois$BY#o7Z*AbgSO7sj(WUsVM!P_d zvlYo(yyYO|Sp*ZDZ`ux{N@{T+A*K|fhUYV30s*$B-hQgWIQ;mCpQ5ljVB%u}r$#V7l4@31}&@ z05Ne29k21GsSMdjaU#>pHirnWCcZC~C!7XFCQexgTaZ2@)Yi5?5UZb=Xh~PPk`2I_ z9m$`ETH}5y={`vGFL36T7L+Y3Tm+Z_Q+pA4?;dr76T?a!CB1BUktN43@$1vporL0n z)RiX?rqGKi)t>;Jz}9tv-nL-fMm?w0l_A0-M_CZP- z5aCW?HZ}uUC-d#?CD%eY~Ybwn*_zNb4s}y1=gU;+8mHmFttm7V!vDKnair zXpQ9~(mDw1PQ$(wo?;a)E5pfx0;lwe7V_G>Lb$;~LIMKOm;j>WLP6WK@4a{UM-wi~ zidQveT;&C2AZ>pC02-dYEQ;sl*Rf}omf^<&;P_s3Ffw@!0KCsiqr0tpbhTt#t-ONUN}`T(iX@G z0Lwr$zbMl>!GjwA0JBRf=TXUjj$&|+ct|3@Je*9%1Ev zq0-kU`L8Da7-I9fQlNyAVr>Ubzjv&tljyZJlqyz44L+vO~-W(u z!Z5_G60)16d0^|bZas9Npl=A;+c{E4GDs1o+I6&b-l-@_Y0|VL&x9!#=^$`A=XbgwLg3_dZ&01IhQ zrqte|dvu+zT_>|&K*ZzN;}})Hg>fYVC$doxnYkc+E0u$J&UCohLvV7VN$uraCXoIK zzsv^`2m>+=f&T#FKDDbE##nvDslRcwg%-7g*lZ*A>rvuL@8WoxaadN^K|ID(a=M`r zeTdV_x%eC(CB>is+QODnK+FL5fG~9+5nRWXym>DnN^BvcE&-&QOk2?DOT<5l!M}v} z=Ql0H3zZqMF&=lPiLa{gbzpGpwc$W^d1f{7cHZ(UgT^r^!zVjQF1MgrP%>jv_w=tY zac(6c4ycq*v<=AvX`6TRt!Uz@!X<5}Db_OSwxH$*aoV}~(no1H#c^UADJX3-pCEF2S{Qd*0GD}w_%|`H zpV_R+-*JIBm-uK~sZX#c#I&kBI}$aX`r4SRd-$dEmTVK@Z(-bgCaVmO&$Qy4Pc$Th z%t*Ay>K(*P_N=3n)6TZxFux49aGT6|MRbw6ej6W=+qfi~t+TXk^@8Q&e@5BxR^g0*30cVgdn;a#IH<*-gX-b%Na~{ZX*uk?1cpf zd1?*-2QT)lyupunVevjCgq*FYzyyD2I$C;s=vR$+Enz4tK~;r}z`ch50KlvmjP1Tc zpmPtiDzuZS^dm~#B4e_n8nDxaSa#PTwfIc*fv~E@KErrc{{SwR9&jpEH_Cssb?Rs_ zEdE{iaGp{`h$cuok3ZV9G^TLj@U(#~%vuPGPg<;Qx%@e-MkQFbl-di8g6cpKC{gLy z%ygRW{%e-nQlJ}4U;?r;6%n|;@iWr7DB??Sw(H0xw!usw1DI}qe>&WPR?x&^F#!NF zd1L{e!%O_Bf7>aTwJ(X|T;-A)SP4t6c(TRh6YFCYjoum=#5s?_HXJ}i7E!86wfdVA z-nvQS7-aC0$K``)Y64DSV*}LJJ&aqbVHq4Pw5uqfMpGwP*H2MfJutjUSLLwov5LIEy9qcAZ&nj2TjF}#<|K^{P1xKQ+Q<(>n!S1 zHYcZlg>-RvejS2+r$QWbfODc@3b#*%sqbPE^B8wrN*hEd!c%Os*J<^t83V7o3tI|l zpxIMoh(Wlt`b<`SF^og4l?RfHQ4z|I1vrY13A;}YrtNm&Vk8xsa+*G+4tyj0>Fbxrb!fy*LJKt#fK&G)4x z?n@7$#E}cKkd+Vt_4xYJU&a1o41_1zFEm0#5dx`Bb~862YHi5n9%6Ie0Wt?k{peAM zP7N)-@fqEg)B%Y*d0y0)c*ZXP;UpxWq_kUrNknN`cy|YLi6z9ig)xM74tH&pGxrCz zbkErywV%X{VlX_ZNDTh~PbiY3V+MNkt}^if7^McAQ}bY$m8hMkZj;{C9^mJO6g&B+ zF}$)%jOK+m+#SVdYmG98mb?=|vZI(enqb%s4XzDNev>os>f`u3*h~{nV_ZfLA^~hi zjW@XNe~oJRE)xTQ#VxSV#F9dfFu=%0fL3QQuj4Xe9ttnUQO+ZKSZD|HNMSA^YlNw^ zI-588{5Oa<@)T3pVmOdz7IA1oFpXMm1b`s_0IJ8uUPlmHYjBqsab^@1a~qB4O)HMI zyzm7HQV%L+$v5ntrvCs6LoZ@oPDcL#s#D>0!w7+}BYK=h8^v&VybA>gN&w~;bAtiF z=l$Eq@mz=U;&981<-)FEaEKGwjr6VVp*Wm6(Dor~fpUiZm^vH%4FibfFbWCgHlURk z6Ja_)+D_H5buiduJeH7D+&IZ8G3>^M-D9tvOioNQ;B!z|kmHVnber8hXVR6zxIQ_| zW0)tDG9|8iCCCNV=12pvI(b)7jtPcQEaDQUT~XyItwbPhNdEvoy=pBWaR!=gZXuUn zKdHsH2u{8u{{Xjp#d(ZoJ@&s9aP(s`1`A7ouNGsi$8tWk?iYvRN~}pfdQ{@LH?bl9RG}@T!)w0c_tRT>)(kfVckvDtYy_|K z4c#Th6tsFKH79%8wn_I}Yt`fVOGA98isevms3%Dg2ktAKj>4-Q!yiaMc>owGRNu>3 z5CNq$wc(g4d@QjrEK7~1-W|O(6&Z}zkH=wgI3vQA`iXBb zE$2RveP#i!mLcpqlCt7|G8++*xf*pNVKEhtjN)7l;lt@t+i~#kB?b`Re~rEs(L*JT z98wU0;*SnlJN55gkHn~P8)jK5N_l1=mlZN**X%1cIC6M+S#?2S!R+>)x4G$h>ErN$ zr8?FPl)9COZejrj&`+;ZSvb!LZ5%s0t|OW+ktwj9=R$VuE2JBEd&dT(HUJ3CBba^L zK_EdhqEH*-rwv=1u zW`h98P0p1TGgbJd0S{oCYrq`PXcHf&%g^I_2AErmZH1JeHe>*9mFN%u03W4txR>H@ z&T%K!;!}_$a?%0t^^N^#@Ywb7CA9ii2QE`0;BBszd2t%*237BSy6SZv zzE#KLKZ{>m4q=#5uHUm0Av@N`8D*!OY1hz%5tNW~06>y$y}ER+F9ZsE6O6)#Ex5m|v8<&_+>Qva1EhVV= zb&HQWjN08`!!wGWZOW)PnXj-f#zWI#6W^{M!IDRr!4 zjiDs-CL(g859<5S^sa*O4U94}6%ha#y!Vl$_oe%0xQKB)6ATQJw&bJ{yxMzEGsCes zj45;l2VRm2tWCSvpSY|{<5c$-SqUzout`*VuuNZZf0mWg<9u(}Hie)*;@prX+6}9w zRQWuw6+_Q6Vp|Sdu5O*pZ~QUA11NFF!dzUCYza=}p8a+eSZoWtSBO6IfMjJkgNsz= zBJc*p>03CSDO@*&I{3(rSdySR><>bB(3@9JdE*@S-jVp1ivCvyT4pBTC1&K<2h>blf z(Z>>hi;sQV?HUWjtMfR8fa0Xy*+*ZLd?{;jem1bqgcEfvt4`qeu6O6(;`s0#01`QN zv5&p$XBEdW!mxpcfjEVUaFoHHI`w$n#|@4?D;}oOTStx85_3)Box;Biy^Uv{`l3uE zFZFf3YWyX_2NL23`rKmPBO$RC>sQ2h%3qX~k%mQxNcXq%t`eMg z8mAj&1#N&VO~~u>ryOs(&b!Z1&|?Po5`8Ou!~`h7&SY3jdDmlz<2ZK);b>{3L*NN6 zfUhY7>0E&Om@FFH%gZCe2s*D_H?AAc981D;5z%Bxu9J@|@9EFaC#Ljb7C-J5V6M%m z>LY(Yjc0!tUPP&U)srxPO=sdue71t%P)F$om%}g)<1q+I5T%o_uJf6jT(YUP&P(@WfI(z+O>;dp)-)D)GtkT=RzZMu9f8&?Yk%DAR7 zGXx`3n@IZ=&zZi}ZhCqT!@MyDhlNpY*W-8 zqxq*})b1ISVUm;v#7l@7gvPe%UT+(dno=aWJ|b^5d`-JqZhD2X((x~W2RZo7d$w>G zeg(t%j{8NFfDm;Tzm}EA;T$!1Y!We#Go6B98H~rTSlH5rCH^6aj9d9yOy@~RCf$4K zTh;RPiRpt9^SJjG8zn6pl$nAyJ?WSXI!fCEIm3f46bp|2Ra|Eshk5LnBo>$e0V|SX z#QN*no5B#FmAI_-5Cdl|y!vZb_+_W#u`WFL{Is%!D1h;SZFT9m=qVU(ODZnn4?YuR zoA%Jw)vunC(`)buNpvS|z8YGSiE9ssU^3&VQHU)ABq(bhef!kU(=Bn9wPUehAu*j+ zA1JR=!&cV-Ww%y@p?~=S1wg^j{{REL*A2W6C7x;&a?QFZ$HZ1+`JOF`Lv5u_6Ah#b z_5!ZWPP&|1@gw-Ga?Tya1+7;yZhd}TDHtS<8lTL**j$N9NwEZ5`Sh<{!hZ~4{{Rj$ zw|J2!5;CQ1s>LLkDV?;9Ys~RyPvTB6`ml_lhLqui4FK9Vr>0K7L}NJSGl;AwDCK|v zK-;J8el_VZAB1pNJ|3KR8pRAE%&9FBbE?vOAV@l1VC_!eIBY-RHzXpX0$tDMNMr*rV{18oesip6Ddq6z?QVp3vn(^^j$ z{6wr%fH#p1g!nR~01r{p-&*Bj_`}$gWLt{mY8w{6ezcr33dFbpNr>yUXOF$92Q`%)%d@g2^5av>;$|R&6VE+KR}ypkW^s@LsY>Hq!Kb~bAOdw7aR#fM{3oJ1B6~D7Sm`!aZ6Z0fiirz zucZD<3HUdI`*oCYG6@JlJ{89L5!=?hRvk*<$!YL;Z<21Co`fHtoYr0=jCYBzocTyH z2C_}QC-&00bv&z;m!qEJ_@`COapJN7039u$tXP~@BZw+hDgaHiPgDx` z6O2mGgq1^rMUphz&Wi%`4X2v=k3^(FGwZcIj^730kK=&<0JaMSV2{j54q9NVq-lEU z;#SY$%tK0TlsM>Yr`r`ExKt$y039Rtt~;NOu?^vd8w`Nc8Y!>RL_i*2I`iB^i9L)^ zQ>!Z>AtFq`8dYcM&&J#B+T!1eF<8~8sp8kZ#Yz{6dotCSlc_T% zmxjZu6!1i)6DCfUuJ;XP7%V40!h+&TLz4vTL~buqzfg=*?XiSQVFUuA>?DYpgWPBb zdQ*IP)GGN-*B2hYdQow#OAk3HR&>~9(W+GMwza_CX@uemB@k3XlMxlK7}Gcf9I8#y3P2vW9S+A@H-AoMABIAb zyg^fK=u97xtr(169j4aXNKkS}2EyK5`cfa_PQPbWZA5SUdDbwFYlI*W37vGT&HGzh zSk$E<4l6nafSo%0@99k#z~h0j<3g<_#{K$s(y=29r<8SB8wzqTYFn8Q48`Ph)|m!` zA%vkS_uLw#dH^ZQad?a}GdPfq0NpG5`BL!QCDpXGC14S&M$3+%9`&g_8O%}?q`VM- zf_aV%t(EFh4(2Ny?PXptwz8n41V|}2Fh;=s^__f4#Uv(9MCd(xdDlw?_(v6qdK8jS z44k@~>Dzs4yyxINE(-wuEqL~x005LWtIU~^&}lk+t9>3(;)}{$n1Durz_n^;0PBhk zi4IIb*zNJI))xnX#5;pR071OEQO?)&5$&7n7LKN-_q5V zn&vBloC>oNP`mgvbHZS#Y-3rN={2to)*aP`-+e*3mdmgYyfxP6_pVnI#yyHaTdpb_ zupvN$eY;i$dAOH|N=oxuPSaE4zn4e9!+s~>{{V+sain3e*tbebd4j|fSFC2_g#ccg#CIf;d+q@ylndrdDBTJYR60*po+IHw;sE{2HE zYJTriCo|hM#ZD>rTMVH#8Ufd@opo?rFBa2i#1sb6t40AyAWgyTt$JPog~4GlE|p;0 zalE7d03ih{f&>xXJ8MiruTtyq86Z;y}{osO}-TuztnDi+|`6*i^}rrL~^)r+5XHyhDh?_`-Q4k*xls)+g4zJKu{Q5r@Gk7*=3&OKKufq!}Q@ zXgiH-mCR}AD=R^5Qc^}^eLxxyTAwPmZX1Bgwo-x+uuQIClo6)eZC#uLsb)vAIaD&J zew*Bj88+*Gm2#iQkIXD7yo)N#RFgSx5=HJ#wG)fP;?Vg)D0NCC><(pJnSE3|1`SRpCky@RE6BC?MR6de9>qghNsgr(U!#LEhiK^=$AragL!R zm95WoW(V(orFAg87Y&AJa}~@g0b<6{*P%bLt+@|uxHfSMVpOoxZ3O=SQ&J4sHn;h% zr~GP~z@t0OxYbT<{n#&Ir6+(HV7 zON0Uw1SUF5@iNAWKV!47XBOF>BirTN$@ z2-mjLUJ1oK^O^D}h?JR&Q&_@tl`C+A?-DO=qptP8)ju_!ZA-9}I1w()2u*u*h++mGh2}E&e}h@9=-Zc+7H3?;tSSr9=k__J9dK zc8cDtjhkG7!ka?doKt1PVAxTy-1e@Y4d5dmj18$SG}#B4k+5=&{YJ6%uS3MY3}EBh89c9P{|@Mx`8 zB;FZ-lsZ?6MDra&vl9^j#(;W?o9G-bQ$0{d>(Z^OoBzoAPYsU)OOal{CPds3k=)1lG}JJGmCVBO0_UA=ryjk z1MtQp76Em@+5$m2PJ?e+^n5EG#|L?dLYrD4@_>+_lfN-0GbD?~ux(8krrvSi$~a7C zN`faMw+fv?OlhF?sO#jn>MnC9+my%QtOFQv%o)~HEL;g(Zz(YVi%*>~T%;;+SY#nm zNlJ_?^cU%916qfO;Sm0E6Cf19P$&tD$%&J(>sTG)>^cge2mqx;ZJWRmVX-@nDl@zG z-%+!MaO7t{oI)Q$5LGTHva&j!!=;U@u7=Rbb!7y$a^-o>=f^wVP49S`;l22^hMaXt zX=Jzn$_!g^dA60E-^K2`;BB^1hinw3JiT@n>^>B{b=R}XM`fHc9&aEgmCJB*1K=ne z#t`I0j=j9Z^B!riq&0?KcZ%dTl}HPp?l&S2ZAV(>xy5k{MQW5=q;nlJe@I$VPhhiXsl+-1~VP6^dCA~n4B}pQWR48X*s#2P#c|6 z2IhCJQ;sMpwKx4x0$VAF7y0=Z0+!|l`Oc=dE(YLdB6T%$h|ec;2gMpfAMph{%L);y zwD9(UYgSB7F)byvwp3h&s4Wf|3F;$H;<=|1zh-U%QaoI}Kgau~VH?Ce*;-PiA+j7U z0(!^Bcc+B=Jc8yk6!P2-6`aHu0WwcOYjW3*!(o;ZTxqgW=Ohw2r*k^x5G`66#Nv2( z4m6ab5nvT!M4jYB+~2(t@tDBM6qeRdm<=*wQURR9%+8kcn$7&%l@kX{$E8i;-@^Q(sl<5V1#g`p}?DM(VtBFY1= z(x%BhVYGNoFbl1qrJN!gOy)9d2{K^Z-0NUwYoq@FJkAperDBpDxfpiOh~M8yP>a~WzxZJ$F?!Kfr-WjrUWFYuNnG>we$EAGn?j#v^D=Sh$ zBn6vh0NC}7Vyg$lmdQ}}T#3%437OJ*8QP}&R{K2T*`Ww^*A&}~qY}4r^1^`*1q%Y9 zZKCl6^_os6h9?JvD=AP%F=Z|&i6j6QJq_R*^9^x@g%*_nI@t<5xgzs#Ki;!`Zym?6 zi9vluvToyo1Vyyg!YMv0`){0U;~YgUEU|+^gF;ZGwIMl-SZ-`L-fMRZ;16N4;&EYK z@Hre3Plr-A0@FGIH?>y}!j2Nk3ypIe&Iv%0vj)RU5Nt>7T~)r*iFMUHkYr{{iLnF{ zruCVbp5nILnaMrfse{Lk7OVkvKj9Wq4db064THCDzm8SR`snwjWY7n(>Z) zC*ruQI&k07Vqp!G*aN7J^|8JJ;$2#?nAI>LWl#)TrSGu6YMb$A{?&84ew{8M_>%_C zCC8X;mT@S~kWf5fM#Hs)&r?{H__eiRd09yykR2)Uq(zb^xi^{HO3;oQ!pg#Mh+Z+Y z1p}UK{{Xkwu%W^5LQ4TDNDB~1B2Yx{xj!Ig)c*kK#{U451Kd{^iD?a`rvpTZX|ENd z^q#SJ`qNj5#bTRNXjn!WwUs4gE0~7N4-wh`ushd7kggo>ClKRp{{VAo5<%37*y;OL zD_bKg>u><*HlB!3n18K2Ss-5YnO}VKBcWFB_&yuNdS;P zn2S<%zk?aa;~YokTyy|~GE!^@uB3M99V@B-0Mfit*ycLY8*axi6Uy8|zGKR`yhnwy z!h=mP3!whE1`WX%^!e4jiO+;+2f=ilps(C8Gz0Hlsd(o7M$Wp9>s);dI@-gDVb_#N z#E?^z?q^%u<3)sf4~*i==au3#Erbx10~(X$AnU&M#$N-(p-nWk=UR?oCU4ZnkS`r6 z$>4$ZGO71@&KW>Suo}rbbdL4U$Di8#x)Sl2R4)>;w7RgOKxmwi->9drkFwgDDnR6W zu$U4fNbYy67(c?S^46lKNeY5A0L0wSl`R|%E#kvUNl0)3%*tUtW9b#S@te{3&%_`i zQm|Yqk7f^s+IJO+TyyhJ##0IKl(%4S*1A9OEiV!oF+Q4v} zdNN^EiE}A!Az&!U1VJ9NS-eldomUAQN#coZvY<>|GjY_PyVhqotLj;8C?#Y~v?r%Z z^ebtsJBV)(q-a92kP$kYkE!@pH`#61d21*Diy^xK0>XO#0Gion>6w3SRv(CBkgyb` zII;*x*Ul?Ld~X(rQd?764ACK7y<(o*VNI1JrLaWuz`vpEPFrb41&`N|$R|Qct+sxQ zplci<2~tqv%aRO%7wt|@;uN8`5SEkTx|Bu8(mQ%rFA&0#Gl2_L-~uFRb6OFH7-W}R z2_6a4(*0{JjoQ$Iox)}o2`W2jy)l&soho%X0RV*)0VBO+!=Wfr4a1~B0P8z>(-85* z5XybXgC4U}U^Sr#S{!VWyQy5yk@BeH+>#q^90cf2+aIk?N&LAbBnUDIl7E3jP^=k4 zg&?UANx3NzH|?bYbDYRZ$+_us=kctlON(BD9(d4M|r5rXypQv zU|_fg)Bb6pZ9?7KA_3M9$E`GCLJ~`GPM|2j~Jxps=if5eOcqBjyfpSH@HM0t&a)xDOK(des5owO&%DH%)LyIm25`0Dk zMO6DkSF#OdAY?*j4fWo!;mRTw;!+Lfeq-rW?itCokYYk_9+Z5RT5U*->jE=XK*eHG zkP^#j3@soD>-*B(TZb^MKDyHx=5rErLIt(!_w%A~OL;*g19G0dD@CoWtf9bA29YF3Z{C))A*?tO zB%46feQG_6X6lA&{QpCfALtru}<7M+fjsgp7AEgE32OJknIC8|%@BcRraN+#qe9m)^Rtq4k1 zQ+tpgZ~kg2Xz(R6Q~Hl;uxV_C4C>0^>ER-&!lI%K=^A`#xdcS3I2RBj%Be)9E=kU# zazLm6fR$v42+(XrDb;43bCH$~;)z71Rxn}->O81Q~9G6DjL z2d(I(twbt7BK{IJrQ4aHCS(F@Nm8<=(>D>)vm4(m0w4f2+OhylC>2T8eQAN40yAY7 zwv$AZ89~Z5gKcTqLv5WBt3V2ml`Ui_Hkk0l&bo=IOjdQ72Kr1vO-jvc)GPXh5L+Zz zja55|`xOfIP%sXV3j5E>)G1H18Q>j>6aKvD(t#^UR!H7A(AVF7RTPBp>8pg@A4fPl9yq-~82NImnk0lxj7Z7OPvjmfHau z2L|V8KPs6V%pqa9u!~IXK@w91N+kG+2^JcCDwG_b5ch})B*&EWs?yZ9cN?SfYMU%%s`ycYy7@9pfSzxtC!*lPuJnzk1CJ{x)%}%5Di#C3jn24 zm>DX95A8rCKq?@KR{sDW^Hz|qW>xz_xr6TWZ}Y1|D$UEyS*ug(WK`Ay5dANC2O?qd`+k7X=2{4d<=?6bJ!LAw@Di>)pL{MU5oPcsz&a=PPiZx16OKNnESb$Tmqv7k? zl9qxK3RXxnq>j*Oh3%4(Kl-PP$nPWTLbV*tl?5#tK`{n&qETUPPf%beMY{S?=L=97 zR6$k7#G8F7YYwGr9I}j;@Ie4+2CWMoGNCCS*aQQ$s0j#BLeL6?OiuTR6bTRzpsyVG zVBR`Gt6U>FB`vOU#=z9^u0jGdDVheOu_Q4ub9}-a?dq+qE~UZuVQa{py@zu z!R*cb@xSp*R(?oQ+#>O76aFXwxIN`=&15G0d1 zx?g&vv*WQNds@d|T7hV2A;J)l8wBWl8cCmok3mrjNNhMg!34-8-=|6GR1{YPlG%$J zfCrba&aD!K6q~GE&4);!qX_{(D1av-i4Z8%77k*Nu_jE{~#kcdr`bP-`wH?%yki6R1x{{YQePG;a`lynmYK4yXx zXHW_R2=E@BVx(njGLw*Hxp3(R=~6;k%olQQTN56KPbwyWIp^NklVCTWS~emEV<#fl z6B%~uJt`($T&Te(HNh6`R7{p!ANl zNZC14b2%WuGr2V*-w6ON0%VJhvC~?xoXa6Z897GMB7VgMSZakJqQJ$^Uo9#mp|T1B ziUgkwTfESzCn794gh@L_))iezj`dCf~6s4&c+3S`?Y3qB@Q;2@yQ3O z>sy4SYn3dLb&i#h^ox)J07%e)BDvR2S)N!xD^h{E_XwL-7mjlu`oN39{tatijdPSl z`|+({d0|bqQkxXo(eSQ4{XIMl2f_gv01$5*(-WF=8xg3P`~LuRfN}{Q@Y8xM=*)*8 z6LjDjIttq*(AqT)(HK{1>S2c02!)V3CaqhSIj4{4>T;Bgs< zNX|r!03Cii*5z)ryfUn~v|TY93+f|Tic4z97Dt09$}^Z)>M1J4^JQuy`=d{v+*C#? z&8bn#n9eU2)5=cuvzmEFPY&>DD`{TIWC`(FHNV~Ji=ic82UcUl2PsL~M)v7k)#DPO zB`H93o6h=awG-IXAqz%)@*z{H2XRy2c}GVNjB$vSl2fVA7W0m#xBmdhl{SEf(0~CP zxhCWG(zrtuREH9>p9m7^Bo5wsP@@~keE=ks!6gtrJ*zx4^Lj?{<;NC6)(b=2F(A+B z_-n0ZUlmv+xs?t<_J~vuUpvQo;kL9bAxar6QUqBY$={?=A#Mao%ua4$NjgQRy}lIw zxUV-~^Wj7V$Arl-<_pB!Uw)HP zRIXVB1W7!&{-0m>S^aUob=t%61t}}`p=UjYP(*dV)2tfl;8xOzOy^!w|_{T;Qbzk(L$(r#R|p0m{*e&??l-O-bNY4W>vCO7yrreI zAp<*&g>{|B$Ky*|t8K)&Eur)RN=?vr7t{QMLX2WDETfhaoj{OQIgVHfCQYMZ&>FQk z)-kjcmdisq3pXHNUZ=j*&ljXEX>~sHgjyfAet01^}JUCTR9 zc$!~=;4%=7Typ1Lkb0eIL0q>=+)8<>5^o|R0Q39Ww;8UZZ!?5twQ~a63Lzk~bv8GS z{U&`W-||B=7fRMekdf~dSOMkV(zzH;A;|=z5TM&>P)g$D?grQDbfUy#8Fhp#B(R7r zg*m^aq>1~Ap9Oil3gaqCSqf1?;SH>irw9i5wt;*0rW|5%j`9?fkP(%;0Vh$Lz0UE{ zyx-;&?kB`jfKM(-x2fs%t&HNCZc5U!%V4*dq!0$iH4$^`Q~hoJ%IUd;UQ+f&A|o@7 zBqYp;BYg-z8NG5|Wk_+$s~}R)m8@pXc=?)oIFU{%#Tao8dpUHHB=nCq>J9<1Z~M%!TE=c%bR7$G3XXfqCD{EG>|>t z;1VWafv<4{4&CdaiQ}#>3`2=Z!)hvNwaHlWJAEsTF)2z))}x1enawL{LdSDGf1RST z;};ncqEHQp00X73+SSj(Rrz6$aTDy;&{K9Ggt=fRuBWeh)rQ6wR8kb2fQS)j+TC}W z zVjyYcI#%pA;w53!m6aBsm?1_GAWl<0ch>dE!K|{5OsTv=QU|dhj`lhj{pOLxUTYc5 zCDV}t8w*BRgBBYBGETAOUTegz)2i&_e-p}UY;js<69WHoC=C*tWFBb3Cs(e%M z&+M;Qt|sF+arH}#{NVggtM5E;$Xo94F_t_ zhK3o{0s&MIN{KR{CS-aWSBv4iY3v)O6qGb(Ier;C!RfKyYuGi!n#JKWAz{|C#F$7( znV209PNr+e-^Y1+`0jKy;+1q2mYf5Z%8O54^Qqs?sl~mAVYdQI1DFQj-$|&-P~(jS zI*=0s#|c{79VW+nRpOiE;baz8)GR4+Vxf2dXhp7VJ69F!gzi1Yl8_RWp}`=8l2l3W zeYD!NVfc~7fV{0bv97S2M*HnQ;<92^!pQNKTm}eIW_LF`{HC-el&OH&T2Cy&ix6yn z&VssPb;06zk(7iCXBwuGq|Eqaoi&;1+OOAB6Stc6IGi^-0<|Jz-62LGUqjlv7z|R; z!x-nOCh zq5@<=N&f&gy{oT=!@k=^#U{khER3fnnr=JO8g&jQAy|L_8Qjg%-f%=~TNrdU*+N-L z-2zGXqT3VjsOqjW;@N8&#$=#2;3=5aW&xi_p~GXG!YHBE96rzlwsG2Yb%2yiH29q&5-{9>N?FYf@jK7%GA+n?Uv4n zRncz58S8GSTG52^XmM(e47VB;|1B}KPe@U68DWG)O&(Y<;8 zErCx8;wy0pUoZ|_ha)zY8i5tF5S&&SA;xatl^+yHkM$j^UIP<{;!17jP!Y`{Z6rrg z_Dxjv?9wnC{vQc(3u(0v>Kk(H(z*-xQDU{Yl9f;C?o8`Iyk>V+*NF`UWz2|^7T>n@ zxJNiCT(oT_O5%D{RlNH+mebF{VwSmCDoVh)*qij+9^LD+!?}2tU0aF`1SB)!iEwBw z(CHgj8y*HX5VjJP2V}Vd&_%=@3H`d#@OXSvIIx8;!c-y6a|0bW@8w%&j>9Nvg6dXt zlA;=wTqb?!+zHpcI}E0pb@rB9TGo<-1a#l0Nfn!mp>5#?A+Q|fDnfPkaiE(C*k1LI zG9WDrY^}?rlW+jueQ!~Xj@#I`aXvN@mN5hg%5tGGWKUnYthjP;*w<9H6#gXyX3C3S zZu9rOF9zXeTu6dda=9@&f!D9CYQs7i{J>C@DCOo2PWBslQKUVLQX4~!fdyA4`8r7Z z6#ND#Vg_}gNNkS)(F%)CbI^L$MB$f=b1Fth)}j&|)IfkhA0bBGbSUAJOJS!WLp7!% z{j~Yh2T9kGm6bA8%52Ffyjo|kUxi_LN_of7U>vqF5vIPM5l%|R83lxZjKGAFJ<+B6 zdG$4q8H98Y&?sJ${{Xle3v{@i^-?9z{K}knEJ8}85p&#|R=gtI!s7-R#mWk0fPKXO z0QfW0sH1f*q=1wOxhselI+3@hN)+MUQWq^LYbM2a%0P{D)Yn0w3r+=3HsDemL}r;D zL~eD6qI(kJu`Oa063|ShV!#pe`qn%)70x8W-C9;q$jUPal02!wYeNN>7Ym3TRX^^d z1jOP7AuSZaYz*AMWz2G%3)Yc?6QGy;^oi3W0+1Rae(4*PF5>Y7Oi z%>>-UYnE$-wM@Syg)ky=lNwotZ#GtLW zd239>i7E$C+pP=Ol7k8akU_Z2Pk5^j#IlSw8EQf~icl@OmjsyTI{yHQ;wPHQ(7tIn zi7812Mz@}}f&15C=Uw71OOc0MLC$VZ^A(+V6s6V`%OnAmh3H5IM2bY{@Xofhq4hXU zB7Li7Q*GC}DPri06R!tx3oK*Qzcwc#M!I66r3nsYBViNmd?(aRu` zLxu}vbnGp9+)^`%N*$MiixNQ3usadF(=jc$;L4NBZ*(X``hThyF^%FLLrtu@`bJc( zzi{=F-=#4a!G!+++>xm^pWd}P$fg`oN*xjub@S4-lzTksO`MPk`JXfUP`i$7vaB;= zRz#^_z@DE%F?Of`m11Mn&ancgE!bJ06fOYlKm5nVuig91m zZDtdm#XUcNJ5u?mXApv~n<;c<8hCY=q)z+5VNnCsn6K$Kaaz(vZj*Tq$rRs2SNAVhY+;9S`Mif zftM^n+AAwK23WxiI+o*);gnkrAz5Tapntk!Yi*W12m#E}kO)=xj{gAQ)?ynF&Shd! zC$52=!+?aKcE>T+y; z0$|sN{9%Sy{{Tm@PX|;^9YMk-$OT!&WG@IEb=0lFEw~F~I!Lqwr=P8D#4&_I+)f;*t;EczlQ1k}Yj0EI8?QUZ zxNa*Kf_>1HWNd{2mQA#q-%V?*+ht@e^#;KKB$F~cx<%*fS}_>Kaa;yhWwwe+bB_tV zwAVq}v0*Vxt$EG(1Q*mMir{lKOkBV`pv5yzq7YdbHZZ0FP z^>=MX ziGj=oX36rMb*{t880uP_v_SobgZ0n1~7k=TcjxncuQkRI?V4| zA}xA!@zij29zsBFY@`dT*I)Hq3}!vfJB?dxva;d{<~rG&+nxS%S`dsoNI-qy;gJou zu99`^D<2ET1B_Z&64Qp@TJvvD@kucjx_lppJBC^j%;gOCTtFR;-M)2yh;gj&_J`$) zK`=r<7uNb*gS|V9;@d(>TgX-jNh^Xr=KhuAxW+9UOA_84w=;~v!eUBedv~hmoxa&? zb392r7lo7-;m0)zRCk}B?Oew(%R^G7g{L_;)d0ca8B6$*pN@0!g!R$2J697j6NcG7$^ZuTDv>i!f;T2BCGqyl?N|Z-00qO4 zw+ahxHbHr{XnG#~J!{Y7F*v?6h<(JUIFfi@3 zk_z*C$7rm)br@b0p@%|J;?eI~2}g6*epN~04{*#AifFcltYju6^$-t~TDU9b;+=8l zu4YLlH>%^CZ@;EnKMnZqEOG2M-zBgbk>CUscQwE8*kyyyQq!JgpiYNR5!Q?v+*oRe-dUy9SW!CU7i5EO7Dk3D}t1` z06oaAD;RXV@_pqb#K4a-JgdH(W4H_htHTud{ho9Tq=}1nH0$diPZD3`*m0ouF=yRK zR3M1C{{VH%;jLkgXE7^Iwm}v@3yrHTGZf}A!lf-slQ+Ez7nNzqFQw||IT>rz5M>!#9AR3y{j^Ybac@3=c!S@h+9$*T@O5V9YwQOycm<_8iQuQSS5IgB=suz*O zVZkaXkv-$T&Xa>tOWCGQk=Cmc`kf&poT9rND~7ByoB|dkIHE3{t=C!&Ii2DS;qb^p zP`H4x`i0D&FWQCB?*&8k_F_@w&I*Q0o2UQde=obb}&J*r3VQTb0<)GO=!)-_-8%TmllL3ZzkfpSlm-s zB!HIEq-MRMKmx>fu1c{>Dhd|}Al`vUu*@Rc4QOBXH*xN~*-0i8e#eyqEri0BAb!;v zWRsW+OjW6QQ7Hfkkvq^+&vR4;V-jp=5Yc(aK$3Ikg`$Y znbea|=VM!(L-Q^vYf3@XHgxO-WstwTDqdF@+xUkn(R5L|HxNw_52UHVnG z>5+^lHtTUMr>c(qD7k4tCn+K|HMQhnP(l#0w#CAfBYo>Lif#x(Z9blqW|FK%Xi5+o zj+_4gnxrtLtO7N?t59LCX((_(wDdhc&2(AMgG+0DDPl7boi;mZzn^N&Eg`m4-X0PF zG3^S85|7_crDVr(7cnZ8l2$F+BkNrbGsX@)gf>*+LVPYo!0Bx(oQx7$0oRtBn>G#4 ze=0^#-657%`+#L8b;>XP>!OT9JU`inx&9eK^TZRs_@<{4$>qyPAtDsCNVI)xn~QW} zUL~Xy1EMEE(xtQ8L;nDXagMedTf_je=Z9R~X0SN&-ceQLnJ2Ak!tlKA4swbBFrY>L z71hIVB%uvD@JB3+%5O9*i82A}YO`c;*=A)+1fU5uvj>KCBsP- z=t$qrn99|FX~W@0WS05E#8st-ZuKx2cQN>!>Q5mLD=##+VYC5V9A6D>7=@wN{{Sol zBf^jr6FRmdUev}~<6^PvTfnlXRsR5tCBdQruz{q0^{JdP*2;f5iBm{&0&|!IYq+rT z-l_a<5t(V0{hn=2*8qQm@vPX+Cgvv+9dSrohCF(k3m7}rU}M}#_FHMBg{Kj!mJ~@R zX&rxhTii<@igcwqOqJ%Bq$$gI)NU(W@y>P5LR41A|Ng%Pk-jMxYXOuVc{|$ zkO+x7Y7bFaF<6j=s0Ar@fy~r-k17?dPptq+R6y74n$^R<4nM_RN?TA8GhX(ap7FhB zrn!z|TzvaQ$hD)TY-<{pLFIr6(>RbTqyGTWMYiw?#5V-MEu7cZe5ns`es(3qvf>{{ zGs6QYHk~#bQ(>{s7{{GL+Rq_pF_FIYxvUfJH9WOu1OiTjqOB1FE&VKpcvdxN&Pge5{KUC2*z`J@WBeEL z>upZr3bOwIQDep;CVYhaYoUq!NW5adF6(WChY3E&D=D~uBTa{;axpEq%W1?owa7aO zF{hTh8jNJ4LQt0i0OquWo@b0-bAN}GbOsLx4k?z_8^pvclB*4f>v^`8uPyoIz-a)J zpgVy(iqhKO#ECB{wuQkxbp7?|TX}B17dwYwf)tfzUo87K9keKT4=`OsZPUFkANZBN zA%`r4a?zJ4Z$u~7bnV`Dt^&AUDF*Pg$vMBK2WXVNV*8Vy?2_=7&;iP zKHecbwo%MlfB=)3Wa$QVfdEqz#Ibx;3vDPvNFN2k`rVMnNi;^k|9S|dZtDTI; zVAAI?*e)wj$?z*lx&5krjO_j%$Kr7)=LNNgRC5$9Yk+UA^;}7;CK0C+%VEe@h1UrL zh}Jq*h4JiX8D2yzh zxNJr}e(Fk=K?ILKfV@{@0mE5eGoIoQ(mYCR&siXie1&uwW{85c5>n0SYtvFF;hPtd9(#E zfa9gL1f|8Oi+A2;2c<`qze@UQ!0^$A#1tvS56Y6_RvnniC&FXI3G^n7c)TtUIm`)r z5bLm95JP4Gu#WLQb;)6zZZSw_+BDpyB(`&H;J)5nt79LA(9;ep61>YTSt?eJ4UB7{ z-t%1SpOs5ZR~T;y>0TF{g{8|cDT|3FXHx|+(rY&p#Gy*eyfRYJaHt&8fg%V=k92Dr z8&>R?28+2FQ(^#0+bWYVH!wQKbJm@P;R{&-Au%N>aaI#+PniZS@S4w2UhB^z4&ym_ z%op2H_HMR3dH(?Udd>P)>^2$98?CAL1{^da#HlGghT#3o*L{o{d5gq2*g}>|tSPaS z2-PZ3v4Cb1aDE4u#vvhufjEn=$GwYj z_FW2WkW@hl0FWUbzh9kKmHZj`DX+t=zOuKSOAW^{#gxnrrcRd^8rMZU8w!KVEu{>F z06E?O=_2zaWZ3nM0jx>lSe3AZ6mtU-q`EFuJE}e5wf_KWyievIZKl@YSdL%<;Kj-F zv5uFl+xu^(tbYV$kn3uBDCOv|Kd3<$D)ou-)(NNKI9p{7K1(hT;03qUaTeU>HsD5bQX!g*vk;E+bGz!n-nGag2~i!0(- zwPppwvWYs4$C3T(b6f@Vo@2Sn)S%cJl`UETHa>Ll&$`biM+Jbxp+gso#B)TIINPbz z9)Q4^HWSqCTX8&Nhw$k9zEIPd(hAl&sQ_5UfW?LGWba&8_zo#$#5VbCwc;)~a>xTy zOFhkjIfNhT}B-T5aJY%0^kG_YYputxLjB9 zD)^iw4W+ihl#L?Mr%&-$gZwY!KzYEDPFMm+J4o+pbG!*f=iEX5*a1f#r5+(_`KPu~^@c#gb1u8&&WiSe+CqN@p zylt;q--`S(gf9k0BbK=h<^mCG$v?Kb^sK)mSB-Gj`D`{UDHxD)CoxdCR{45$ievms z2ZrJ9GM1Euy#YdGB#xay1Xk>43*lTl0@J~2#ya2z5TYXFTy@?y@-?%D{vX2eB{-~0 zV-JudhSjE*f-I9HM#oB@E`IBBys9y;V_i9L{Pj8P?wA+->Yl@5*5`=@xF&&x_}4HzKM3lS{{S&$tax1jrU}%==0LS4$@+(n zuXW|Hd=)LQaSK^;6b40TddW7mzGGU}`^@23ZEMSsX)=_gPV)n}pv3+%IBY80!l0qY zL^$+&*O?RU=sfGsx^a9}&~hn7WDf{1NjCogRn~FWe){zhdXv;?JXM!*&MjyGsDOt3 z)c_!CRsR4x`9B5_C^cZ9q5VkGN8XjI0r(>wj4l#`hG_{aE<7R!UiT4d(#PR1W(Fb9 z%dwj&*#b4_O;zjSpO#L0u1nl|7l{$fS(^bS-GQrT1CPg)6)8arI;h6*OjonQejmd& z$#ITe9}ePRt;ClKMv_yg1pMh-KY^C;=)}GoLtMhiWl99!{{UTqz55=u%lmns`o;KP z&2X9gEYmIo;xnzzZ!aPU8LxQ#sf^&6!#=lK32`Vn2GiUQpoot2-^2=Kt|H*Vt#339 zma!SW{{U)R3_FV)z!D$;;7y9B>HaG`y0dLoN%b2Vd}MJUmLY1fCIL~njsDGU!MyGz zZDz<20f20iZBIZyoo2bC5c+WHQWMQ=oU-ahPYuRyx)VKm)=$pj%ZPL(D}0_{4W~$( zbo8!X8oAazD)7s|6bv#*K$N(U@3YJZxIGPwYZbc$t5!z9s1wrUV(TVDd7ou_ZFuKkgUN|C&2({uc(^i)X%p`bVUKo zJ6yunASkV%mlK(5fg;+2A|%)W){w%Gw^+{MZw#_a&J`8%&{eVQM)uNxJiHp6!#uRN z;pJrmGyo3Y-7#~d?q;*%5s$>a*-}@AY?uiIB^D4sBW-RqHJIIOD23UM7(m`9>FPTq$B_tFiFcRRO)(P;ZGAx#O|o?*@i)POhj^0g_hBrvTI5>Vk(1qA~=XS_#IuHaCk z4C|vhTPayqVi>aZu-8G};<^rD((VfkP*S;Yj#AVT-~a-$V(>{GDvwLjR^!gJgUd@_ znITGX%M~_G_Ub2EwwcbAp@geCTuO_e6$LhXXb$)3S-6HXmQW4Q{rjturO!bN5aXaEW~M-jFyUoHDtqNkKLN$hMaqJt=Qu7NsLAWh@B<=A6QI+D%>~lFPZC zD=sB-m>Is&=~(fPulkKZlkWjw5BsE=TBV^XacEVLn+%bz^u`y+O8H48vZ&V6-hn7- z3oCKhSRUXIBTH0T)h(qdjNlkOziP3q<+PT`%9hLkQ?6de&sxWgcQV>&q=mL_3Dj-p zOvDs(&^^PjNSGCs7&!|H2RwT;C#_6~r?JFa=A+^}H#wQI!^i3pYnvvURp{#wza zhO~xIw-d{W1kP{2@k>q_YmR6n00`(SeFX$Lh+b0wMab9ZprS$$+l3-rP4dZ!iqyA| z9J&g?5FkvB{q(CDkhdC?9}t3X9$hOnWUmb5LX!yI1e4#q3LG+0%cVdFY!sa5S+G5; zN||3RZ)H`12#pYQj?-A09u=udm;|Viwv>Y0O5RZcQjnXXU<=x*4J8SJkm5g8wC}F8 zClZE`umV6*q9P8O8YZzN&{RfC!C4W1zuK?b2J5SM%8F2DETc$`BfY5z$kr8TQzc7@ zk`BMcA(fye5`eI+NgHch@W>8?4E(TQX4X5?=wNXV7kQ563jjd^$?5*8lDv&Mmg02R zTIs%)-betT6nJg*?rm98)Fwh@p>w7PIbU2iB@2WdM~e!Vo6t7r)=qn99VUqyn&ZtnA?Pxi3g3^iQqm)XHZf zK|o2+h^-D7iyOqI2>#+em4)S@E)xVSog(+OI4DR$QWoZd4T;*4^LZ9z!p4#}?endO zB?(fOa7et7Vb&?=R$xw-fqf5JUUZ=ugln%sMu&n>APj_wJ5>fHzX?f5LDYZ0-jG>2 z?rsl@XdC&{7V=U?Wt|C$pT9~&n3AV|P#Zz{(lU+0Pzp|ACPk(P?rBSODBe~<{_TI7 ziFk#Sl@KB%NuowjSC}COXusI1Nnub7f;?XywDciBlt%D#ZP?IZ))46=hXl=xN$hC( z*;_k}^O^us3Ji!7a3@hj+7h#1E_51>o}KGCbC^QxAj#S&kh7QdOzJ4jKPZSLCvgJi zfyC>01jmB@o^;HO$tE=#^fafIl$^IJn7A5!#bjv+NC=G%qV>=rO-RxR8XZL&Ee={xxCUTn(wdbaNgfNxywSGOxyekbGie(3 zsL>X*p+@Az;F&*r&?Z!a1IMkdJ`_(5NkWMr&r6Cz5;KU9XF+dKNG~roN`1{HBC9z{ zl0XE+i)&Vp3LuNz59WtIhU)4%=~g0CCQZynyHRrqHz2rm3*Ll6M1V+*NTN(`1)`FD^H$jf4e)TBIGe%h});mz_IE+=9Ur` zrqU#gw>r%g)rSfyR$%}hgZxwo+$$nep}owR=xA1~@}(*Sl@YveM7TqM8!blYK-2#K zVH#SiI(ek5NgxZ7Y;_0rpo?g>vpHK4VLSC6b4TJrmy|aX27SPOyHeDE@F+<^Sk+rV z*Vp)>S(I{f+a8v554NZ6)#mpAVNl=H{b82MLOCLNF{Pbw21mtc2JZpK(2LK3_{~W=SI{( zCJ0Hm(%t*e2fT>PWedq6P7jKT*{-@@2x-*fS^WT z0KJZpxu#|bQtnm^g0L@2DJyPV{+Q4tYXlEUHF$_fKKPqn)HO1cuP{=42Ie)YlIR6R zP61*Ff$-bUdNM+a)hkCqBYk};)bdw4IXAG3r|fG%OHNr*Cm|Oa5@PZ4??APww15f# zn3LDAqcV*GgP!RY8jiFr9!S?9f&zx)Y6HyXY03#F^_cj5?Lg83;$lj4G7RnTr~yhu z-2_SB(tZ>x<|(pBG7Q*=Or1|!2BAt@g1{JXN!a(mHb!urzQVAhs+oZwM&%F>zm}sXd1ek#X4Tg5pSB<*+ZMpq=Mhq@*Q9 z4S)p9fihzA{7@68F+zgWU`Ph{*#7{Uj^aI|z8gh~4a5sy<5Tpu05E(x!fppoDz{xq zV>tk$^pmZiMH7l3r7!{%vS)Y`xjkqUOMpsqToOX98wlR@YvvGqYF(tAR!3gH3X0CK z0y2~?Qcx`?@9R*Zc;W%bw&bg@?eVCzTQXD@NQ=#e;1lT<3W5^p9>x9jkr5G^1e z64}5)Fo^KBv&o_*9Ze<{O*ZI}YN7Ze3z^IU+7i7E+dwxmSz;Y~h=9 zthk4QR*R$|2KSu}GZ64vNH&XQ@7twv-ghA@1ZOecMRK*@m=|8=f)rrQqwnQeA68YA zi$(3Z{i%;FNJz>ON$O^>Jm^>i5=;$u?_PfE)5K`zLW%{gX*HePObn$;Anpgomz`=p z5=TR=CDKMkNjHcB-j(OGYtzr8&L@`$0a*^Pb)>tBG7R{{2p6?xT2z>s$=0F*W&qCS z+X$+h#amkwi&92uIpQo}1LaHSCm}{-79{IFv;n;BfG%eDx1VYSpro0CV}0o)X3=L; zgrr>9>3XpKWgv}>py(?+i1)9xU+Dn&`c-(u>u2U+d87k-n;J2U2uTP`10*EqdRnk2 z#&;$@RA$p2Fh5YN@rKt!^DX8Ne*(9VVq{sNKTWOUAS`N`P z_FT(kfK&n6M0KdVHgxP^lDKt2$U<8umZ2n1Q?&w=Q0u9A866iBc{}EfX0u_jAqgrn z<-zfoziPE&AOa8<37n@}&b>zVu6{nT1*v{AcJ+$KHXSDqk#3)9%(`c+`cj_8GMqB< zDlcM1$sIP!dlPfgxR_j6O0trt0g0V8-kKj;9w{mVXAIc(AGLG-wf_KPu#PL8v6)B* z-XPf~Z?K(r(wsP^S97gPQ3Pg5O^grK9X0q@5tRpvX(Ky?doiSm(ERnILq*0M8C)c{ zVhxqItX6+qSN2y(akARnmyw@0i4Fik+>mtbaC=sTV%3S|H_K2B0$fsk_fr!j_J{(! z_9vK?=Td^!PF`$U!YO>x8p;#^1Q=)-I$GZv-|LC~%ILj_b!u`VH6eQup^xH}tb3|C zl=gIk?-4UPp8o)1l$VsWC@G-gB!CFNsh~~>ykw#T!j?Ag+*bI{$>mRL8wvtta8frB z9XiJ1x1$)Bu*)u}7)*z)GqCICE0XpBNlGCkFI7#?%R^Lg2uT7J%1|Ik)OIJo!nW}* z(dAuMu?ceyWCS1>Y#9M1S0;CljVJNA z>!yOaXw8QpiSXZ1G3#5fib9CykWrkHmj-DaEN%X&c_&rhV;-`B9G4pA0^n=}$$}z2 z^d^$;JDl5V2`)@n4fOKw-nq;^(CJDS;VnvPE<7{W^KK zJ%fFP6*!d;m`^aD>5wiC#GBaHXAbKjE#_?pB1%J2CU!YSqCS0vV&SVehCBre4Wu6m zWX_}#EJ+p~TUI7qb-p1fQ()Xff)V6N>8#fq&iZtnW3$OtDucJA#k@~v% z8|z&BYp0N2N?ipBE5xm|kXyL0BoZTD!@Xe*xTi}QrFQlrO!n=z{{TAdVVrjo%N(UG z3uv3c0DhuGZ`d7TvtqGodF8pz$b$*ywvvc}w|yf0D`Q!oUm*+5u3E$uHbmy%<l+apk*KVA+)@-+<%K3y0&m=EJCX3F;enMe^72o$Br58O1V>+` zZhH33{WOj+oMU8oK_@UO5>pX>+qHD~3+}DY%P4aLV1+lYdjZ-%#cCsQMN>hpE<{uRa2q^x@-zS-vlh#}Gh5)5oA zxP~b#r5vXTE;r$Di8*Fs;B|sKgI+g<@ibx<+EP%mL?zc0K$!Q5)P35!_*_eGEG@@Z z%^npFTpWj>{%hxV@p#w2pOSQsGKD^{>QaTE9MU8JHnqM!RlSryg@=-*AfR&yBKHD8 zH<58}{VOgwwvf}UvjPbv!5qRMh#E=hsouKSd}=Wm3_eI)j$)9AF(=(7L})Es@6)ci ziQ{0nhOr6AZ<)-+S$4SGeJdXoVZ2%v7=0x`LxpZlh?pL`9@X2#u;wu>AtNAw+(u%M zPfn92YmV*(crby?9FR*qvY!H6={;th`dbv5pjK0SFY z-m%f({9hjCAh1d-Nm7;|tmr(4YV~b#L~|PoQ>DO?M3^!~$s=7ntH@$k`92_pr~ulG ztCVa%%xF8;TMdkD=g^l@g0;$9NLRW^*!AgNUz3S_FOGPohVY2vQjfSG6A0} zfd=EfbeZO~Gh|8x<{`o^K(X|hwe+t(8F`#Ku?%9C&|HS%K(xdS_x}J?U-DSSoE+27 zK=6ldLc802WZ(C%72|%Mx!ct>h*A)=g51GP$v)F~3g5imXt7D>rDzCKWGoO&gE2CC zZCrjI#_+BTj%C9Y?Btn)c?U`V05$0u#5Ci`(6 ziq$S36fJI|ZdLs?#1K5j^)q8$QwNX4U|nMrhI65%mXt)Q5=_BAQRlUK4ltDQOejk# zL3=E;v~`IDA3Dc@K)~@lULC`oZZ=f~eghkHiPzy=g=3En#;plZRvq$7LOtHM);H_5 zbj`k#t$1u(nbs7S3KFSMP`K=UNQ%zV6wAxR2hSj%YLr_k)=yPzMKdYkxU^y&lp*B7 z1t5VN7_?r2*AS=N&LEH!BlQlyATN5XQ_wex!*X+_NcPDj!iR*~06s+CkMn~J{FYMS zOcfI;0MA+LUOx})F(od-Fz$Gu4|nc8E47SUzwv8YRFV(@Zb5^6iQ1y_sa=jF@)L>8 zA!~6&xEoc#-COh(t-LCO1@?wRc|uLW>2q$g{MR#vp|@b69Jdrgxu9mayhiq)jdrlj zI=mKQ96%~5D@wEGi-@DI_P}fqA`*-Zich@2iF>#>^pPN|1sE{{SlI1paRv zLQt`s!EFKvF}GU0(dZuI1>upS3qJF3K!9v~`cfUk0Ki6dq?F2149xfKd)9su&oRhR zfP5P6cmDtt(d3q0C>t0hN;V??yVL0oQ@CQZ<#JCf%VSbTOH~R%A(v*7lsHcMq=YcjR6rAo$Mn` zxZ=X0BU9zDo7Za-hccB2NQejrO5t%Q^N}4qtX2@=9BpVh)?kLglRrqT82mG? zpgA{^NG4W6+SSSb91Q~T^1b6-_qIJtoWMR=S0G)=DHK7f; zqluZhle~QDlgnu?gc&44S0KRi=~V6|9D-Ev3)UjStft^{3|MMJFTzY|()F|Rh-FW* zu!7>k$Xwcb4#p>|>esj{4a zStMBLr`EM$pLO=olA>EC*n+47V{W3n=isg&oKFE5bludd6c%1H(4UX%W-Pr zV;XtxW*-os+5=;jRAaaiyi>S7EjacvKBD8TsJ7vq4^TUc#b=MLG~kx-ismUfuw=n5 z86tnhtDK0zHJOLX`6g88NI7phX?-tS%Gn^77s}==sVyX0CNFN0tDkHPe`i$jj2F-E?PKlq4+3NE(xQ(v`y>QuvFwbf;Bw!AKydZzJVa($>jXQa~Ar zQE5@8-*?iovxZI$%r-L?r35yCQ#n4DkcQioG5%W!?9&r#cZZ(M#l zCj_?;=5%EZzbb&4>F})%X2Uf4lsqmF3q-`+!5fI}Ts}XFQt)_of#w$-35l|gWBXH% zeX`$AL4!x;Fzh8E53Ft=AvTMhjL_nEFhUpyE2T=!2~;0Wqpfk>d;U0~NpeGzB0O+L zk=oUs?$PHxHR%N(c%e zIl+UdHa%;HkHRYur!gy7Y1I2LnD<7vjkK+}Rz?wqikn-Gx{;eWoTqE;V{XQ}SeOMb1 zTJe~pjdc#Tqs?u&AdxEa6|!TUy331L!X;x9?N-uky*#dT{{R)22K(5;VI0>NDs{1M zvAI3zd`l6Z4B}l`P$>dtAfNZGZNPCPaLH|y2J!@?^32IS`fVL5^U^i3lsZWdyteHm z1qnS<&`7L&HKen~aVu^?%a#Ikp7H5Gj96Gfk`N|fkX!0JqxPY|RIs@Drc~_JCGs2EH61-Z`1d){GfO}tV)xzU= z{7)2l02O3gfFu)M#|8!i0E|0EK-w$@<~oyI{C}^X_gwt8y4+WcVEAVXc&{>_LZg^Q z_lsx&{j28~vZm4bw~$64>70WyYpKMi8;WgUq_*Cqi3f4@HIQLX5#kw1gf+3!d->N- zkDnBEb;Wg+;oCx%NO8g9Dzr_&uD1%|$z_o4PGZTsYf1Wwz=pp&#azkm0ily_)84%n zHLv)rD`-+uj$rW~wzYTa{v4$Imxy_c9ufRXhxIOz9_bzTJz}_6JVqtvU28cFF6%di ze?R808;D;M$Fj=E2{4!{IS1cr-0me9ToUl@Bf#5}Fb>gUA1X^`5C>aXCm5Ye1VL6ll zur2`71%eakZ#x;+- zQrC+JXb@#a^AjiU<4od9ADeNY*yeL2nb!N(SDI)yn79_a-s(o8k*dQ3iNyuDNm|b0 zWY<-^Ta7!(VE_~#{Dc^e=cQ-iEb`Q+l$?PFT})3;m#se$japuD@EQw}On|8e_^qt9 zc;M*7Eyu%)#g%(RExVJyu9|IJ_m*C5$5f-R8_A-361>GlMOLvU;C|GUDGFS~1e*eX zdJ!<#bgw$pl6FYyeCwsc-3!D5;sHUBl@lUw8M{_2Mld?lVJ5&vRSAx<=SpScIYLYW zpfC(|qki4IW-kcSNNvKWmz0%+qbNxuU%r*VDoRsgONUwv!3t!=?z9edg- zwRKExXnhohOKELx9YnzTRb%*i@W4496QbiKXiCUPCtXO0tpF>K6Yl^CK(L$q`qq||@%K<$ z%Do65y)7-}BrF7-2s=|(45U~}#GB1bGb(xb8Bl-s(t)huQ0x^bf<%M?Bfph&I6np) zOB#Udg$;zu(k`82UoT2(Q-;AHFBa0&rA(p0l#PFQ^Q=nZ$!jMiBbz=a7jS(kiT8e* zIG#PG+;aABG zsrU|*Y>gPaQuvM`Z!ari<^ZtlD?V~SOKAhVT-9=w5q_~+u&gE&N~IgdzCcmXEU=J* z;;tqvCV$Nv*#7_zEs&(3{*q)`v!NFv}GA!x(8`9hoq z6);Zmtv$AZB@C03sTc19T0?1Yt|3k@`!%kcF0EK*%Zf{FsO2X%r(FfaQIrmTS+z2T zLyi~)YrUXoHv@jRtd600m6f{S79?d8J%{sM7kIuMoE}zEmAK#`#jJS2ooBezcCJG4 zYsENaAm^hdw0?0oMniaO5@fldJ*kM{Z!MK#u__FqbCyTEdO*^H0NX90Za5`k$wARw zXYYDuEyb2rrN!1iRGA)k-p8dB$g~GkgdhYFY5q-gaF|w@2@ar;?BsJWgY)|}lMc3! z%EyUsk?E~#P9!BwsmTt{Gf^Fcb=2Rr8C`r936(GN7^0+L$R(hyRdaPKa0wIsD?bwA zO=2E&vXt_H1TQg&%WwonyVoBPjDHdko@q)Fo=~((JJuH;QV>v7OzHvNjGVnz1CC(u zSame4IzrG7E+op0{8OfzR$PA;!(vJnv=_i{C<`X)HzfVuy#5;w{xQIY(5Dtih!bAx z@ZaIi5yLR(;yiKmJcKL7giPFZ3Kk&TcJ!fSp330wan3SG;P@w7Wfq34hJ+Gz^C#A{ z@w^5X@ZK4RF}VK#&EqiwOL%n-SeH2=sIby!+PgpxT4x~CLQ9Y z(xa0vhGfsfOB%@bDLGcsW+p_L)9lid;JTFpbd60g&)Y-1Ll=oclH-NRF_LCYYQf=g zrw_~t$k9#7IeX0q4rJnfj+-AW1ygBDEnAXbhi#9REIB}*U@9rGGM=thxQ-ddbt zq^zJ90f;v{%mH98@u=Sp0SEH{29^NkHxPFwddAhy{;iR&5|zG7t1X~HWmg78ppRcF z+r$({)N3%NHyeH^3LGH-x($yq zA<;8%JArD~jQm~1_>#bJ)h!K=>CJ+AM^4?VY`=k^aHL=|0OKwy00Fa@l6DS4{LR&gC-q^slpB8AR3jCdiI=5q3~0hY&T{p&8@Q9hoR9IOWpNO6|Z3J_B3SAEiW(Yu z6E`L&cqY}0ivBHaY=&^{l1KoqP47Qlw1I0H^SqOaO4jrwM8ZVn=r#D)ZFpWD%GwMm zO^5*BF)G|lK>f6nTataQev8PQO2V446nF zFYpmH#^XPV#y<##8qSvagq~rQ$@lC(NdDhi^UB5y8aytJUT8|4`uV2M~ z60pcCWmyY~3P>phw%i)T6XDQUwpJYsvF@&V>M+ zt(hY)fPb^Cb+Fu56vK_YhSH_Bp_M>F3bujRTgs~Zc|8-Svm7~`VpwcA+k}z^7;2HA zQo1HdgpGRXSr*eNPbEz(xPSt=i7|3#G2DavX)!r;nOk&JOy&z3@9A87=DYn;m~b(u>l zK%QHU87PC)?WgftTte7*I!YS=1tqMoc0NS!8&bnv%r_QKsat5vAz?e1CQhfI8&vrEZn`ft zR;f`=B@L*Os{5q!a zt~#}cAcBxd1$U1Q+WfCfWdX!UOKrCjR^{aN5ozsFoUhn&acp`|EgzR`Ee%ZN2_#xi zrPO_EJ~M`3@GO$NLUDM~W0r+kKi!!07J@bHMT_FNhum9ubvUxI4ich5i5HM}w$`wv z;4sZLqT{2R79ZRXQ#~uB^q>8hm4Q-0Qriuzn>0*C;zzA|UJZgML2n>$66(@PTD&2- z-8&f?`BqFQ7{_zv1DOq_3KCrHeYC#S(`orzihaP)X(0HUl9&;1LEo)&@2h4nnJ2c# z@k>?}haExuyJ;<`3AvaGgKhNI#trGLyo@d!;ZzrhTW2XMRDl~2dDls?^Q?_xS#iE% z%7V~GG64v1wj}_?=3vjBl$SA$JQe~FTOvwiAq7O60-ZYfSD(exTN}lkJ|wRYT$cPn z0VGd#5wWnpN(@uW#h?sJt8pPDHdL8Jl@ph>_dgL?+u~^|X+cR#jY>*X*g{OOHMk{3*aQ`lOoW^F1I{Q{ z#xYse>XPKRp<|!}KssNgdZzGUoMIb8No-L%nCka$Q@T(%Wr96(K(9 zoA*6rQ_g;juRbxM4!D54)+qp{6Eh&0(9CNxXRUPbynJE;5b~KSAQO|qr!IA$bopsC zF8&&Ol-ja5=P^K~4S=$Ka_Z`QuhZvU~ zmeR-d8&g1llcmY`M1l^|3{u;}qZ^CElqG9Q6>uOSL#$g{5Q&eT~_eyK9!~S5Hh3?q$er}2H>AP z#i}-ki(@O~FhW!oY#`WzY)FemCGW&1Gi?N{7!u`yQ6lm4_|~Rg!4=`12uCbg#B(%M z+)qK$H=ERDiVH8|1`WnrC@se@!6_t1y*rUH6@Q!#6||CsIN>*p=RtWJll85bmXw@O zZA>=CQF2VI6RA7c9R{5%koFxu&9x+CKmeo*E5!u%+C6PkCa5aJxF2nhr9S1r&X55U zpx$gZtyo+FpIh!?Nrbg3b)%RmUA=A6X==d!S=GLk6}M#juu*N(sJ8uR@VKWr&tcMw zWl~&mkO@`n0niS;Yj64+3LAN8J2Eo{&Ew3Ei9KpKmYEA$+*__%SZn}*Nt?(re80tV zzclMjN-+ssC|N1Y6@7baq4TNvl_{X=&|O(`C|0FMVLh!Tr^MFfVTtFdK?EUIfDE4@ z@a+`jw0TR!7db@Op$Yz+tLOVry~VKaU|UF95F0t5*tVifr>XPkM@q#0E%z|xL26rM z0~5B&gWT$OtjcSrhUMcBxh|o!3FZ|6n)V}aPlYoXif0doD8hw!0Wu)wkJNmv9b&nd zbUO4l9d)*|0DLktY$Mj5))}50(~5C?_X?n-n-5Pul*Ma0@QyywF9lp?NJWV6^_s@v zT!7wGhSQZrCMG+4E2$?tp~WYf1cA`ZkUDvHp-LHW7Y~8hCh(v}yI-YjsjgJ3l5-tE zh}!)qvvSf=l>u%INip%-)u}8gOy^JZ^G0=CAolP4(YuC9TWLyGeCZN|THSo>bT1Ev z=P0PU35n?7b zvf4=`8*;(`3LbSai#U~qq;iT<3FV7K$E?s{`AnxV3OR&`Hc9f|&aGItv*jw~6kAv) zu&i2_hC(j89JU*t=f1UB06YBg`xLZdxh!T(sGUi_Ek3oM^BK}n9uffGKp?+K zB$+Ac@vXrB0QnrCw9<39U?`N$VJ@lFBIed3`?_!EPh|=V4k!tm#iBsgt+rI6hVrTi zl27eb>L8!XE#O@w!c_nZ&#eQPSC=XnpfIIyZ-Go08)S^ogqVtf548B&msGabDtt+C<`DR~jBX1ASRq=}W-N`ft+ zA1V%NlFYq@FT%8nHo?tFfV|WNE%PX3f}fijjbxk z<;{lUuk+ry`APzmVFKjM@8?mcomo|$0mWE|2Gyv9ZNMJIU1sh8B2kg?xOG3l|ZF4^g zJFdY{BwIn&f#_060z!!dd1+KAt3Bc^WOUl8Dzt)T1>*ixD9lJOR|iye=xCEEg{BOd zCrSyN#%LpOCvUx}9u*)e!>JXmOy1{RWLi4VazaLInaMhTnrH+O_LXbc{875Eqt-xtUQoBe^%zpD>dkOp!PAqiMqg$(=zTy>HTWX_Tap1%;%~!kC*RgK_<#ck`iAfk;-7I?*$r z$_fE9d&iw+QOfZ;L9iFnrCrKQOLKoAy-Mb{r6pwq1c@C!UPn0n)q3hSymKh_$pb$(-$?tNm)%sWDu@M$3PI7!i0b|h5m))w2qRAy>fHP?W_x-BR zfg>nah{{as(8t_W1SP^%kYA;w_3iYaVia>ZE-0DJ0wG;=s7Y}kp|um7z?lSWe(y_B z8DVm;Nx9e!r}(I}`$Cl=C3*?ac|}05)^p+TUtlj%67qoXjVGw+1Z_fumyobfk|yNs z9Xpw;&Q_8XlR0e~&cduQX&`{1oo8@#wv+`r5P78n>X?q6wM$4-rAabK1i-NEMib+h zGLTFG5z=TD+2uE#5i(9dE)4t!omxn6A-PJ&_n6S2Tv}vNI_8~fLtUCTg%cYRHT$42UG8zD73PZ zC1n>SD2eQRzlw!Oml708EF>r1Hv5`}RF>gc01yU}D3GSpc=rUA3xoVr2$idunK27g zskjk7dsI{)oZk5{n4LG1-hnA9_fVYv*ICT<6i`_ivCLP3$5GiKDN#=W%_S%R09XITJ&rLH?r5apFg_YRutK&2L-+pXf= zk4mtIGul=&1ppPKfxeXi@c4lUS@A)Sze=z~6P+?iaDgL0M{h0aZc!xy@+adR4Fb|K z&SNVg-F<4xGhBp$A;1h=_aC(c%#BTB*;CgB_cpMkO#e-+}vxlm#eie5#&OP~&P!01b#YoWSoty*QwfR&%cfYJ{j~1VoXq^HFYi zvSrrd-Ke$am6AYkn@A?dtZh&x$(660)SH{>*VnxgmR6k!az&J{b~gjPMJFQAkdPDs zB<0(f`pifH`f0EUc#Bt3I3eG z$=u9;6#!I)Btnux&B!}miz1+?Ib$T`P4B1gOUROvGbrg2KKG*&nPXEj76s?_9lWR* zd`ksQrUk5GXYOfg_NgXRvzh@(ze|pts1rJbf>0m>Fg`yTV~ALpIn2g=!88E0g&<`m zztU0!-^!^#6o3k#k*T=!>G7sn;6!IzcL@d$NT0D&FiBV`Z5<$MZ3*i|1ybkz4<7Z(D==@zR_T(YHFZ`Ah`6jz?)s2I67CX%@to6fq; zZV3S;K~Rj>Ff2NX$h6q_VD;LPptPh!a_||8G#->_aE}Q&j$36^`U=em2y;}yJwfYCZ!(vg z++6G2_NG9Cl$9YP!c;ULwdj(7Rd7P$+0OH^{%L4qOq`1uOn@^R8+8ZaS{%bdKqQcp zl*sMVS&Gcl#jK@skp^;1LD1HeVn|SQpchAnJBRkxxm{T=$Vae*Uqn# z&PtSog`j9af}_^^&+kOHkfD)4$WB>GfQ!r-*QEm9JhGLNTn99hXpg^*J%Q3dN{|KN zHw2Ef#$8N=0XdcLgKs<3Tf;@R6cHyVu%KF!sPK@nsv^xE$L}>w!%n~6{C^}jq?q6A3AR%AZbZTgo!zp6k=?mJq1N{ z3+qgUPqHAB;kto4{Jnctb&f)uXPK3fP#tlp@kWLYrjHYcty=8UQ!?{r~umM;$NFx4!N<#5I(>FA?BwH-V z)_(s0YRn%T%<3AQM(1-?;>**e`GBI}yJi8-jfZdIvf>uu&a&EV8KMZEO$pvBW_H%V zNg@o!aU%Q9-&(@*NIAk*B>woohBF;_I#;p(`#B3e~L6(WtC=g|9d%IWkxTT#L`f zx%ld}^pC=L%r+ki`41s(hNZBe43caNbQ@krO7gs861+bXSwpCB5=0_R#`nMYsrYjm z<2a=Fpg04$o0TmGNfExY9cVuiVL1;r@IersX#mbpO@ZlLry0|ylWTlXIC+XC76r78 z93b5Eo1cK`Th_EuYy_aeEim5PoUy>?jN3c01!k4 z1!f@VV_=bZ71Aqhd^rJ>j%WV>Qayxb^1ZrO$&rr5;IS8Mi$G|nC|7=lE3?CY5vh1( zwxv0dWM)oiLXTVMK+-kuTzdX3lhe09$lteR?i%BmXBtp-{$W;W1Pwe8uQBT#>&f7- z{{WTZzm@@0BP)kd+owwJqliAYGbw3xDy?7rJE7>rYDYn-Gsg5FeaNc!}zM}xwCV+hh*X-yP1ONF=~$@jd)zk2hS z+<9{kf)2C-(x5}3z)9)~j*D zUJdvK)$;&RCJ6(m^6lwe6n-FQ5*uO0Kw1_3L<tg%96-Z7K5y1T*N`@ev)g$XYK2k^wo^QHH&Dt+lfQyPGvULgwBJk zYZSaYc)S~Vu-Jj%yd~HP1}`(Lnsyri_8mDC>IxZNa|SPbk>_~S*wb+6I2=;a>Irbl zpb5DaJ;8(9O6R|Yv@yh;eS(~393u~OtCj?UbOLr3?Q7PwaX-s8hMia`4h00P>m$B` z`kJ*Nykc8gQVT&mkTS`c1c;4^w$;aT0K7IZ;a-I;NhP-utkNguMf+Dgm0HvIhlnNR zv4}E;+94(;auF8ka}?}H3U3*PA;BxvA+d1+!AJJiO<`NbO*qL3E$DLifgQo_BGuC2 zJV98T3kq9ETe(!)S|F<^+F*HoDP~Vfm4}C=?0ypw!?78Q;F4X+B-l^DYe&O)aC;DN zt~jFU8Jl$4MA(Sm>ol%2!yYap5Qi3wOcxtaAYXm^3s*;iaUc1{9Cc^%*v3E#A^}kr zo9L4<6u(;=D_VGJnOWu(0hEyGf`^Wy4_H)9Ji#h2e1OKbKk;1gn{sFo@S(1?z_HDY!D8Z-*;s zkq6JtCjBdkgZx77DIB=u3Cc+`d5t{&MvUVc!eTRLO612WX`2q-dihsB8$Q=Brp56` zF)fC3DGO+s4c=|%Vg4(hgLz+=$l{WO3rSVXZ`zlLc`i5NNGtxRak~kPN2$`e{{Wb9 zc-?TD5FlQ60DX3=oSO7)aVBthoJ$2O#5IbDbR8Bv#f(SJn9mb0I9yo+mUBk_UPkxr z9qY@f4mzYMqPHAqpvJ?Yj-BhEl5u&}o7)#MxD#TT?b4nw*I5|g!^m+NK_1Y1JrHz= z-g?&jCmT|c$z&yN!1knWbR*~ITqL1IK%`_Q3W}0o+Qaxi8nCsYXypJ_lQ9s3)JBz_ zCZ5|V#Xg3f9KokBSf);Z9`jjvjubQk8bT!oQikSw{3+O#sZFj@1B97@6Z~}aq_VZV zwFgqE0&F!ELtYW(5h?vC%#aSfJ{6%nLA*jlk`~~&Uv2(X%5~Kjc|;@yPE)6t?fg&| zQiBN_$c~3WGHZ&Vf^}N;Tu&c_=CawDlTNL{_;x zoI+69pL@l>ugHH>kz1ci_^&;v-tvdb@!n9q~?Xf{4| zQlm0^aGk?WFr`aNoWlcQH5uWpy66frgJ=fHt(bf}OKD)B!M<7b_|p-CQj)ZxP}(&S zsOwf~4{})H@1dlJLurUMxH{H{l7_IzDhZOLn|=2cPO>>=AdrPvT1oF%83+C~q0A-p z%WAyI+Orueu7{A&3qn9U#+IgGvC5L$XevRG0M>pTgi?}LObCKb^yX3+3kU@WoT4}W zD_f#N$dXs?7=TZ^6vwfR^TJ#pxGxi>EedHl!;V50AeoX5-j$Qsg)Zc-L@3;RDIiuQ zLlUPi;}S{fO~6WsDA0DB)|Rkr;uFjkBK?o0Ps!wI3sRs=WEzgNK96f0^IkB3w;LiC z?-C*{OLr1+I8u;Il?ex5y{Hth+mdYGME3id%7V2di{y&|S&1_o+8b$wGy=o|OxY*D zeWtnils<(mq=7M{*GHIE*+R%DI}Hb)T2?Wa9AUK(O5lh^zuiAS30Y%}iT3@pQ`NtZ+m^__Z()5LJUkWxA74&)x}?bOb*Nn;Z7dH6T|lJKqn z0NUsG)Sd0Er&B))i^ZH{3QMaiZ>x7TI~v`-YVVm2#n^&))UPG61*T(P}I5UZ110ifE0wj?(p8o(!*>a|{qXIEJ#VJTi$>piNb_P2e4SLqb zR;4mnTS#eXB%AFP`Br=`Y)%cgQmo*oF#y<3zzWsHFt~IE%9KzWY$ZoFTZ>pu4)QBds$DiRa;)NeOQ%i7POWoqvm06O15W@Y$Tr8K%V8#ewNN zcBG>a?mq;T1g{K$BErT-gJ_-Wtmo2iUfMDIRkj&?GSGa)l{qkxxWC=0d^Z@B;nyls z3yJn*s9Us)$MalNJ)KUV9DtG)225$bg0wP}{#d7)P~%=C5S=`_{{R)+$0MG%aWT8dS;tP8c(~3|o1EJiV;=9;qPIMNG zj$E9!J?FpiOEM>2B=BS-23%C3-~4T;%#CNKTlW>@`1UcRr}C_*WLmsP0NM=vb+1Lm zIEX`Em`w7?yy%ewUc~QSR}#qlrXv#Q1=qdOOxsI;6}(S=)75hDX#DRHY180gvV3u5 zfNvdZ)H{rA%sSMUbGUuwfeT7b+x}i;jE#7h&dY& z*lb9SpL?3^)t0%*C5E7dW(FXDbb+-@GEm`{7^&|MJdyOru3s`2rLdDCAB$V3V4wb@pnTv2Gu(wDv zaX%XA#~${%_1CP87zWSg&=ipB&c@Nw4R7LaA;yXVPz0emToE_#JJwWTUu3wq4=L8- z5UBZz=i;#;zN!ETwaV zZNdRgsz2OkLV8!8Q5=LJ1d_8QJ5Qfl-NmseC-Uh*Zw{4CaRx@jcI{bQON_Q$X&%g2 zE_VH@`I!-@($R;-a~9ZJZGYnm_mA<`oqCYweb0ZUPEnF!1P7rfU$ z6`Mt6B;1it$gDF#Z$i4n&2=$YmA1}6tcc1Y2ED~20f#~`>Ul{@j1mI$Kh0-aoW`g$ z+6swPlGxUtXfuakUgCJ1h*{=AH{Y=CZ)(ziEyLH9Y38}8AltS2TDq+8hWK9qe-n&- zmfu+ctTJ5o)7Cmc^P2M~HYIinP#5bIX6vJk;@_B2E#+x30S(Ln`}*{*a-1u6K(Xt4 zZASBG!vIQx$%ElKZ%NErNW2mz)lsq{vpD2lNxW8&p@wBB3c0$XJw0d{QDp%|Y4HLI z4@y&y976rk(I8KUu&rB03kL2j!OL$r5^~H;QNwMOrCMqN4_kp+9c_3#8)`13E#DbP z+AIWYdsi)4@eW1QvwDxT9LfeG5(}0@+?}gtGZv&VhiwWWErLbJ%1OL=^{nk-&K-_q z`_>f9Q?0KK2RoRtX^Z^!s~B?;dk8d21qmV*I!LR+B`a_RBrml$7^EaN5|WDpeF^JD zl!YObr~d$|Oy1++R;Nk=GMF(mp`GmkJ84g8g5srjj=CPyLAVSW*O6#Jbd#VH@u>Sw zB?U@KfM1A3$NH|j*w!%EAaLj^S=2db06>k7^IYtHH1QltLOt7PAkOpaMsB(2X-`Uk zoVv!<=+T4!0EWUN67q6l9Z4-A+Z2Kz8+yfZQH=bOayEpA0iI{;_||71dlm1ME+Xde zHXc-zve9DkYsEoYi-%7ZwVNV}Wa$!PrCVy{k`*T3rm5#S&Im|AhyYP?2zzKq5!Rd< zN>U7kjm+&?($e!-$6M1;hD>H!z#Zt5KQf3Q0!GG`_AySpwTAh$|T4`XdC03hI5+3oZlH3wCB4e!! zigne>l1kSAZ#z^AQLrF5AenNe+&0^}DY1DpP`bvZ4fe>s?$o6u|K1xEMlQObJ*eGB+Q!tAqJwQkYYqk|Yo&{XD9}FSwPK+V=>8 zKTTzWRx61Y-W-w3YW@V-H|yvHI|__LjiEup5`r=kI_w8s`ur=Nj5Cd@>CUAIxRHJ9 zr-yOO8W>v8u2~l4nC1cWslVxM3H&;zRhXel4ft}AbI=I#*VdK)01De7w^FcBuNpz~ zv~}K`zr;y05DKR#S{GQ}_1ST>Lf&W0UNXbLF=(#ls@NkC3i|TotAe zx0DLxmc@#%+zmJQ3hplo+o1|xAd*um4N77J45={?H{4ePjs79_Wt=+sU#FPaw{zxv zs(sRR{+cnbVA{szK}H$Y&n;Z3NX|FPHJvrqV!7<`S$(z^l(&b_Wl;bf$U6CtO5u)f zF~-o>iPabhOzYCR_znO`9Pr?5i-zMk8eAWxRpw8%x@i1XjtrHtgbKv!l2)kz185yQ z`*f@ixx~2J#V##Ps3?@Nl)`4_I#+80!0?PX)1@nH0i5!{R7HtBI}Y{M%Hkbccw};p zX3GRPL?p-xJw!?K-ns1j7QCZ85w_uAsZJFI2Go#2y^Nhf@79$601CuB>t)uXFaSB2 z-0gnW73(ohv4h4IT@9lW32H-NfPz4o7Ep`mFM3K{ICrz5ODi&#+)yB%)8;qQCa21p z;3I-Nhf)dvd&MLzBo^mof4%0IcpCZ31g+J$vXbDwZL*Dz?km3bEjbjRg8msNnx?@Q zBuUJ!mohiCX8!<{$lI$@**wO=k2*;!5f;=F@T~HxU}uLurDScPpDu1#C&wC_>?6-w zyiWpu4T;0}k2H>AN`LU)$?iMcUbf30lkmaUS@SbEJ9orIwy~#@xgyDsL$& zD|ja`8~*_Dk*sPfHkikW!L7IRqcYt=5#k3Z{^7S~twJUHCks6uQ_SS0m3}RbYWMU8$2}dvj)>D;60g2LQUfy)vJ_`^X zFrwp2hZ`-Ns0U*myY;BIuoz(DKp|$y3M7D=Y!CaiTC^vLDfKv|l?JRp3WJzz55h%7 z)wHVs_CJ_&dpyJt2uX5BL*)b4P3Qa*%4i|A2XOATR91i#w1e;a+t_L8tzvT?`do3e zl`VerjiAO=X$IGhhNBpqb|j(J(6-k(Lfj;fb@22f{Z!=ut`N>26tq0D0$c#3m{}31 z=yZ=d*@0gS4&m2{#H+xlExOSeZf_vyG>v4FS=7nGy5hK&FqNRgzR(h(s0lYF(O92! z@f4`xSX*p1tj;*$1}8&dW93_xj;r5_F#I{3xDd4BRIh!r=X-A^d&Od24~lWjJJQhl5qXyjbgLD%2FG|^JQpMsnnC51Gzf%jbL7~S~+jxh6p!^ZKm5> zi6`0EOzYH*I&WAJi{e=2=1yRMW>ho>;TFHh}8x(i)lX!snq>592Wlo2|Vx)tN$m9cFbE=DCjXd~zi6kYL=Hfz#5qTi4rH zhiKxK+CdE?mU*)xMCz@tUYIKj!*HYW#ZD6qyx>p1bx2Sq^Vd;rDGdfN$T)Sm%58V? zkN`1bF?Acrt~12{!oX3Z7>un5%n=n1n zL5jX+eHwlpw(!aa`fi&5vulW*HvQ(Kk1Ywi?lS5~O05#2ZxObHgIJF<7Lru8C?5(l zCPIiCovUsG2GW6AlbS%49~56p_0peS>u0w?gg=f$L^P(_5Ym*00LFy(xZ0YG1CPIK zf%K?z9JWS)(9EAxakVjwXu_a2g*c4oAVz60Z5H@?)|&xnVG_nQ(zzxI(OcMTqzv3@ddMnhR#w|AS_(mYylopE0*6L#N#ms zn{r4pb+CX*I@-su6}fLMXKkO&|^17E+DGQ(OCi(?I*07FFCc5#nds2<5gklM(*_uU&6O_8lD6wBpk(DpkuNBu4$>^Q_t?yodb5 z?dJ_D60zdQKKs^Wy^DN=AS}p$1yuNN=CjT{{wMxF0Qw6lN;xe`oRXmG=Wt^z4Z8W( zTpt%|978Kw-F(O~5xjj5%Dk!J{6W`pzO@B{N3>Mmaq^*F4-o{XIf?O&D}Snf+x?gH z_J8v%u#?Ee5VijR;%t-!8-p`>I(pG!zY*ZLBgDUwD3^Lnn{2!PUhlJ;$=iBF*nntRrsgjpV@yeNcRun z=~HbSQr)yF1d?Y|_uBdz%JaBPE2~ZsXi;TBZ7sy*SHk{B)hiqiOGH&rTstoS{I4O5p3I@6`3Z8u7Td zo>PutNw_1J3UVU$?Xj@hYldG#t%9T!ksQgke-_cFrEFvI0YgQSr5lm}kVo;Ro7XGF z{5wvYv6$RQR6CcLgymRJ0EJGbI?WT@N1B|@G*BA>A*Rk$00y1<{3$GPMzF|3qYwFX zEJ8^#a&PgcerFAfc^v6X3kJYRzxPhP{V#fq&%(72D=#ezICZE3qZYZ6RTqxh*3KH+ zWT7sCu)M>P*~^~N4EjfSHIbI^>vWKk;Z|tLp(jJ!_B|>1oJu)G4TF)e2txD-46DMY{o6W3FI{cDt@f_Y649Gk$6H3EScSCFj9QNuZ*M&xUu@)o9YO6kHH zZ3!$W*qA@4%m~~9Yh%lA4A?@Ia-V)O-gdXg%DDJ0B)mGx)Y)(n6=P)gS9|HTZdz3H zVd4VB69_Y5GH>xU7B*2ih)lM%x`@gOffpCte$=1Oy@^^7zz{$38S(YkN?1cB3%|6T z%tfYrys2w=C9%qcArM1TIllYW<69UBWh^evECNaaxWC9%I{TS2wi1=)%0PljcOP2B z%g$nzn1z&0$h~Wlg)J@*W&jCED#(sc?{pB+0ya z4gUbe6F7xH<>e*P_A2oXv-vEABPvVziO#jH7$_-8Ek z-mszIwaNB?Dm~e!rxLX+1*JmJnHP@URXDY&u(d8#0{w?+y>phrx#YH)jc@U-FX9qF zfl&nuli=UeYU#_JEAt>T4TOXZNwA*%J5&xNg{evq0D-tZRHQN% zy>nV^)1_!eACl4%8!fm&8T6k1QC)H|7T+--m?C62cAC)2Lq{{I5Qr8t8_A^miwH`j z#@qI&u%2XDwfnrMQ+vl4XF#{QIQ!KNEhi9*hXbRBzD>}CO!=K)EC0Bj9wE}oJ`|1A)j=g}lGbC_>Z)@7BZ`(TrX}l!V(+*S%yBn=v}t0N4E0 z#E&LmMpKY$n8_dJkCH+`14|jUT8%795=ey@1f6IzmAQE`M2UiHL)~-)E;AD##@=EI}Td1KRaSY%I!@xf=8x{{Y1cD_1eaCQ#xak_Ew? zK6PmY#br@fh`^FZ!1@}r)nrOmgt%0Ki36`s_vJ*Dmq}OxL;;-dF#@jXXaVs$7}w8j zYKS+uB4Tn|rKqCbB^mP*5jGc{?dP=`)Dn`2N|2I19jeg{kdf@+Lh~^?9`!t2?oi6$ z+Q5SoKPmxFvJMj=9G zDlsrdf;x}lg=F&O4j2IC+kGO13I`&x%n9-6XXkn;{J1JIWaxDAq5{5KZe&(?)Y^Q& z=}`?W2`fUk$`nLpJqLZe%~D2HIK0S*Hf1su5pLu>2SjV=`i$X0a$JiP*U_|yu{r8X2)PG~A{8TA6KFrrW` z01$y=9cQ;{vCK*WfKgF1adXrCR7ygW5)?$A2_ymt-?oOVE8ktyo*?u=5x06~Sp_PP zgLpT~_J4YcTFhn27JN_!pM5Hnft_PIwgqUo3DeS`RnVstJOG(e97OzjRXj7c8*Bmy zl>l^)tr``{Ajr%caD=$!lHs#D@e49KorKMVZ*2>gOEfG!0r6iCIL!9NhD^4 z8_tzrR|{$ibAWFuypHt}Es;hHNR?dr(G}R|AdzF?)6>#uK;?mD0o8ize@X{BLs{0a z0>LnWVBcT&y#a2;DFRR~0I=>qj@1v1fIzg8VNq{g`_&<6o1$aH17a?IV+X-!n+-(wO&#i$`z3YN@VJF*QaWV%vbM9#in!w*v&%5a-g`7 zsXfkU(ocKZXfvu4Fyi#E(Cf4g)p_%i%Mi3hgcDIH@TEX_3<=oJ??7o%Ou>SqqQsf~ zs1*oXnL$AWfgoBBP---c=t`29DKTOM4Lxeg!-_U0JRwQ_KyTR16s0K03RRA=W%i}! z$f!{kl;jHg1NW+NDQ$V%32X}imdP=tEo%vH+#o7QK-k30{@YNHf>aga7tj)Y;CB7% z6U9>4Q<+XpCrkeIvFK?9DLEu&iI8g!A=ArTj{?X5#@pJt*Q1sf+{mJ`pa?$kvG{yz z6N}}UKqL*838i@e`Xj5iIj0=jVV4mt=RM2{g?zMvsUX;i zi_mFW8RaQTJj)qDu}${v+OuL%mSH18CtW*HXULH&PmvRD)GsHLfSkmG1OeChtcj!) zfg}<}lh&A}SA?vHU9W1Qg0v41 zfFveutpP!kAOSmRK*5O4kdO#)?=}OaSyGk|e0d4CLVubBq$GHOY{UW9n$YH~WhC5! z7ohJzwD_ce1d}_}i9>!6OOYor+pnD;BqWTt8j_3K%95m{Dir}D`9YcTpmeDPZ75|5 zfI`F+pITW$fI*83l1->q>06%Am6LT6txXuqmiJll4-Jp_tib_SDnPKcw>{~pSzB;H zErTjq{l!-;2}vqesh{v_io!CbGKD7dt?LHGVoPhxLiwbKCsP%z3vZMq#pj4pkY)+j zPWtt(Up*~|LwvP?1f=GYew9qUkzmL>+9yhz$*!{Aabat7Ivp#@d43q3W2V)GYjY}q zjE+dmMbCcyYf}m@Izr0V5txWMpm*QBXALmpq8tbdAq7fQLU%p9s$rnSkq|S$G7?6; zqifA8k_4Q^0boIk4z;-mY_|JIB%pufw3xrywJpR1r3(#=fSE>ZZLfOR6o(YbKuXXO zi;{0Px1W_bmA>GTM=%2^-@Ns!a|Rx9w6d_`7Dxoxz|_Xlbfln$9whko3Ivd2Ykt&c z+gQMt@+>K}qD<}q)Q>u2*mW}6+gSF9_F$h8`FuTSKRk^5qEy-nryvpytx9)`=WWCl zxTLHM*#v)sS(U7rTU&x9Xw)QvPmum=TMw;a4XxE8PlO;yPp3irS3Tzn)CxkR+rd7X z>%A=)wa!}<6Z5O_(dltGW{}u%l_kVXXB%y9m%VZqh|Elc%18k_4UV5?oZdZdkkraXTrZL zgF$_5p_7FNA^}VJR@d0WGZb>Vdffn$MYoCKdNej*Z1OpoQ z4#K)zF9y7OZXvP|a`-?nd->M&7pHL5k7OECcK~Ms00QSr&ZFT}>+Ruj4y9;lhRH1@ zX2}+UN9woK*Er%24aL8xLxKxKVH=GBr(-yWHAM?;NEvPii)&2m1?qf#x5((`wphvo z;#^B^3y;3^+)4@)ov;wRpqV*y4aaEOEm&|4s5k-^EM+ffu^ajR)uRuHL(39?v;tL` z#^l6B`faCLi!pMI$P%l>rNFe zDNZNGVL>A_+g*NMv{)yU$SG3UbSY92E=I6p;Cfc|&a!ot=y8J&jejeMUp3H|1C5}W z5+S%Y1H4JJ)>pVMfQAn+i-l$rq{Qq8)|G_?3oC4>6b#8+<^ne!x|;8BcNY8XC1_7M zN)86z00+jRPJ#^hwy!m}pQmZfdFv=rj0i1E5O(W%_|@V$xW=63N#!Ui3&c6w^#*?k~tO5|i zxNvj8+l}2NP@&{^1m9kQnT2uO71ixr!IpT06jOnX-m(h&Yh;P3tRlmGL|7ksQ!RJ(3?S!H?G$WQX2LO1ID1> zS|-T3f(?PZ+Q3(p!sFNZmePbF)*KmB+R4&)>+tiM?C{<;<{721`#h$bl3H*Ad57L7 zaUv`&0=%Cm7aoo~k5ZEI*eDAH1gpy5!l617&e$r{kcp=AIaILn%02hHbCur__ z*EbKxuoT_92;W`-`TTcG~8u9qoqsWXy zj`F1rkn29tN!CQcAb#Fer3*(H0SQVL`pFGAj=D)!-Mwi%RVl+6NG>o{1ravV4*C?r zhNijLHFH})LI5p)Rz-yN@{K9u=<;-Mxc1)WVKGlEIt86ovk~RfQ`V*f7_1K!!~>Y1 zj$t6du^NDH^b<9K;?^x3yP^JOS7E|L9mVW+_|^sE(}Y6`Qa~tn_OgbD)9ZTQ4Of%b zaV$$m7E;36Y-T`gL512Zc8xk|T-UJAG~Ydiavu$tYccVS^8>G)`c@8i=do{=ic1YP zFLDVt^B>K0QHd~uu3&5?2r3dtI`xnUu6{VF(F?~6Q%inJc%lHv;eaB>2c?Z;!|{h7 z#AP|rJ}qWRJI7zxR&FgHo#!!?Zva7TsKU}W@BV18cwxnmm7%n@K#Yons2%Pq{A8N1 zE4XV8eq)JZ(4J-;3iinY*SwEi{OfK3Pq@6TGL@CtrvWLI?k8(kHN~KD78InTDhXjj zQGE#Yy?UGrjNqOsa3uf$60o5Ys0#DFPfF&perNIzIG~bCdh>KuujFl~l{uG=B%$D< zyubpNQUU96*Q9Gx9=7u%lNKY>C;_2 zI!XaA0#t=&m52mQ;CX!FrYi{AaSjx=sae$8+aEskEpZmyIs9CWSC+*lYzLpxwR46U zB@hJM=f8O!yL~H~^`8jw!=Y`o8ZD6uR2vVk`>I+{mrziU94ascy*#&?ZXYRa4rqnj zBKBVY08!Gd3R9tAz~xCR5M=L0v|%wnm|7fh3JVJHHUxIJX|3-)%6O#;LJ&xZL`dj; zYdb%e!LU+PR@#ykBlM~*dRSLIlqtc>aTX+qp0U=UTGE9!R1l~+?xUJ7C$CC0HIZ%R zU+K%?R>$sZ5|*abl~NF!1x(xh3YeUJP*R^7Bl?8t{%MKTx`dZuunNPT9FT50dVcj0 zgK=s(+JXj}`h6)##DpyiM7fmS(LQ3jOUJmfR!Vc2m_L6SEzW<3I^#qk2O>liNfB9# zN0z*%03;FDy>^~ksKb(wbDI&{y>qz^FBGES2tYpM+={tS$A?0Ul!=3(-@R#G9Y|2h zqGz_gwW+KcFz+r$vz-pKE~!XUfTcyb7SQ(drmat*e4&=a{0&kdahUNg{Kpem1Re#7h;35PIfBaUcaC=uWg~B@P9$ zhZKTmxIIN~FvYCA;VY0pk1gvrzS0yjfP*KXCwkQ9Ga)3CYuetmjc*_ofU-%mYL41g z$TMQ_E<9HS8Ql`v%I+uoe~RQifaZpw3STVfG&@{ZQxn8L`&m*{0gRQ2+*_|Zhye<` zX=&d5YqvV()68+s8Toec0V+{iJ*ZJKXZveb6#i=p!>8O@WRYmK4-iQ~TGWv-w*LTs zy=CC;xWmq2iMCSXK<+wuiuBKXytmg*&K*ks0F41DPcgM*PzSiM>;CCO9PR-{WJ@JN zVm*q6NoSb zB|#oE{{UysZPxWjwdJ^P3UR(Wi$NUDQb3mti0#+Tx+_C0mvE^mf@WnRC#j@x?0^3N zd@-v^6)VURW-{6)myAMlIE5UhJVHb^FLHf*&@+c((}qjz!h*u2fC5Zv3F;}x#bRAi zadKQ#$U2i74eN%+A%F8FD*l^JzjHVSO{AX2s>eMB0po)Q z4AXfKeV;EZ!6N$Byc5iF$L0udDLG?Y+d=QA&bX}N(zLmmP4m>FFeg61pXRlv2L2_+ z+Ic00kg4Wc<~53AHOAvO^>GGH87V_;q7IyrEkHZ%vJ%6z!r^;abvi@@zS$#hC@I+f<2hcIv)OW*1GSs7BFlj z!JHQxT8JQZ27YS}B}yxl=Jsif+Y5fxF!<1{ zCm~84#z9FUz^AN#Ju5G?v+?(wTTP`UOLb%?!>W&Y+of~3(n5bJg#dwL7XS^+p0(0v zo5VQFO{Ki$rsOVs2mF5(&BwB=Pah2kaHJ9;1bnNvGaT!xSuF783f9p!lhG!~-jguxik@ux6^v!ee*q0!y5tukdWG}X&3ReW7R-5^EuAlx?T2C21#R0&X z)U$j&TKI6dG;NygCFR4w`^`sdx~e+vO7` zCIpRs?Mq%AyfRjo)tTSa0Mpj5^3qX=IgpePG>`pjPZ4qF-)W~o&m@={$-cEP4`F{h zhb}Xjlxh#^6VjiH;sYPX9K;Z$G7KTLoWyhot#9Nj7RzddB%vRtAi4AHT=k5O6rX=X zT}PkxBo7+%5~UCzc^^9EEn#khI_^bpD2-v*K=CCPCIS22v!y}T8v!F-h0RBRLVy>% zkv|G{4UoJ+oUsOE#?w{_SeFV2%0eO{EJ*80!r>m`Si~~YO4hYN1lE*1mK0nl5o60H zL8akT70gOH zN|G;>D9^&V?z~@7l4I*gMP|=7gV*iy5Z&jJC<2~muUG+^0nE%Qk&pevV_HMQ^XtT@H~ab-<{AtN?}L32r7G1ou@m;)#R zlAjncC-$Ks*nBp5Bzk6pPkRW{3I$6`fbJEiZ#q*!XdXF8Hxf0Zy7($kK-5Lg(v3CD zLJ}30b+8%%dd?QN$QmcB4k)9%Yfu&6luwA$S4yR8lH87SZn6D6n zlyB=okmKhgX;BvNi_uzeeGH>0Nn5i3lVRjK&>@26WvJv%qiN|{@VIsuD*VcqFmfTV zB%P*qpYch>xN%Mr%1feS9I9EE3aH?7R@^cONZ;!(Vwy*pAI zS}@8Hs1}Vu??C3?ag?dFsV(y)6Qp_e*W*|p66o<~9|{*;TgNi|sf^*2v)F2SQCW&= zQg(tO^|uP9QQ}@zK!cxp%IeaY1u@gTL@95%7Q9^C04pn9C2?RH<)j0fZiYe7Ry^y) zISNV1a|3f(m4{GQj?+(Ds$~e+X|GCSG1_J9HVLk7j+^p9`R4t$u5*~5&SC?OO6+_j z?XVTj&Zk#<50IuwLGdVv(kgK{>0ywCVoFeytc?M-XzB6wuTjDH=L!5S_)=SK{#Y%M z%aY->@22+#yjB&APB#&ekfkatMc`8%!v0kQnny5>vjeZ4KAC2_9Cz_MyjvNFb>Onf zoF^wULqC6FxlVB`MkUm@ha9}b1f{VPu=@P#BRF#LF#-g{#MeUz`Z#l;WhhY_=t15* zy4F_7j=u-|Duz(rCx|+vAj~w_@v8A-pf)=6uFoFgICl^m!{Ko4WjRaCh%^5Htp2IF zIt%G)@@nI*ypochWXY0aUcQu!_?$}R2_d%(0Tvn$;-}x`neDp~ib5M`Dbz0^5>ias z);?XUBS-U#Ce8l6t@CQ83bAn-%4ITj6CbhEfCUFb8_2|0gJ$;V6aYO9SJHCFfVB$YO~hW zw6}?K6#H%Al7|Fl3v&p<8cmkvoR~~O zfMr?b1w$%}&o%=%Z5!f<>~ z7%Frm29vyi4QXec$1wrt5|y;lWSGhhf((2sxEUx$Mp$uoj$4F7VMf9~QP-iW-v+U> z!&<{KgtBh5$aTRUO6{hdYtitI9Q3XC$jD{C%w{>%0G9$&xxMzh_NHN)I3z+{Y0g@c z?U1a&E1BsMG?*q0V>qYzSz238X8@2ygn&-kL{EEHJM5Q!nmAS^4G@N!a4l&qC2spP zH{z4iH2k8UiN~!7Lv0oFKn#aMWC9M7C*%89Hw^Q5WfZbAI|nN!;B_TabFGB!T)+7= zHp+-wjkn9nPdKO04diXxT9)VK>$pD+Mm<<`xfpf2PEg}VBBaIDc(^7bt#ce!5u9q# zj6TTFW8ck~TG zxzOoprJ43mvawuY%tJ#Bg~K4^5~l-XtP7n6iJQc0TX;tXEv*==a8r)+NG@wA4V%cY zgRL#BUK@s?z`{_sIc60R8j=C%cbnHM75J1ka^af=1Q=x~9HmTOa7Z#^`xOx_)&Hs2|2=WVzSx8gx0$bk?*)33x*-oh^ik`VK;1p&@q zkE{Smw)**WslDo?{jxk3rz#$~UVkCLRx9L=daTt~zJlHIzr7w$b=1)z?n44Ee4frH5oImD=<`z;^tg4)mtdED7uIezj3<)U0`!$jkk+l(` zY(lpr%z1fI_0K=-`+2ti01ooo=VP65%xj4xwvppZZX;2z!n%oDcsANwNNl0M>AN;j zCP;#GvH4cAT4c)E4`l}~QA!+t)F_4w3BVuoDzepF~si?hg+4NG^ z$qt6)wiPaWRZ7%k+9KvBXxmC#_?4>;ggo+4_yMw|THX5u?m%~67mgog8 z87Ab&AF3_oKDEm@42fILX2h|ZK$3FIo9G0_#)K9pi=h}&%F=`^k;@580CPzuE={eZ z2&=+z6Np}Qu?*nM~_@!coDei6|$h^oOw$;;)e7&OFcN=FB$MFs+ zPA$vlanorxDwEf?l-yoB3BqvYEI!-o1_4d?yjtM=J608Od~XxWgyHR$npRfQ+CNhI zgQz~WuZ4aUF23l+6{X~WK{v`~FBj86yb%2 z=?ASv?*1DjdF9{=94Q%dkIlQvSV>7LR@h`6Jlo5{%L2I**!fI z{96tm3N8g03Q9?dFa~9LZZ)>`%U=`W>^@~D5P&`6qvA6&{yWlH{4(Jo$K4u?iIXbY zJ6_ebpTmryg0e!(ZUmOd9K@1zKTegI#QdvkoW4BTL#V^y%P3ipgs84PP0W8Z#p5`( zH$Nq}T3{!cbyx$Tldt%$vlupTWVX`@FSw~}pBF47-h2N56lV+1<|%eSSWs?B&NUw^ z&AQXdej+md-fgZD{w1)tU2UfQ(4*W>?OX8w0EQdPbGi9|8_XPS!OPzLV%6Mr4?4FR z47j0Wwo+we5LFl3T{Z@ztzSBVP9c~if+1QEAa;T)FUiuUF_#DUR}NBL2<4#>k*;t~ zAebktZLh-g^f1cXDO(J;(goFSy4p1JrLPvo5I4<*ERy7@AQPBwb)SSsdbhZs#TOoB zNOYuf!E`}rkbFSQb-vT3>MxgHZI(}_hH%IW2wyR@X0aj>1P@R^m^z&`qr@_-LRw|S z{$2Qz(F6m~&ej9Cu3CQ(G|ONzl@3rTZawl3UZzN_4skqM*jgJ71UN!e0DEoZ1%Ux_ru$aOy?6hUo0Ipb^qhAkk zeQKWI_&n_`$Jqhm6r_SeGE4(I3g;&Rzh;EJGIDasxFd2-k$CA?p2Itsa~7kbQ<+)4 zKH|1>`mNve=(^S!SWvv@Sd}1^{mO^T;#aQQlhd2+W`3IO>anJ2J25E zR-i(253wS&TzIWTw-)Ijq^;Ev2TRV8Pi>4##sh%5 z*#RpyDjm1D{pv02^Hn7LK)=JrEr!s-(cuzPl|X}_^BoU*tUmx{)w0rMCG4t7*93_m zcz`{AUFqxMnVo5Fl!lraVW50nK{F@Urq!kHJBDeKhh>DVs}5^|VD3cdbhoW$_xM&v zI}n^!0}>fYE+h#DmSI|rDQMxR7=r#KXANSu$sg6dp2HxZ!RGjL zMZi5yzY|Dv0Phn^j^#-}{cjwnxShy1r0W}+=-f@+nCLqAM)a&xBOGCcZ%;aTO zgI&+WOwV&wD8|d&=TeM9GBiDzIuC_z<*9ZFOG`h~wa@G;BFb?~Jhs9R;!G8pDjE~= z`BIvB+!|0*?aUvKUc$D`9i$-)V1iPVw%|@~xrAB<=dYz+7-T7MscCgGtDc|8n#9gA zhcKWeSwsLW5!}+!`Ek67S(OvcFnY}= z7l`DPK)4qmZCw6Bu_`6NP!eX8#GQtT8KGqW&btoxu23Ms!(3EpC6~8&ekX z#2F(%Knhg$qQf@aCBie4c{+E$Upn8RuZQ7^j&TJzMEY3tO{+g@j{!1(FRxjy=j=1(3J$rAQ=~lw*9(N-G7qM zCblVkTaoxl6DnM6o1M8z5# z8DxUBt7EvO0*47tET-D3@C`YUm2$Nuwsp>a6udGCB|xPK9w}Hl{^qu+Cl1Lpkh%c5H&R!Rl(zioj+>C|ny) z?N7tu)SD$KBy=%IcNZog8^Q4XJ5yHhaU8VfM3D(Pb^ic09?wS?iqzw20y4s{pzC^C z-3*{YoCYKW?bfui!cg02g5r^A7m{`#8n>{CWt`$xwNH+~eZj2Qw<%bKxa{17nSp!% z0IG;oJ1RHQCVn*6ge2+&K-<=m>B?42tdcLes*ZH0M=&ge4x$aU)_^xC0Dtkeo^_`T zl;kMhOb)lu)7nE^rK&}Y_8;P}aV~3YlIB$?ro-Pl_8lqN07A((+rOPKEaCIdzuxip ztq97XLCUgpC#PCyHd_G!Ay(1}t66U+g(RM!-~7^xf(~?<8UbTUeSRs-2>mCirUk4L z?qHOi;2U{UN-YdS{S(^m0N8MZSi`}C~~$YhC3Xk%Z6244xWi|>1R zR7!?mQ`{TtPfEsA6Z1OIBPhs8m=-FXJvOZQ24HSLF>_;Do&zb((BJD7oghgmh&vr) zTBsWV4VfuMl1~2s#VtxIIYb1g>Vs--Wk>{s5qp`66r?!2$y6I{NG%H}089zNb(gb&`PF2iScwMH>p_7di5&EQG_p9 z8V!N8TflRvc* z^D04wgRC1QcK&>-H-`!<2qnuI&$oH=sgVglQdc19*aNq7@}Le@b>tv78qJ6%jSdtg zX$hH_Go`dYd(=~*D%8BW^CZZ&P-aEGRbrHtWhXQ&nJNdyeiSQNGIJ=a zQ!z21xc#VtL^cy3ku@$B+HOI-NE*;W3J{V=1Of@l4sPN$tK}BS%a9TPwd9(#q+~(> zvWBh={IuSPk-nZ(3(j-+j1oLbY+gG3dsU`c3sXAgu_ivXJWEN15_LOB zs#8H;B!Eb?5tvU|`A}MN^A>q!1u+N!$9w(E)h9A^N>btdCg9Dg0v4%J&Y#v4b?yE| zODLSs5PU*TZ;yRw1zfQR2T>#$G1&F;rY;gCKhpx>ecGmU^Sz-kMq;f%7qmypt0W>4 z0v119Tfd)|oe%{i^Omg19Yo4M$)Z>VL1lc!oh@=F`TeL}XoP{1;7k*LFDf%A2vC3) zK#*cBq2Jbv9%S=LDGCv2Bmlnse|iNd^MT4+i-qYG77&D9M}*Eo4Bp3>SHEE5Sp)DS_Q zzZxt|g($2A6$!F8_37tJ$QGN(pZ!h5(IF*gl%BWBn@8`xMK+)cig|1W83e|iXentK zrAa0=NERC3>)NSGT#U&A03^i4Fgl)LAWJ}dNYH{VC>7$!rFaa;b6M>{WwfeN=t*xt zH;LQ$p)RB#D3Z4Y#9G>K@T)>|Wbl%=AWo$|ed2>UvO+>5pe{` zk3+DlRLcA#A(EE_`FiOkzO@$6 z1i=6&X9SbdsY(;>=Rzi2f$Qf}#gHWBTEUoJr+E=jEgsY$2$SMGwAg`T<*iYNB$!-} z5gLw%d8z?RP)z=~0PjLxS^~;Q1dP&5-mDssq$p-WNLh#?W`#jbFEJ`H{YyXt{m}%3 zEDXY6tJ#ad);{#A&C5tCN=4v7G6ZOQY3eA2gqKu>5~MhzC2$0d`$x>xhkRox3xyLT zL7u)_MN;7jZAnog-XjAs{{UajT9Ou$l*;qNlhAiG3(TD1YAGd9tLz6+M2w^_M?6qS zu%EcMN+q^Z6iJ6Q(hO}hCoD8dfW49XP>aZ=838Ltk+~f{bpj4Xhb%6@i|etgc?rw_ zg)GbxH~#=sN(vBi^2bTj?l!1d9HgO0MpqUMfa&Yjn6i`@lXx;fC*kv&yx!9(0^ouI zCz;g$0IDRbAR=rD@Cfyu)Db`=1f+$n1k8ie_^74i)ZJ4Gn|XHfp>5Dp5Ryf}-Cacl z=K)DgjDpzFSNZp&U>#XNbHL|=q0sg2DHxQJyx9oY9RTa4H!y9+!C5VCOk9z18*5mU z6hKKv(f}}HXzx>9WKRo-LeiALkPm3JWOba41;;D_duVzJ)NP!lISYo_wS(LDq`wyi zL0!lMpQnF?MRtyBsYr4b6XO5@p$B@#^GZQ72-_*tf1cIQ#LA2*aCVcv;wuk3#Jt3~ zh#+Rv^e3UN9lbmhQILeH0kjfs4FXe>!W0V5xA(pp(dWp4?$7?GQQz;a8>!Bqw4@NZ z0boSOYV$oGM1&A>6XP0Yi*&sT6m!m5LC{Z4sgDfc0DM;P0RTqEvn#@|R+xcsE$c|J zDKY>;2qxA$P$@|eq`~Y&&uXiMgS-g5der8vDJI!mGo{JvRf4joHdKH&%uRr!N{)F@ z&OnG%->~gNKJHn#ASh@mAby^IihQxudeW&_8mks`9CB||6xokeO)mdMW;;Y8XG`R!T( zB`A8vz(kuxHIQ?I%}KPUYxSi%l9U?|EpC>eL#Yq~KqAw7(GG)213w@XkO>e>deT&c zS;Vg{RLp@f>M3YYN%6sr(qm4YsGU;gK}%qmN@64SslYCwB2++JiOk#p3H#Ecd8`rv zBmfLR*IEU|;G_~rvArG}JIJ5E8Nho6-oiWK^VrbfRfM0%Ra>{{XO^Dl&kuKrlXjm7|neIea|{ zpLB{1Sa%Sh5>kjT5)I;*rjV>gAU2h@2aA?t!anacjkSbjZbM?(t#0+R^U&c4bx1j2 z!S{z*i5^uTQ;So1#v49p_q7S`I+IzRcPn{wr#OHhZLIw&mY)G6hgPXpY}XxZJq;Sr zfE!YB^2i1VG3)DFhOB#ZgrPFwHt)Bto|9gK5BPbrfJ4A7va`!AYoNKEjGZ*GuP}wF zmjoEfK!Rqy7Y+PYtTzo-5h^YtI8X*IY$vJxt1M-=@WG7XpO?gj)X^XfqviMIZggA#|N1K~@uMkiZG-(l zkd>a9x|psAdn3EH*erKHUTk^4|h)!&( z3F4_O1Un8mv=W&YB_( zE?fOm+iO-VGJ~&XRO=9tB#x2rt$4P1?5)%(PJ(Zo$Fw~<`PVxRr682}(6BTETm9Oi zPgrZCiCJOdpXhT05)&HgC(mkISn!ktz(?vixf+e@n2b`ec$FoE7RkMYNb4W9aGYMJ`*!ln z>*@3?BW&Vu>v{P?41~Fu1QjP$6paZIJJxJ|8QfDu22ZnIRW`JRIME3bPiO+#+*hCB zSoI}`5SJU}E)rbHD*#`^{h;YLtw?!nVVag!LxAQ6Y$wj@HRt}jE4=Sxm5RZK6yxR4 z2qi)!*mv~P=UQ-lOk>;0lsSkh@RVvi#^b$eTZIWIN)han%q0mv(I-KD;(7xUTn-eJ z<6d!vI$I<{Z3K~Yf!x=5Jg2uSa{7AC7L_dx!g)?EVKZ`f*1!uMw=~CiX&A&d;({Cs zf?G3jqEq}$a&S2OM+?Qhgi=BXQdFkgGINa+-|qF^88MiAGo?sz^^;*EMQ`gp^{*## z^L6Ov%N@Kv8<~Y!Q%NgZh-Z}ClqJG75;lWw{iqPyu+0ubEwtJY0&@^i9dmt}HePvn zPD@KI@?vk5#dx5fBil;RgIU71QoJ(TKu`*Fs4gJNz&aTl_OBz;4QX#Ju-da0;>_lS z0kG=>Ue@bezsj$KaR$`dvLVGBp%JG@K9)UexY~v>=MaUo!V9gDAcA!hIs>pe8Ln62 z95UQc&eDn+Iw{=7$KIV{!{bpt@Lnw~G~;S;DJxVZO~eH1W=EF8YQ>DfV4UI42hLei zh$0E>ejO_&ClGOr=TTF9u_0T98=oV2t~(rPw}E$ttwF%2E=sR+tk+(CJARpak<uT;W%J6ug%7%0k;X|5^qqfz{0I6`!&t>S<%tsws!p@NZu|OBeiy|& z<5=7PUUf6#K-6FL0(yMrs?D1Ta{F&>ugfXEVesW7lq*Ac1pVuJt`my?0J7z_w7HSO zmj=oikHT;9rsADHmkC;nYbrCGd)Ct5TE@%2mBza03JthGNg@Fwu@tnB``14gPbYf`h{K`8=K&2#Nd`*PHz(B3ohuEAZN^Zhk#`hHn`IjjT*t904V0iM z)I^aR_UrpsPlq}AdoFkKUE3l_jI?l9WFe z%WqD#pBs+I2BJo!>pNCwaVuNJ@76W7$8vhsX0KcEc*Nrr0)kK=ftJJ$^pqtkHj-v1 zOx?wD(Bj;c5i_LUHx$kx zl2(+==m5D*t6DLQrI!I#x+H$pnOm(Y;z4cYy5`zwI#QcTmhNJtkTyGZtlyt))R2$? z8pSObqL7G$12^Ko}^rx?j zs`8=?Kmwi&@_L6~Zw-f9gNa<&*9}+)3q|Dd)wsuDJXPgz!iLU98gR&n%ygi`vbCfvkcP;WO0ISl!@}a+W*vI$IwhQkQPp8p*vck4Z$^w5Y%M52S{EQrkaeSQg7`t7Ikjk0ZgYx| z+@d!+TR}}DgNfnIAz-$l1l>J5UZODkl&we!0%RDQ*FzE(F*%li;38*GYTLk!Kr2Z0 zg6c>24z+s1Mj^$dAwUDVj;5c3$l9Vz8dwQszCrMqfLz|TBM7E&`PM^g(lyK}p*WR< zJRZyzv!LiHE5!_pE-fTzR(9?xET;Jz_L{Z;u#Kw*KZjyDT;|1(yegzcq~ds^xMvDV zgt|de^zw>VwejLG-ZiJ*78d>MQZNjbN?jcFz~zBWtWjxRlL_toI@&8YZk-0Bo3dw zEH$?l@|_t_4Ufa6>zcN6B%}gSGX}zTt)HCbXGltkHcHRw2kTk!DE4SdLV&arx!=;V zOl7PuVS&ZA*&Yq=r6o+SE2sYeCTo+p{e`P;AqWZgl3W_eu{|jY#hgp!*2oLXmC!}g z>HF7NsIC?{q?bV?luwJlaa?6Gq)GzS`IZ&UY6bFcE7^a?CDz+olnNXX-1Um$@h%*s z0H&NMd9x@#+>Z6%n~y(G1BW9Ugy*LwMcY`i6&ICBte67v8{-;ivfvq^Z11*5KCwq zka~mn(zSm~1g$C(3=!1qJACPQ_pqEb#vhX5Czj(tY1aBtyTuiZTWM(}xC8>yZX;vY zU$Ix8mTQ^B(54!7)unPo4TNtI*zdhDl^2^0KCG)ig9i7|$gt`~Zf&yTLD$uh4j+AY zjs0!$u4DLTaFdN?S6uupk8l33}E=-6w8^@PvqX7zLUPwcPi3i`4(mKr4;x)uu?gz<9Q4Uz8 zH~0;S`PL2|`kHGR#vrH!%$%UWHP^%;DGn`{R^r=z>96^$+&MY8YeG4S z%k1Ozb)QZD0L^bwkmKt@Y_{M+o6wz!{wg!sr0}dBAy{*VQb5BM7+iu9En{5nGV*wL z5Grg++c{m40E1mjW0-@7Sz46k^adxV`L8{T!!6Zm`Ml?9n77uPKzt`5lA`lAcz}mpRir1G zGGnz)A&*KKC{Fh7ZS$*~ZbW$(hT*PauvpA_Bn;3DZ};`8;jBgxZXr3{D%g9zeSE8? zymGMIC-Q}JEu1p>t3<6Eq{R2EN`Ld5w!lgWFrrKXJnN*J5l-PLIL

~PPKb?8l&Cp?*Up}&lZRlo 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

o*-_>js3AFJ43Au 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

    hfayoGh& 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

    CDCw9`e3q8)n+# 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%0A5YEQ89V|b&42wd9kA388_4-=KB)4 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 ^?c;D|0f&*s|&Zma{LpA3Rz z?;^m8^q-0N`QaEPsq}{3d2RDT9L$_PBx<1}#6os4a7BJ{{9(p1Uy1m#@a?$a!3{lT_<7D6*u;Q%c}_;1aN$CoDo9j-od^VxyooW>z z;Tg6SA@^L!wS^NY3bK?4g%5k##iY#ZUBxqp!xTFKdBI9j*(+2?D^66wLQKR>)Iruo zFB67KSZ1(H1>)DraZGc84Y)$2*xe#jG{_q6&q804OCV zO^lwV`kr}DVA^XGO97(ZDJ;ALL&Dqy+>C$_98yG;6JTpDKZ$-*9}Hp?Uk>JMl#WtC zPzzKDB`E}vt;Hg28?QH?7l*^L(lI=qU**=4^LvkIV`XN6DOIAvYcsC4<8C#G#-|eI zDW=&Un{2Enp)jf103<|25nSFS#gUozVLz8ciyzY}SV@$j($Li^0aGM_Aat%T{PURg zj4~E653-fE<1D?LI^w;?;UE!~;zr~qsvb7|J4<=oF?~otU*&)99Syo2SO(;aN~JBt zkPMU9*Ebi4Oq?+bb&UMRu=teoQ1LLN9ICWIAdNu)n!x`66L$}RX|-aO)9Ch1H-bikw4^;!qoOI#Al2b*zZyB~ccO$S`ygZlh|$#dzBohgRcQ%tkfLT)L$4 z!5|+IOIfU9OzC7mHUhI(II7}Uw?8kL)PlDON#+yEO{5IaU?$d&i6*$1oO4)*9K*AU z7z*De8*`S-;+`Df>uD*7ydGG*YXZ|; zr@s|oSmO;c@>;{bWh!||DMLhvTAKpF1jLdIX9R$0u^!)sKgU648Yc-$9105 zO)C$@acsGVMj40j;l_b0cqLMVm3EhUzDxOWV7QgG?j5WZdmSlZC>x z6v7sTIEMi6g$oGOjVAU7U)sF=bo5D#*j^gy+;zmX21dk#CL|4G_SRyw z@O~VeQkIgi8d9?ogm~s66gm%;KM}-Mx7L7!tVEXc0EJD&#sR%J_Z#rsbYNGT)| zNWAqO>z3Bx&v26JTVYuW5h*TQHlwJ4!x>2}qYm0jiZ=LK@2y+Utl`v9@gM@`Xq?xBBdFS^P@FG^w~Sym>f%fgq5w$hV_)-HlFMl+ zMij#hxByyP%vTU6xUn6nC`fY(g0ce2gr}D?8-D))8tyW-e=ODwoH`FK0+bVfU$`-P zYnMe9+QZ^Q1tq|ogsmzW0H1m{>Drd+(#AIsrbIZil`bGjHrMNYJ~g#GB^Wo@USz|k zGi|LvW$Z?tlsqYtu-j-MZXr^0jM{JTHBrlF*=*p~?3IZjrv<@Ly|*#FcQ9Btn`zg{ zBH5A=)??7d)JSAvF}d=gvg{;9wzap|)WadyUdfb{NF1aaYp-oZ>Zhj;uCx|VtRf*i z%tG!?X!E|JxvSzOfKd99*DUiAT~=aae6ilToI?_ql>i{0>7+%Fn|~Ipr-rq}aSb@~ zgN{1qv?NR<8v*J5E2EtM0B7K^_;fD_w6a&7!ligY=3DPtUMB|6{K0)lUn#?yECNUy zZwCGC(z>{h%5bN`SYI)2sANDgu!16M3+r3Mnx@wCfxt7hauYCMo}$%gp6LtY4d8Jr zQ(-PPP)czNNC3^^+H3KyJ|~Jk;*=YJ-dj3@n1D~}?mvp?fAoE|q&bPswaIO!z>+_* z5BRIVaHVjj8cJG2LAY$VVMTIoKK_*+-6xD`;k*|V))~B^AsCNona47Mf4X;}#o>_7 z5IDT+E_*EE(y@6RG~f58@g80oIXHv7_dqSS+7)19ZimyaO7qyi#GjEkfB=G|fxbf? z@a}$9ml-9lqZl;25Kxu4TLa(l*_(F~eAQlY~sVGN}kMK$#KptX^4OOACc{rivR8%sCRFa*}l& z&swZYZ8?bKC2MtP0kGq~<7k@^9jmmAdR}>IQV<*}Dg-Ot%pjh<_OCOK#JbD5Tq<$Z zD=96&gp+ROlDkc{Yh;8Ka#jdz2K-W2X@SuCXo5*2uTUK4hkaxdIsZ}GGwI_z+h8@*A`IX9>usM;f zgu&c=YR)|?TVQ5k2@xbp6RDj%?G`qy9BHgJA>==WZPKtME*oq#lceoUV?G^7DpxUO zFk!eeKQpbXr{TEMj>hvDE@mMKgcjBy&+EvM$p|Vnhn;u@a zk(ajp1!BgnScevcI8ft&^3;>RnBVTz)>~6#jC?~J&;h1Q9$9F2-{Yll)V9#KR_Yc> z5U96d6Qyo-nFY>SAU51)0A4j9+)lks3pf?wnQcY1nFUD)#R&&p{{V{h^O5H3Ya7~< zkX=KKf@Dr;6`XLzyy5#DuML5Ty`AdDltT z>CW@}avf#0B+84CWab%HBdFfn)?7|iyP(gOAw%L%Un=RGD%Rs*073+U+D@jON zyi!fZvUHo%*7dU$06~I)U;)~q8B?kSM=?GrBgO{*0P4C*;b1VhRlMLySAs49(C=;k z0NpU*lah5xQz|$LiCv5yr_1=Q%3m$F($groo04pI`|Dh@DFp=(**vf!FBTuYT)O9A zmZG&~f*A0qsl7njest2p@XHP5Qwm7%w&^fuQX=3%251_?96FY=nJFj0Roe6SwJ{ij z$;^}~VMI9w=gju)-nUbYOgvJ^%_U9P$dKBkLZxQVBe2$c zR*oRrTxpJ4mR1axe^~zj*T`GW)rq#3i^I62rVtKw1Q~HBE&Rcx{gxDg`J29ECR#1H z`_{IhoI89y0Z#_N5L--HHj)VOOprR>tUbw7 ziAq~puy4m9GpC=>k)>CYF_Zo?6xtnBE#vyok8q|lK_F-b-2s~S--Z7G2{fee$1zS| zoh~agT;ND-0hp;xgJB(X9R+Y4;>#oQECnQxIrxAx750&-Ai)}vEn8Vzj^JAS&M^%- zR2oW6)|{fio}ayp#8h6Xk3s(cQa|b^3*%f1g>cLs3^)G(8;7%iB@pQ%&8j4!Q6_ac zV!mvI{!XoQ_m^FF%1OWVZcbtdcYc6ePXZv zJ(l@O2_7>iqKQ86IvY&sT|ANEtWOVfjuaPN0f!tUzwaR`{QwU31f4HkP94LrxV&24 zd!L6a1UH{3CqO(!KuDP#ZU)uW;kec~ZWU;FoB{#l0^F|YGDf$9140DvT#gfibBW`f zQf}lT7>qJjk8tH4-KmH|n zOimevB_|ZPQ)+cUiB^gP*ch}|Pae~66|$uz{3aK~-!RLML4-lpFWjB&2D-c%wBtCV zZ!->H5CnkP0Jc(di-L9_w9SChoJykfG*LqI@Dm`D3HzlkkQEGcMl)sq?AGcYs<%Js^3 z6cD#2$W_8dk+APx?~Z;^eR^kcNJC;|8w1|oO3&d^iIR~M0`hxP-6~#P2v>w|nSW zT49I5Z45lwcw%kre`l;IDBPo5SJo?mps(Pbnf|OhQKIp{+b`fbkE* z&;DB&*#S0Sk8wc3%-K5`*M7D1Z^Ej;{t(3B_?w`umedGJlMN_GjV4B$TcvxS#s2_| zzYl-aP7jG?=7t}LHra8aryD>JWTjhamM#U3>aJUU%hZ=K`O&;Hn66{tuNadFPGnUd>d&ptQg0VAy_gXeNGmfj<>wPe%3C>-2xjRGvv?FZR#bqz zi38byoV$F@t2QS9RFISfFA$@bC=d@|f1RqQdU%l1KtRcz#b=cWn;S_Q+*-Pr3=SiT zjJR|c+-P$X&0W%gs*LTh9epX-AHtkbtRooz0Li+%8<*y`=-9+q$cy)_SZ*M`64oH{ z!+4_(w+%?hFMVWad(B+y_KQDGGx$gFxW}4xuWDThP%0YgE=OC}Lx#E(aQQNol>(AK zQJGnd{{YozdFObKw0IHk%cMeHVF_3NuLM=$QsDK&3?H2CBzqxz~S0KX~5f|vg<&SO_W^)TA3gO zpvbr+i`Vnl{+IqLbA$0D%lQa%oO8!5CJJ=*A_*D}_4|A9#~m1)79$qU5&Ui)pxb!} z=MZv&6%z;`=CY)b5n?O!Uk83)9DYyvpBIPCUti(azH<4Y)i&dOITEdE)5dayPAnRZ)-=P)C$7x-ZJXX*i&8a37K$Q|^`oJGLM>wglms0y-!^ z&3>oFGvJh@klsfdY#AZR)BgZrpuNp`f5coV7{Q593obx$z;4reXPbDf7ZV3s?eX=G zFU!ZRkK|Y4&%#6S_ZKZCrXp&C;tE{!|o*xCK*xoO@)OtOv%blW0<4@1*G{` z;!ZQbaoi^mv>0j5VPt1^WPujmKsD2;H%7aR@U ztU3W|NV=N@$w>f<-*Ia9oKfsU{6WKm8~F0IhsO z{+43n50$_G%;LrK2@@S4kbj!}Xa4|5zw2`U02pF%yk8TI0SOtI!*jxn(Bu3;w_HLH zQ2zik6o%K4#JMn14y8GiY$8bgF$IYK0H|1wDa07SHm4i>o5v4ytHTM9q6nDLTN@2Q zuEr0C;rOt_seHv1>2N_*6%5g2tV)TKzV+66`*7?0y+@Mc3}DfP#9Y7Z!jPM0 z85C~-k_4z20Bu|sxT9~S7$$JdH-pSs4Fwa;&2-D2@}fb?I*~IK@38y>1kVmhTM5Rx z<4YiZQ!%<@#TU!_nY`DV#&D)x<4j#6DY#C&;I~YQ;GHi zHIj5D%1lTZM34=-*E@yqq_c!`h<<7J5Quvbg~XK4E^Yq+<6I>Cje0-DydMn9%U2M8 zpN0+dK;?jf>_9n^HVIUb1_+6-H;-{#FN7_u2R&n+9OVdyTu34m6mHZVpk<8>T>5e9 zW!mJvtZxSVRB+2-<{502VHX7UNI796YY2+^BN(hUC5(*W&Kgo5&dOyC9MD2Q z6P5~;L9qntWLLzo97__{8o|874I`WbO}5-A-eyvjkO?H^RQQd+AdMjXL-1x9_PBa5 z_`Y*ZJkSI>q=muV$ppwC2#ehG6}?Yd=kay6$m8+v!0ci%y!CLkJIZ^Pigj{axCsgo zXepV12nkPW^!RKBD+h$bw}-;8gkm2)$&)S!DCL}@GD>E89pu-n!2TF*I2PF$hYPrD zJB>1zTN9N;5I_c39c*icugGxhA`ysp2(`D%Wzd3BNfIu05TSi7wNIA4AJ^mTIG!1Y ze}>`Evgff@U<2XgN^FM0Madhe_18mQX9t4fZsFZyB3v z@tdW!+tw>&Pg$>RhWsOmom(=!S4 zyus9yUj)VRyk8p`8V@*#QJ>HR+5}h$^_unHgum$5;_t>KzuPE33SH`u( z1}TRfYa4JBh0Nx-6Q=t2iuSxq{{XQgi2fOGhabith`4XzhjA-J;qiEY$INu;kXSW4DGcI8n!4af$(oqsY*_V@Gr zDfo|#J;b>G0OFSxhT6np8+9QiyriusOZDl}U{|#KEB^r4x%lJpHYwb97z*JWEevzq z;yh3O-ICnF)Pe}s0K5~md+sIw0NDqP;5;BPz%U#)@O}dh*k#N}!i+cFJk1BqhDnNA`Zyd%ptj%Gtg-i_1 zPGxQY{Za2;CJ5HPZ^`_Qtp5Nj>GXa- zA6bYLPNHycX>MlEk@Z2Mbz+gr{ z5r~%Y7;GjNH$7QGfifiJ5M*wh;=W18IIkQ0NXr~EioMC;LL5U4Hz34F)PkYkbFFgs z^3QkD{C0gl`;Gqqtr%`9o*~0O>F)${iMZYz9&|^0jbZAK_jCz8J?0X90p4Pld7; zn`%O?RXdV3?G?fQ0I5HWIClf#{{Z%FExsVUM==aL64R;$Ma;s)0F@h9gHbPy{{RMa zEV-VaKj9o#hW`N3?jGxHxKYFwRN9+Zj+G9WNsCE5LprdlmlxQh1BJbBiqC z_;D!=VZ2K4?3-%?drxgEM+xCPOa7s8*Eo+7aIb}7pMl0Z-3F9B;n)J(9JhgK!sDYT<|YINqGZOh1&t>b%j&^%5s3~kA=OJH1kUbT zF)cHoiq7Lqf5VmG(9EQj z5M2eb6bK#_T;>5V_Q-mQwN?P;9u9IYN31T;FpQwX6%=M-c8k z4XB~DAUd|230QSR!crAEyA2KFL0Zx=NM*Nkp-FvZ-f2cOdnZ5;Ifi0pM1GPq8Vo#9 zZZ=(LI*`KLKFyJtvP7Q<-6lvq1X}b-LP7S5oxu|mq|xFK6oBKy zn~0SMSwQxHlO%Xfnh~ag=C(5#8FLQ!X)1MXg}QtgXeb2Sw|%v?&^nmVhC|MT^Ad+J z&v>50vQiR*@2RnD-=s%vz%`YGKJX5w2Z=a_lH!P2<&Xpcyq)j-8oog|p#CI7fhkk2 zxB@`25tl*$Q0WKGx-h14ywi^*j6X0qd5dKD+&~$mwtO>kWa|dBVsS{uFv3QE2`Udf zl|zK8>VY5#5I2sr53dh~!!1l^b)fGpFAoYHpK(#BI#|d6?=_LK+n7+dT^K^K1z@R6 zl^sEy&sm7jQ~iO(VsNf4^hj}p8EX)yO0xrFlyB65{j|(8pk7=L2`M&Il@bgl zK^7atZ%sp--X}f@-1veJ`3fZ88OUEY)_Ai*jjxD`fb|W&z@qUrs4Q7}^F$;CxYilcfxey2SY(Vgt0U!vC zO)b>MACi(@Li{e2_)1|~0yaH6R_re+$J|tgu=zC#+GkyFtkT?A!WM!ZNnEUsUB&ei z@VEJwUxqvLKIR)TXOoIyZk1d$tZXN;B0|we@M@YNz#7wtuMNzrMdP1Hc8M4 z(!;-b?Lf{EPd$i2PauzI7Db7jFZOCRSSHrnpd$|r66A*57f^@?&inSHB@Hn090_b? z={_`Rat@>XQ`LqXhWUmwq&N?|uHv)g%<2Re0WeI0B5i%l8qIDk3@P9+;e{NML>qa= z!?x2}R>{L41u7R7fdG@Jo%IHtqrA0P2`T_<>DOuuQghk?pA={#w`!ek6#oDyA#JE7 z0ss~#n6F>E)^*BRT1l3|Lxe8bMBDv#tuFAjrNybjNGUc(`x|YoTR3%0p-_Z5?<^4m zu-1J0(@baODdxhAt#hET$)q1TbD*I}%6te^a<&Jg)`dHmIKy$0(~!y_cJr%77&hoz z>L8K_EVdPzbv}J7Jd9*pT-B}2(C(_pA%Dcq)vpv=EC8hg;{K@BM1i*Pp%n9m2un$A zFz8BvAdCM1ipt9&O=fMPw8RJ=?Ca${X{y3ghbv^2N&}Z}AoaGo_1d(g7E-koDSj9W zSSm#8C#Ri3hy1e3a8L>5kr_<%18%-l)#H%7F+vg|J@woTwdvB9n3x);jtxT;L7kO?3 zlrCTcIizelRW_nzhRL*^Vba^~0I{0OOevgSDnM5(xCogtMv>(mDqs}1h;d=?Ko-iy(Lf^t_&gcA!CV>?+C|N)UfZ9x{Kl9=|GTuwR#3)0u7ACR}Wh z=wol*h1Xg}A2A%K30WkFgRlT-dV12<^RBjxq}~O#?H#)5MD_*LC9sq&Yjm5cd{KD5 z^{K^SklV{&yx^EjNuOSnlqLK^iV{n00tu5aH`}%8>6WD}sQ}MN0^9Ybp$<2P&f!Cg zfCE#N5_bOp6`EiN4j+|Tf`>CWjIpNVckfltApxwZMTt_4iis95DNkY+uv=1)>p9y*4ARlx@l$oIY&v z0Fh-4Ps6PYAh4tpnL#o^QVGA-{U^ONl(O4tVF(fZMUyjog%3eQ<87%&mta?vh_`?D zT5$MmidbkUu4JGYv<>$1HmK7ThQk!C_ZB}efS4sVGWQSp%B6fih#b^XsUj zWD6r9C?tg{Q$De{y=vw2T?;BkLUU!Cr*GUOFt?13`{jn@I@D9a@3OxjUZU z#SBwPXeXA0f=D-AiicXt^K9Z=&Ou91Np%8k*56GiR_f4Im1qtHWCwBDJ{6T}7=_9f zPD3t8i2ndT=Bgx|K|uFmWVx}^x&CT8jKji$4ec5q?&~#5qV!J5bJ)oCSbQV3RJvJAp556Xensc6h?Xo7F)+MOAcNP<9x0Af1CbfIyU(iWv0 zjpc<1kT0cJTCp6TeX`z70leDh?@FZN5r;|^qMaf@F*_KlLjeSgvPhJWW+QL$Np(w< z5|fuQV+{MZo%Zqim_gAVEMUEKCl! ztqoz!j%15?r|I6e=pmNUrFfE(n1v-;5&K?^4*nCr^g_rAJ2Z(N)4?Z zB!Gi;N`&7}N<34kDkTc>j|fl^ALm-I1tmoRd9o-$NFYy3Ql925ASF2f)Q_z(rqs2r zQm}h$JND9|-byk60ob5ODnIV7A(d$@t1?oMXH&OxOhXD&M>3L#)M^CL^PveLA!>+0 zUfpW4G+`+!BS{*Qu%Dl$P>Vv)uri$Mu_Rn|pDGohD^XHY2#bZ@M|yJFE<7(Ya{^*K z_1>26F|u;PH39^b??G#MIWqt}W(Hfx>E#uXZ5LcxMDo%zk*riwyk-=WDVZndNe($V zQWGM=(N!W&f|gFUJ|H?!ytSt>NzZtlX8Tf5qiyqxp1;K$B)TA2jbZ@@ z0BTa!yu`(X+b*3ZrA{I5G9hrBsggjMImq+vM$tWP45csx9;&J?mz*j{D;Yv_6Q^VR z(=tE}D=08BsGAe5``7BR_-%#eLrx(M2waj(=ANC$p44en6fDRjpBWRF$cyXtC=#T> zE*-Lj0Ccs7-RKZgoeD}6i1uMkjRBAKMw$?y2fV`8N=|r>KGv#QRV5_`$siW?8j*c! zlrq1O2ryDgWI;3Kx6D<9Wdt|uzz~qFXSb!OwWbr10FxqN1`4EY9S_J-)tO8YED!MPzyj2(obKkcbW!e%n+270cZe8xrv_k`xLYs z(xMQ3p-O_*-@Inuf5k>smJ+Zb0!xB29-n?xJ|z@7wJ8fwoSGTjboHZ5 z%FBxiP&~U3hV3)8g^2y>DOa@QCPrmJB-|Y&9sdA&G?d8&sQ?m5H&pI=nrK2DK!Bjy zR7@{O>*sMDNT5>GmXzESgYK6O@wo$2R;J3mp+O|UQe*CFDN5y;329E*BwPvD?I-0^ zILJ;_II|qV76(mwbf7eQC5H;KNR?y|41BhlT9N+%YzY|x_emZZ?dcx0Y&dcuDOWJf z^4tJ4iQFExphG#_l%89W%uoX2H6T*~sW}HMC}-3G1sV+w!}y?5mJ;WM%#sYjx845$ z%|(GO0+!ae1uGVW4G%>Rp0yA{4rdT#n?{5fznzT{i%uOVQB~Y+1SAxHZ>LdefgHpI zLP{p^n9FO&Q8DqNC`+j-PcS~BpprlaJ9V{1x+WCjkvGnK?N~$ zBh)9g0fe>BTDk3HxdAc(6F2@UlC>&UR=k%9g!`^_1Fw2oQWgmzB_tB$TU|WGTGj(u zv#Xcx-9!>2Na{LJTqG&EN~TIm2!NG=(ET=wjfE)(L|P1y2KV1xFTEQ}Dl+1d!54x_ z8frvqN?IXnD+2leK)%v;p0ospmeN{+fCQontv&6vMXSdtaFTSAPnC}S=$u1~@yCFX zmTq&C0(yZ_*Mb~bT2g{j5)AxL-<25y${f;^W}U+PC^qeHr7-f`PHPylRNcPdnjDF1 zK41c5W;2<&>D~oGuV#q^D*~SB0d9A!=Oj*H5ib2zBhq0ctbo zup`&})f_^Q>K25dwT$_9{{TjbMYSZ1*%1O-m?vrb+J~^AW0r)eWngcp26dgUOhQy0 zCr3;IvvVSpsiZhaZcV^}mQI6c(wUJ#pp=qxo8%FG`^mi!1gD$f zvM*@7kwk=txr!+Ze?X}zw#U!C7E>;vCn3xPDKUBdC%FBoXi!MX;8NOcM2w@xJAFQM zT9B;CKvHgP%e*Ap!bk6|8q!-@z>Jd$1QVu%xa&|MN(c#*Eq)RrCvn@>qI^g$0tt{Z zAtp)IC?jaflqFfjq^e{c^d#*cDvR(dA)jbUNdn!!*GhvT(U@gjjDliG>HJ==FiT*2 z>ld|-v2)XC@~N$bA!zpoWH+OZ#lj{a{qIAN{{ZzxAnZk#uG66hYBwQ16qO-6XH1@h z&&rMD0x~3CENx?@{VSbz=9aLery){7LA)EL`pNYZNq!LuO4ekVB;E%0++0(TgyhX7 zpd^AL+4T{;?MZnKC^$ue4tYShf%j_T-_y~@{?2Rpm#$|otn}Zxj+Czo)=pkxz!^fd z6xXG9B_eGi^tA+qFZ9(;t)v)5(;fU%`E_^O!Crh3Ep%+UyX9ts~MeOlDULU$p&xdv8BAzZ6_+GPrGp^ z$oH*pG_)aVD9DM(qApSh&`_fc2|}Qdq?ZK1KpuZM)~Zt++=@`t1RGmHeUF_jOxbD> zAPJ57$R3y4x+rfZ9Z9xvB%~W<-1!{{6`jmHpypc8*&Yy$dk&S>bmxr9V>*Us4C@5x zJ^J;j%LQv%fe{%2&?j3*-u0mkB$cG3&Rr61G2dZUoI6S!vY@a?RGV9WT|Sk%U>icz zO3;wCC`knS+syT?61L{;sR{yNFy+DP(*5AmKP(ocW(~H822iNdz(@C9wf;<{1xqBA z*&(#r+IrYu(x+P^5|RppDJ`s<8{|yvM&IV6gdqY3XKtj0phmIo@7rq9?j2>e{2_3O z0cIdZuyp7rtyW%Zt3p<%9ZIr+7r2rD9rUTy<1?v3!--j1(YC}L=c$;|izC-VNJ0=T zlTZzX_MNGU!scdDzFNwXpf072Z*7i|Qx%!UtWcyCM=S_B3uPKkliHfxFO}gfHHKQ+ zl8{nLQj@Z0ubn{4B`y%OrNDj108wzHHG+DQS?{K~E@`Ik4)<4T3BQ(Ic$av*P|m z_})*G;hnzU_$U6aJkmcej&a8@i-%NXJ<5_NE@7!Qh!?M}@bAQ!PB(xowEHW>Jlb4y z0*8;YB%Fr(z$%FlkW5~`8L8#riWJaOizKB%(K_p=O=i6}0sjD~7`_zaO|A8D^JUK`!}58O0l?S9Uu13GVd^A8p^Yl43RbyYhDNj zGYa7h1~9*y3itiS6WKJTOa;Lt2O{YSN{JRBBS;`uh~Yo=u{=bS<1s&wbD7OJfD9xM z24#P8i3vBDGh;A2zx_Jk{6Q=_9ei;D3RBK-OF5*iz#tGnu>g`{BJp2WkDKGaRq^}& zH_0#4to9LT;jSqvMiHgq880j-reu(8bO|Jqkvhc2nsHcFV=*{nxQAcH{$Q3|dBB$P zMvgR?1u8uaiH&btI3xTo9vf{Kr(EIcC~37k;!@TaojGZXz?0JV8&|O5e}h|h4})>j zie3!`!ObqE?sDf)36zTgX}sFIe`I-Y!Pn{FunWVm-X$%v#D5CEg~a}O{{YJamE}0ll=~nB zh|xtvfwXl3yuTP*?KsvI<+;RL2`;(JPEe3l4GFc0O1x1PGXk!4E6>-(XWMrTLU8!6 z$fd(9u(h+!QCrSBP26y#feX;2ZM4>`W*ybChEnU;HG;LawYCdNa5oFgq2d`}2rveM z(OjM#kHjsmL*OHn@k@aUB@ShWR^SA0Z9h!FGc_^G#qmXBaS3I^h7GgJLoBH!k(dDv zyBU#S00IwarlRrb%*UZTF<50SrMOXtnQcV=T_?md1jcU=xiVB%kru3+GZTaiVp69a zTTUdY>>gn15=5z4fdeOrMOu(=Yt41>h+iqJD}j_Q9nFghhZ2Y~Tm#xE0#gKRV`}GM zcymg_wCa>GZcinQD)5SZcxM8#3xGM0Zb#_^nyqrbAL-iRSZ1+Uj7}31`KH`X4bD(y zr7sbPKqr<#0&G;NZV80iyI6b*4iGq&aTu1lh~{MFlr++k0@z5=3Ac$t#Dg&gIGiI5 zjX^D~N&KKL5aS0b671zhR}u*YB_=>OkSs~BN%{Oc*fttY6+!$k0azxs%8+0i_#m0w z0}*+wwC9Xg6%Szeitq|p#9}d{{@uq~&Xl>An2C~3qEbu(W8I3v&L@Z9u#3f&;jxdn z;r{@(#Wq$sAlaaq@UB#;QPY-2rnRRFh+YTsYh|}W65l<%FonJXfkKiD3qYN2gVvJP z5qOSkN#QO7h*OSa#XJ3IR$xnNfdc!0NdOr&maD^9xF-?EqlPVxNo|4wcrdK1!zBQ6 z;R_H_K}iDVD%5O2uBHQtA*6!FDfjUBW%8BHWaMSiN`iuBOu#zC1LC2+}?)@((o9imKu1r>u$DrZv@x_;Tq>uTo7zj`#3s`p@UKvdx#kk%Z60FMrH2}Mmkd%uOE=dVJ zBPJ=d5}D zM6P0YGi^Xp+1^N$?dbq#Fo2&2T>t zaKnsWF(_Z=B20|P0IDuF6JSh}16s@YSMc+kR~CZei{?3GtuVfbwA|}orT+j6eg@&c zhqz`B4uYk)TOsF}P?pI|b2AtK1dZhAYsb#~mtRY~_+~~Q!asxY_8h;gs#y9@}6fj{bT3u1ff+Ykb$w`u7H;`{?UmW~e$KmXD838Kg;#o_s@*T)p zdg|r{BpjAhTv&KaX{xxrz`N8d54wS1Wg>N=UAgfEs8KY4)(2igK z08jC1cZ%X2gNbl0&>Ki(yh4x!3xueEl>ju!6TN(A{{W?2Lz>%Z#kfvW;Ze-mLAt?G zK$+P+OwFs1_B?_A0NVVumlEJ!DC8j-WF@r=fg;8Ygj!8}-oNrZ$JOKi02y;1bK<{? z+T|Bi!Z8RSO5AXR%2u{bk|#8%?zL+oyv{rE`wz6X@m!|Mj+YCLC@pNclnzpNQb4(q zV2}W>l7IAx#_(%kx}k=AAueZ-U5PNQEDC|Kv`EsqYU9sh)Z5d`aR3ljGmt^C{{Z2A zV)e(b{FmxG@&5pe&${~u75s3lLu6KT5_|(JizLZWAX-kdub<+7j!AKN zmx#tTT;>BV47o;9snn1KhL@i8^UQWRm8X=F{{S?&q==M&OkUc7duk`8a~H+2Pk7tI zy8DO4Am$2CI_)6z>E~Q;{zI$v9*%$U+(){{em6L^xPt5F5c-OLu@NOmQb$rxi%kcW za?j&;lETP&!c+jt;kcbakJ3oE(8Sk@#bRAkrA2E?fhArA10!g@fP5(*nhS8Or7I3f zl-XI=VLp@VN&L@}um1pt@jc={7P_|r9d%A2*>PBhoF~N+L6SO=c#s6q;lC0)iLx7( z8)ZPf{SxzJ-!U4fhzI=F&fa;;B*(65zQZubiC_3ONGvX>1AGKZ~3I(OQw2b9&8!~KS`}}qSx$9EM z%tyL)pP%@yce~R0;&bW^ZX2a4E3{`KFCQJL;}ew}pwTEP1t|wGK7DO9ktkABfvF@y z#mxCsM1&D=BPo+$e&sZ`%xN^%_hO&}?vo-*dI-c77Ytms-<|KtS zIgBXgB!iHNiMHKq$8hI@9m=$sNGT$8740}u-TwfO<;saE$F!3{-6F3a}*d~E**|yNbxLda(5rWuWN?ktT57+;cfhcwy4ZjsIVhl{W@3X zKb`Z=`^orzpZGrw`2IhClCX+#4*;C4x`G?C#W_)}=W=G=RLokO#=Mm}xn58~TtxTl z^qA{i6=DO*;edjiTpE05|%1S4$a;OZbqo(Fh79rkjmU ziBIudrnqwD31lDwLPBq~?>|~%3R?@q%JC~~6#@*}@@@6KMrtf?TQ4~JIWL2mKGnwD z%2Ovvjb=?ToC_ER8*$hDqK;CvgAv*_GqrAK@bG7XwTe>0(Bgu5Jj|j7=daX>q~nsO zu`6p1q}mIuwn+@^4fg3rJ>Q`ztQ!~>mWD_}V5XoAwpSxTi7yq){ewaZXz42797n6!4*J4Tz)%dckfCR$D*)$5y9$N2RjtYR59L6-1;hSl*2_jampq;?AWMhZEgq%hhl(c|yDMUa7?f|#L_od_U z7Z67C>9K2NFQX8no;185k*J;Ry=Y!1619l|yJbp{ zlLvX%dmH*|T+xGf7sJ~KaN)uRR}4%J*7;K~&L}CUQ;rz~nFBX@+pTPs# zhvC?KTdPhH(t=w67R-qs+v#e!i=ULw&UM^YAthiC657ax0eS8Xbkyn=P|JD8#?ytg& z{;8}uoO&?WK;*U@=7L))fC<;RiwcW>Ym@Z>#xP;$3fyRjDGDIM!s6GgY+<-&9}Kl) z&{nr+Ul9OpZ@YA+9Amh(mWCy6UP?7?=1#+E+0DbLp^zoAo2Y+NHvZ`K(keAxVbd(Sb`@c^*V=p@A5g7xhLP5%eKEwU|?E4G}TYHJ0HVvm>wMCt~jUh5(*+@_CB9Ut_pD|Tdui~ zEp5pNOL>8`NsWe}4!5n3y7oCimzG!oAtjcD;0sCVZ7)p2aC{C23h7$Z7tcs8X{t#( z_@duhYqXj6#*BMdf6Ow|S>Gval{>iV1lwJ|YUAROiNs-Y@&GNF0FZW>lfI+jTk&|T zDqnFJW_hg8=PaPsp!`x~xLN&xqKM00(2YonI|2rEb1?2yBM~M(bX{M@wrn zRVvdF00wb246}(Qi>q~gOhQlE(qFXC&UD9UWmfQEOC27Uumf!~>p+FgtCQJ=G z({Xr};gsWHv?00XOiIA}k}CAaClQ2m28I=hS=v^i8lIi6@T@Cl?wrNc0*p zI>G*E1`VLv8B0L6T`Gi+W=_N%fxM3Wt54>6xaS;YIS{iAn9UmZ^hzUdABm9K-j_+ zzj_eD6N({0IYbjDUf<@uv#(DT=h9OF~lfiUtf70lln9kEcpz zF=rzDP$Zm?Wg^7Ta!{=K2tv?F4g&()6Z}$C*i(p=45X01Y3#uRyeqHWsjZ;4$#F7Z zL=gmziTKi62zfaX5FirS z@$0cacc!BZr%Q@by_%F1o{1(0$NbaqU^Lt0z zh_i~sSsb%?Jud^$O>e^R^ah&4DXwFMBxFi~D(qAy(G zR5-b_oVgRE-1VjJ^v@S9ZK>eL<{K+eNq3q-FrA6qixVSpXssBwx!5!iryRkc7gF-U z867vwk?1T(ed}WIMGQ8Uo*1(1J27XiB%Xtz6LM>xgImvHmV%dYE~KAkQW`2i_r!~f zfu!jdt(_;uyMgd$_`|Qb=OH*|nlGs>9K}aaGYw+#pb%y&8W5g&L2X}{TY^^L2s5pQ zzysF)x7?ML;g^Kr>r+kQ3t{H))^W!{1rnodv-(VH>0KNT1jAum!#whkA1V$!*cNaF z8QZ8ZH-lN`c(Gxy_*6W@icmmyQqxVj1c{Q99_mOWPVwHluPYLaIC*GC3*l}&rrT=; zAOb-P3L2_HMfbJ3>3;&|2N>Ik!-2$J#lRfTXyT$!Ad5uAO~{=lox`$W@Ca5sD6E*s zhfKugB_xk}MCu^v(x=Io<>N4XLDXTLdjS6cupY^^07_5y0!FY;q#JMaR^4at{{Z3E z_>M*5F}$*t+i}8MQpbQ!ZB=qW*nlmTD}(r#7``cu!eQM~9AgZgVa2%Dws1_NO$K5C zCt_y2uj39ojm6>{z`BPq4&mIph?A+4;jl_(CIGxdR?Fmz%gu4jMmLXsA})SiZ>_~4 zN@tfKt_TFir)f9Vy|)1leiGoAm8_!;#Sl3~E&D~J%mP8NB+9$#<(Kg041Nk=;@(OM z%PUfG33D@UUs3__CrKL}WKtU8Se`U+>0T*Vv_9caB&rL95i+1=FWA`LuJ^vb3Gs2b z<2Z%m%TFb4qmnZQ)K-AlfJ%wItu^HM=jHIt7Fi)|rr_omgJ~OUZL8V;0MsAEjE*71 z7R#?gi_6S-`$Yi|g&4Y^M3}JOTKU`(`|oBgt&&v^VDXKqau@Bqao!+jR7kuU{(V)1-EDHr5%S%f!E% zDQpbL0A5Ap?dSFDf58 zIY2uo_MXNs6u-pWt}n)lnqjUSTWm5?w@Uf2ed#tyA}u>kwa4r7eS`jMm&3*lmcm+f zvX!&}E-1{94Wc4rSl3G8uM+kt)u0s?vj+^MN1mT5^;|973&?!pm~b|PkQRol34xR- z-edwNPSxN1JA~lL{5`~Q+(RD56P)iYwwo~Oml8-PXiRKm#`QTb-Bh-I9ucHG&J^M? z7*+mV*MF?`u0T1`k|Ni?nC)4d;sHf!4X-2x0EZ$;(35gw{8zNcV;IDK5PyYmo)P&x z8*ViIGal=O+)lPk4+}}YVlO@$&3x|=%15(9sdYyrm?C=)+tglW{krpQn~tKmmnHSJ zk;fR(w##884a$aut60*#4*>rFh~ZDL?m4xEq=`|=L_viF%uE9W%y*jc3&klohS1?q zTom%qFPMNLeLX7hIOfrfLyxwBhs_Rh({cvYm!HzN@n5EY2cw98*L-dtg76*;wlG+J zSyMrv0#}v+6Kxw(cYrOud~g1vei+9768u%fFqrn4Vb%!>Ae9Y#3Q5$bp|45!2mZXT z{+i=PGXT`$N`XAa!>C9Af=7KXwd=_L0My_5xsU$K=X#8CeL#Hq%ccp-eJBxY=8Burd&(vzs|d9O#nxQcLi^d++x zg&kZz=mtpy>U4t@`V0P^{{YsM{vUG;{wodxn0GL%6GkLGvqOy$Gm z{wE(l{?FK-hrjD40~vuBgu2EV#@Pi}ZfH`}R0ePoeb7=tJz(^&rhXRx0IENphRI_V zuuxq%Xqn7XT;=JI0SO~rCLmYftalZE5ro7v{uxa=r6tEPOBo5DaAlJM;X z;;t*gqX3*r+e4{JTV=FM*(89Fn7IHS2->>O{I7rhZeDBu0EzhQ^`Srkm>z5PZ zVWg{=uvuF%Z|P9+V7(wBXlhT3ETE=HFi z>9LwtG4aX8q^(V~Nf$7S2r5amE3BB6XJpB&|U0;erIr7#6*$ z&weFgNg(2yTs9kRrI`wu$tOZgUSoc>eig^cR&T^S7X^>Px*ce`o>B^03Cswe(gn#j zH;A{DeoX%Wt^WY@O)fWx#Xf?(@Y}qn0^CVTy_;>RL=}M|PPaPO>r6)xZ;*s3NDcD> zR0#kjX5m+`n45W5g8X5CABnJ>f^e=n$X;aK*Exj3+YSE!b;ab~E4Mb!P8Lnq^E2^R z;n%+p;$OnLAIKCJX71_?048DD2gXWJL?t9z;KqXF>n3gaZ}Feum%j{SaMIE_Yb7PM3Cg~^5;}G_ zHOs&7_a5(#&y)Omet`b~rl0kpczi}B&LZkohe0j21Qwkq!a`@oZ7-(#SJ*gL{cpqJ zFzzI*;tD`#m4{MFzyQE-4|vH`-T|?%!gx2Fz@@;XycP#60RxvdSc9g}eJiiSe-q;w zEHGS3p;=oAcfbs9)(rZ)5 zT*c60yBr&eaNJ|Xf1boU%~1vBUG|QxDJmtvK#NF#BIZcazXRYu>ef4jU{Km|s}4La z+rA?jdgKDkf9SX84^vWc_M0axMJ}^2zL+p0NT=!+JZ`eJ~X*K0%ah0PEDr2 zB0c{ASU7`dVTEEFTi`60TTxU6D3ft)nv<4b&8=*BANui#e}`jNi^M6^7rAS6kU5H( zY&e;mkPXuWde-dyxz2Ct`p1fKTqYlhI)`x0g_hP+i4FizIe-E`y3&xCH&ThbR{R(J zMc}UCRo{7?S?QFwRZ%sX#4iw=`HT4bnml@LgY8Fi7k zHU!t^jx+e9jbOjyu~?tXhaL7z2Eu~Z5}9wq;wreClVPPj@4>&0IQy%NE+{FKw&-nT zC~_5{kU;=}5+)=`sJ|?WpT@oWue>$?09SCB9AdF;;gAVY7*`ZRTuRbC)>8xwq=OrY zCb~F3{>Ub<%sY(^Vcf;^Jurl-3}`LTUdGio=Zc@jvOR|x z{{ZZz#Iob;qd7yzmdmD6Km?Fr`-X361~eL1&Hn%pf7b3d#WAinhhM{h=ZJtoB<_06 z=6ccoBzN$47{Oti!mEgf8f>XfzH?@HD8fW_1WJvdX}xBA{vK}xu)Yh3#$(!ua}xRF zrzrPk*B}$uQx>jWe1DT=cGiOn}4!R3dI1U4k@$5T| zGls_E*O>}zHHRZu7d;4_E!0<23I70CSw)7KyjFF8 z*3LTb6a23X$Cvq%qHv4kvYC=bW3&j%yc5#Ao&NyjIp^N%-SPhbe~fs} z1>Psc13V7}n1c5dc{p@9BVtUGVm&KfAO4Ad)1DoRLwsNHnc{pvH_dYez;Fu2@{O!j zAP^0`Op9N{;&}HH<6J`?c#56l7`Dgd(d`tn)Y=kN0!_t$>v^t!;LpYUM~8lWz8u1X zh1vYOVn_g94)6){^RJcif8;((z7h4lKm32kGs?e9ehI^V1N;ur$8e9p5AjFTkbgJ$ zrxcI@%nX(j07QTc0!E_5g8Whc09$_(aa=d#mH3ey6NNMok%Hh+!!YSUAVRYHO(q6w zsDdK(`LREZzY^nr8V(JP$2@;D;0@u!a0yTskO>ALcDNBdDpUdxm%Qn57e-E7XK=lx0Fh z3q|I{S2GjGxZW=i<{Jkn#=JvZwn0%!E@BLlPg%EMYwJIS{{ZOY{2Lae;~Qbqh#8dO zdzFW6WaZ3U)PQ7x{{W!BO&|4l1;Bsl*8#=x4hrKuL2kAAGm67D;u^y^Bbq@V6%_%O zQvz>#@PG0=u1BhTGJQN_fArUd{uSY)ihel!L|w(c;M_MA!G8-j;&7|tD`dZk#05l#k_FXi2Vi8_Rv*HD^vm%#{aWH2F<6Bc zG5k?YmIfq{)(y1yWk*dQg!C7$*9hW&^!NUX@OF4cFNiOQaYn#lo*LVQptrJ#B_Q~d zzgyUwimUQpt@h5RkK)?=uf)IUqVS)Nn&6x%jzbSV8*_?c$a&WiY-UN7^ot)l{ZaTo z{{XT3@P0S&)(y6w54zb7hZ#~vK_B^!UlAixZ)*XqcrU@+6OVt@&&Hfn9mm)_8-_AK zMjH%UL#;Xh{;cnFWA5uaSCmiV2fqgXD*REwj}cZs0PzP0!uWYBg=;E}AZ%@MzML<2 zul=1oc4rqWsrb9_W1ok3tL&sQhgCSN_;(3f%t+;^0eFc5L4^0OZTJ`P>%2#SHaIRl zTnhw)n-RnC1eaebB~Fsy21!yvh@HmPua7P7#(ZJrw$1|;i)k*bDVAN#1QQLBbjY21 z7~a0M_+tshFu#SIV-1b`qZp49tu^g2SasVzWk-cNnGvaumFLgfr+ed@?ehNs#@Ie7 z_^a{y_!bY0qlbP_^Kn?!gNkv6^5rUz(3vm<#`;&h{1Ny!fN;(lj9}rojyUJ_la1o9 z7rDVUAm$L8l^7A?0%w0B_u)(*;O;s3=J5`GV;1XR^OO{a3Wx|U2?bX&be|2$73@Fy zX^6$(@M*;2*Mi~CI9wQ3jzGyNIm4=nCS=&nl6Jo7*E>BiJ&fYqM~Xjya}u0B4;Jd( zOU-zkc4Z~CCO}94kq{tG#w&YYfVd6~4&uKk(8Q+*4k#g6gJ=MSl>lx?v+h&2p zD`VaO2$_Mc#p}=hC;WSg{8xg)0g=DTkmorhwF{97bOB;Xjbczb)k}+;zh0j`{{Vo0 z4%vGhifabJ1@wl=XESjDAbY3Y%uTc)*QDV5UETwSbsR9UhFMW35`@aH2`MC!1PLQy zCe%!&wU(8LA=e!a32i`^VM_Ljk8uFOwxA7ku7(Aa@qQi7<|Tw-L!6+~AcmYEj%)%A z)RlORu5X~Gx>kNMi{iXRrwY{az;h-{JCcIAl1iXv0>TBac@QfLxV%>ez+uD52yJ0x zVsPakiT&*us8+7P8_+APyd=s6CO7U!B8$&F(mXxK$65G24H6|bcFDJhn@isJn z^oI_D$PO^lQsW%RalO_Fn3Y_TJfIq>`e&z|{K#nzubz}Ruv|EWgJ&jSO^S)Rk|N{@ zt!EyNW3rnlw#uDvFfNG9zX=2l3S?ix1$6PPwZfH{IFjZeAh^(MlqJBc1t#GlEitUg zxvpcFme}G`n;3{8Epv%l)Z&2vBwQKRCN;jXQtL}!38>KM;O#$5z9Ij036V@<}N+_uEJS<`=R}?r$|y*yZ9`$%_uSgNVjB$2C~K zUSuh722zq^Hd%x5tHxpQt>PhIyPd1NL59qT4w#j1B48a1R%|XE%q|7@l)ub0T|CCZ zPDe}}iJ6@7F|OjT6Nqz$@g8atvfFT?*D#iuC9ncSTYWt1q8Ty#V;X{1wQ?NMoFPh7 zTL5K(G)iQN8kwxDt=ChPJhnMW<)m`6gn+Q(SIlk}gBJ=CNjeDt zz%y8%4kgCdiccY#%*xzROKCZOP}NC}k_^t(y3A#okk6Z6os_5 z{4k)RjG_U8O~*;=wPucctt%4p(xjI2#n)*7b=Y>Q=LN5rrH58@Z3F~(O{9y?ntDy> z(xl^X=wLUI#?(?BSj|8EZua@pF%Gn}pt2SES!}kLK}aNxZXn6M>1u-RAUlV2ITEg>Izq832nk?w00S$_x$XcK0)Kkf&P(sM%V5idp+sC8TqJK{ts+KT z&SgPtj$?*RiPU=hZ&{!oT9ycg!6MwXTpJPrI+?xwDa|)>7lCZfzh*?nM2Xb8Mjq zTHj?k3!JgazEj`K3bkNROo5P?<$xrB4#RtW+Nd(T>PB#7B{3%Uu$b-ZS*wsMd?*Ak zqS_!#olI-qB#!cF%&e)bsSAL8nMJ49_U%H}0Zyc;z*`^~QpA~^#^SYMTU&gzB`I)$ zn81($`}x#b*%%TF&Mhk;WB@rpz)|heDTr-ILuy;P>RUNL9Y_AqDXC?&lIc$}Nz6g} zy+toM%8O+HkOUG=m-VKYR&up-8w4O6sX;bRp{s3|vmiO`2p$wS1HP4^rX>Orq-P+P z7NKsQzEnn5>J^$-U{FuINz&SHS*pNdGpsOHq_(jHkZ-KtVNnh#O_0zGMsw{oPn>Ig zJn86t3S5{%8y15X)5_m>sHF#xyoF08yuhL?dPHh^nWmUSeiW>@na(p1Y%f2nYOFJ5 zygNt?-6nE2W(MGTR-E}z+A;#Pg}~R!PLY3=C?&>Hhe0RA602E0U2pTIm?YyCIZau{ z^AMK6lYWDJuT4V=#bIU?*?^qx`|k83y(Mc(-&=z+H3|gD0&RUoXiKH6G+&z%+IPQ~ zL3%e45VBn)1F#^$=w|o+DHz}TmXQee5JHL2dTC+vqedN0rER?6TEMU|Vd?hI-H_l*b%o%Ze={zH3&;&LW^NGBV*rQw9^ZFg$z7rN>JK{Y@+K<_ZxqcRn9^% z>kDZJ$$n7LJ&6}4)~y)F7;6et97@N!K{{?#-gg^P8ApM|b20(pC?`^PBWletY^^v{ ztwjf$9JHHfCtK9S@htdu+f#~_oY^wz+SdnewV-m^!!}Wn^7EBA?aV~PZMF5R_{>8u zVcJSUgN0L@-aSW`S{Nh*oPk9-5P4+GNB;m5x&A45m)FndG$atdU8W>mU5M-a)M#X7 zvvs>+B|wlPPTq7_JTN$nK4X!5vSxef*bNOd#x`&+yxRe80#tJp2)^gaEpF#(+{aA=<{+3Pp0hi3-=(RX0Dze%Bm*b)dBp45 zwB#vlCn-Qeq)ZYb(;Xs@DC;ng-RncBIF_41Nf{s*F(=o~j|P<%f|$q_0RnG*4X@=}titfvG^Y+p z0kwfGB?2aU^}n5L=JJ>b&lz9 z1BDw7skXY-eV8SH+$cJw=N{xl8MH*&n7mK1g@v@-2?@}cf&AWuOcmp@B`QG*8H9KM z>#npbdV00J{A69X@xovP4tuBl1M0to;sP-E%mLyA{9O@w4Q$kf3w zded?iRKF#mMdJPEv|dk`U)CT(7TsA)V|p(7fa%NCaNQR0!oZ6sCdAJ_y&( ztyq~Pk_3__Pn3GqIQ#;lfQz4a=y#s=LsM9iru;5XhEFf9{!x18;_+y40hB35EC5cX ziSA;P;U#b`wVNcL@k>q+B|B!B0Nf8sOaeo45CG0qZRggD4AXAColigpLYH~kC|g2Q z`3=}XhQ#{SB||#mM}}jm>3Xo#WXlaKha{Zce)pv*4K~w+W;3Z9j{gA70+urbPI5$* z#Lu9mt!hh>qcV0Ep8o(kv?;8qbf{$uoj}{K`J=<6D1wqoE#OX;+<%&;QmHu{f=P?P z7S=u=3OyRm4dN|pPM!PuP!p~c4`(RLV&|+!m1loD;2F-NX-SfAy<0B93Xm3~2f-P8 z{{Whbj%|R50GNOY($%mBB>_sgA|%*by)T=aGF1QzUirMLXrfgFjY14n6^B-^K$U6Q zx+IA!a>_)`vmUh;wLu#62Ux94vXm@ugW8$_UhpxWOOCY3%(7IH z5IzISmeSO*mS?EbeY#Xs-4ZjAK3+y>0XUMM5tl&HJifHSncsHfLjuFnv!z6+47t`w zPp6$dfd~fRYj8ewwF_2fM>4{61j#0lv}IMwjENVy^R4*`S_NkR0R2w?0AjPP3C-j2 z6L3JVq@{#3l_Amr&T|8O`;X$f2wP}E!oVcydmh!5QJ7^g5!+MLQeIiOLSRLV+*bXA z#J-%sB#6=hi)=gAMXM;tqXiko;)F!yjcQeFG4w%|oPkpzvaMp|cHaL03Rqby!WruKMp4Oi7l08MBFWRJ%^u{Y6Y##=y5&_MXzHs z`eSWsopN>joliQ9=ulp;;rG%-s0GHMxB#{drefWOqWk$#I|^{6 zDoo$Zj)eE3Jhss5Vlt!-Wbd@~?becz6xWHY@F&6FziKTJ4WOVaI_6U0GojPYX@w=i zwK&p-<^)aj9V*bL833Tf2$S!s+QdZmt5S#|DL`n2SsH_F0NhlC@)DehWP~ARVRt5f zP&#2DMXP+3}p*n=`e`IEfwY9hg{0Z2+g z@wj9q5pU-ER6;W&F;LV_Tgm&@g$pf*8$*X7Y=WP5AnWB+pjHZy+KCVX4di`D);@Gp zi{>RqI3nuQ9U^M^Kma8{+P*WHAxZ!X=sOR%-i^-^OPRt@0ZNL^iJg0n{b*CoLNjGj z+smpno#aq~d6v=;7X%&oa0uyCvRp_|7Z)U|3QuoJJmtJWTFEc#1bf}DXw$7ssdWSt z6iSIn3IYUa{%Fv;pw^%)k`z`5CQVjwfKs544#*dYn*e@4wKLjt0p(eDRjuA@WXWElk&8$osDp*dh&9VFUkr)pa$g@iVg=aZN?3=iAa&W$R7gw9sh zb<~ml-LF9uLgi}B%Yu24xHh)>8Wm;bAQb0`B#=oXzT|ckS;!$u2bydY4ZP2480E@P zl%f<$P)XJ`AW%`BVi2Lsa3vXB+`#?+0AW|`)|DtJvEq}M$(<%+%87Xpg{88fh|&mz zZcpCvQzk>;1eX(WFcWzmbOI8A3jrt&S{%55Ht#!BP){s_kbr#TcRzbm6qh8cC|Uu^ z;WmS;p7beN$1Q9vLPxVMfB@86ZkM10X5|y&K{f#PzW$WU%VD&(Ct@x(2fv*z$ZIo* zTcrb1e!iyulwjsc0#uk8yl5o)+iUAUDrlC72ucvzpe|sOtY28UqC!-Y2}+=dPlf?I z$6CC(o6OiPk{}bM#-eu8)qJGn36*4VGcL#t#-ew=^&x&W1v*HB8Dmm(I%r6$Qk#I3 zhY&})IxbAj847f)#AX0pQwMLP)M;e6zY4~C9$}Fh`J45lHEy=xN+C)hf8!=e+v_4~ z!9rBEDLEX_2@sv5zwg?TQc&93O0UZ|i5KfP&`~GaJlV<{Bt$FpqCS)RRV53`Z41ic zRx-j!J8f^@wNt@O1(1#5$rk{9Kbunwm6aNO4)zCnAgvf==J&jScdW6jGET4Blon7wCG`23$y#Wm@u(5COgK5ul#5B_lWq zB~6pHr@y5ZEQQn*m6QaIW%eF>{?!!sv#-lTT0*_@lr3N=r3MZ}ZhwK) z&A^=N- ziS~jDVm&vul`^29g(M@yNL0b~9d)V%l`TmsAi#heHjg3Y@DwefzF1Jns46Kp(l6!P ztuY=JkWzyvJj>rx?+=A7Ny~=-hSr2hC|;*qlh$$81QddF8g=d7f#v3O zASfZY8Bo~J6JR{2dL=plVpSp03j`Hq6RdBw4k1}qQFIo;NkYtkG`an&onJp?p=d*; zc5eAqyp8qLnir)&ws7XxknN7&4XB(~fxw%I8Vg9gbqC6l@^iKdbC9)oiqvL2{{Vi~ z!{oo>_Iz{Op0kli@tHui;&sxNwveXdDFBPfjNgAcHK;6^N@aQ|n-g!is#{7)%n(G} z4GM=*w#3)xyT0F|_~)n}coJ10hyo(<@TJ1C=51NaVj&~Gl*KeNg+REH37PV!kP_f3 z9swY2GkbTgZ%z_Z%F#u#03LnfjIxw8=4{C`;+w}$of`Z~33DM-N~|=Ezs(0B82VFJNw$elJcx7T64Y0Ix2nGagawPm9R;6K_ zeQmbjLuGA)k|tXpQ}ZU6+e)5dh(sh63_`O4J59}KX_UGe!?;rCECK+4dkg9`Kh1N! zE^^5FkcNP95B~t$NK}xRLEI;-eQJ}2R4v4z8QX7~RVODd1epTUub-W445`+OjJN$# zBQ5fgs55DiJ$8zil_kd>L!r{OC;&+r&|(3N1<8*wwPvfu$;7mU;+-;{X09wkvYjS; z?H|P%ZzFH1OA_KjR-mgj(2rjU-&0*6h2h#NORa_TN_HgL=Qm?vJJx=Og@00&?VD-N|OO`)(xa9Ivz%mOrv=r)>f z<)nbn&xbzHAc&c;zrsa1Y?Le^X((`z(wqh|!10Ll{{U55%L&MpCH6~s3%(gD%b0^F zEcp;j{?z_bIpL=q_HL*WULX%0?q=Xx^%sOKfE1;#Da;#GK#fG~MPgnVVSKQo%*;qh zGD)8p=x@@tR%1pp22kK>^Ce)dxiEq?1Q0G@3R>`C!b8ofUCyJ+GPMD&U7~6{^H_GA z2nh?2TzR~tW+rS#shqK<`&33Dwp#&7c3P5iCUS_M36XKEojMxpJF(93D+o&0%ve&t zE{7l}B-_kS)A+4S@mx+B#09$INwSIkW6tn*rmGf*mJcyb^8Lp-V3HF2e2C-ORuH{s&FFX8XR*sKY`Ih?kJm6R!78=J^c(D#ii?0<#7 z>gw<*g}h%P5<`m47YeHQB>)2O41E z)}*-seg@kKK(rHU69f%w+427XGd|uv{{V}>Pt)lC0InEzp2RxJ(CXbXl$<%Z0Hq!i zbfyfANxs#_d;Y2LekiO?8Be9RTmuTy)Rdz-^1;dggxsp$=t&j%=M%;=VX~>!b0k43 zB@UF>n+fk4d%D*z6O3~@)Y(!R%2UlQ5RQ=tQKfph{(P0@>-ak|$LUNL<8B5pfofRJ z>&WJ33J6Sia;7u~MEOV{kzR?9#QYZ)`pz#N;`p*6pV$63m+U?(iAFmGi!5SU zd|?uSb0RX1SyWuWk(a*LtgJo5+(UT7h{=b;Jl{C5@pTGth!}tYI!03is&$I|pZ@^U zyh|x@Ev;d)sYwczTtSn()~5deAMtc7tMevMk^MLz4Kn<1eeYd=`LWOc0K;STW*dxP zvEa6@A&SB;35rTuMj9PJT9OI_ikkxpP*Bj3zlOSxuL*(0y3QnrSA^y=k}(b(J;5sh zKuU-qI@)b|{DR-(d`=yJ(09Nb3RIgwJ+-!{wQX1ZQQ|HJ(x=>8ZG||k)Qq>`hK+G&tX#AUKKxtLj=C-?gHCxWs;RP2B*UU#z$(5@rLmDcdSs}AgeDm zAuDCL8Ob1-Q2zkOXaGUIeo@1J)gCBYZMPphj&OLAVP!(#nB07O*4BUO7B>>DhCp@2`T~>MCzoS zfjVwtlZpI&#FmzTbhr*xCAXaO&+7t-{<-DmxM47Pc2>IU@{{XHHwCn5P&AEnk;;;*j zW_6{&PH6_<$GokKMSMBe3#{blsK6P53<9C49#){_D-zP&OJKNe;3f$s@2w28hOC#u~?@vk^#`Cr>F5>Yy3C(vkuM!^5tko zAfyI^O%)-O5jjK{0Dyc`Xg){b>&Jv+1GsWua5@8Sk^mWi=qxTkf#rJE&lq+KOrhB) zD^3BCa0K|0OhG4cc3uH*!*Y0D4|(**Pq1%%g_;(v)91Mv_Y7K;*bZmQ4Pl zsmxNZ#FRT6iOvX3!LsXG20uWDKG;w4A$NP;aeIoIGA* zk};geQsa*)NQAnf02msieTF7#jrLzJf)-PU>e}%$uOLRCiFAR=)+U4?`X?aLf$p||FZxb32K(AIf1ITe<#sI{X0G3n)nILPR5@47I z<4IoxbC~O82yxC?fB;V?V0wYua(Y#NY;X0~k$V7n?ekgXHttpm-%gj( z{)QwB10Asn?KWy5%jf&M9r!j-tV2R@$Z5_r!ca&F z@R*IHN$;h7JAm*+V2Ex101Jo!g)GIOkO}kKy?hVleo_) zt#uy7If~^iv=Y3l%L)Z*15@+cKzmo_y6fBZ9L8nhIZ3mnY=p^EWSB7rPRG;Ew6TW7 z{#9X56f~tI60@3njpEwwXt6IegNJ3dNmxYZLb8K<&+Iygq<(Gp-U0WEXlX~9V=;rV zjjh~oP`5#pwGM@V6w`hXQG1;w|vnBAJar!T5y7FEWrVsfh=s&~H$uLlKT)1q`s2g6nXXGiJGxN0-vHU@+^$ zVV}x_;~ebhdHqa}O~en0$~F$S@Cn!$>>R z@myOX7FY{xNJ+R}UX%O^xu2ICzfjNkrZDUwwLThINn4Zpw!ZUo+OuKaIJ`JUUP2vI z6c7YPn*E8IO3{eo7>;6+SBNfVY&v`@k!+)HBdsx>5y?}3m{D99OM4A9s!#o`U-E|m zhjC3hOo(v^Ovvgd0B$X=^`jcvv5aBaN?Jo;1IxT?Vt4*) zu+9y5_L@V=NDRVTX&&Ls>6)H;jl&Yw%|r^TXDp>rt&*puK|k)lrq>_ z!aXHxTQ%M%2(D%%UD`P;dKp zu5&oILr6#E)V1Z5sFF&A={+^2T$dRC04t8hB^Z)a>cWbH*0HroH z3fB7oW6w^t+~PQnA&&M7bRnVxKsKF8xbwI_O3IEHoHr@;ypl?Y{_L~BYIeSNs- zW16O%!?dul2o5@!%ten|ZCc;KDHn0rgvy-C1jfUu)BM*(<%Zuz8Js+3A+)}4m%T5E zU=@dJ^992al(^wG?0oO@rmuC)Qp!?DQA19*3O?~j>#g;yZ(tltk(ZQ1fFyPD>!+mD zXArWaWKdg(7hf-5*m~DX0f!iuno86V(gc(b5j|7dK(?mdmAj4labCf)R?}HTIXPR< z1Nz`ix_Q%`Mh%kMUKz_{m+Zu@ZSQv4{{Y2f#$phxY31c4o04uuz@EKy+Lnx~CB&_G zgg8B-*Ef^be_bo0@sHU{sY68!DMu^~reGM8aafSb9e2l+taw!4ydZCztbY~L;@qq< z%V1|6(nOh;bH?jW!;yRfcSXDzA@vJt9bCg?QYRU;AR_PX- z5N&$F#FB?`T*Qu8T4R!L8E;|NuJykX$;9Sy=t9)5X15^0(jaTswPAk-l)QwYAe^9o zcK4EcTm08vYAkZy!L7#@;Zam54q)Eeff@p0=dDam6$)}vi97hb6WD3i)zZYf$t9lw z$a6GEokhv4Z!ezyWtFtzz!?zW*mXKdpM`goHZiX*7Yoa22yNV@Fok=%Tz~EJq`2wI z8(NZrwTTA#PkFrWTM-Lw-cn2}TM)B7_UwD!s|~`P#4QrlMp%T6H`;zQP2mYqanyo{<(aO_$yxzw z(yN~iY^2^#r6Ft+%vUp*w-uGZd`3LGgEi`%*PHs-UcwwU8D>xlRXM|gPp_QPMge7_ zRqVh3g5`|g?AGKVEg%3A;P*gK1_xRA3d-`_Z6zopCg2GkQ@wPZR~yV`$Qli#DR~oe zyt5;>d77u53uLKIc#V>{fg2O+YK2PWoIxp&sZK=NBd6R|wAgVO7dcgM6?Lo}jSt+}dB#EAoI@YwQv=Ft9U_wkE&~0-aAl75bTZ>9l z<5BQ~Y@#H3{{R(Ix!BXq{G$t4UUjBZ;1EfhpHJSc7$FE+RHO-oHVKF^sQv3c8E&Ox zGSeZkm_!9{`_}v(6~fz#NacW%msYZ1h_D?D_om}97nQKJHjw3^S;gdB7#6p~)|z;i z=31PIbVMYmfssdb5B{`YY0~wNh`NHqNkWu|+dRVNQUvtAwu&q&)RZ)os5VMLkS`N5 zc7sD2cskj`J^8N}>&m9#6KR!1Oh_dnEu}k%aMd-#+c@WcG0s$g(YQ=bhi!=0YC|}d zux#{pKvQNjgLpD`^75{S6vkqBlCTJKE3KupnOTrWanj;7tlwrChG}?$o=pD$$`Q%S zgfcuCW( zD_iU>rFvh(*w4u!Yv-3sq&XlFm&8K-;sFuTHm@+EtYeD}J~?f>%lxyGVtg^1NC3w{ z*1an!Y~Y-ISd==}8Nkub2}Az?`l~F+21NE6iLJGm(T>Eq_?L>ICl0hR!}GGFb2A-D z4VeO6YzaXC1}yAmLGoI5t%Ykdcvja|tte0%u|l#MeUsj!pyc^G)Eek2d?s z137IW1-OWmgF2gyO}8SqehYcjCDb&~X}6maOJJEKgO)TY17ZP>I_G*u9*@Hx@Vp-r zj%mbVKQ72PSKSfKF)_;?B%WEg2P~*sygvcKvw-|S=MluPLl}0-xl&I!4O>j@Xew6Z zYDIlJ@niUo6~M5V7n{$E!v`ICv~rZC3*eeYW4L#J>@6{u{yYm=v~*BaH=>J%`RO>i&WwpXB0vkDT5#bq(Zc}V`}Ne-*mI^@cc$G_=fq8mz-LBO9ZJ_ zw2{{1!qjlR5p5yZaej$sN3B*3^Ri)bgO*1g>KcO%bdt*fjhfhj+RC2;(8w8RotoIBV@};tt;(SI(JA7#a z1m<9zq%A^3ss;LV{{VHr*(*FOAiA`y^0W{wasG6zxL1jHI?9lf;ReMnBYVLugOu*^P|(nm05CBF=&AScVP zu5vNzL#`VE#c9_sQ&9uGedea6A| zsN|(ek#vuEk=`b2kDPSyuPKUiFhY``fU9LDNjsCjts@eKS;e@7l_|0zIpSbxF}C)v zWsm$HiB1^4u#7M-Ewb8_l)9pm5GPSGJq=*N{t_W2Zz#49M3)RD1n5eD&};nHN%L`^ zX}=d*^2^;KR|!&3 z(-?60%OIBWr9>GrM@xM+tmB4aacwO@*l|sjEu^+mUONfiMrbzDBE3fq%n*z=F)g9F zSxbe|8%afFfx=T)7#3H#3HDBHACp zC8cv)OKNS$M>N3@l9Fzj1Oj*Tu9`TjNL~^`zc`meidud44p0dsf=D7fI~eO;Yl;3S z{I)H(Ff6u)({ld+A^=&sf?$$T1V!eWcwZdF;IMe*;TEv%pV56#2ipTxM<5$9W1DVGLJGrJf!g%E5mY$!PMr|_Q~aA9#Qp%~V~kLFNH z1ex0DA|fYv(rb+0;BGO9A=Imy+oYDB7D1Hefg)zoCr~D9iq-`jKZ-y904<71Y)Mup zC{a>0w3tykdD3P4r`zbbf5&a{$HMSVxQ-wa=Q)*`y06Rx*l0)XrFO7?^#hD>95U3) zs$LzERID?jD_{UKiBU5K1en*kubS|X=NIBwgnk+P-Z8Y5C!U6ZSV0pDQmhPV5(VpK z5Aet0UL@8Z4T0eY67l~4?Q&9G=Vg@?or0q@h#h)WXN~*De~q5zzRAHq`yiZN1@vL@ zYsca-E%Lc+xtkD}5VrhL0YYT&^RA}?{{ZZR;v7;zP-8Mk4LVXvf?%UCkv8Srk!=O9 z`O62w_{-SzaLiKw03hR}hT4DuAFSp&jd$D5h3~@{j1o%F`mk*ri8zLc zxl3i%IEX+~_@e2<6iF?RJS}N*WN8G)O8m8o;&{Y9ygS&ISb4^I4ZNiUp-2;AM1lLB z_n=C#ERW6N!tsl7oax0T&a$BdE3Qcb`@tP*=kxynlRo3igWjfpKj*i5>(}Yhf8)LmXZUmP_W8aK4!$$O-FPi6zlT;;05|^P zc9XuAtgN~leT2BvO$dg=gp?KakA(bd)o`!F3QyygICc#xUKz})TXJk$ICe3&8&8NN zy0F+$IwV})Jm-IvbQ$8fg&giWTSidPT*Nj^1fIKVUW@R@3w6-v3gTf6<1=%bROkH3 zk?g{DP${1Cdg(oa!r@+Nr(J1y#4H!vh(QoeRHv$AO<(~gv;P3Za^z3{00LRH;xQP$ zD~rT5+8aE_ZqqnsE?OnVE z8wSolGmqiX#2pcbZ3hqSn5u+w0z$kc}pmcL_a_Siqf ztp5Phj2ABp!|<)FIg!^Dh6^}|xXiWOuJRN#%Qvlf5BhI|;5QNq;t#_@bBn0B1QHf4EU60(wF>4DlbnTqiL z0ERyeu)q4A!g#~Kl)yEFIEVRVNq`I+^wM@83iIFP_wrkH-=E_Ae97t79D56oWvo*N z5sP3d8w+(w%BheE)CvCMCN;fiZ}Uk&2;s^=ZPhlyF+bA=2=_=Ej^(M0Aq8pxc)lN(;~ zKat)OpO11!=ikO$9}|OXh4AJaEH{jOwp815;xhrr@X7PAub}YH`bh8nG5mDz3gh7@ z;rOx}ZNk_t10aHx9gLA{n}~|r_>UjNxY{^(;%0E|@Vqt`7}g`6`<(T@;&vqJWCaAo zLgw^ehS=yXuQ;z6uJ_`E@D2;ZIIFm3 z)ay(wK`(Ox9dQLDEkGOU0F4fC0S5Kr{{ZPn;q+md#w=j-{&@3Qb)V`407}G(R)7c* ztk=K9{te+j^(X$ChPW<0c>XlsEgVHCZbvXc<)qAjZFLI~B;LM@{{Tw=01WVd`dPzq zIF2KS!!e0K4f8QBOM=7;Dl%pxDo7WTFe{IhoY-9ZkArbfzjrhZgzxa0o-wWVOvCBA@+bpf&Fi0t|lX6br$+$JmU*m7YsQ&<{SUej%Mcy;Q zA9!Kj!^lcB1r8@@v`&f_ook)9uU36B^VOf@ar!~71Ht)c5YpPk@i-0MRkH@W^9mR30;tjQx*BKtk2`E0yj`FSK6wKEC3HUn}*BW8WcM`=M z1I{cca|bHcl1_vffp`OJ8uFiwKM?TW!#|8%;oK3`Vlgiy1v7w$-BE%`Q5I=LK_uGx z$*kX7jy!YzSvuCQ#vhBgf8hTB!g$^vflx!QDP_!4Z3W~I6PW3gnHC*oF?sms{TtzU zgmJuQ9^>d%2OEgarv^Bw#ifu`QI>9_qO%yV15qRGJTvefHx`Fh<{JmYn{*(p4>}%k zNXsorFqpl-0Fxk1dEO!a07ltk95HS2V~A}j<#Mq~%8d8AOlV1flVeHOr=y;@p0&ro z<9P2CXAsU6yjzDApDV9CJ-}rEM&~I6lO&GS#rzHUJ-@-9iv}wm*?)*SmAY|nwi1q6 zNR*_K2{SNAGZO~A^1tdY1pG0=uozV#?keKm4Z1K3IGjLpG?jQ@UN3003ZIF1)&q}Y zaGXOH))Nk=+FDs;wq14bMpSr5x}@5|@Gn_CPfOc{xP$nNbBG~h48v=4G|w%-d?`{vyP8-U=>8^u zh++B3$2`buGmH#A5zww;gaVf77*$!|*4vBMX6J2=b5{X|y;UDn+2a zQ*ucWo8Ad7L~CAcd3Ct3k+yQbm6vkc{d=XO&ss1A1 zmzh>lw^gf$FuZNtLDG==_%^>VtXL$Ko+Kj8-A6AyM$U30pxZ zTS){$Z)JE>p&d69UW@UE;|Ep4*u&wHrW#Xmj8nxaa}o(2BN75`LDa|-Hm?=J@OW%m z`TVyrZu4AhmmA38Bm?e&n5WFhyu}GFdv&qQVp_#>8g(s}(y&{>wo%L~1fY>5B$-Gj zRFF0XIe2`i&Xs0u!d)pu<|$Q%U`R4awCOjli^CG?aA|uGSHsZvA=d)RjHHVxKdCbY zZZy!>oyRhaeigO6tV>Ni;S7fxmAeE=RXeA{;<7-EOj0!TxWjXZ1h&yh%o}*6F2qZ6 zOoJfI5)I64N^zv&cyeFFVUp5Z4g|d=E6Sl}r$of+VEAnn4<&%Z%{*|49?9p}@vkyw zTFR>%kR-r@B+Ya23B}`CZK-Bc6GVsCS0t-(dI+7L= zeWK76C`yt96TeYuuB&)I&0w6xVVhe^TbY@7t2Z=&2_;en#Ht5|K)4fKHwQVzJArj= zw2V9G!lagP_=e!D6KHH03ILfgFgn*i4T;2K8v$ILJ7~IAhQfrz6po-0ek9yht|!Eq z!8X%4cG`8-Vak9pBEeabE_@`JJ?(2(G+@-@%ZI`aAO}U^rvZ(VVqlFcMwXTy#C~1Z zQoIU8DO|9!EtW20q+g*O^K*-3c&t7RZWfsscG;Qaf+Q*lx}xNbNTjg5HW^rA>PCDs zP?RouL6pR2?Is{oIJ@Ttz)l^O0|`h|fDodcK_J8_CUZ{l=T^*OdA8oht;|ASakpBM zu3;;Lrs^eA;xhyY5zy9Va4q6XZQ;}Z0DHoe3z^Nh(o1Y^`h*l$sVHymiy@q5Epb%29+noWA2_OOJZB0%y{zDOmY4%-5wE+%t z+!E~DCSh!#WwnIO`q4bX9>tV4fU={iNkEh0Co};B69ZlJrmu^-aeT5IL-|85G^J+V zId}JsjC2QjQn4*?(Een)>shkp=H1|64MZtI>6=)cEkKo_JhvE0LwJ``qnY4TfOjI~ z%$;QEI?`2uEn!lUmN^Z=l;9^jj(epfk|0mc^9F?uJNbaNSI8=KCAYC4B?<#lKltuO z+TM#6Ttlk`2yqP+1!A)R6&jqoru5SVfx#uT7MoAzUCeV@{$TH+fwy|gj#^QQYXra! zw349bh$*GSToI`nPhTo?xMy2+gN12F5JUp8bbxI$6Z=@x(1M~|N|1+1k}{A4$pu4D zb&=$1G{!t4PISsvvWG07Kc%>|+VQPv5Wirih_D$Ftlra8n%Z`w!?dL0T6rxYq!3k_ z*YRs{Gy7I`U_1@HgwAZ_<{%RnfxOtk=qojNH6^u|a<-Hq!Ii``sm&MD)6(?dkoV== zZA#_1sD~6Fjb=sT391R_L>g zOAZo=0^}vBv{=VOttT9}aX5z^OIb4{00}VzQU&6|;8t}ymz0iCQr95+NJ%nx8_{B4 zb2&oXzM#ZPPe{;6^$}7W>&;;hu(hGkOn|wMKDsV<|Kuug1)!bt>^X_MBcH7ab3 z@eo{7Vpr$ir3%_xYZ8&m5t&(y=88l-yj#-hf*Q&_m{bBiHnlim#vTKzi6nrrGdo7- z{LzIgD{4UtIgAuo>8D{v*C#t`@U(`;YwfOwQ5xQ&(m)<_ytITB5&B8fU1@`n%Lz)_ za(pm^zzY5LuAh)Ml16f~CQ@YnxB}k`&h%6g(ouCmN0wa4zThj4dpvNphLI;Et=mFU7G(CkM=3iP%dC<`UR|50@0IA%^ z`=G+1rLwUl!2m=_5H0ijHLb>U;gs$bZmqJGvV{iF;Syk*_3KMyguc|RGd>p9Ac)_x zf6Z*9wI~Pz z0*2&usM`ZDbh=6-F(T$^qY%NZYFT)xWyH&AK?(})H|uI+UztngOtwJf6q6QF(kHKN zZB50x!!ERfqyX25fuRQR1IP*?jtF%Shyak&N>pD`qaK~~rnd`Yg{2J!o>IvqhQ!!u z1o?luMkfve8Uh8RxJWY__B(nSyk;rrX*{(ck?-fZCTvexCVeSr4=mMP7hBV*o@rd5EPB_xPik8$4GR)=wF#3{#85DY+(0XDcJsrg#19MmrmU2b1U z1H-V}wW+MaR#4HE6u5-KROoIBmHP_H<7LiZD7^CJ(-)JV^WL8Mg|v~GYb0h-F?0T@ zxKwkN8v#x>)`SQt-+!l-YFU!fQV`fMLCgu)zFD;Y02QYQmJk~W64@5WoS`FI6RG|w zYH8OUD$XBTUU>mb@D{p<}BsVP`dNNP>8+sos(?OGP{k1Y+UDL_Hj zL6f}bb=qx2_6^*DVYL>?3ig&De(-nbX)IR7CW&QM87(@Jg#bYi;IRiozOm_9@*$~vJT`|RCA%Ab@mk%(soxQJluSaz0(Xt# zv!xywSmmtTMTefXV>c~Mu!fM)ZuyqlG!r{@sOpu3Qj*{~i18>0LtAUpwK%+#Aqo-+ zl&acpJ}_x~#G%H^p8d0HXuJ_t6pTBPR2D9IkSsv{q>xD=E)nWr_5Nwa zVGZ~aTUgmaKL0I&**z`4`;6hk}6O32QOPFS_#{+m=v`Kn61APBr_df#dO zX^2mYIQDrx=MXNL)OpQC;!%fMz_X{qnI{7h!*Z0dmf|GL0X=Hm>1j)F6=2{3Ol!0qx>f#I z5a)*>1SV2s`hERqlEaM1Z9LqjGo14j96s+l#>JORg`K1P)x-fyNmFXfNCQ~0j@6ad z2y-Y(K-nQee1~r4wJa1mGLS@oNE4LoJ$h2P0d5ddkVqtw+!4In>01V7kuCyLnlE#d zTm06AvbPi^M1lzdEJXZ_`O_4&JeXm%NW6<>JBXrXc~(kRLuwxA7xRj}3UL7ll7oAL zI-a2VS3j3s174uV$qS-ZYNY zf0j#*9PQd506I~rVqnMs5CmE}{{V_WPlU=c~ekJs4jz{LWQ!MAHJ2H_mt{E zNGm`48H;^>m7#e;U<1sXr054r(lki|7M;v>?Nu3B){>QyuX#fITcxR=mRBqYAOi%G zziMjGw7S}|5jV~Z$meIPSn`bsAFDAw-E-i5xF0B=zl1$S!;+T#+-|?)6F`AgTg8ZKbGI@|3wSV`D(_{{SsMB#;Hk*UI&s z=d(BzsGFZ1zI9J1B<4~{%5+a!&j&OZJwe*GL>ZhFO43LdJ}B}QrYHcl<{mW&A|QE+ zT986ajpX`%^wPAgv>>Z0=cc~3KpbEo1rQ33vSNRm)fvgW5);?r9M~+Eh^!BPh3#sYbl4mC3QuTWM0PeFbNn=3JxzOn_tot-5_Gv#&E@ zIY|ImiH)`Ee)`oeS|w^gDH2I0b<<6+>FZI|tSz?6mynqu%SZFtze}&f;Y&(G;j)lO z@Tnp|k)%z|-#P@TQJ5U%Nh;5<*w4b85EPY$m%djDYzT|@19~S`th%Mb>An(6!qj}n-0u)0)CLB`DmNinw_xRCV5&{Eg(q`h(9k;1vrs`R7 zy;d)n9p`#tVNNBGIiQFIA})0oyn}y*0x|>?Wdxa&sF7*b29xrpE#~e{QkAAuq!JFd z-qa1cTUUi|9LkPZOb|5&e`+Nps#04{a-j{7Bel8@oKRaqZKZ2)rC}+sHXR`U06WzH z+JaD~rY1?y7}7gi)6Rux3sTN*XhO1xCKG7%z57wAMP4+RU;hA8bU{#{tbqy0We>~} z6=N5kog%H&AucRtTEQ6(-c@Rp!3oX@gW`!Jw!)UI&aDY5Ip+C~x=yBg3wcm5IFJ^l zpfq3-5T60P#BEX4EI3ky8+ejX3J*wBPtO zL1_+WGM^bTVga2@eeXot!%#s$SRfTaA|}TB+g~bT(hB4x#F#siF<>q_&?RX~%2GryGQl_04u4EGt=pa5JM)awSV#Vai3gc}fzr&fTFJ<_0{b4036PniSbWM`b7*LcN|QM!+s|MWnvDh>3F>>mbJR$t|=vEVI~RBq}tR; zNm(UIBrHOpWdvGx^opc9q=y8kjhp~#dJmV_q4XxvDNA!AEVpL;`;R&t;U-)FlmTn_ zM?*k{#!{J43$X|?uqI%ga>X<$NRufCF$l_$6TE)Lh6f^+tp-Jov6^*@Yf&pgP~jz6 zHwXr1ZwGCtmYl4U1gx7cO+-(Z_@Y`6w?kQ_qp6vjY5r&yA$}EEa7jQDc(9!ygRK%0 zkm1WQ003f6*7B$prHLvL0tTe^9+gRzEoZ=hqXfhhqhIwwN|ooz>P~bNh&M>yI{yF_ zG8N~}gcaE3oeW>ntqre`ec(4sVnMx%e)XEHfopjj#E=cpE_+}1{{U1qY4(ifO46SW zUmSo=#F*EuQW^+##@0EjiGgAy+*?s?Dk$>a2O?fEWZWSjZ{@6Yy<0rYhzm&|w<9nh zp1N=Jpov?{SwINo8)qYPALIPgQW2C&oaQ#8bsv;Xj-9F@N?J++RN@JlCqeuE-wIMZ zKq5g~atPkyOmwMcn5kM&RJplHT6Qz3J87w+WVhog{+i-RAE#OS{%BILQnVoeNs|H$ z^#1@9#>1`?nF=l_hb0#=)OOzeDvbk9x~A9=Tq5MSnG!?@Jv$nTPFB_%0UWWMnS*HQ zdWk?<(m*YwDnV|=USA4<2~Z^mCP^V=Om!fdH_>@Y)y+!$WW>xz$7tG^v~t@aM(gnx zB-nO4p7mZgLo%Y`A|W0iV0?^6rCAvSr9opbkU@dG0lDAMP}F6WFY@d04Clgu5Kj4y z#Qf^qSzCoEkS9xjng}q&XLRKx zh#_J@>FHFZo>o*TQFF`w;(AV(`@Ke_1UTwp1QjGXe-!9@RV^iXn+`;f3XR86+p!b` zl?A%FhSuSYfJxX5{VF=3mdcib0-(vcjeZmIs8EzT;Azl%A}@bRT9lUX+~Y0@k|66d1Gt)IWvEVQZcVa;-u8p3`xSoq zONuBXDasU~GDP}Dz3NR&!Nnk{B#>@gHxtvS6s4_bX?_(+oTWFvY9yd?5p^t)n3>q< zY$}$&84#ZcnF7uWXnNN=>&ZxkBxUfTCzv%(+iHJm$or{VWGPB)UO*BOI*zmZ)`X}j z3qdMDHURiaXZEc4@)gV?Lg&RILUtcY^8DZWy}u8>nHH?spv0IUD&<1rmI--cLa%w( z%z0}RorgP{ZySaaV#MBi1TkWd+FD{JwoseerDmv>YKgroh`mRQ8b$5eyH*uNQL`x8 zS{hF{QocBux$ULBvkY4&l*N9esPKu5$CoWFCDNCJK$o z0b~M#d&X^(yh4dQ3|RqKz~T!})4Wj9V~9sqc;)*CsnSE5=D~=J=oP&Qiv1tvWujSk z(hC!!^zxWl+LVh#-9xX596PBq`dv0j-c;q=vy#9@ zArmT!IJ~a-X1=sjq`!t1z?+9BrlcA(nn=~Y1}=3cyTvOfX;R40cu2zSuwld@t&ca77~{myH`0>8 zoU9z#0gRP!hf$+q?YW<1$5a+0lERH>fL8Vvfby|-2ghcC2iluH;cg-$(^ zh~^K>5>i=zF#VyY=SPDNk>+zz%7DwLge>pS5;5vJEe!#NH6I+6iano1{hs3OHt|Ns zd$`RP*O$0DTn}eT)T)L3V}%lqj!A^Hw!Q8}Ltt~bBA1q77T`jn z&Ui)ilnDj&}RwVcnva>H@1$$%Ck1+&Q3ym!UIL|`1;^u$LQEo zXwO34WTBltL>6vHUYsHDyH{R`L}`jJ18q&x#byx`cT5tL#H#0`5e}h3nTbOU9cJYJ zoF^zSYRXyn&<2)w$1-BnEY^HQXZA}BJk^tape30yDnn$yV&h%;b>0CUGfI2s_Q+=B zFkpY!*z7SX0(hCe$zNI_*K2#WX`}XLUoAjapix za!hl$pt$z!mXyRc8sT^eqdgIz_q_=PcekPnr)Qy7W=c%0%9Dryrt`^x>DJ6OJL+Rg zjY$U$O-l?B6L}9kXsuy7Rpn!ZpTPBQR3F`jeFCK~CAW`O)^9@kNFg3mj(1SIXeTf(PWD+dTQH_O~R)DK6t zn5wPf?O>1jRK(pkzKp$r{BHkv()65LDZ}#8Qi7&JB-n*DpK4D5D}WC2URowx9^b>o z7Y$31#rXC;mDo?vpaVuK=vSV&KeLE9cTg`^BUVzg9;;^(TmkFn`(T({0Q^t8lAiF! zD!$ZuWv1lJz?nM}R@XkXAZ#i&CxDTP>%=vbf7q9>Z^=;R(|9Me|HTo0q|v6^88~cX zxuPcyjpq%(Vl%`uyE;3MZNguuS4p4Fl0@5eK9`HnZp*Nnn(F(aWT*{V0oErSpGlGj zi>fHWOynL|2@?n;E4 zij4YVk7V^}yd}fZ~GU?r6&%ev2%;sB@2M zBSYzw4u9~ZA_uX`bFY6hx7Dzh96KoKZ!ujGxn9e@{0E~f(r`xS%CBPOedMOYcu!BI zvMePmMFBq*(G%gOm3O^Qm8{5~=EloNz=kMLEIBBa0=OyoPuu!ns?ghS0YSqVO+Pqk zUfKr^Sx_Y^f1FERFQSeO=$AbhJ2eb=f_q2d_08EFZd9vjm%95Z5}Ha9x#9U?@M;C8 zR&~|WKIF51KLf#-4`F5mMMOJ(*kI{Fj})pDNp@;l#NKu9$Tx%P#rrLDdpAUGi@2A! z3JO9?S!~#|aZns?uk+9uI(TUIuPvPZqNAU>h06{YtF-=CTbx;63aC9m`dDE>L(1Ch z(*0L`B}v<4;13rKHOynt05;NLb9BAY3*Xnn7nm1O7gTrR=5g_fVTCJl-}x_2fE`OI z0c1Q*F0wrs3&ZRS57k=jJhRTUy9sY+JI3z04-jHo7hPZ7l#52PlpqYy&v1ygAyqHI z$zgm8#x+D_2dP#)pccWCE532r6}ca&kVoJ9f($T4rJVSprCyQ`{5zHOon05=&y%G; z{Xw6<>ZFejBFZgys@jl{6VoS(%z$*JB{>=RY5U) zO{U8QXoGPxabK)>6HZ(4$Y1WnIO#gqFV{Jb-i_4~J&;}#Cnbjn zh+|EXHNn!_Pn+twEVj>*U1{Dy-}y>3NF!1PYR1fbcl_Ibs-I2tBQ5I~ktoehe=nI%$4` zx!za+qHpg^oVz9TK_RlU=qJ=TYx7<1Sw%E#8cA43Z4as~W|^Q|geY8Vc`Qc4d8In? zvM=s1XDMrw5UV~GMyhlC&h_JDtD4__Ac3S$2$&}JPA3K826{(>9dD$o0^;T1`19!? zfC+|uvVDJ{?I+{Xo7p!4dzbHrYjM(5!}>4O7ygBAxdCVwHY4=M8i{bSYmb054*C>^ z1uNbR;=ZfBgbRA^0nE8mtUIu)`2%%jcu^SfQsfVsnC+-}Ou(`KY7iGD17wfYY#GDM z?0Pj^)Sji~x}FNk=1_%~qu{C`-No^f-kd9dLW4wVx2P!k7B{%i6IJ%tR^v9}H3Kw! zPEpa@xU@fh`Bq}*5}g{pPt7uOGwh0-eqJ=*{N4)<(4+LM9x*tc4&r;mp7`~Nz%%{R z1m$^7i&wPmG9$K)loLb{veX$nmEN@- z-Y?rCR@2DxACjW7@RaP!?(8X*{yjzEZ8B`y&=@fpm=J)$;`zAk$!nTWl;Dujmp#qb z{pP-+%fq;KQ|zi8hQ=aFNT&kdzS{AZmaIUJ8Z}@>q9yp#qIkT)(>0dIg`pi2PM*;~ zn#tko7^|krKbaKBFG!bpcemQ4=&?Ek)05JJgl3UIg;+>1JbFf|OAoS(X@pqgv&Gpp z*BEnDwG;WzpPigG7W0yG_yWKg%*{arMw8Xr)oz!-lJ@ktOMe#da1$QgQda$qyp#+a)G5TQ@kpnpMj z#eC&ouy_08waLdDUfQ1*JArgEp1yvNPC_l+uz2$OApU=1S_pGLx=DzDb`4yv)k|d~ zo{YfFIa6v#LMD9j;O&*a=}3ZQ*kaV$&pDzJw$W%Z{v*W$GWp>AbKw*d`ug|_$ zHE{En$%O&TkDh!X?Gbl+o6=ug`W4Tf3%z6wTY z>26b1A-E%cotQNQnGQ$N2o6pmSlJtE`_Jwk2d&(%1$8sX07V~r7!iPhDr|V`^vaXd zGG{LW9dhR#1$X7)-SMGZqBHLo>!>w!Y6~f-{L%P1eAJ^V zD|-0LaD%^~ldg+?kK0V-^@;ra;A!<4M9^$_)62UJEg#(D9jC1F)cEEwX5hI#pZ0gbtQ{kQL}N4xd>2A-|#i^~#p8o2+1d@)_`ZsuoI zU_5MCsY-D9G4)pl(wKp^{qD{bQS7qdp8Sv7m`HRW)Z4(DIKi7DR<=@MQ3S#9GZmJb zm9gM=XNL_2s3Fcrwmwn$sJ8U|Cuz}_9ZtUI^Q$HjV(GUo-VHH>T_g7s&BSB7SbZ{p z|LSJL?=QZcMq!>ZXzxoyx$C;(bh&#($CUS|GysA5^m3l5`(v+hPvyR@i>cunzI5;r zi$lk(rL_-#Ewwo>wjDf`bt?fE{k|9GW&Iyuuh4`RSl{VW8*?YZY{Bn$CEs$3beoA9 z7%W6C=PT}Ab+C|@dh=F2$6JN-Aie+*Jw-(Q&{(iJF8ERS0?c5ZqNh#_Hjbux;u;t1 zn=HvlB!N~5{?#DmY&{eM#VNGk*l;q^_xe@KeWTjOwtv>os3rt~<77&&mbphH9!Ubk zO9|^8DG24X-L8Ctn(r?)+u?Q&Rd=9w1K~)ZgK^EC{8H zNFqQcA-!B&veR5vxwRPjns3M)O|NR03=sWnY{4gD`h{t)m6mkjR!qL#e<5$gR$_;) zV~Nej4tF1lX#VzWK}Pm~mZkyhTk2=V19>W{P}zQtPJ^@$1fL&ty9ksCJDwTr5W-Kq zRBM&t4j{V1&8pABgbLBO+ic5>2`ElY(>d^T-WdeIzk6bPa6xeV25p$90Nn)5gaeGz z4Q!W_N9$8Gyvpy^CDZ2u?wmApA2nYZ3MggIa@$OxLNU2y5$hkjUGsOpITJ>67lO<{ zfzA)OB(+rWD)?heODQHDS5P>x{yxj!mE6In^PM9b31~R_vwgaXSI^I+hs;mox0@vK zkHkg@R!|ip)d$lH7F(*rb17!}iIQS&c{*{?r6sn0ill^@a&3DsUK_xP>^#zce9W9) z==$x`ob3cTfziNa3fwI44A;)Zn=(aD!$?q8^zOj|eQn_%lb_PbPyWqL$iAv@awrP;esQA43%@4?`tYD%;nwHR(Wtt z6uG+~qo5!6PluFm(^F3#@ff@Mp_m5VwBn7oFnZ}IM%9k$0Owe4Pa+xXpRH0IBD{FB z(TmwblY@d!EjEHz(z+U~bC|E(#3Ai0PU$ZG^`Sp6N>P+EBwr8^hjAJQp*y*jf9AXO z3-#y-Pk4QeuC+lLarT!_x{p?oPqQl_*@?1cYONWhiK^q%3%DtN7KSxFWh6-Q>!hFh zi^ojXaYzlx!h{S1cT2$2!|I|tW31^@&l@C3mp&6{$1&Ao_SQ>F#dR~!MEHcJy@BTb z9ip~C&E=xe*oG+p4N}#vu`Qlq!9bt$OB6D9hDgA;`=s~D%O^@~B};Y)J?V_>0hR@u z)Mtd9D!!$%H|sUWyJpXgzsLpip!v78L$wG=3BC^5OsFGG)RT?|k0%`13dmm_-vWXx zvATF&iUu*1h3x=i&A+`S>{Y;p123D~KW^9-nnyy*Xat68EHrl; z(>)tKB>G$@CSn8M?E@Q2PL3TykJobSn|fmq?xU;}=TQtmh>7O^Uk=rl{YXzNo}D8R zNa}Q`*yia@VFvhOO0f?x1a6-EX`oiYta!Cxza_L`Hjqp6)KAXQXF-|KXjf@75elG& zH8DrsfvxoV-4qp5rtLEasB-YT1%nq}gKd15p~(Fpasd>rh6*6Kx`9fV?#MLiF%U3G zAi^saEw6+}TDJ>q125<(mY=ddueRR^LtV6_sD6(jqwzU1HeoYmK&plwh3WXh+_UI1 z9>n~;6Isg{C4bCp-6M;me95PVfu9Nynml+@g%LenDO>hbQ6J`F2`At8fx-E6C*Tw@ z-wImbiuo%qMKhJ_@663&2F5JwUSxmmkAqx_t0P1-;+Q=z46we})onygJceXaWe&V{Pc46W@^FHQNnCd>U90fUjM&veui zUCa}ns^CyNz_e-3*8$HM@8#TyqfeYEl2jmwX~3pJYXHbi!(Fk)WwmGF#G?URyfps- z?&8o?9xz;O7EI8$gCYxi2RhJmrF+Smo5Sg7CH<1ui&WWLV5~$_+w1Nz5A_>N7+rgA z4>Q%WC?gpP>b(|b*(Ww!I1um~h_b_xp;mBMok5Eu*Du-@-xfyG$MOaqhO%WBqLJpl zQ2-(UD+bP9N~iwo*siMjlqu2g8-62HE>c ztoeZh5Sk39&}e+vgQ44Z>|E$dD#k!{X)G57Bbc~;pi>3w@{v3EYfo>SdX(beB@Jba zLTh`6-ObP>{jO4A-t^OE)63%4KF&+`M#|x)%a(%!wo%NM!95YcJL(NEeS!4CQuTI^ z$;~p0Fvp=cZEkyY0!&m`E8k@mEHbmm%`M+N@{+BG__8} z-Zg`L_jAdpzTTa4v#0vdYV<5^GxDK7Pc;@6dpj;&R`3Ltb6g+{A_Awo*LT? zD2Z=UDztOXIs4IS($WvojC;Z;n07_&~7$n`;(X2^aP(^ zs8N3NDV9Ns0ns_PL_2Ohinb5urH*~@FCRX!ATrq^PXc+Dup}Hn&Aa^roH)95=1Ds) zp>{g;Olif^y>OM-m6eph*2D*xoEfWCHT`&f@v?{AvwkXN@YG#}TG+AFs_NO>eq#$l zTL=L(iC-TPq;++WR?Dn z)5*V?er@hnEQo!m>07`7v!v66S~YoGWI)~{l}N=#b=m+llYE?)q)W0!k3NFreNrPy zJ^#qE*@4RkR zI(jM)JZN zh4A&So&N1LY~d?AX9yW5lnDXC>(ygvCq4UjjJb_F<1#upP;m34PC4Zyw7Z_F$dZxV;aejBd zSq*7uiFdE_>8O-qXu>I|*BH5+cH`B*)Q|{E0m1A(3T$6#|XvaA?R20C{NQ8s9sOi>c);0-99M&`k@C4&5!^izZ+I)S><t3l5aCBC%|@VX~g72GckHZTHg+uHz)OroYestzB0WsP@sGiTL>F~f^&P;_n$SXIF+@Hra(jB@!Mal$|X6IA+t~_yUsf; zYb!pm)0RvT$l4HN4Zj3yv||1YTTVd`#VoxZv%5kGot?A5CoI-UGp(DDanaTZzGS7A zayd&1t&Zacs9p3-zq})~3_^AiQBVAO9YlbpVs3eF$kRrwm-|o7*vg`)U2G|=`4rhT z_|>e;`ieyTZH~m${TT;4S-`P7%;RWJry7xVPOH0%8A4R#ashDJjE4r6YU-56eDh;K zTsD|SFeLj;eFEb&(Gb6fy!_WwHTs^16l3l8<9)~1l#53qGes=2Xu7?Yu5DYX#H`ha zMypQAM|Wk6%Z8_gz<^H*-3iN|+l#zQGJ5QL6t|aUQeDv?%-VX3?OBkildeMo0}7bF zLN4E142~JxYG&IINHN!DwH@Np3@ZHrIH`X{{T*cK$U4y3!8soOfUe5g+z){C7Q@8q z#3eSR86B_P5`dX%>RYZG(F5jSf2joFq_XPH=p)L|s);=P*z`se$-5{`ox}PTz3F}i z)-&t<(_DMGTs2vC1H-qeWcisSuA-!wLUKMe7FJ@h5ewl0W0%P*igsZPOYB4Ye88dX z3lG-TwKV;h{Mh;bcF3>MPROzM~i zEOiHkz6oo5VQ{Y^@-qJR4O)F1-p76UFfQ=&39Yp6hKXP{Fjp9s2iiCK1=Y4H-YWU| ziOc4fOLH2JV9Ja46x@bwLSLf9seZK`y#IdVTuh&~b?kk5Kx{=m;1u9F9M{Z-XLYo| zhHfzS<@xffF6Z1xU0Q6*tmsKMM#tH`bN|6JiHm2V?JLzw2TNGwQ0ui7cMxAKbFJ5^Rk(5!8vJ zrCnoOPCZL9aO`ik$vS^CsNgkjd;n{PwNZa7FoDv?1D&GkMG2&6dO!^y!KGB_@x&ngm#dfjr(K-U9bAJ^YCZaNLfN`K98K{p7L3M@-%tkq?;#my>0tV z_O(fzQ5tjHHrs>2RP}BHOPxViS_NPj@6877pv+NuFE4$ zT!gec_0_`!ODh8rQ&@it*jGmeauh~y*O|FO10IZGGY@$#_f9EpCCqx}Ix&kJAnZbA zXZz>5!Rbq~xSeL2ThVc~C8~qqdSTip-+O$YcSG2w0j#7@tEdqt=^ixgOPXQoEy}V! z?{|os;Y?7~d2a4k4GtrpyUeVqi8}dQmL4cV|8Qjd^uNT!Ab3dLUY1b!Z!L( zMAUx(QgpHE@bZ-(^VQgJ>@wvnkC&Cyb+q)EroXEy#XmwV4Z#ueRd0LUf2*EHm}`T% zgC&DYm#>+s-6V3E=(}@3Fyui)STTW2K2_Yh$8`%#vEDJk+Ec^6)C{!yIX6K|p14I( zm%nvv$UNiW>GKP150binDSYO?&1Ff;G)@ikYA-6bV>2xW3Yq07ChC4pSrwZPC%UL(Jn|9JamEXjt{{I0G&1&XnJdn5|WfZ4j z+~Q-Pg9RSZdRR&EtI+kf?6eW^gZ()$MU*~4%YM|EfoW~bnGT`g^1A zLB#INCSk<<572uhMy&C+P)m$84@Zx(3!}cHk^oL&Hr`_-Hu57f0uH-rV?Szle0zX ztS{nL;=_T+D5tK{Ow8jadHytpK!jTnY|G*5J2hKB#7JU7$EF6c7By^&NWq(IHe z%JiQ<4t*Qoh_rq>m;NJK#<4Q7@!iXeWZo=9OIC9vU{G3E!?*XT*(D|S;8~{$q4pp} zM$(lvjYgME#TG84;k)pvRnRDTfav0Z1K~F_nq(;AS~tX)9L-A@09BLRDvBj$45&pf ze!MbdClaeANSz6HT22AEvw&qbvw?tbj0_J(l}YVESF=Mx`oZ(v4>Hf*34cFVAEwzZ z*bW&BF(DsDvoM^z8QGD>Q{g3P54!-cfEobX>5bS@IF)zWt+IFQRL~AeyB~-|%-T z5zf(+TgOU{0x8sx%dBB(ad*H4RKyk{vJzhOh2!8!H{$nYk3d9h$U-42c>MH7IFDU| zmAGo5Feh;?P(kMnz83PmOL+FK{{fbEHKYGBrrJizn z!%80CS3AOUH#BXi|ECrCIMt5#h{XGm9&^SS zuk~#jF71j>eGE8&i$!Ioi)1c~T<`JhS^srx;%-PB`}PW%>B7y1rN@^#NliPS z@Zw2iS##%5Wb3KzM>@2r5j*ti*bQ61rYTTw0yRQx4s-8hnSf zm%JFK%&oFho<*U|6`~pG=Sl=OC!q(sd1=UD&QWw9$J(o**Q_a2K}=|4qL?T^79&ta zBU8@t!P#U^!nV?#*IYYXHt2Z{AAA*Mw1^LbGm6S1jbF-OkRTE=E$00Xz!~esmUiR5 zEcpq#CWhXzM=-W}2N~?L{g%n~nHp^yncID(G_5N=dHOw4vVGN66!F^?RuKK-SoY!H zz`|cDYd^0Fo|Bk3Z;WlD52)jYM7Cu@vbV{-np|a6n2z8A^{cJ7>rZgMQ3@W917~QMBZWH5?*VuOaBUbN_V zbgokhqolLaa}TO*xZR{;7PLqcL($yccmMn0=YWtSf`%**UED?>hqf=DvWt@GpLu)*hY@J7Gr=r{`d|u5Xo1!~U9M&Uv ztcRR8t?0Ezpsj=G77nlSTw4^JYt9cW`+9T0we!v8x@qvJLVLZfEoa8Dwk8-b6r-I< zrvb58oOxz=4_H_?>hk$Nz#AJv0hfhF1a4c5Iwn2Wqo9BoE!1+$KT7p*hm3o~c|s@J zC!RDoRX-{Q;I<|rN4m9q*SCAB!6j!(Lz1qP$<7m#0gZk>9^h&!!QUl?*2092qi}Z! zM6rRhGCUVU9b0+GsIsKUQ`E?YYFVPCp<}laXN@$Iz{tGrZ|rfTvnztz0vui67tofhI;l$9}SBCYU-hXN5m* zj}H|A)$h^OR}yc@b)CErrQ*3Ob!LUF_fBOsfDdhf4d7nV21Vjn1YoqaK`pL0IAoeA zCvLCPj`q%$VU@UD9(2;LEbNdK-*e`UJswn&htR(xtYAXD0*DOZF{zIkfXDWYBAcpI zJG1f+a`uSUQY*olU~(uCq7#-dN1j;0$v)C|JSb*RwKSSq5C59E6+pI$v8#Qy> zjE1yiY1#GlMWE< zeq^H$IXTZBTOY#oQ_~-ra|zvIP7PK{ ziJ%MU{K1Upanl)^AO*87+7r&($q!h=cvdtAwmoK9S6Nd1xy>`Lut9B?QXg?PkQf^%7Z}CntEOd|Q zZv1SD>V#_nfYqX!Q%Gv(Pu%aev@EZI9byEUMu9UJYe!Q)Ww>7HD|4MuqvgGv&b8RZ)Jcdbged^2Xrw2zK5yh1+gl2NTY8^UbbNMGf_MI06;4=1<9^4PijgUrNGFX=sD!Fu_qS? zeP_%CVP+;G7y1WISOU#AJ$Lq$6l|HG5p2rp%$tN4d&;;rA9^qS1*PZ`YS9Un2*$j2 z>3{2gdgs3j*;xdw{O&eFF!5EtnJvNePY?W-*Lc&O8lpvl-1{V!-F26iq~ zP;JO`Ik|%NH+Q`Xy?LX3+59IfV+W+vR-HjVQvm?nDm1grx=oEfHo(QkmkLxif8k=f zqk}=R@=F@O5&9TQy)&00hNIU9kH$%XJxH(lF(zjEtrt0D3a-~<;aCu?@~4`JPbXeVsC2sgd944 zhH592MxG9=ZOJ!(ns!=jFEDuL%c2!ol_Dk7#HccIbf>n>Ls)_DW5Y5F zvF{MA_)4`G2Q?`{bv?ARK1*ToIz)uf5o6C-19|_sPFE1DCvUO~{s@+e=kdIG7~E*sy|Ui8$q=~g5X_v!x$?Mm36+403MxNS{Uta5a~8#p zpv+;3&eQeNwmq=zv)u^xwvCR7q_BOx^w8^-hC4Mb7Gan{o)uYdGFE}4rww9Qt&|{F zAfH42sR=4$OW5ae0q(t`sSdww^Szr8x(R}|8^%i-&7>Ka%1*fBagv-MAff%4CG+^j ziB5xWqdswDQ@Y|}b=RSGTyL$zl>xDc@SS9~Z@!khvMq9j?-**7U-s{Rtj1cVGwocZU~Em zW*Q%_P}up@kTD%;**8Pzp_u2tdKK*4v$BLBWiXF=Jw|sUT5nca`R$OSrYZ=II zdVhUEk(L-()s=Tf_V++V{>MeXFHxwDu}x# z9#m8I=xl}hC&v->uX6X1_Mu6@3qK(^%W0~i?=4Kk-5O(Y6gB5ps<;R+o)d{tnxvz^ z4hfGlnB>6E@6g-~Qk7+i;{%y2ws6Xw>3?~0>c-Ft#V^VQr!_&t57&>#*ZfuBT1u!O z1v?EDB6q!-PkM(I`)s9UPKw1N&^1U8t%UqS1F(VtTUeRHRHsk6^?tIT$bb*_+bv~s zsz0MYDbLoIhU?QijFu){IehcQK#~jBh*~)dF#?mZx+FK&^}O!RLtUuG$0G`};< zl(6@9sXw26oK?v;JeNUcbM?EyAao47L+XKLE{n$bp3OJc(KJDqU^P)owWm!5nr}WOQgOc{55N@Tg)TteGR)S` zA;AVVllq2q;DQZR%T%S{-oz1*Y*uHZlfH4>j&Z-f$5TfeeFovhqv4CK(+E2R9|9zdCWSU&;Cyvn% z%CpA>4l=@sjQ$jO_v#isEyxwfj=w)mF?qkM!~9U^3W~9(1eWI! zITcq=dTZuMGsNI&IsvB}J}0JnO{s z$WX!1-kO^9ZRVcs+R$tEbZ31nilUaiRCx~0L&Vd#_Q)bp^8^sIhWuWIL+VjvmE)fq z)@g{g5A=5Dqqhh|p|=bD1QO`$PG}pR9k68wA5;V=6NOr*WhIq89d4WdiiEvvHsYWp_)D)QNq%^+6bx6vt6G(inK}lsBCm%Fe01d4|MYs z`i!g=kX;Z%OY%b#CLfkrnXTDINS79-;%olAUXl`iJ=<=Um#xV$YpSdJ1;&y|xJ7&% z?+DXWmX7(m&>esBXSG{I>-lhzc6~>V0VhG@pvr)kj^U#tCmtwzXpr>DEM>Z;CHhZ4behYg;SahcQ8 ztDy<{_2l<>ZgB>MpWaPuI16$v#g^VdkU|);W-D&yi}gdbzsyaGym&GnEhOPVJ+%H= zuUC-40mNYHG2&4LV@GM&;w&`&JZ8$anmDZl^CLKlKh7&JuqNy^=v%ygt<_!>W@(|q z_v}kazy@v6BVBH5Y)q{wfwXG=d#pbZw+d^|^JtXKUcG47PeK_DO=OU0>)!_oD-lH2 zHLWqxxM+c}>ksAT&021rbsO>xL`xP7xEe_*Zar6>92FJ|v#JDo_0c=d71^A^xusx4 z7h>tIm%f*$wD_maBG4T0k1SN@C$WA{qLB8048(q{xK-b+@=IZyIFn})$|<%cgEr~* zB#S5;6Qf^Y^s@ITll{5w*!u7SUPeR&K;)KzxH#6hyWS$@e{WNtPg$_31;hXuEcs;+ z{KLEj=f*GJ`yU{&I-MNw$`G0VJ|P%vY<4nR@rA^PGKiHNgIIxXJn!~L($q@uQok%U z?T$)~@5!>|D6|2?U9X`%#H{LwKAz zvlCq{YB2aAi~_M2MNTNCXGYi;?qN9sGO}lO?g&hk&DV}kXsq^N!Ni)Y13h5gqK%%CWSn14oA|G-=TM@uUep&70fWQs^^-?!0{kG1M#jU@ zgS%ARBs#dZA|u0?45{T8)dn0A9HA6mBQWTYrpEV0&nFdV3EV>%zcwI}PG@&}3HC@c z$}Xb`%C;=n?HBg3yQM>J-%La`L1ro3>_CGO$_Q$BXkX=FGV3)GLJ?is9_`6WDk-#T znw<=l(BGS~w3Y>^M)v%?G)?L0qV(tFY*>NGiVT!TwhNR26|tx8E>8-I~cX~-g- zDWArg^xuMC<@$56Bsd(`fPE&Zg!+uB7h%gItctNuHYvQmGG{uslnWaR0z#y=|C$n` zmL97hHFZr{bP~Dm1?^b?4Mr&@B#Cg;Bi7_9)Ud+rNz+&c7AFk#0ltAjZ$7&+CjqsF zTs%J?dFHzm)soi?r{tkCB;nqzG=nKGOrr(e62;KE*LHvM^WKQbM<$5bEUhN|UClm_ z$u_N~Yk_3)KxiK*mp-$#HjV0YCIl-j1ahBj-k54;PSX(C36Fd_GpeLjef~ zVK`Xyo2Xnl!6cT%V@Ct>;P8GfVj7puNDlQ#efNqg*sWnCwh%Lz*~EGCl}B@an>`Rn zXSp8r?BvC@j$O}U8NsD%zjy!VMmV!9tw%7s1|aw4hfO?PwO}>Vj)pBz7$PI^yHwXr zyn(z6il1oD=lM&~7UnVCpdns$%y>7&dLvCF1Vaw`N;1fMQiY=x>lv64YW)v*+^3T5!^!|Ulde7Y1w-dGiR{%7Wx)Wu6X=tyRp zL?0r|DE?4S?#t$31Rk;3F0oKma$#a63FqP8`H7GD*za#C@Hv}4<0Qbtp+po+ufxX} ze4HG^y!_fn<{Lk2{IK|r9XbeRLu{!tU9t~ zmg6QX;sgnrKlurOurmr}Px1M?WA~;>(w=jx9>ZBCBPl7w(s3IUDc+lS6n580{E}j^ zf$7C&Ns$b7Z6%*m8eL}|>DWPEx$2zrWaKP+pc82J-+Mf;^ow*U0CE}RPbgktXh)Di zra)N^kVk-JTQXDg3{$ ze;!3;O;JW~p&(4`nJqnU&6#kr89p(bmqs6}df!@T64?S^8kL}$cI_+h^?Vz$*aD=m zC6o8;={(Lp;M!XwE7>~&@8w0D z8-vpy6twZ(y^uF>N7$e+&}m4)v*IkbD}hG2{v`PYcihr^Hx2B!J+bb@x; zMMzvv^J#-oN7kZJ6F@IzO~Ux^o8EI}*ytkavQqoWcuizH zzl;1bda2_6%V*iE9D9Q8*i~jexU@zI8}Z{GQp=Mi)B8Iwg+evJ))rY~(K#DJ(35BD zg%qgOF~3KvP=zcyoY2$a()aVV)@0cidF-^Y!-az(M4&&byEXI0ddbAoDRA#kFyfI$ z{ppOD=#Y8&jv^0RroZ3oTYF-l@fn5PwsyVktjr7kWKw$a62R}FG3mY@;lIlq*^6z= zfPR^x&8U&0!6=1e69KNOC`!6EK4)VdSAD}hBKg*t_N8vMc5V`UD`o0bt+}j}%vpnR zQ%pM$a9#j@ToqL3OctcBuQ3#aT75$r?J>4hKbrC~-KN{so2@E6fm-ZNRu)kQIV_>+ z`ULtQ^oe>>iY6D=p>lK`xsMPa&$KPEX$@IVK2nxlD0!!?5g`J-V0t?u`nYG@tA3?W zpJynxQoKHq6t3lllvUaM@d!Pqv{&|}`-qcBPiCx&PNH;qGFX1f5ztdL1&2?$?d1YR zd7coPFiTWBI?P+}NrM>t1Ca~=th9i!wk4VwSPanI7o$P6V?6%N%IGv`<{<&xnZVlk z&0;Fw(32UD{hdkW2w{BPt`QZtPTl@h8XyFH(zDuqI4u1?iq0~i>9&i*+sM(3?iw** zbPEb2WTOWnCDJ__r5QcCOF%+WLO}XKsnG}sNI$?x5ra}e(dXU!eIM`t*?pgLe%E!T z=hLhS97~uN<6F!&Isj+XmB)|vZu&MTy!YBo)^h@1d|~5#aBuy=?y<&5!A)W#hwT&$ zhH%hJySit+m^;84xNc@(+z4f>BgONvohV)N*?j+^kgn}v^_X87hzEXNyhE8yL;dBA z@K@INL2Lcx02oG@+(+TOuefOdVltl&gn%!QMHphYVZ$F?Y`u+lH(pKSo*Rz>>~sVGon@8ES;$XTeaF(a8cwTHV|pdOmk4GKmd zcc&k!a%Z&aZ2trFA*X8_XF~FS-g$aQmsN;DU~~$-vJrSuZd!K4AJ3X*MFd;P4};G-SE0^>L(AMVPmh+ZWe*Dqee5KA|t3zjTP zi(OM9V?Zs%;1-`Uhw}0+>`_02>GRIQTrzE)U+UFxJtiLg_^Rs|(&XpbO%_#qwuaee z(9(pjii~~n{13gEMybdthI7VR?i z)eEfU83MTSc6T|C{^d4j-`#Mg>&&j)Y%$cwRsx8&MCs@cS2VsX_5NR4mK7LS-jS_K zWH*o5j#X}JI9Ns+v$*au-(G^%cOx+%CnlxdRU^F3^9Oyr&a~L4``Hs?TNF_ooN zsJNmUKvL<>(hYJiQ`7a%PjdvcV?Yh;X%!|hiR4G&ddvSlc<*UUn5lAA z{d!_nUn&~4XKkBTVdTo89_k^P!>wBnl z?4c(~cQkc|MSdB*@N9{>&_(*RBwfa7nNb09Dc{}Eebt?x+`ik}wiH>vLeiJR(EVeU zETz=*SSLbUkK?E>OQrYkx)`+N?NBxn*T-7FTMUbYcTte=*E&ia9%B6jrGjrZyi0E; z?D25V5SUdwGb_pl?O@Eo$SSOpla2+a%4U{>Z0mig=}D-8b^US@8( zrzxYuM}r?CUHj_X;%*6*rl}>YkjF3=xUva89VE(`zC^nzr%JQ#XLZ*wi%^ED7T5d- zc=7_@2+h1yoY79jtl5@*sLcIn(I6n?)X>NO&C#pt`VAyBZ#vA2AHL9xZ+2y%s}ltF zr+f3;binAHtk~VRQ5#_G6rXHFtVWDw^@w8HsTIQ|Umm8uu#+^g7U|(;Z!Y4hCSeiZ zwuasaQ3+Pcp0)`V4$LkG@+wSz%ENd#ch9MQBk>G)ZXIY3AHkuJ`5AFK##URLhkNIg zjbn2$S0&B&?TPEM z%C1~7FGxRIN+%`uSTS@~^|@47+8j#28kO&x9Rk3JK-sr^CH#)i&5SNeJ=7(Rwb=-L zL*J+m9^@|u9+m|NlVbO`KIpkt$#9$ll9r9@5z)+b0m;v*?cp?4svFSE-J4U^G)qF} zX7RY`W@r)fafh5uz>demt&%n&gSE$~`BXd^s#KJzWTc6^QW8tnB^X}3@V%LOTwp+M z(^#joG7L-S7e|(?eFzcxp2w7-EmI)eNlG)^{Z&6>t~|1i?9|1W{Zb4~6=2M^paoF% z&r=qcWtAs+3?nZo;4Y+Y!F~dnNFH&7lb$*`e2?!6GD|aocfoh@q^#q1`(k;~2f$Y- zwg9^$zH^5C=faFHT(ku5d(RhGXV%d(UxGtWsN78#zOr%s9E{p(>ZnryWv~+Sr*X@h$S#PRucp!xrmMA8h;7%lI7H({CYMWw zt_TcKAf`v#wP^wl)h-}l>S=?-ooL$r-$NfA%Eiv#b7g&%d@jmQ*+#A|;@I2(}hMgRt)~Wc%UoWJmU5C(=?7c2O?8 zeyB9PS&2gZ7{zQ8Po}b?~a#xt1ee_f&XV9u!tK7CxdcmW=mfzc`DHDQp5B4 zkJV<}G;lr!W=FRuzN2GU9i%>pV#%5dD9F~y~z}oh=JA&0T_R2txRY! zK9+8}j7BHx{2N&FyCd&!L_ zp%MqM&#dvO@^P*d2Hs6j+q1$-;_vDOrD(R~|H?q?I~ z3*OQeATB~sY=fZo^yEvO8q}yhzqx!T)zV6LCCX9CCa*@GH=4bPj%{ zG{O+u9x%xHv`y`1<+C0aRRUbtGsNq|NTbM4Fqh@S&_W^BOk3E&9a3U=P2yp_$@V}I z*Hg|SDozr*u7;Y*ZI+0fi<6appOmug=l}Y)r#P1;IR9M$qw($=197)He^7TG>z)uZYiyz0! zGua1t1mx~UZbIT`1iglqcjLpHc74jpm zWG2p{?1E!`O_F~*#r__9Y%ccNnX@N4Su$65@o1X@zT7QuS_mNR%XFk|)N;X18~1PD zFYqrLP7q5VWD|6b=A_`8h#0Tr`u+a^4us;O$DSyUKyEpbCc{v_SKfTDt*&2qNA^Cz zm1!=OxX^57tJ%kfPFU=~N1yvmYvw9fd^a?Ar~-!|C$%hfIIPMAFQfl>%kIdX78a&S zt`o|dWULvBzkjBA|2hfZ*!3zOM7dfR!nC^DTC=jHo#9~M6;cHnc2zyX5WCu|$}IQ~ z=|TnNw1vxyl_rv0Tj5`9b~^a>lGdHq!CU|zO|?I8R0L&br>vJ5USRa|?BjW( zf0o+T)MH_@-2M_03Aar)Tqv0a+st9oBTJ7gfo-vmhfR8qk zK6&kqcO{AnE(FFZlOUdK6%(VL1!{JdPjCVCv}xE}ovQ`h>0);oA}86#R8G*?Of5&| z6%zN&?!!?G4cBA>i;~4skla)L^4|~i2+aj5tdO`)CZKF1V4JRc>&MHHT~2LX?*MPn z5zqsQC@_x8cDgiKJB+#4J_I5^d9mcT-57dr-pTCUT+#-av1CqzASKraulCr_sWI}g zR{67HldOV6A>Wo(UblR{%h=WES*X}M9mvSPxj0gM>gW}$(2heOzO(i%P|c(at99St zOz9!6Z7yl{z>WUm+}&&>Xl-RmLPIM09Y(sdOgA|8>&<6B_~dmx=w1}Zxs<%)b>59URf2!s zsMQtA=I3L1MXWg20}%9(CVI%URLtg*>1}`JnR%Yi?&^7y~#jTkf;+TStB8ZfrVX@%(YDCzoGWjRlFlzlc z%Go_84V~wM?}9m;bE^ZurU4yBNpDPYxE7ZkzckVisN-dH32mk9cWC?nJWGq3MKC7L zZY)lT_-LIlF6#aM5L7rIi$ZZ}GB`v`EgS!dSa95cd3sYJk7ye6CrNBcPR?IQl5oqe z%1R~Vs|3EZOgw_(HwmXFR`U|H$$EhuO;9Dyxqoyf7x5pZANfS{Y@MPC0udGv(mejj zkKoww11JC1-o5FSx~=T|{Im>rX=yNu*~>ad%YK+Ab~@zj|@vj9zD_eKqorJlKd)Uk6_ z$+o?P0vqF(2MwSh+#+VPE4ZDm(MO5LOvTM1nKdYXV`#&0dn3NFt<{}+m`vg0A-q{z zkCdtHr~cxO3h^0A-mE7;lQ-)KNC~i)+1d)r+OFPr3IEHJGMveL#6{X88#)0z>W}5f zAzI-c00b2?lluAM2kGm%k|)lEL3=V^u%Hk58T#URmBj8g6nA3(IKH=Yj|#End3(QO zkzTSGs+*nz5juXXdCPQNHOqlN+fvcf-0AR>%*Q(Yk{E5C>+nu~NUcF1%O5k%O^pj3 zO`9FoGp%$U9E64rmz?`rD64%xV4d#D|+yZ`kQf&)#qmKj8v+_(ozvptX`e4iXI5j=EBuC#D5%&Dcej zKiL`^qZWC@W~Qy*+qKcToCpGB$T9+ZyVVCr&%QV@%Vcz0aQaDROS@*t3jVVHWjV+F zsVssfU4&80hV!V`#-nKiKri3S*toDk{yiq);Hio<$xt-()@EBM)5&(!|AOi{3Zft2 zghXM_8JcjcXK6MAt9yPUQfK$Z)-oa6wB2oA`+5AR^CKKz0s@8ae(xT5xNwh_aAqe> zKEYz%Xr)rmMJ5h(?cOaPd2^D6EFR#TNgd~Y%BpU_fwT4NWY{bDBgDv?6=86Y}iz9R88CiXu7ne1>V zb+PDrNR8S|mJ<&@g)>q=wvD3dLQ%QNTkUnptGP1sL}l#wo=h*g)qF}Ez3ISEB7@HH zJ`@^Tracwsv^8Pf@MB#=#TomX(ujwld@^)nOV`peqHC|4;{Ulx_dB%J#&p-Z1xOw- zI&{?iu*9Z-kV2J&zcjm_ozBAviz>99S*VM|wd*29{y{(`N$@K5M`G z53ut(r*bikGC)Uw!O%@qANdeh(v~92u{E5NfC!L49`+_uXbbYfvOKgtsOsO$ZvV5B z((Xf#mpXX*Y{L#t5w~C5LbxT_Ka?R;C|TO*CdoR3)258B%0FsIx5<(|j8% z_}$((i!J^s%{b#MXHg1JYUYdLGsF=nUp;+taX};tNVK3vaFa7)`FsuV%I^ZiNX(TM zQ0Y_W_A9@9MbAtqhs$h3YvG~!if$Xe2&^(Z+Z75X{Vpr}LdE<`G$mo+KEsS7{oZ2t z+1Jkee><9VN+-7{Wvve>X39tZ8EGdfNX@@h)m0o(w0)w?)wC=XIRlqaZ$I0Ya^@Xl z*_~HtTJM{N^EX+canLKSZ?)mA^w&|d(R_SkvhQBUjW}V=Gvl3~ol=r$>R<6ueGT|5 z!e}LwM6gmm#{~)PT)06j&^b~-R?Xs^#z8ad7t?>aZrMY}VeHDHgW`=dc(k@dpOtiSMv1Xqu398!elI}XmS&Z9w2+(! zsJPVdcD9SSZmk z;1%H_#ne+c=6VTq`0iF%aP{?j8v#k#PVI2&yuJ2YFaPM?vhxbgPo)J+hVD>rgLNae}D zK1%t@fAoQEgdb6c@qE9ZKKrsS(?TfoysB}s^EB?TlWG(Ya!Hz8#_Aq`Nbmn+_nd7a zlPlS2!@$?^{L^%S`mzhP(GY9GVH_Yw&Mp7B(vdWdP+|MUIe;dYfZ7xn_B{O%<|a1< z7-Pv`HyO($^mfZW=RSSG&=aX!)4-0>vUv?8HSQqwCjb8V`YT(C!!;iO^Vz%X9{m{8 z&C%w_00;trC)2E>l<#~YLH!@@&`vMS8D=!l!xJ=8&kQv8DkhOMZZz9U0obk9-fEBe zmpR(0)(4n4Z;i+npitvHGzwrb+9L>MZ1L6gicOlvgmj{R{P@D}&}Heu0qz8aH8LU- z8{5d%2UgSJA(KyyhK@MI(9!Y4kHFXicky?Mug{GqCm*Gy&0+%&aoZNF%=mrT(71H8 zp74Qm{vH~gZs5L!m4rxA_NT{&^O9U+_)_jc`bx7WD8vKshXTtApB(aY8a-YHK{IsN zLD!FeJluUtGIy)93Yk#YVc8e6Xpar#A%oqenUbYCr=-{haJ>sR8RNdsk+NT=CE?*z zxU{vqKhPzgTtSgwRf7c~aHSu;7yNzij1E$skM++n4yX;Aj@-%gd(M?YZJOc7&*C9S z)-)Y0vEO`dES-gSTCpSg>|Kv}w6(;LU@W8>YBj6|+)CYiBIsANT75=kJ=*NpR?q&M z9)7q-=O$PAy#)O(eW)|-#eH%TC%$%}Bd z6-0FQdPr&D9*c=}vQTpgZszc)^Y1v@sMxeyjR&aLFLMTTw_OitV;i*Y(mCecUC2|j z-A`?Q^I4g8%)c$^Z0s#v0l?O$cyv-=d=n<8pWFCmlF>XXAd|Puo-f6*&DHnpXWnFt zoV6YeJ7q-qFMGK>pvb?prv(W^^6}#r*SRY@vT;kHE|c1H={FGI2k5&x!Ekf`cL{1T z!(dEL%2T?{Ii&`4%z1y*0{Bhmrnb)hVl<7O#NQVI+z6sx-iCdEtLoO2J=&PB(1Ntv zLfxhzf9(kR%}?YTVZ8T=5MP|_$*BKN?tssCz7B+Ck~R#5@athmTty54S}na&(l>Lk z(W#+6{5iW@U(8P(@rSB?QOrQt;VHS6a`W6>Vg#9YPo;j8NYzUhGS2xz)%+RaVEmGA z!>da*gIhUkUuMlt+e_0gu@|Xs2VxUe0%tQrk22JoCB}&9DIY!>$HKPOyW^6%Wnt>g z2WyB#97ClJ4?MvB^6VA)K40o{q9YI07Am^9PrPu6Bc)kOa|(@ejV8<)--Ldq*!@bR zPsFpol}!ywj^+ybyTkrz{?CT{zafRYhlt8~>EXQS9vNoQk?RQY?C zg_v$lABHyc^5^B3LntORs^9edG5-(HY8OExAUA0VSQTt!}m{#V#_$Q%qWWBqvST(1P?*lR{+qEa2yV1>XqM7|A68QqJ4 z^m0u&)9;Cn9wwD|j-<0vZyY7WIR>Jt-GknQhZRQs%H)ZR{OS7ICy;x;co1*3D64Wv z*qDg1O?7_FkY7AkQ}Y-@zVfQ(FF8T|L5(bt9APqQ+`H8KKqhpRTW0ehixZos=odWp zO2m^dF$U;Zau6Nx8Xo`+N>UwT?h)G1#F#Pw$)I5Q@Skb74s{FuTYT(`|1$jt@ZX4~ z$#o?WW3X%#Dhw{c@>_1-yscjx@aioh7}`_NaNj<)|AyaGyoai@BQD3Rg4xF@eLEuOQB>GeL74jrl#?M{9!!4dLQN| ze+s$p-5V;iel-*-!eeX4g>#~^3wVJmYv?UdsiG1Y5p>deMwGu0@A?kcer))?M|*xw zp-yMsX!eleIF_LNwZKJR@(F|{%Sq@CtNQ(9M}L#OOyMz5eNatfKDOzR{byHFT>CrH z*;UoAqRB%6bfWQkj8N{1{;$L>L(7DI zzRN_B7}7n?%s`gT#vE+l=eGy-5P4%lP5i;*r2hcG_N-xoOyg)k;>EuzkzUNFtp$uw zB}Jo@b1w&;-NZq6gT|Y#Cc7>y~lwJxxZWrh_a2M`P*ZsTl4Ef-@m-vT(Q0No1=`=VXOCu zY5|BOGn0msboiIk{i(ZC@W`DMe{Qy23SK|*(=rqCjf8ut4>ju1LaKi7jx_MfnQl1! z$m7J4y<26r@oiV##K)Ib%?SS%1*)#uM%D1~!V{JcL`Sr+-MzD=w7t+I|4;bb7fH6_ z4`KLWU0iIjxY8##U3dcV|8X=_aE9_;wlJ{f9HcLXEL%Ohj)mb$*os@9Y@EoSeUG_X zN^`uvM}|Lp%RW+gnmH9F9c@kz0bQ!U@~}>12l1aYW?5wNW$cwHGaO*MC);|#W=ZvmcC@zp2ku>#xn{<& z?$bNSWcC^~2y#m$0!teil`<4?&*poi`hLDLy7o)_%R;O;cYG29OzhvCIj>Zb>z~F%&ti5#@6ncH#!*?^sK7S6 z>2rHF9vr~QE}No54a60vxiwz*hFp{fe@$c`b5?}SYG;u}yH;xVA$+N@Om|P%azxJU zeD7Q%y$E6xZ&EP6d&G=w&uDjbkIe3LAqou@(fJw_DgM0Vlk?!UbH?lVT`|x4QEnsp z>Gtb{LtA69;lu7m9O>k;M3=*TsvvG+L0B+ISLkVHuj$>0Wm0BxsuWfdGA`VS-#t;` z>iDqCJ5lwtk`|@$?#j6j0DnI zK%^{NYv{j!IJ5Am5r;K%OcKus*qDoXjgrzIVD4Fvp;L~5z^tML@VyhXPpLB}q)Eqx z@eS#A5`}B}hOA3phd)ItH{EKFucn9%`LE;m83@RbV@(fLieG_H`oG#v6p`1-ZT|rh z3b*;F(_)zLcIria85O^u>W&2F2qWaKxInb8+4%Iv_OBljzKx`g5>z4@Mym#T)6HAC zB4pU|F}XOfW<1l@hvX-&_=?tP3w?~g~Qg$*M-rA%B7h}?TDVBO%`*|Dru zT_#^4(3r6Yos_TJml>yz(rFqg4>_?M#H*;Y5#EpZOFA=P_Xn=BoZkr{_RNEt4@o~M zF#irJJFagVKBu`yJ3M$3SahAGu6Wa|mr(_Uc5d-eW;gw^wIMjRSAFF_A!NQ{Og%!{ zBEeKtNREEJc2)|p%XbxA@w-L5SEl;!p(z?pw{N*J+1beHskl7$ z6E`rbf>N1|3*bTLFlL|BTkZ6T{bw;$)u%XXX(z^6GJLivKOWVeP$CCVQcMx!221=0 z$j58o0tj>j|G6X08L~dXW3h7DFO4msu>~`v|{$^o0Dq2+hGA&0L|z&Q)#M$0Z|GnI1=u<>p?N zTvTDgI>7AuR!3qPIJEu`AhI+S0vGP=-5kbWtRwxEKj=wmF~DnPAM(+}$i~?dd#$P5 zX9v7)P#y@O^sA$+zncdie$SZ2o$l0o5)rrQkpS&2eTSuxBrZKz-3dDzEcT`ma z9(a6YXGjs`t_35dskv@hf^~sptqiH9-;_z?YE)*{>ba-abyJxDZV*Ze1pGk#_Znfw zS0UIDK_Jt^p5&F0cH=<)~%k~@E(rl1%wwMCk_bYhJQk>w6s zUEYRYl*xt^&rG9iU5A2&8hw4k;#3iGH076Dx2%bk%ibRrl$&z^FXLA=wrrSi z7=r*p3g+`V^M--v7R?*?N3S;et_Sf_&X57Qw#E@Q=6$bGC<|T9yXpRI2QIY9qIX@h zTcn@t!2!N=gDUD(M)iGcU5M;U42JG|7JW+43vJS4O!%dtJCbYhQn z^PBJlr3bV!I@{?-M)%@}<8$J8V-`+V_HIWepiSRD-e*BNCb@tEPuTX6`x>|*s-Rpf zfTmE09V~d)NF6W$v*+%P+r#>Z%1|RoU%vmdlGEFiQ6YSX7b1<<`E(o@dj!3m@N zGv5qyPyONmj&3yDG^$I|9Vuzvo(Q-MCr#PdmDcF}ewVaLOvb9u_A!q-+D!@#)iAn@ zj~urvzwrMo?+mIdEYzk;VBPcwF*FU$x^FMf6)wh}V0>RNf7*()rV8QjHTlsfw7p{$ zcW2>lPvHW>PzFIsg*@k7YPB+b+r8-a0$w|N4{o_Xgu`rd6w7vzA`|hXfFF7xO^J6&u58pv!E0C{`=pSy5)bil({b zDML<4cY#xG$er? zp0-Ol1u^3VazzHr{1o~5=G(DX*FGyl+a{WqA-`E45KIz2`xj>AX3LRp(RrlZk|G%H zC!@H%Jj)BdpMP$XO%RZYy7X-0EIqB&HXKVXr;b9x9ES^7(>IW@&1eXRrvYu9>qFxD zk($<3xddweS%OL*D6sHAKrZ^9TW>k4?BAJP`(pgCn62QPjnvVA1Tux1$|@H(VF2ZC zX6~8`F1-kGO$pM3a>Jir4j<&qIZ@A(s_|&1zm9&<((;Jx_1qsS1D!a_H}nzP;)-b1 z20w{Yq>m)t&|1S+&E8wv@Rhhc0|B7}<>Jzr`wwu`t=86Ku#o#C6pK;Q`wtN1>8>o< zI4K1kLSzkyY*>Ajv*#zhC)wQu(mK$^uqpX=`EAo3YSYP0 z2SyRi6Sc_by{x?QDFnH$I8DU!=TYjvR=m>ZO9YVqQj{EX&#q1y-kes;Uu81<6dSk# zq`MNFSsnYC!(D+U3F^kN;zoLZ)TqfevD4kyS^#>nh@~kV_tHk#9cke7tt~X=`eYrK zYTb&1)*u@OuHIVwVs#Gsf95Yy_B>sCD~nv%sy!rIZ%^5`X0z8R21dA93S2|4R($>F z>~=#-`khlu=f!GKi2eS-9V!n!c)=bIO;zruSCH5d6KF*1lbZdqdVUjCSMOd5AnHDl}johWjY>HXu zCXACP40_}G*;pNxyB16PQN)Mz`xn1*&L?nvM3OEAf;JC2A8_9M(Q^#uMJi(|$qXg7 zDZv%BK1c1zW?7!a+^u;KKn{u7p>JWG!k(pNnCIb^i^x!pGDY+zQMo+3yRr#H`c!fN zyTmWszS%H$+ZeRorDCOI%aP;1AFj{=(zh9MhN)`4%jeOjc%*pIoTW%@MP+cHS`29( zp4vP#dfzfpZck=Nda?FyRsb=_oABh%i8lu92TitI7ieP<(Y<}x#-m)<(QvNvVwRs_ zc3AWZd~$NtJTJBv0G$S~{%{f*GWs6x+rMCqGDVcbk*FMa!y2Jdgc@i`MRC&l7zA5 zT(T4#FBTydtA7mvif2fyacNUstnzXf0^*bFI?8?#-oJ>m@LHv^J6by28Q6l9H{BY3 zXU%cs4{)Xu`lEuXsTnMsy#E2dcCs;_x~~i4NkHZOxBbm}5Svk~~AT#=89XE??|HlJ-Xi1WUea zvBtiQxv#YNB(=2?xU?p1_Ww?4nohN8s{Bet;2m21Q|QXmR7=aNvOK72+ZONn($5y0 z`4lDnai4OK0I!e}?LYI=9l`|~sp+*IP_n?QShbz$4{e0}PgUZ8?p8;LkD%}U;uoW3 zQwdOJ08&6zOJw`?gXZ=*yfAU-ZeeqPEBU*BUTu>->cJ5hisJyvuY}tkn}kZR?m`M$ z+^F>zcw$ATB?L>61xJ>q?)a$FA*SXGuWGU7v*2uOc0#5LAPRiK`aBP1lY3@UQ?&-# zmYDylSn1l;+r60OPbup_von9HcUsL_hhzfeiY&d_vFT#K$QLjUWE5hE#aF^P54(R=%#pW(OX^sbdblE!*R zPmk{vy?|9Bs4;*x0lbK*d7@Z_sr8g{lPRZ=lDD7ON0Lo296baEB9fD}HKLr1EE+UF znbt$vEFleIfoD#d-~M_?7O=pKC5I_F0`aG(ij^IO8#++<8b1+fxXZZWeri==<~kaj zCjuys{Mi!Ao|N0=>R;`26SC^Om>$GT0j-hTky$Wml~5}`mO_^|=l#M&!Ls z=GJ^+nQhm2h!*ankk^Su<@jUjd2y6n*?I=8GL zpwe9nZ!+v)*y|#huCAM>*DJ9$smDXuG(HYNjL@N(Rc^l0;=9+#61G1lLFIN6!kTNM z`fHDCS%pWE%=p2}bQNP(G;(-mu~1gxM-x6~5A&EOfA7=i zHwpUI;)r2GW-GT;%|;0sH2FXC6Sb=E3)(D8f7g`SF18dJn?Q7|O?^#@!fjgbF2CdK=K*!(UqK`YEE7jpbecLQGWlYxjYLh&(i6Q>?`X)jAvAM^ zFY{fV$m>kQ?<_t?TU4VdsX$ z<9*+SdVgiPNR@5zsoCKIKOeC0q2(W?0xeB`tgxWM^_bysbyvX12?7c zP*dMCvhSd1w?Vzz2V_gxVl2(A;d3C+SbTShG; zKb2mhs7k2-Yyc7?y76cWMp^+lvl69$3J99^F~-?QTS^1o=#f|v38Krpt8HVmCf;Ud zo9X>bt7K>KN9CNkSR$qJ^SAa97)7m;+=GEGcb_`s{X`y$aSgZXXU7Vi<(klU_~+OM z#Nhe@E9p^&$a{?+Eb<~QlFcVV7Mn;OrBurOl*H?(j{xd~lDt#BjmzxH1f8`OH74Jl zokIl962^NX&-?Mjk#)Ng4HZTSxE!H%Y*ydq>pp}QFxS4dQ*xICQMUIgaoRnoas?wO z0j>;2LnMgs2f}eDHVJEdAm@dl3uXt2AzPnVGX6x8^GX)6#GwEw2?a1O4s@0A!8 zQgt%GWi}BrxKm&&Pj zmJJn9@IC)p&c!#q!o2+2FnJ)fYeo7<j8Q+UCy#0G;0XCD%>^3In62H^>owyk5Ysvxx zj@av@+k8hFhSR6B6ph5FfbTH(uN^g%$`?QDx@}O!ak_Kiz&7 zp93FF#2og)v!gt)bqrX7m}d{Uhv57A${ZH&WW;c9Fttu(!+%zg92!^Kz+VbxBk8@Xa$ z<%!p8_H6Tfs6Les@_cUTqX&&+75pVVd=wloDxy@0sElJ~_s$vNcS;YFA|Ga zVWJzut_gN1mhr6m;D8!cSg&(v;PL0qPBTWcfJ{oOpaf9sgx9ONT1*ohAjNjgGD{;D zPP*z6k#@pvNY>@-h_EeP1pyS2%vz9NaQB9X;<}pJJoW%iA`5_&>IEn>EpA#Mmdcvz z)gFM8>8!Yh*FIE%53x0I>6_wzrpn=On4&+J<_OsQ_;P%x#mX{kWw1VC;fUl1XY^NG zBDGtpR8zHr6j$XaGwywmbrBwk%eFDae*9xr^W+WZ3KeRa1P5hd2mQfRRa!w12s<(H zUgc{Zzq6OKNmto|Jka8jMJ0%lY$0M33PLOgmSlWeG@c;7U72otYCsP>%OfnB4c-Yd z=HLq`ae{h1zgZju?X(hNuH^*(2w~uhIDQGKKym|YtsRf_>bEWm#W5EYYvF3cAI%E+ zddEBOSw*;6ig*I<0$d$Z-o5D`V|Cco8YmGbzwEqOON|xwP6%BAgDIE#R{nJkx9xZY zl#69>4qA&Eqk*iUnb`Wym1u1J@0?t|#H)2Fuw+Za`j@I09iF#|lO{F-^(~H6%M8Vc z*!UZ|?;JK*e=%W-LgKvtm!G^Bi3FNQ2DCdb51+hXO%;L(zuu>2KviG<6;DkyFV4m8 z&Oj*vAB7xz#D()4Trp@^HO3U_Gh9V!@D37KNB`PP z-_qH0>D3p@0kQb#^N*2ex-+KL+#Wb!-1T)agnzWcf z1GD{sIXwkYeP3ErN7REi{I;h`N*EkbcnqJj?#)e6o0x8{1$IxPsQ|*VBJ{qy?{mRM zRT4l|RzF~kA#tqu=TmE!fG65kSdQ73UX%Ra+mGfYg@tPZ9WS0qA_lS|%*ddXfJA;^ zzGSJ^$H-6K?i-7Bc_hD#^2^$goLt8LCZY$#bZYgjl>=$)ytgri9x#C}_;4Aefxo6H z=zIlc8O+i=j59O-H>5MoVl_H?5;gL$B>I}PR44dPlf;R+G5Iu3le2;m`t45UN{gG8 zxS3ciN2gHxWpQ(8fm;v^#puAD>q~*j2#v`LDq8rf@MEqGy=#_hPBEwzC7w$~1?g%k zRFsu}Te_WMKq2m^2_WWOw^K==SkR=L7RjT%!Fx+rkuYPj(9r}+KuP>P_d|;W`0E)1 ze;`h+;$FF`dGRrJ((Gi zx&X4ciGfY#TI6x2tkxGj|IjF3%mVGL!-PZ4XOp&Ucu=N9&$^8x03*(`k8&Im$SKLKfiH$7Fn};b z(~a!miJ`li#Uk4bhGhNFMzr{z-^`P=$p*s0QfHo?bHNpH*K?+4J)RQ5PI#D=vqprGAmy^mFG2 zy_YeQ?XDzhI5?m1C0D_y(Qykz6m}@QtN-uv#aL*sb9~Y>>&XVhfPV3;^EfE!xU0Hj z|Jp!(cZu2ubkM!4s<|-s=A$f+w0#%5OlLA0p`}|T#ILix2$UmTy@MmWUeq~VDXR9jwG$iIQbLo)Je0*| zWQ~iYJZB!rV3?$ak>uOrEIX>hHt|iw#rD?eExe$RVnV$SmDIn z!L3B_rqZ*9a%tc0yVcM(GvQLr{?VV^K8WU<{$TQn0rQpT-l4&wbf&vL*_>D{Q8aB0 z-Lqd*5ovtIbJ=#wi7d<|LfXwc;S|}dKl?YUwS+&o#j=U`#5lJo79TjRsU)hk)poyj zxdazbvkx|0)f3iXPqYpM<(1Bb&`71F&c}x=tq;eKiyF)ml$iYj$BT zm3*;j>{%Rb=V_Eg@OVPA8*RRvEy|^n+)0}MH0oe;TeeoV+w>fB=yIf5+$d#~&Q*S^ z)b;LE9X{}dOrr38ZZ{4>Y8d&(8yVbET`R0!TPX@pU8LLA?lMc3Am`Ec$aDf(=JHrH z2dhTQiHs67mrNQRhUlmhk2=i!7#=;Bm+S+ZFhhxe4jkO;Oy z$ewjC+nv0?D7~bCIifrY9nZnApSxjnS&BH)(LePb!|2JvFaTjX(zqFM{sd~Rvy3A@ z&Y>H0eZMYWs2=2EA4*(ue^cMC-GLiA>9@x zaS*xB@TEvvUeDL~&{7SY#c-&5qb<-8;X>de#C~_3}8K4%9 zX8n1{u&+sTu3df8=26&ZX3*B^J_l?OTdKkB^2@n8)J9(3sjvdL-L?~HdTfd&51mJE`{4M% z&)eR2)2MOJNtd}t;OVEmS8vCQAK6xcr`-!JxMt+sXLak2nrNQL(jVq`_fVCQvNWgg zmypIe(NySvL*n-kthV6EL>SDR!x$;JnF8C4e zcqg?JZv9aH^FgvL$F%Wc@M&!;nap^Zy{dsn=sA6}*cSU4wGBm3D6XUxExXRjd~ml) z1_+|-xh$vE@U04CMp^EjHL5R`5J}3>`*Xim#U%b72vipIIMhfiC<0y- zw{4^jnJA3t9o+XIX{lL8^)+9bRwwoVb&d5c*PZn^ygBQ+Z+kHU)h{Ti)u0v3 z`#-_2Owu(_(30kccTUBXMREgSctq!eL z-@O0lI#>R9&UwyxzMs#1AFK18%~LY7Q;LHe;~L$2?#s|#Y0DR{yhvMosZnDH3!FPO zj=H6-#bcDraWaFY-e)K6>%W2F!CN z1Rz`&qlc^B74fP?Yhc$yB&kgLc|mGoFBpZgC2p%5?7b~)9H(HhhIeHc0LsWmBBLS9 zriz1e!HJ)8{4^nyh|n1QM`M)oY}e*?a^olmcSn&)AZzzQP+0*nwVbM}tSXT_G#eW8 z?MT<|IIBQ15QTkSaG{6L`ZoWzJ<#L&jNPsnM%mM32gjD$Gas-=BM*1DBTQ42t9rG8 zJ_;}D(46oU6;BHTE;40cU%I{WANh1=49|))?@}@=(cq3Ov6f`bftBLSs>F8dfSnMp8%z^n=UyHR*lZKj}AyL5!HTtIBJWR=)=P*}zioh~+^*&{t9l zRDWUbX0wjer&~4O1QX}2RJvsxfocYRj+D32LLBb33{Tc1<%TVx`3JZy4_kL~eydX} zr&|4m4U5smHrfYZXF!;=@MPfEnWOq2QY&&PsE>pZ{7vfCsKz? zvfZX4C2hy44SaE`aDJ1H^$m!Dv(~WWJnlNW407O?@iqtO_{;P$MEAfA?O8ULBMH5> z(;@5}!PIb0UcI}Eb?rk%r872+@RS{?1759&Spoz|v6&-EUMgUL8D=jI~U( z!~uIb+kd@^IQ{WnAne=~v51ltn~>9KMLy+uo^t%w6QiV`NPMH_PCGVUJ@@On1k-C3 zQZ08cA{iE(&vEnG_}8F;ky{itPE1y{mwYie{wC4iz~H~OYtyGr1_o~IuRiPG-Z)H-9YQu1idfEcYFAr8ssq8j}YAv&Aw*0vLT z>v7*7Hq?=o`7PzE&I-;0?3i;4922c>zz<#YOIs~IH!=&H>5{qIsg9GYazk65&ykD9 zBsVw;Q<@0y8VX}3yAal6&}YpNK8e=&7A-A*7Q;^ZY0^OvLvzQD%|zamnhVY z{g20ZOAY{5hc&STZp&Kp!L+NNPc)AH=nm_FxyOrG2B#*K{&XISF=>8{;Z(aZXzIo9&X`p-l zu8VR49?v^p;hbCZt}fS|VT^*x81&Yi;&52lAXYKlyHe8757w&o$+ zRC^|s*AR2lvxJl_)_nG+ATX7InVW$;CGSW{imOn2QNWUSCm)i(dSYV7_!Y$bWHE254>@hVWxlW(-&V2M zfgMl7vx=qr_IwvtdduL({55A{(yR>fCI^u{Csr}fB||8Oay`@;36P%yU+TJ(vQE?$ zup8|M5IKMpKooUk783L0Y`I%3)<_`FnI+LBeE6)EGql5GR%|hk98P~rMM;Ye{JQO~ zbony=OSx=SmsOuy9EbJP-K zoDpSVu5B8V1ErM$T@6FVBL`lDBV17O%%J=4qD|;P<_nv;w>eziW=wBXq7lh=21*Bx8C&o#zaOM({Z)cVkS=tW%99FW zw1nLG(9}0&q1cBfHR>R|N($<&wqE$f6m*RoSmOXTm_d%j$o#X`{94DsW`2}~zh(^z zsG{l@ne!ZEg`nlW%0b?^t*ijg^|UHkbLhk>C_-hbX(1CyDgoz*7NKkf+85o*54@22x$vV_r-bgbC?-VHV=#SbzzrMagl<-wl^s=Z&#_;4Z|@(wA7m%`2hSyuSRxoLxZm! z+D~+D%q{J0#k)779_^nuON86svpFkuLQ8Xw<@K7VpwFjZ)IOx@K9|4p0~)jA(x(lI z7u)6_dtqfB!PPLvdEX!<$+EKUUOP76PA@Ij1y%FiC7Vx#ZB6Bk2yjAv#Ol^!dwm9!E z3`M`<;xt|Tm$sCy4tZ7Ef9XJMjyyif|V|I=`rrYLzL0Z zP$RuWxMBCZ(MIL4Ngt%5l#j`bNy)1EmH6ghy(uVsYSE3e-zYa=W$fN9c!>DfmyTAU zUkaJ5k^mXn>LrC6b-JS}ti&ZQXAo>kSazocLI2Yzdtx6Q*x~Q0IF|SpL%T+I{naE* z&7C8jXm8y!WLp96?}cXIL~gigYT&Cn^=CT|oJ%9!PjSK+w~v~l##;As7F?T-|5JD% zGM0*=qhT>l-zKWvNRw86k>#5od*XVHanGWKNMXZ&DgZ#axLS*Ig$`XGrgpA8a_)l` zMVyv;Pc87}woj`;OzyPa{_Bx*#De;BD_#50vbwnnv>L)KM2b@J!o<*26+RFrX9fWd zqlZ=SMJ@q7s4(GA{QA9D>Hrnw6XYL-F^MbLBb|#1J*gHR%P=TY9+mxpjk0^GBd5zt zouml*OGzbpL$FLIVF*3}PKrqo2;HWCH|rKKrVufEHK+HY!75eaHSgLRKI^~Y=2S5C z`N%f)5g9j7z}!Zp;jI#)cS?eE5rL-PDu&CoG+Qis2|(&4^JP;x!K&1mpoyM?$uk03 z9}cf>DzV%qM|T&^a?z7?*wn;$k7eY78GA^ft`#9Bjzi~-o8xBegB@6YOnd-3{1Km8 zxc!Z{zOj1L?!dO1u()B%uyv~8)yS4+BdT3M7~Qisnsk%NRFJ5o7qLg|nIqlVMnET2 z&JL=DM}P{N%6%0Kh+10@+82({bgoMUPcY zBN~O7#H(wI3a*kB!WVxu;_DX|s%O6B)luNb^&Zslj`O944JEzt4)e{Hd&+0%ytxW* zRzYcE0L^vRrT&#^ksQAGAZ!>nM$#kc@J`W72Wu5(uyCp}uVtMd^3&3L?Q0wq++I~n z|2*y=fFpfJg4A=f*t)tZ2^@=U+IDoM8Pg`K2y;NR(nor4%cH#THuO~a96(ww!dB0{ z%gRfM&3}ND=n!cvCY6hHLg^jjzOCg_*);-K<9pyO=g&?CzLS5wy!N?bfGtDd;4F}M3`dc8?tq6h>G#2IM;60L9pln~CAi(3E9F%_%E5G`y9zqhGrMXIN*=f2uj~*yQsbP8Nt&% zx!3Z8^B!6-pIV$~5n}rN?M@78Pv7i#)dh9z%bKjZkQusidAm+powgP@KM7givLW>H zi%KRB)`MQMO^`N}vx?%>(xrq(0g@)QZX;E?ZZp4sYJgO5n?CXDl57hV0?6D!6vxre{M8!ooZ1L6@h$<~nLdf&SC zdNR6IW{GSy&L4}?b_m1!g=KFPoILeueWE67Ll1V@C){-#iF?StnIoU>MK64Ru}s0j zatE#7At9G9bzF)Iw!G-x9bh^(l+78F;K|q}UIIJKw;x7w1M;q_=&lb3(F+pj@(>(W&p6ge#5D9-&F@B&i#k#^I7HK)AEZNTLnBynnCQ19I{nLLe z`7Avh#>Db!dp99ko@U7hAj{?0o~)Dnhvv4Tkz&F1z!{W#cw&leo+o1$zF(%iA&y~# zb2NHx#8c=VN0(>ON;{g!bjE0vG6zq~6aRh7_{3~e>zs}2%(98;!j^3RT2*AE2b|9t zxu+)e1H2MYnef_+O{L6>6N@IO5AKA=+xGc)mFNP@A)Ko2OMOEa-g936<4MR%jI>p6ZxwKR=W zJn8@rSk#I+@>m<$6q(xc!#B&FR>|OP1!>pA@s_5G>v?J-m#hy*+}pLgBu>uQ+tBc2XFB#Q(s0s~0Yf+T%J+)2{c1}9Z~_s=%I5!^v< z>W+*4to?NJvw{$NA=_FzD+sC?+d_o09Z+YefBhT=jw z0Z#(R?H^^nuCF7fxq-+bn6Qy(zuWhfdQ;x&EZX35#X*mYUm4fh z-u`1XblkeB{iyGHFwuCAwhEM|Dx*apZ>)zHy@>rK%zSc%m)zhHEP*Aw_CD+#maNL( znn*?m%cxj~H1FE(;%MznNq0oz8(6q~)iUTTv0D@jZ-O5{fy z!jkV)XK+?3K^>=@qJ;-S8fuSK;SZMHJQ{I?t?mag zzA27Cozc&+y#YhYYnVQ$0A%~FzCoDuX}erJxiSPFGPRS2jGgT_Q2mx@cmsCFFN zh8JrVbX?cIQ?=3D*!u$jQi@kId?EiZ$xq}wKU2)Iz>7cNd2znBZ|TBHAplwBtVY#> z#P4AgT%}Lg)a!X~54tOJkYkKo>Jq@*c(oWrIv@|c{OI0pp7IFWeET1RWjJdykX0^% zhBKO$3o<0gWkJ4{>hxzxULez&%KD8Ww|X%(6y~A}QilxEa?*dVzcQ9`?f632pvZPn zg6RZOo0Sd(Nk?(De7@eLf~vbhI)-n`51qJ*=KceKZ)?{alYBA9EzY)u;HtV{2s<{a zL(vOUCduAE+-t|uHygn+A?L4ZPTPR=wAzO}WXV1(`YG&}+LP-?=7L=J5_&-6M}$KBP~Cd$Fw(xd-v|>wVNZ}lHDK9gQNq#xKyw|q_`3f z&#RIF*86tWJrs(MV#lj{_<_5Az|pRe=q$VC-9K_*^<}iHa>$OAE{$xu-`<;=nAxsO?g z+pRp6kG6!P`h^0ER-y(1lAVHO&bVlAbP2}OCYg^v5Zmm(9;~0$(#B#8NJ0GC$OQrO zsVP@H!sKV4xL(N|FEa|G9>L`oNN#s|ZzJrET=j3qzqKB>$i`g9q$+=Xwim>)Y&Yf6 z)o6~D3Qy0?n*@~an!jWdn;AS_JI8jV4((_QW4YZ1X-vi(Iq>s0w=GDQ+S-~O+7Q{c znQ9~AI?S7asfqyE^G*}7Oc1x?;v3fP5r|ojlc%@v#n3@`bDR{{&Ml3&maWTP6w_`o zjgi9~ePpBmTMY>9+B|tyU63d8pIMp-#N<%?1>2SMzE@uSBjf39T+`@&RplM#j?(oK zT_K3iKzVFQG&amE%yHSyj{|hS7ExqL0hp_8@)|z9U1lZfDpon|@pfGxRdi;)EZo=w zUP1@qhU>)ZEw8)_@B9;LMT+A(VJGz)v9$4Ik~BSPKRE`l(1NPznQl`5)OpFb=cT>N zzEO6S73)XQFadO`XTTHOtNCS(q*4>+@=s{j>sQiUVrHO&$Kxo+NCx2%n2?Oa(6wqa z61@D*d=pDQmp=ST0jkUoBrL1|1(_{kht!uW>cFa{Y{v^wc%g4eZx^kLR zA>3AwuHXrEI(UKxS?hv!>P;0Qy+|=-W?2|07)S~klBeW;)M5j($va%~eU2jrr9-F=!+-%OWxZ0HE87G~N z+9N3j*|(UKRduPWYL?f@KOEKGVNaK4NFHwQT;aC;sHjRVllpRKaJ1dt5W2c>Qc0RN z1BHs7=3P_|7onm|c#{jO`)k&pO0+bUrj6^R*rjreB#f%R_ZaOr4`?Xdre3eV;rZ!S z`OrY-_(?EQ#EUYI>tO=OB>7LV_}YiGDCyk__{_Atxi`v}#ug!D;a2#g_2UO?HCa%E z+=#9Eqx%Z2%K2&NEF=#}F+|rQnl11qJDqXHj+@M_WY$>HLfD!-Yr^K#xL26@_+`M% zOm{kFa9LusRI8th)-=&vee^_e$ipBW*X zImUbAy2SnfyXuf_=ehU1X^@5lEis6ni&whOLP)W$ov-b`lk#3y)I^PFr;|cIff=tk)`0l7YNqOLh$9ViM&SozTp4 zhvSR@0_$y*1be>KPWiZGD!|;_X&ca(Ae&#}y(UuQ85F;y2O5eZviHlfP17t|-QEo!L2i1$uld_ewau`muza_UZ4rNuz zE%2_;)sYT0#)aV_o7LUJap+j5GuzPn#y-6Kj_Nyi z$P<0e$nWjq`RRAqe+{PGhCAJnH)As|2GACo=L-hVi@(tr3FXQm1HIUqVSTcZIM?7t z@PRovIy-B0{|~vy!D>e!YEYO>(dW8iph7`R0&qQj|qia#=OZps1J4c|6P zv1TD9i;f%k>mErOE{-vwH$}g3di2#^70B3P3{DmRvUV-Nyl?!<{oUez?U4dCiWI*n z`QsP5UgaT8rke2cHU4~Rtrrds0T0QXsbp!jrZ7?G6~%L0r^bv`?a%V-5t!F3#-Yi? zEr3o*vyvzDA7Gi&^FN$cO`LF<&_t9hLg=`66%7rc&!Z&aqw2?M)C||sCJy3*^l%ZS zg`8IgTk;L+nobXfY2~Re`qy1}IBnJrTUg?JIQ9MEkLJ|62l6#btSs#q?Vc2Y9$Wijkd!bG0=PeKzP6`moHD99{i>dR zx_@HEAy(j4?JI(c#DnhK8B=MIWOS`z=P;inZmnu!iu>M0%{zHJZ3dO)f?f`e)ojUe zXJ`97%RE44xndo;B1?&#Eg=m9SE8co)8T?p+w~EXTD$9+XNHMAG|};k!XVFxU7L2z z7j4_~x!KMq(LETTBR+mdOtmu)&dUp!edhd5x6HJi9|=~;Wa~=_;J`{k{1EVDfYpJ} zkJGyD#E}i&t=I9FQi~=y+I3F^k@$O2UvIFzn;>_!$9;vin#M|@~MRnBPK+aQuzs;LBusacp7w>e_#BOt&@`GVLa#)EJ2`E zQL`uHonRl6PqHkTKtOT?!YF5PtDlemF z&jQf*L!GW^Zoy|(3FCH8)-KPFR$FvJ#rWNcZ%PO(!yqVfp5gYEhmAuJ-gZZ1{6?7# z&H7K|F7bKjt|h!6nShXYVv={FxVVbf79;6&@o4>#JR@D;`hTKPEecJidjSakNFTP* zPuZk94T}@=U)hxdkUA6KtoBNN&Ibd&L5A1ZQ=N4jeF&4kJYxZiXw#IZZGzN zaDyPHH9%rq{X4Jxxf+O?75*$H1$qn-B?VspHeY`$>x*jb6Cq%`R=L)K9s0M8JY#p) z$Nr7PnE37Mv#T^+-&&eCtXXNJhCoh6HJ}M?gu78NQ=f8qe*$_j~m40DY$Ko)%~mM<;9n8 zM&q$(V*MXi{7|8P7MzBAQlqHeZDWXw+*|&Amd@Yb1Tk&}7-Okw!!whgS4)JhZaIFuQ&D64v&$wPQ9DR{{#CY) zw+uYXTP1v)TuUYD8=2pNTD~beSfAmZR65eQ+8u;Ks;>()Oaf;ftMFB3|2Y(u26fS| zi7s&TZZ~$}8GWeQqsApSrh^Ngj$ zLH!;kH+F?r!>n8GaiftuDStYdToE*nhe75zhW)R4i(mOEsOd~^GNbLgS0`dBKHsF{ z->*e1FWvqoSuj1WJ28Wjonc{}r4$f_XAn9=G653Wd8W7jUqRhz zn#7NFULmQkdRQ_eO{S>3O5-}zKTnUG{xX+8F-h<)IXt5jCjp8l!tdWE8#&wf#VB3nc&!qJ9YiLyDr8a^Duhb z8VKvBZ)y#7PX$c<3f@@wJdhO|g2ddJA18n{$(2-d6;2?k<5mBUEy2#)&@TNz+B7NX z;s?5(UpJqiNMbr`BgA%Y=ETeU{m&O{2`P_)HQQanh=Mf5g)|tCfweihzVwmyWM)gP zO5218hT2yKXtA+J$~p&mcJzR=!$0q~R9KtXx~L13tf}ncnM3XdoK|CbOML{YepLUX!fW->p z)qzp0#9a-|V4Y3IHPK7IuQHq?F^HKx+CXX^YSx*Icgz7)tb`z*pvy+uGBtk(TifbK z$U4&xir-hTpJ9tQpq+QNkU`{9AnLsRwJKj(9tTUbe!Z=JllOJSjUxpGX|Xj<9d!Lv zXA=uKLsA}s57yQ_+FtwKVouVV!h}GG))A6@WedCWvXn>>W$~Mbxa&2yE@s!X1`4d( zWsvyATAiU1Muw#ahCBiYvvi0KJ##MjSIoDDuTjqh5*I`Kklg|{Xj;mU%bWB!RK7ye9=6?W*7O`&Mxc4&J5&VV}jpUyNwF9PURvfx9`{H{Om2ALxiDZ|U zvdiKwd@t(vT=O!4z*6nfPX6SBi`u*I_u0Y6u)BWE78oz2(mMD#wsCsG8k&zO*a1iO z9{zmcYm5zvjsW!037VausHzd$(berZ&;Mv51P`6AU7e-<1_3?Av%f5thr;ZI0r6>5 zu>7A7-V%0aRr5IFxxg!$#IxHR6Q`MhFqHYLqF5TI1Gy?KvUEuRhv$XkVRw_Qb@Gg6 z*-5of6!ClZPw&LMT5f*k4(YZQaT$zu-dSJgMF)*SW_In7B@=&SiFv{U-wt%_kweiN z(RXi$Ny$_ojY?fYLqBd=E*MCo-TUR+`MYd%OMiSJdQ2>m1PS23Cjcu2RiX7VF1cNij z`&HSWJDAz4iMjM~wRQwKknAx0xkW1gCQGCA{+~xq9sCthZy48JPZg2h7K;TLsnnr& zk#B|bW#YZd*{ycFqi`w(H`2ffv`IEbS~h9(HoX_zNJyJbdpqws+IaGZ)Gp*bC&N*< zr$zM6TiDESy_=jxohVawu${`jbNN(VnpIXNRXf)UFZfO$wG#5pEiOxDxGgo$w8_kk zt!aXejB|X4qgHwvv4FKoJwCi@w148`EIzS}{M)f)wK?>Ix#b}48;Z)!?dA~XqjhYpOarI} zuA(cjQgnLj5hbwKntEG~0tZZsCRW!c&WDQZ5`2^j8>+>uS<_a&4ZnNKZN5zRr$Lo| z$sIl5+?Ymq(D2HTVigs0>b5U6&z8IC{~IynJf-$z{WA%0?=#wgY?0g;Xj$mw&s$Lu z=~C0(<(SLSX^}sjdtC8WlFuZ~DFN~yJ}39AZT=c}1B@d9_e9AKpH9q=&dAmePo@^9 zNM-URns1=`kl@xgWDIdMwe=r>j72D^bH|q&sRiw;^GzdGZ{*`D@9B?rRXqRkc$UC# z7oP};4qr7d{}feaYeTJCpb2N9|9wDT2!~ns&f;f)B^9T-B7xW;Yet=1IRPtJRLuLsjO=w8d5GlmGEyi-is?7joHn&GM-{9zSRN8pYPOhIRPW?) zQ|oaGKqVxpzR5w1UiPqoMOYY;Ov0&00lWC2V--5wojFr-vV&qTS@&zW5V(R*>{X5-8=plRkI% zozG4q!N{f^cLZl+*Ar=%^>ol~td zi64(`9o}21;oqlqc4wjn0>wPSX2YPyalgzCxE8kD17hsb0g0tgAb8WH&#$8!2n51# zxE64tz_&AQvPs@qOX`qt2?cIHqC&@oOK zL^;+V;tN@t)$fzLb{Kk}Sj!|gLJRiZs{-B|R=%QpA_C(E)ia9mX8xLex-j*vA4?E* zDw-5Ce^vdR$AW??M^8XCWu$GDSfY+BHJtz)fZS&7NU)H=k&&7#LP_Ab)=eXUW>drb zmZE#1x%BW0qeHZ2wWY6xw?c3445F6iV(-CC#c4T2xR@zveW5Lo+L;MtYEs=d$6PyB zuCdal{3;hhX+G3CUJWpiZlO1k5w2ziP$S_W4RGimJ0Wx9TWeTSZp&eEtEL}`?HqDdZ@v*XuXV`){q_Xl&wfn|JE zT^WvBwLP0Q@Lpt-4vNYMeBRBWcDG(%W&7AR;^a?d6jqIDie2Cd?a76*hVlo)= z#61a!dvFD#!Lc678Q>KFzFhob!pBAk4_Tp3NND_i*fy433wY>P0-MhUUL37ApBEH1 z5QevFLFNFnDH%{#vv&Q>SM*eU_|LHi4qpBfBBzyWx=`EDvFic9h8+9}5(>Zosy}g}X1Sg6~~HNZl{dN^Vrtg|o5DLFos-5rA$_ zXPYdWps~-sEWQg>01bf3RJ>YJrVKo>2n8J3#!nc`NGV;%J==AyFlV-%Ol~L$D#-j5 zBRFw3Wji%bJ%(jedoUiSyV(4G=)P?F4oy||QP+BheyrqmV0JhWobhX5s_%-``O{!& zO&6@9OV;3x^uGh;vhP7iYqhi;PEC=Ed26hULNx5leY3!D`$F~kymne@`0CG9=W~N= z*QeeGK!HDO!a(?T2G{Q~)DNE)^8`hHTSV8rb3LO3)FC_8)R(UIYflop#jHD2;UF_N zi(6Wb&GBWUVqhqsgrV)@-P&d0p8;N@(lQd$9)Wixoyu*KaCA@aUke1kK4hH);HXL} z$|)HVWD{W43~6m2T4*SuD7Db?lG~@IlFk10GjAi&fxGMY`7x+%M3n%DR%kV}!=YPy zPRG=IxoqxEW!k{q79?dy92S1Xngl2*z5Kh+)?!4}Ou!!IPMbuXziu&juZ&CPqUXpJ z{Hl5AC~OnlHvI7?O|>-ihW!l{3mY9aTR_3X#XNS`ZgbMEBoJc_jt8-qRCFhJdry^P za|W}wf^5{%PIl#IQ@NS4sP$`}Mc3bMRx5i~Ehex!9a)RI{e^G6$D^E?5e%!5E^Y0p zs2s&8AHr_>6d*e(WUP-}OYp*NNY*|~q2T)KiW8T6Icv9~n!0=tu+#Tu!xH_-0gj*` zgpBQCwaj}(0oHN}RLM&3vR0-C@YqlEk9Q{DSs!;#hm|sneYG4An!SA zGvO^U{=KY(md1$4pRTm;jZ@~v8A=57Zn|8F*2gN>4G@+0wfi95&(75M%narxTk@l*+drOPAI?X(oYkEekzc#(pEu#97G$!1d zAbVpk)`5?UxN^AI(X!Fi(oS3GD^ER{&9X=ThCYuOX7&tA*M@Z0npdN#l5nTn>8fV+ z7*`(P*retBdPvLq@_TJp4btZdbz0VMAc*JZpPR%zM<%$1B~={v`bp_Ri}P4B?D+jm zBeRxW*`)HlZ+tBck$Tg{X@J3AYbw1Va0#_{=s{4y*2`BNGY-(Ivf|ROR>O1vX9~iD z@_DUnw1}LK%P12`_R@L9VaM7;B0%AN>0Gs6TFmShatDdhV^r&#r38E zZ&~RHElGw-4%_11zv%|m@Ex#qoYptStcTkccA3Njt^0^hy)Sk*tuWY}G z6ox^1QP)U989~d1!~&3g^ZX*_L6Eyo$x3J_z8UW9kY>>b0NF>)YMp<4`P*7@=Flm) zQDjTudX4E4?|ST>m#H+!IaWC9boInL_;$N`$vd@(?ry?Wkcu42ALF!GR&}`1r>rS@ z_m+-dL5;UrR)wdf&{qvWZhfFcHsT}tWdM4D~R=x95Avg{$WTxKF4X&jDT(N8YA$q@28ia)52v-;*O59D0rN89@t{>gq?cW!b z?9ZPDHCVTzf^022vH(UJUY0+)>duk}- zCq#woO$IR|mqBE`{lm7vGwrOq_IozwRJ7E%w#YrNe(1GVW-6nBlHPt2N}ir`itF;R zX7>a}EtdVL09?{|O<7F=9AW01 zFK-sESt%3Rm!}5&aKKkFf|c;Kn@F>pU&Xs6IDiPF4qEfzqzy{{&S}-Djtz`^6LnQQ zN}StVZ`q%1m)O0VpU&)*UpD3$x()qt4c}QWaw6}N5@EW)<0`XshlfOkyou}IfXG-< z`Kvrw{NiY;Kp;?>gR`Etcx1|DzDvKWvSyDhQ?+*@G+j+o+u zJM!sm2=e)rM~KBlY>gRKY#Mt<#p}|43?kE4{13o?VuUlTiaBzz+!j<2i}5g(ij6-q zIII$d)yg(s2!O7(T)cA+5BHtg3AsLK{#R8>;zo#7NLLzWt0X29%0W}yANlP&fv4KS z`Ha}ZICX0&6n+G2F9ej0>v?LZ;*_plELJ~dX`jl?)#0%7_LG8g=#^*vwgV!H@yWdh zWRoGGtdSRfK3l&c0JJ)S6SPUy=|`5k+NZN7EkQJE5#~ax7S;xgKSsnQfn3xl3>)A# z$xS-u5%@@{U9A9>ZF3{LbVNkqL}wm^m9gi`yzIH=&GIhE&W>Ied`D*J-CbkX8GA$_ z9UX17d(t<~m2B-!5vPEFfH`}TBcd4qUbzkIg&nJ_m4auFMF%_lm$yRIBgK+qwaTRPd{DBO&{??(}=@qK9*}O zZ3ccEaoQDb=e0hdhC-A)sqZq!qi^%|-i<+P^T_0vv};uAl^3E=(3lPbZ^HAay2Pc-1?CN3Ab3S}ZpU4s)pF zm9i#X*1p@bJ?-|{E9=rsn3O}zuVuCLGR8C51qI!|uqKBkjPvEr5Fox73fht#*SEiG zX@}KWb&VYJJp!?1B5wx>mI~ltqY!EIj*`}u7Ce@G{9G%qyIkIm9wZ2Xlv1G z$whrjH&zkFm3pU)I298eU*Q3yG%13%>)xUj>&w_Y=C-_{tgpVeU(l z^yd8f0TK*cJt9OuKpw3g#Kyvz2R%ed{R{rE)!DpaabF3$2gP3wO|y*YJhlOcEld3VA zshcp)ke4x1xpJ8wt|fGL!DaXoP5hOCO7JV3H_es!(X36hcUTvZM^M9MmDq(G(z;VC zUAt#l9vbebu&PeiYJ$XA)0whgUf6v!Uapx7X#eoGMAJ#+AK($u+~QT4+;-40*6BKm z-{C_G>iji@6Buz}Bh_wJAmvvXizux7v0^ungb$WhORJ2Y-8$-y;+Vk5#5nOY z*#LFAMF!_3z6Kd<2kR+TX%`sAgt4GzO6EH@=bDi+wb~uzcGr0G_}ELE^&E%&UKdS1 z7JAzrzM1$FUcoi4y61Lo&b<4!^JT_3UhWOy-g$-xNiP)0H>XId!}eP(BY~>)UYg+j z#U{3e<-C1)s^fgt%=KV~8+(}-lEO1rKy(3;q`HNBrj@K%bSVF&LMYeqz^ER&B^B3oMnlSZ5VAeT7Aj|lbKX*d$aXJ zkH-A)^VAVCN(nY6EOvtm|K~ye?b?Uz_nqCi$2&$G!lH%2=-$Mw;ZKe$ibefnDi3Ep zMc751*BpXRxk}^Ui`VbdaGuAw7|oc9*;2)?iAX7mD0ce}hsDZqyH38ouf<3!uYj7k zxvtpi@+Z#<8Kj*!oh3FSKJ}iei})i+`KbAO!z_eszZbw5a+8ggnVWUsL(>C3-Ykzh zXCctwotvLNWlPWY<$(J)S)aL};zh#8>wff<2Rd`k?hxxwzI1&)r)I(FLOWV(&Rc<^ zv~|89pb8B|fpQfvEQFb{c!G8pbF%k-@^b+el$lPxVL*!el4reOCJUKPr#*lKT$B5# zAZ=)MlftR~q%Ex9oq499%9ctIp?(!;c4S~A^VUG^9*zCbTe>Dd8qiz>zg$6)`lz(z zpqcx9r}ZA~y%pBcIf08zFmv4)_80PsA8(YM-@C=S5pa)>tv_Y%-PGt`?;ow1z2L2Q z{etJIOuzzu24jPVYqnw0u?}GQvjBe68kEJO-}5J%$BF9#+q@(gQq}7+^c;&bWJy)-`)AcagZ2GVLt@`wtidVxsQ5?d4jH@+ZxI|kav2g>o zD1fw16q_rz47lH9TOL8ZuboUwUCtqSo${@jLB?>uJUc`aDx6exGVrvsFRI>z2Uu-A z)GsQxYgn5Ud5!z>KZefzpXv9Fr8;8cA%Cdk3h1w z7%i9@>=VbLknB~SQ6b^As%=NnH}~~x$9meSgFzf$?INzA%+y9NWJlW(4AQb0NG+H z{wmA0e&rMuN<(@^$W%;;b#CGa$$GbEn^TWwCz=MR$(%^Yf0p5M)j>Itmvsi|2rVbz z_b`m+TW{rkWbr~W^j*2107L6P|IFD{bn3bj*?sET;M*E;phfbY=J;SMr8a>5{REcJ zD*5WXZHwwr+nOx9|5000p$vOF^`w*YMfkTXv!u4B(3|~5Kt2o=tP*Ih6xm@#(hLyT zB;C%M&cNsfgX=T}XXT>2{sv$ZY#R-O2X6Y!+p~VuP6y}6uB#!y|mnIQMuwF27+KgR>rT4A3S70nl3r5Av;(Rt13bub%y#| z?L^P~oM=HXjEm(lNZjNzt#e6y&X$ar1&f)ENv4e+S0_(BHem@-HetM3ZzKBXE}%VG z;Psxp)=Dexq{&g&!jiY#LF=pX>1z$~WW-8R89+%}{fU~P9%}!3x-Y4n>>yZKNg$hQ zP(=StM*R^j8Ao|M##sl8N3Sg=i!2Y0BZnS&BuIHp>`RJGai9V&!ZpTYm4t59!V_Iu zjd8VF*-I1dEGDr*jH1tf=`|80Ih zUZq|{yRMHoc}262xnr-jK97IRinf#joQNC=oGc~9qG#b6Kk5>~<7SZ_p{y`!O~3eX zeZfLW`k;a7cq_Arl_ak)v-JU!vKu&KKtKCP>&s4kEFhcY?|ax?)hwXIp3=_Um1%hS z7oFTs8RzII?=^o%Mro?(&J?QcN&WqwO%$~y|Nc-AXG>{Z5Cm_P@%D3-tnDM^ai{2y z;FJ@v$*2w2qqV~Bv)EB7Tgel_`#fwEvkrH2%^EE1n&li@R z`P1JLE%y`^+_xu|GXCk^@T7#p&7cUf0D**y4QH}{n8p~{yB_@o#Tn~T7o${~lH?b8 z9s%U-wofvF?}!Pj7P2iGT*bm$&}{`0cU{b6(wk}@Y}e5n*r60zOsG;X zFQ}`QuK%)p6Hn-@C2|+l)bSQ57Wx;_{$=;VyPsKBO8MD1u6}}n=Yjcc{)r)~k!E__ z&lMAjj^BbaWS7axXu0}iY3TNdVEjc~i--g&KHb5~rLfvv&E!p;+@IfWGQ5Kct2VMV zZKj2VP5qH{Z(+d;6^9;5>Qh010j1HT)3lp>U#-i!Bn$UM?>F1Cu0QgRULy9*9;HZe zVZK0`oPjL)+Ff2=Qy*Hl{YbZ=L)r(Qb_B92dUli#Z}*;_wwzrktlhT|j~o+^(EBFz zk#XQXR72!&`IKhM6Z7)XeTp9VumPTNaEC?|7D@Z=`?7TRXAkYq$}rF#iMWrvEV;fv)yY_cSF+Ng*d1y6ga8j8tJjPcaLL=V~6aYt1%`-=v zY1GxL^+!)}eF+gKzw-dp+56fV*htOn0{61O1`L{A>FkY z6@ESPN%c*``UmpZ==%~3Nr~@{wH-5uYRM;;wVXgEyb~}Jr#6U{q#Nya-jtYAKH}FN z@0Z^u0YdKv>GDhbtqQbF@w~jsdZJ3Bl<@TjEG9|%%`Qpxm3nJCJwff zeyB1LVvb9HiQLj62SN%$<@#|^eIlm^debb_v+fQtUH6+}A+RF7|BQiOZk6Gq;;$+a zys5zk4OIK{CpoUFLbK7&w){Vtp~&#vZpN;eaB6{cRa(^XCE#C;)XlLwcyg6{6w}HO zC@2)@zK=$0X});$B5hNuO?WVR)WEO)JI=MyghddN+vb155D>P0p}Em#pQe^0&#ju; zndzM1*z?T`%mMp6+hb@7e{!L=468qJjt`llUcK}=BVOBn$V7R;4{>_Lj zeY3gWe>O+R4br#l_r_i3V=$A8@jT>OPpxeJqvL7LsH2iiro#Agor>DR-YkO}sxYZI zLx0L!dd=C(p5o=*a*1juo)JRxMaJL46JAy5r;P5{z`0e!#?MM}sA$p^T6)xz)T7QJ zYyTSN35Z$06i>UV&ZE3i*3n$hHp!o2Ey^RHE=Kc^{|5ricKS!9B#HgeQ_bQX_=Wb;^@YtctduaOz_SJ((nU9-&f1+ zg0v9@t+`wY_jiyhDAwrQ;5DV}3Xwpiw`YmR&WTu^HOciAE-DfoA+X{i2rHc+OjO*6 ziEOQFU>Vssj(ms;xyhTR+$#h%!1c{wDxY32g8AP^MtN1k$V-2}eu`p0+`U2PUL8%B zW9Nt4xrX`Gx%U}qs@p7dKen_*Kec~9D{co9Y9}`!3;h+Vt(fG0mu*gjCMmV#KWjLC zD@%Cu$Gt>gEUWffmqHOEH>ZOY9zbj*`flEb-sjCaHsBRj&-L|A8~2SBH{sDD_G!)A zeGhLQOcZ#LN_jcV#aSY9D^tnUou!}acMMCY z@5kFQFVy7Z;<0-pF8}gT@!v~eOW*+dzABiK z@TGfxx8MJzERCkGv zD9hN-g1`PP8DN#q>nFI?F?>w=>nvmgB5$}5NXUC4K&>Z-g-JkAUJ6d%vY65!k^{e) z0hA53DKuy_(^D#;KPhqfBI#zIyrJ&iCZ9g=T%d)Qvq;QPwK&pAF6QeK>3_iM@l(z( zf9O198}wkIY<9%IkxGx&0?(Pl3RT7mSdSS5AYV-Mcsz^F8rae~@_3R1QhX~?DpeQ> zj7=ujVpgaCX9rHz)=r%cyHaCz^`Tr zhCGeIB}WS`PWAgGM(V$7tQ!l8SY^#^`*~`B`$px-IbVPTzVv3D47MVOUgEFq?hvRRT#jzueP zOr+|ppsTEbmqPU#x8c3n3{6=dv#4IWLiG>5t!ZlV^?T(Y$%qm$L&#WWCP|`j_=?{# ziAK2+w|g$Mt9@b@%UbzC{X8;mF+^|QBx|T!2N%w|hwd(g)KVHsSNx@KkN4%8Uqed_ zxAq{>4dsC~t!C_$y zs=D}KULnzYB8S{6&|!f-n1%IICg<~<$KZ_08q0`-0Ck2;e_rfBtx&eCT?zi11S+3W z`av!ryuT&q^~w$lzm+pZ%XSqP_Vh(+!T_!_bgzp98k$oX zsmY`U+~$Ele^CS8Dvne+Gzosf3av5^v2iQ4q)J>$O}JlQi3FE%^r}C$Lps+uc=1a>a*r@Ke7WJ&e7%)*@|c%e>kI;dnsqT@n%U~I=19jq`_wRP3HIa)_F=nb51 z`)P!*q6{*0EcbggW=kmu=- zSEY|)-%#D8PpF|Q1u*8}CEv;P2@AH-WIn>1@h_LHb-fbVYs6Gu+TD7#fr#efUSi9C zSnsNJMABa9Ss^QQiEIH4a12?Gn4ThX7#;xEl=2@TJN?=R`nwop8J0E%1I&{;D(quD z+2eFdc^?Ow74~pVw)~#QjRtH5Lyv$9NX!>#40O6Fo$pyZDHS_u$Z(>c%(L z9<>~O$~z~#^}0s>=tXTN3G&%lJzBbtHvFaurZas=8c-knE$(YS4=; z)qp`b!sWO!){DPTf}*$^#Gx@BXjGTgVqry@u>7#P zfDuDA$`t5{AJ(iFC}!SvFzqGZ7j^={9q^IT_sS<}zl#^M>1EFqs;Jt%Bet80OFVz( z45nMK+qG4ielZ+hB7~-NPD|>!1uv`BM824i_>UWyk)groB`(A-W+C$^0Qb!miwO=4 zmWS@ zzXvn~lxCae<-bLq93KCb5Vr4H5Vi{7WA#MY()mUdP7YMbw3j{^I$i+NqZ80V7~>nt z9s&YS)bh2)j1olWhRaVmj){Igaowey%AJ_E<3S(*FK}`|k!1q7*P-S4Ih*FAZZYIR z!~$lQIR!)+=jBYQ)32-$cKXu))=5w{R?(5bjTNN(HYP>;ymMeFgSfRvuOufZbO;_% z$NJHR9~Z!2wj@SU(Jl?*V>35Y{^RWNP~_1_<(9uwkB>@w3Ab#2W&fCoA&>MY%>%Ev zV_E;zP}?^|At>EjR&sq<6oaEQ6%y|C>nKN6U~y+HoRbgd6!cP!-$c+H6;rKP)G{Y1>*68P%InJR!pA5+; z=mE$)uq6L+>fhWSeGaPqU5-jvCu zoLm>wHoPq!>UHfuLyjDc6sa7O!EP{XmWDgGi>BQRjYUF?g$m+*Iy_b*Xw6qnG(s^} zE{e&XKy2_w%a+oDwWJ%b#3m-2oGt@zSXKR;eHq`omQoobv=t!Gw{QAF$4eNIHh1ai z7V^*gv$L0KDDA8gV>;VjU9*ms{BZlUNW0S_?vj}=W_D0JoYPnKd>I`Fx!c(XyP6%} zASLR#ejfL)q>Jq|6xVg=C09gC%R5RCd(XqrC39rjJ+P2BoBRh39I*TC|1J}D_eTrI z^XlkP^rFz6^H5=UhTALYUv^bPQc(t8p4I%d&ZRrhas3@_m(LXK#v}Ajd4fGODkZr* z;FRN*I!wNC;hBxa%Siv#^*k7v58r(PB`C6tJqZX1atGKgNZJP4Y3k%4kJ+4#zQnkE zAFBo8Z2kr!7xfk*#Z&GG=f=@Np6KlAY~n-|VeIhfP%AAm|OYor$r)8`Ql`B=( z7%zt~;pxgNu)#5``qmETfi6>NSER?5L@W9ro{a@dcZs5@dzZ3@s1krw{~P#qSlz}d zUQ_O5&)YzYkw^$NYdsN+fe%^t4kU{iAfb$C4*AZ9h90`R35q%=u-DPg|5>?^z+@hbW`#8 z`pcIM>3z_h(#xe^WRO`V)DAPDv>f(aIo*(BhD+x|Bad;jFQ^{uTd7)tB`_RD88Rx~ z-Aw5lb%H3g1V#`D+`JE1A9D^Dr6m@(Xv@yRRT3T1P zl9H<9KemLIX&4n@x8xT3&)rUgyMeBq16P)xm``LfVxm4q;t9C-QdW+J2Q7LgSCt~! zj^+|NNz_lNz_b+@AE=Dki5aDcdW^z%%4Z8)&oJYt_G{mfW68^ZGpisRbOGrm+l(dq z5}a3Vq}~-XVnbCXm}@P8ZRh}&FAb<%@P_ZWZnN4cq?oSf;ETiE@tM$tUu_R#kM=hI zpwn4hxk{!Vbe||RT()yydX~32b()AbL0NN}vS!#h`*U{cEla=3wAbK~V<6qyX3H$Y z1|C{(0jcA@7Hk+HaJB6amify!b zL%!U9nSk=vMwhvjh5XE^2WW?UkzUmE>D2icSLe{Q12TBa1Fyh7WYU|wS^TeuKmCSm zdp&k1w8}q@Uhlf*1f|p(F=fARS0zuN)td4=;Q@N4#}EcyV7On$k9{N$CYJAODPqtn zhSj+o&SUg%8j(HQkr`%@07rlSB4668c9*k0ZqNLktGKG{>UMiYk087wH~6R4X=^yh z*~C2#3e$BC#J_fnC0_7zr?u~Ma1&a4$0m$H+R3My<*PTz8`ZZ`npjIfY5D4rH6dEB z<8%fiuB^m|Gc%b}iiE{)V|<;Elr9MbuvQ?&K3Aj7eKzEK_sIsea}i>7x$9y)JT1`R3?`O~ku25kdk%>h-u4X1aV)l=5F z7jtwjZiHCAp@m-B_gn-j4JAw1)8^=&QdDjqU$WQhl7jkcXij@p^MUDQ;;+8F8`iFy zk5lEY>z-ASH|tP8T}1G~s-5$o)8VCjbwNS$X5vQW!7{83)e4UHc*gCzLA>7$z5Dh` zQ;Gz}T$cOom8H6t|M2eEULm7Zw^78G$LJ9igpJV53hGKrYHfyDDinz|wn9m=#Z~28 zs*2dEH^t9pEhhuaOUIdsn+sj{xG`7;)b>$I*}~Q@dgxP_pEyDsjVci!LHLzaoKX)8 z-?*vIQ8{V{;=W)5sH);hK4!ppBwI89pl#`Hba(DJBdBNQ?F@6~qO^-~Z+)fWHuwYMPYdR`JjrbGytEc76(Fe^Ec^=ODALeQDuk5KmsBMp@>V+x0rcRjGR;;tf zZ=NmNdn>dr(I1(?Bb37sCvXh@PIbR?;nRhcXKHCUmhJ8N$;|zQ)NQ3=?|9P{Qq-q0 zt3L&vO~bdN8-rxokb|vd5V?e#jp8zn@CQ$(k=St?mQkFB@!Ztz%w)vYDL`Dvk(i2p$=cwf8R7yT#9sJ zij`%PJ_g%_K0I+;=+t=3Q}jVP5FEohANTgyL*m|W`;NP5T21C>pO=og8A0|hF{wbE ztpWj=o`;>c8VR+^+ALP4z@|WWQmFjq@mgj>q8jZ?_cX^4Cb(5BkBz_n<&?$KiWKpG zQrl51dq#SUSBe*AXk1e{x-yT7wJYL!F7EaUs%rEDLzAm}tr>^gb{4{v&XuwZ;Uqk) zK!lUJ*wC2*I|oEO4(1bR&Dmq#zDhG-?TA^^g)8})e-F4KyfC0fDjU}ob;mi2k&~Pt@*#GWmF7B zz|{&4bM44l;(K7e5?0nq8=^1W+Sc9NP$hCJAy!rv1#a0KW`6!a$yFRW!IrfHt^qGG zI#^uXDetp`#E1o@F~8<1GtXGDcb>UUarH~_0ZZMKdKm-9+9dK9fk3Y2vTqzE8COTO z@|QlJwN7nJ1&_J7`T~OAsjC|y5bZ-x6Ur(9jEG_gzi5(?)2(vSL=dVvzNi%iu&sml zG3@hfn+vfQ)j+ycOJvvWUg)s~gm_R=v2dHU^=t;iJF`#a*`pgu2jM0(%h2L#Rdbwd ztHL%tG3MPb$B;`qFC=0ck26Aqi&m2t_X*nEN7~4&g)exytp}>Fxpo-_FzuC?c*k>4 zDdaJ23#dVQhm<8Z`1ju!+PUXG;%EF*TtV33zNOTZjr4i{dDg5Lw`s9!doW{$D1(v6 zR13n})uB+C#bs1*7V^0@8DjT{aO*O)yhS0%dlgE`C-02x~OZ}sYbx@ zPzz`!?{rO-dmdl{16J&b{`>VTqh;T_7+mn*56@zjQ@#{Q>2KVtkK(f*sS-jxO@!i_ z)XsopJPn`>^vjq?+{pFbQ)-_y+0rNl1hPPWztcC3x>B&8=;I+ zT1;|tPrFhLMfCnSZU|c>Pw$!Y^{Iz`i5~3Oh!#>`d_7zU4eDE0_6z({C)u!JXBU*Z z#S~19lzDib70`n1E+k5}hAx?Z_(D#RWz(I_Imad5NPJV|YU+BOO_tkl920f5an<5_ zQ{A$Shbdi8$!tN;O>vah`RBGmM3of$Ul*r(gBQ z$tf>v%E`fM65z!-zoh}CWkxC=e#v~wEnp^VGPDVGM17F2dkV&nR>bSsHriQoGg&PWx z%W@VOTG%^AlX1pK-)D%$fM~}bt%x92h9XuU%rao%-=0cuj1!4|>zBaeR{G;MStTep zx3U2A&qesv_qi0PJs*kFIzE?JJLvaa2G%C%CzusR2%PToy>)tJNM4V=;8w2wkCW#4 zI-D~DbSjQFcGo1`cxNELm1S#L zL+D5O)OSzrCqUGavs<>E6F0pwzJKhM#X`NmtA>dMR>qU-#DjkJXQ-ooSo35zK{*_m zl~s>})EQE{YO!yHY~0sw&K7<*mko#dw zO5>i;zw=pLGc)>y+|=9oGNzVFFn=49@c`2+0AQJJF zj_Ek0O4-l_)hwNi^%{NfA^Wk0%cPS5cgs72`E9va$u$E9gPi>^K#iQnj+3u0ujnX4 zROvHtPBzpDg!|fQcRoBv2tgp+$`oNA6&EaH^fG==vW~erIB7!uYzc#d;b$Uu-?8Ic zQrX;8xSJ&&6O}0q(k|EW-)mu9xTp0w#!AN4b~ia%gn+p+hX@h=XIHl`-3)^H(=%6} zyru`UB2@?$?_zAfH#GiPI&E|WKogR%mBTxCIsd&5Sxay(QiK$6+f0|hFG6NI=Yocc z6cj3Uc|&In56r8>6Zj6k%MaD|?#&F<5stn}Ho+xZ6d7}P8ucu2_rKy6WkVne!cu05 zzl@(qgIRBYB;|PIwDT%N=fJBN*6%WEiYEK>hkxfIpj-GdPJQZ5;lOFGT;^gdP`?n5 zr_;4q$p3S&jNz_tiFMXp@U1ri-1^Tj&WBGY7L)P8L4M{i;P`2y>|UrsiWIXVkF?e5 zss8!wLifV#Dx~}Q{OjB8d;(9+5Nvi1DbHeUe&_#M&PCnx^^_f~AO|j)8-KN{!_=Aw zJD>yOO(EuC#;aAE1d(|kj+DYy%2}Ep+dQ)e}iT!AWp1EIn8pMm}P9!A69(VvJkD_ca>d&v5u0h#J&J@Ippsr;7iw_>z@av44k>JkWV@TF>B~MtP^ftq zkv(Cv|8&0P3o_4YKRULcZ_Xu^RFuxEplxMRCYrx*w&%lKpyVLO&QmL%B>kyLDI~)K z>jK9W^ggm*u1q7d#L85${K}A9_3()onQrQUUKhns@}L%d!den^Msyuo}B>kcke@{ zk*rEnN3y0P_due_KdvYtR0{uW81l+7ukM=@F3U@rg4nK=M8nsh8P;~M3kg7mLP@TM zFcBnoONL9zW!lVa`aJx8NCG96{{ZypW=Y75<;ZIh;|WpVWt^GsRCR#u?Pq2^6GdmB zV|mR#6;TBK=9`M<3QexuVDn2ia=(0ZOX?zfv0TTqNQqy6@b-h#08rwF zKV~0KA{c@o{1fay^XGr@SM54=Wy<<7fo3h{j-KcLeR=+Qu=*W{<1st_*6W&ZB+p~1 zoMuQctDvFfdca-o4QHh(<0AW4E6=C&ow>6~gk;HWp3vNfnn&jklS_lm34~@zKxuTU zsKjGd$>ecHb+&v~z0!p+dT?D`;bg(O-XZhz=ZJttC=f31#QQ%$&d>7gwi(@C7=e`Y zMGLCiSrr*J2z3y9@tnAwyv|ft*d<>qt?_-t{zqtS9V?#;Z!eo9gM=r2=ri6B2L}h) zF83Bnf7N|jM4m|Img)DRbs#DW_{h_mFo@)uTWx9Ib+OTS@<^(KH_rc);kj$LdagB6 zH_JNHYqi_?ZE^Zpi%^||E50j50c&be|KQwp0!bDLbG`+VzjF7tPwyj=Q;#1UHAsS2 zla<~Nme{l@+j7^pn)FNd_l5p?%_`vqgz8QW(3BnuE~&dnGgE=U$sdP%1X*iG>u_V4 zM3FYTWABd1*+Hsfeml6XZ+ROi^p*3&`3Ql4dGUc*XLcq^)XZyYU4JTte zjLISDH1X%>8wM}kDxw6Cc5s*p9mPY!`{k|HFGDq|YQ`W07K78E`@^=#HrTbd=P?v3 z#U`cT8O;*Oo^YrA>GO=DuT1CzeNe`UQTxer!?ml{AOswFotKl}9c*#_i@&ubD--0j zD0A6L%Cbo`QQu8f5bphWO4$Z#Tz}SQo_#=X@$Uzr1j*PhzFlix52%1X2&}Mo{JW^^ zUI;a{&cIqBrduDGH9pblQsLvS_DZ9Gm~G|V_X&H{*SB=P#k8ECr1J2*ZnHO=BPy%% zfvoo<4WvgxySufu#P`7+S!lnZ?TAvrV}@?WwUJGSO}^&(mX{I6>TlN1S)Ph4HQ))c z+OU7d`_z0&g!^6HN~gD z$b{_9HpxpH-4G;6dJE)|kkgpp`2~=aiMp^E$WB~-0u0+&DB9NBN zWi^fq@wsW8n?3H&86rCTL7)yJ3pd@RtoL!IgxE)tOT+K!tn&q#0>(D-=d5N{THO_2Z+i}aDD z1RA~{m33f08(rn-{%rkTM(DfCX12954n7H-Ok4Sp?9SHTbY-xX|z8NU^QJMZx*>$@H*jr z=BSV&49ngM*(c?`zH(^iw=#%JF6Y5z+En}$y=~ZatohkO*NW1hP8VQYn%|f_hI|%SamKPhkC3lmPY2vjktHsWxJ%o?ZVvOv25s>gNASp=9Kw) zEMbpX5d3i(h;4+)hZ?>4@Q#xYQkk-4C3u9?7CW*kgW&T$=#p>%G(Gc;#d#slV=}xBHsWwR`YqULlL|jmx!CU2Fp#%uNl?IlYl5 zwdPtibj*!wx9gIqXxG#heBc-M)!#GJ1+3!tD2K5s*IJn{!6F#dh%c&R_z1@AJ+aRZ^jw_BP$q<;caypk|MI$WG=dZ_)3&l@ zW14xdf3&h#xVomhG-^3G0Fnr;0h<0=N4s=I5;EmGSC(*waWfXtIgL&)GF`UI7)(&M z#0w=Q<>F!2dB>uDcs7IhKUGgPQbc(oT)j|w_)gxZKZ|7dQH6L z4PLBFZr{3Zste9vs)}^N&M!f?k?hwN>qkk<)Ns+#*b*(5)E!o!E)AgSJ;leYDKG8t zqFf3V5X(I6*kVTP_qt^l+jXB{MlW|s7 z8EeOpJ0F_vqvEH;cG#8QILr`Y3>*{I0)DoZJ`~I#w-0X1a zi+(&*&9m+(;lenvWzks&)wo#UWvp*EK-Zj;bmx06TPKfMc$#xnHQyB|UZ58G@};xV zVG7#iYl*D57PDN1`r1^`6i80nzT|-+|N3jx&tLEq9X_&1Jb$tV$1^K!>01jb+O1&; z{~@Elz(b!-Xcg+fw&8fdBhLz-m-jV*b7P^(G&tx*GX~G>r+(aQ!8k}+oJf>{G{Qa& zn3pB@RyAyRJ+~VVV%!-FMU403z1%XiUNm;RjC-OuC=d2PB!pEC41HGT3Cy~3qLT&< z^{Y(|?ZV*A`37bVACfE5$nuQuJR?#`AEi`uYOLP=ZVN!FD-CqJW$UVabEhu_+{(Rp z>9R38ym@5%W>Ybor4;k%fcJCXZ>LX{rUejJGn?y_~%39%+%FT-_Fe>A=kub z{to%G4<8og^KEVL-25G4I%72(ndo?qT&O=bm#2YzI#@2#Yv@E|f&*{=55S)~rPwni z1&6OmIP`&t2Zj&sIiKC-OJ8N3F1r)as|dMtzR)0E%5mT7FZ{}dGf z_TKIm3FY`?K6(7HiGeC!}M8!92L2NB^;;fb2V+V zVD(Cb>FYXfZxZY-=V=te&!b3B$d^ey-U*afV^U;(f6xp@ zd1dzT(25%mI#O!NIUGpP6TbR$_H?HI2}dfq3pZx^kq0<-fsER|E*<5Qb5rc|cJlP) zUYQ@E6~20Oo@((sXq}QZlvKKvsY@?Lk7f0kHpB=fi%l~>3FynB%KnuRDN@_+Oe3et zvAaG`I0j~hZ4567Ef1QS=((FDA*18XH+1tzU@uC1Lfg|LRdMF?wrY{xf2BteM>pNF z71(im!Wqbjd%6Due7I|RqQjT=JKM7zT*PoIsWocTeFxk)h~1HmxAMfb3A;MOAFXUdG?RmlMIjh( z%mN9PT%(b*(EkH$%%n;xlz0n(G+37VZ|lt+9lS~(;%gnQyrlpzrzHH;h*HdK>nS^P zJ{u_}g|<*x|1-avg%D2!zejyw!ioH}dkFxZwkB?Wm>f!> z;;qxXm$N#_W7hkFFMnN;C$q@i!OM}t-6`0v`mQByjy2Bm2m8(vQwjfGefeugWk_X& z=d;Mo++k>(?SOruA`I$_-i;+-vQ64^-)2n@>V%JRX!WoIr(zeIvTc8rFMnq9uJ_foKa1!*u5`~x?W}|@?7Y@oV5SE>{3>Jg zB4y@M#5y*8f4fI+(Es^bYvHRL4c&e^I4p+S;C6;jLwTq zv-9)o+SyJn1!+69$V<#t^y&0sU}FHS(%;B#jvN9p1-QFC5bf0~;oKTV4$?{OE7bC) zkvW81-)oMCX9zBCnmTwnO560W0saTr4>uDYhU8GNYzRh;vVjOnF7r1i=Ip8J35uyQ zw8l!-&SFL4#YtN{IrhdDIU!VI!jQK%SF0_}h;x_CR9z=WH~KQdxSdJ0B%$iuO?|@b z5JnGfUrFT{=mN{>`xx@a?$1nThU0n|`l$lRr8r+v4*lG4PKcPRRH`mcYZEVUty28_ zG_T$@wbS*;c+}eiFDW#>dS7|hu|jZ zql3X@>4u3kx%bfEn-%(6H=V9$L`uFuyR`9Z)UeF=!=Mmm2QkIzmRrd^$jK^Iv)WFF zlEg-8upH&mTfKcA#9%;iSK63Mm;A@E(*?j)oBzUF2A@OIO&yBmzzq<%^vAoF4~gU3 zTEuN9SYk=#NS=)hbBm}Qbe7n+xN$B3o^E^)AxJM`>agf z7P`sF-7}jm@ZRt@6eG8Oo^9KDce*kMA<#YlkvE33H<(Tj4>Bw)D%N1P8l12 zfoCJR)XeWcvrty0XzY8(Qb9S+c8i9P#y@oHn^qA6$Jeq>=cAa>uOls)?tM4otIbbm zafsAD+dpmb;4WcBB74K(l4<=DQIR!asO8hn1|jaw_YWKjpecAh$f3B!B8?)-KK52E z79n6D$zXVuPT;Nk_qHcX22|0==<}&EL9kO|BvE9eIh>Or3(};Pf6`ZFpNMIzwmO#Q zz*sNI^EK)Q8DjysM8~S(3SRw1`_zqbG4u4-Pia*Qfy;Uv=2=dB)-w7SX?iQ`z+l0i zgB_F|**`mehU&e|PZCTN@Wz$x$!v<)+U*-4kKPFd`?$KkpG4CNYmJgV(s#g+zi};R zBZ6r|fll0mIapcJj+_<*a7FH_QbW#gYV=$>ElOZ#Uh~u{nlk(fMYsv_oKyu9l!Y8% zT|1$kHyvo-qlM+$-|P2u1~Uise(?_au9$LnngxF4?c4e1`WB@U{`k>)X^WAd&m}(A zPhnzCyJ`?Ndp|&e=iSph!T1uM4cq8>Xr1TSD95(Rn2NJMFKPA>9M+hHYnoeM0z2X3=!*({0mRz8#SyLVo z=sl<(gLl50&&(Ju@G^{4dhQRhBWHYeS-is8^FF$ zqoX7tkR_E-xQb&6$AxIMce48OP~tD^$*SfmC-m0}rJDeiZKt`jhpTpWY#yP9wc~}tz=erP!{>2%*MLvX+I6?KY&y3M|%RfY2K)Yj$ zxU;n`P@{VN5`p_+yU|7z_j>(wAK9AsHcdg(;P1k;80Jza_nkct*EP{gL(wSaG#QT6 z#EVZ#upTa0f^VtFKCJ4ySwLRm{{huND!;;U+&ZkhNrbTA8F^rX;wCPbgW}jo zt%r$X{{R!*Jdqg2AwqhB4}QGMpfV zzLNm9bprSG5v11%IH&&r4CDBp4?$n$3*fYc0%W9#0O|-921S9P_jKMVjC%pa9mcYP zwX~%W6XHNR6oCOSa}aDI1nFFl#$Sn%j&lumlNVy=wKmsdP zJt^Y&oHh>*WIu&rzGf#3eVRxS zbsfx!i(b_-s!ws!!r`%a&I!Zb#9IX0N(Hvn$O%T7ZelKAneh|6Ru94-i8v<##Nt^; zBN*NwIF|8vmd`1K6r>df#0j;}Q352?{5`_B&mL)v9u*41aJIvrn#8!;RN7ln_mwvi zOamTs0M{{(z<5jtdjmh+%^%INWKN;W-69j_1 zHxC8XVq8xro0{U|eMCUG5xsF;!(y1=Of=?I;V}ph^R5)jvQ&r@7O*xRX1#yn-@{lA z75GaRjB^r_{wEp9<(C4`&R)P=2@^VkE-NP%&x65!6g*82w}wiahIx4x%K$4a?2(!d zy>2UIY|QlX7{A6&;`nQ`k_kX*R2v}h})&%;=_R|mv@$mYc3T*EJv8+jn6005T{FLadJ zE>Cl(7Zt;kf#WTe2Jp;7ZgVjySB0elec{)&hideHjqwZOoMG-Qhi&4~Z5Vc)X~0kr z-s3K#LD*cH#fW?+u+L6RKb|VLcZ7l;V z%#LD>&n-z%u@It7PtQchyvYY#)YdJ*i7ACv+SD4}4Nyc%Fzr=WdCDvNu;y@26AwSd*s85Ag)(1$g zhvPg`2*NRn<~z-8DqxH^jDVE*95dp~slBXBSBl0joXNwNnddK*+it1IKuEYM^%3@J zr?!1NKZLP|0+-osVfNl3tVR{r3mA8rMZr>0;!<-7AebXTtuc7_e-C387|u}UBcFxF zge7Lg$Z1*y(d{73W)RePcZLh*EaSSt# z;Mi&0N{J1JvmlnDzyf1Xa_ntdGn(*g;Ig~up_ zq7?`>BEvzv{ObAVewljDx20R*P8VBq4}?Z6lAz1b5tIO~Xw(5{I%!D!$xa=trxgAq z2Gq+fDrchanht@#@qZa!(M$)fnaH$FQK)_JcUfGF0A)BRSZ;mjxgE(vprFS_NKx#<10^(o;yab5e zxcFRh5L(TSP7$V@P!0e~T*;7NY5*_>nog9%UB~f1@=mRU3>Ob*x%sxxwG(1QDJmZN z0R(`3HWk(UJ;PM?J<*MQ%mx{vhXyARl=7WPxlx!^;At>)v{#9L8~*?v>yI?**bS%^ zIu-2B(v+m#B~fG2dsbY2DfQvdoZ$<3ASq6ptO1xRG!QOzleKS(Z%AlQZ+{PEs5~*3L%B%u=VExxT_C&_S4rxypQ<%pc-F&w~W-cDmrYWXzF^FLc!?YePhg={G^Lba1nAcj|iMG80_@uJtD;LBOkHz~} z3P?U361g_|aL~mK$#;q!0_FHcr98OhYT~Q7t5>iumA|^cVTuv+bHMfLx1wM{i z65Sk#1okpkLH^dt(^gvC091*yq-qNh~zq;lD4i-e8M$tsS!(;2R&ACGYy7y}Q9 zj!T2`jwwZx)dJfal0J1DS$V`Zr_V9Kx0aU4LnKL5fvG3Ot%=myxZF30bFi4l8s+kz zmYE25+BUTKr5U<|w?HRqipIF^EGHsiw1k9(W#%hFPhF>I>2psOYteB(#A(HH@wj%w z0WD=p8H94mU=Iiq0G&+S#d1^?hcHT3;?zNP4yctK3bNRV1Y2JyHIoaEa}4U?6o4`MMn zUFEjVAT}HUqDyJm5NAmyddyW}-x!`C67dLdwzRrOi!Go?i-LRgHC`H@CtD4~R`xU; zORiy>Sz2?fh-?!gNE*p-&eJhlF)!iH1@|!{m56A{rA13CDmo-Vi)+vwE6?Lsh~i6a ztTQa(T_hz%w~7$ZI)3BMXn1ml8;oJ`t|d<4fdR&|Wn1ZwbP3!IeCvEqCw1?{kKk~p zhoNf_-!D6U9IGna$BY9rA}zIY*Th;*A#S&dLqL)XO#((qyt!>io|S`&VwqzcMjM^W z@I2WnIl@orgE9fXr=?CO#N5QK1xo(_vl8P?$WW35f!L4?D@d)JL|&aND)9WiQ)|Sy z;Vrn>Xp&rTnIcSOfxYKwt=OI^hQ{On05QZGNNr3jn9FA)ZaMDGZF3z-)DaukpJ#}r z>@!8R1Tfo>5&-}=zG6IGN!zBC%|p(%d3hB3ob0UtuUX5y#aD*2$>>?ZV0rm57@m14 zN|Lvw4S;o#?*X8{S=z09WxNty4Ixe?Ir)JO#!)a@k+>HGlQR=sJPrZ8V~*l+GFw4e zf|(`+3(d@*dWn~@3UP$t)A@C{N=GgfBdmNW;}fka;;uZ+*6QDI^O{=I`t%@dP2i~R z2U==zClG+BXAqP&;RGokr6vq4Mz-oVH23h>MzHQZ z&rv`KQ(017KnL`R)Bt-Kt;o+|YZ8|M3Wtd*4!TnWO~z78Obc{2H4%p|GtE~hGz8~% zat?|yeAWUDwbCmaPcp*}1(MrroXAF7smZsOm&UCa*Ig^*w5C{e6*|i)km)uq1kH%v zw+$L`n9d*qA7R$m<)FhkQb~|S&eO24_|lz5HJ6sjY&c#Gx#E&lsS(g?ePGiW;nFf< z9XNK6g~v%U0np{xj+@5S(t8t!VTKT_*l^6qa&x$Li6$my1+=FAnV+{W5r&5wb=9ld zsJLD1Ma1qjyw0>}ZwrPc^c5_*bBOmqC;tE$=rz8zy`j$xG8>Yl-tbg+ErSso>0w!u zhh8%Yot2a~h7;`s0_4rQoe!*OS*^!El9!%sw4{!5d`C8b9dDo!X|3$w+rwf|;YeGe z9n2D3UUCT%Hl0Vpv$ctGVWbo|q_3DzsVV^6Urle+Q*f-U=bCl*0S$ztuu zbnoyqOME(})%lEpu{nX017R8g_Y}%&Q;gw}h+%7WtTF>BP(e8eGY~-6NKRYpun|8xi~iLOee5fx8Qnv!EFw&mB1VbKPJ+UB(`pPpC6$KUWO5eJ<|ND@ zs7V>8NsApeJ^BxS)7)kaZZnKh97ce)3bME?K^toV+D&vZAAy^~FjS(fT4WDqoZdd> zO{R6OcfKd(Qdg8lJqj+quNvJ*gbNL4QK-CLDSw&7JO*Y`+EAGdAu$3kVcgAq3kUc! zhjIeWQt0ppE*F@H16%g(0M>Nyd@dgdiRGgZw1kl|w!qLp-0pO>NA~i$#d!=a8y$>b zB$o=+W6Vj1LDXL4=pbLEZ$}8lDJM7qvH&EUs~csHIJUO*uWr^0E*XP{N^`>UnY&wN z(#KOBG@3&=6tt8jN&L&>^fci;qV^HK_cg}+y6HH1tOo%0&9+01JDc?bcQp_?$FIt? zql01!%UFky8o6vY?jVygQX+3}I`t$VVG)I46RMr$+@z8OU-d}(3fT4moD)e>3t?@4 zO~rtvlLprLj@#EO@>fa3d1JyI!eVgamRndkn*?~~I&V83{p)I37;FG>oSf7MQjuev z>N`fZ=xbWAs>FL%+gtChB*dFqC->>vg}e#owun(NDKnVZ=rrrEaZ!5J&Rp@rF&NeR zS3o(4a!4g2Bq$#C_*U#D8LT?jb%z^*l6*#D@HW53x|zQ&5tyO3Z76K!GpGVAHQ!3- zxU9H?C1q|YP5@N~Vj_JeqV;QJA#G&N*iyeRXT>%rp^ku$oYQ$OE%L)TOOB*m0FWl+ z8$|r{6#PB~#uBxxr83zC0a2dD0();hb)le)CKaZ`psbQbrDPEoJ4|{-W$C!dh~XcU zB{>x9LPSs;RLi4Lo&g#l}O$Y(I2?F|RD_0G`2ba%$tf4U1EwczF zdhdEH9vd^kr%7;-WD-&m1*fp`5^Y;?&YvGKCG)eL&jrtxcvmyh)Wj z+i=c7%q@hiIZ(LjHQ%h-v9*U86y_bIIVzc%26ghkTIk{yylFh?E#1#%**e7Uq|vJb zm5_@zTqL-x+JUJ*dsS<3gAIlaG74L5aO9MmmkFJB*3`^II_XJhzWag+N^$_9x0vfl zTH7uOE+Mesx@{wK8jZfSzX+hG)|4dy5L_gK8t*%S7d1ARH$vG9Mj`T0w#H!Cl1|A3 z*VZT&g{J~QXaR_jUQm%SIe^>wtp#nfhAs$m65v3PAPMYswISpwX+mBuHe;5QWs@6- z@7A+hj4a`@JIO#H3j`>}TW&A5x2}O?v57+Q4k_331qR_N$|5Ju)orMUmgY=|K@sB; zF9dmtr?RrJw(|$c9HlIOPjT3T{Oe6Ig-0MT&YYa=s0Fwp6 zPe5iW|xZPptjmBNdURau^Ylh(sk)qDzO&(&M5#A zlsrAy0!D)4L-%^loI(;yj)GR)Ws&c$Jm;^%nz5O*EIe3kw!jPA^|!1FJR>r&w_yZ$ zfiOaZ&Bogr(-iaEq?7^!fKQC-Ox%9;v91*BSSIm&#K<$9wB|l50p(&R%BU?UPJUtn z+xM1%Ij^a=eX6lIwc?QbN|xFH0@4H-9ZvgHX@|ARP8twECgiyV1OaeVE^8VZWh@m+ zb%eA4i8?Az#x~lO&LK-%dHi;~K(*t!ohXrsO4&p-mloiVRwF3$+}er7a+dcoYqLr) zrD{Zt4`1S+D&+vsLhfXdd9VAmRUkVkl=`R0RdOE zZzJs9tiZI(jgCrHKGQJ>Gq-|!cH9}J;#dg8B^kqjkWvBFa|9XePNtg5RO_gBGFDB} z3;+(++g)xc%Euviv_8_ZUQ|!&8}>Ky*0WiNwWk7GFSdoEM}U%TF*dk>bhTwU!6p#$aKSb^cL4|F13>nh|h>@I8+eZf=b7_M&6s&w9HE` z94k%p(%^|mS&*67cK-ksiEQ#*bC?N6Qk2MmtL-`)$EdEW%^%B>30tmM%5@sZ`c`~H z%Pj|rL}*vgMSzi@no68!!{L{VNK1%IvLpu61Wlk$um{G7E11+M5QG~h2?R~ddUg2G zeqgVZ%Ou;~Tx9_Dow{C}+lfV8Ss62CD@VSYTpz5~#vS=& zvhHL#k!DvGl&tJd){Atcy2y7IoraZkh${yn8WS5&N`4y%q~e-bK>*1aR1Y(`ooy8L zt*kx_Bq1f$8BsH6I)A+?f*DxDfbx>2`DrRl9Hs^4cN4W|TKP(KOOzu;8296^P4ump zmP^i-5pu9fM1v~^ZRNLG&B+N;4~2Qvu>wq3c0W$^hys>YqTx_lm2yvgAjQwtff#i% zl7;(4%p{{z7Jz&H)a2pO%tKcTf~5F$n+TgyTm&p63zA|4fP4AgsV6$LFgcB(pin_f z6Oc})yieR#cesXTol2xOBq_yykW73`SnpP~xb730Tgjcx2sSaH^4cpq*kuISWv3Hy zX}Kg%ap%63Q8Wv9Hn5bi3`1#?AvAea%-bvC?qu8cL8Rtb44JiLo>qP;o;<}{_OuNdnMsUgsPmC8>7lHyITBK! zwWN~~Zp4lM0BU2e9!UuVEoSQi0*9Yj*QF(%TfQZLfV~TLmHz-A;;tr?tV_Jrs0BEI zKK`cq$9ksPN)}xOC?rgu6wS$=r@wlNKnhw!fZ)m$ztg=%rChMJc-J~^^oj9WAv6Aqhz#5P}86f_LfLrBhgSINZ4c22+wW@BGo@91f+n+X>2;lQEc` zKKGL{a_P}0KD8lYGmVwImN1dtM= zGpQqU6=`TzH4L_~XEPlL_|hJDMnwYU=EO{N?OCxe6s1WE3q%3qu=Nz&GQ`0kO@Sr| zI!XR3bMhHE+$S(1d|AW_r!umRSXYF|xF$e4{OO1})1V#SUO%pYc)L(U4ia(swbf6Iq@lh!7;nh>zN=3K>cdF-evC#C08SRf%t!gAm-r zAZ#P)O?xY92vpB~s~}BW5K<(Q8f$IG!m;8Nl~EFR5=>JT@hXW~ z0!99muMSWMQmwZ3tC5s}C|8GB^O|F=sWK0XZwRr!UX=AGC<;Psv!S@4bxA{ONrf!h z1pUocq@*lnCM0S+H}t7gl^B8qkzx(}s#f|RM?gz?5Vpw)g#iceThSpU1OO1Q41#}D z=s*KaMF>ifs`4xX*_{YCx811I%RI*rmkUXeCOjtB@87k4mmi7IrIe|ld1ST@yv(I1 z_vs%RON6B@FehIw-Nh2}Ax;GhfT{>UkPoL(RM9-8 zv6CZV^@#vUAd}a4*m+Wr@>3D0u}VP5sor+=^P^T*SIY|kBIU7Zje*n-lq8fmR8{Q; zO97{+$|#IdKvQsX11KP%csq{WeQGn6YX`w0Ic#!*Nr|www)LhV5OW~`vpGT=x(}(h ztx{Au%SlFPA;XgM+v9oxMs|`iB=bnv`^y^0J$iqdf>P;MEI3eMP;R1nRVjH=mk_jr za7elDdM84f<)mg(1RU!!bknz51#;2t5|EXc@eHI0I{E4-)tD)1UQn!%O2D*O{bOok zLJ-r6NhrwV5QP&lv7NmBlo>}YVPK|o{=+e8>v{t4C1s+Sl%Yy;egnVzp+jnEMW+dF zHH`v>zJp4OLSvMrt;9)$$OFvx{{S>ed9>mh%(Xa-$ygz{DI!Gg_9lWT!)PcbSE3g= zEFfHcH~7&EIn|eFXx; zB!He;oLa`|jK^Spy(qaZh{_bZiAr@FAF)@EsVYucMzDm0rq+hQTt;ayVt42|nu$SjGNiSZPIoR5w20XJeJFX!QdXR)Ns>L=Cu8M0Q3*oZ zLt;u!R|(kYAWiq6wepa^XO#$mGAsoFJ^u9+45q-UTtR_lc=RzR=R~9gO2l}Av#LbEiasFVFce5YYOXaEHw>q5~alLP{xZN{Bujk1(t3Ql4Al8^j{cptq* zGL)2LSOl3mgQu6k)$>MGh$bKbe+VWZAKHnf735F0Ddn3e1DZz17AVyGZLEpcxdKz109>|~z9KcRl+T9K2 zHl{n^4kMUJSOw1!k{})KD%n7pUxCv(gQSuH-=>jjfTd0jTV&j#ZcLrWOK-HA%nNyG zbxT^7wWz4wU?h(H=0)lujLLAjQ>X;yxjn~~Q%h5>Lq|Ji@K2Tde)Vj)r$P!!1Og9rKEWXfBRyoo2qvm@c>RJ9?fS#vot zlq?xgI!t_zZnYAZIixtH7fPUI+qd6ZW5X{swL}Resmm9%owtbEfL8EyDJWWkB&?yr z2%kQNtHR)vq6(~X6Of3L{{YtcdQ}kQu1ta9@C(G~D&>6k+*|TUxdvbzKEk~6kSq^S72_L>#9pAO+c zA@JwAL_i}$x2I|bG@#m;G63WkGQEkxQ7)kDH(`^C%;2^6j_>c5E7LE1P~AD z5G^}xe@a}1qz4Q+eRT(}pAOfcBxRT(20SA;ylPLE?@^}8n-Y^^Ww2u6`)xv(64HRk z7YVeVc61}-_9`Kx&gH2}D~|{w;1Q=!O{fVhrWQcXZgZr93Zz|MJt#_(Cpz0Rc~Y)U zhrWkOBzT-!(0~o%95ARCleyDMtURSC4TM5SR&oU2pgsD~MXM~5MXXa9AoRD^HmbKE z1SGj8zzxOi+x%6L1!FdKq(ZZv=H!}YWjc^uB5e*8MTqU|@u2~nq@=o{8xp${lh4eZ z1yKtnpbC(*88(mvY9o3$Qcwbv3M6GD=sJPdx$>exZWaQ92v?2)AZ%oLRMyY3)Qo}@ z3ri+JP?H-?EyzJAQh7iOxkZkb({7ccmeSe~2tv#NK_)~%pII)ZwN^WGGPFV?0)ZBQJrHdmZC~z$O$p~{`90~T7pn! z`A7olpW>K>=E(p=LRIDIUlXU^<)kTD){r*wC5)&3lVgJGr)+qN;W`v z1f(DUtibQ5U%!=TM5#od1HSM?%*@oZ84#Bfm9TS0(r>hnuUVxjvVewGw89Lf!Y&uw zeeGIQ=m-E#ac=|>9Y1Q!=292n0HhKo;k)j3ibAly3Q1dN0btA!4rO*98`moqwXI+j zgkB7j{_C##l(K+G6EgzGyw^Vxf|o!^ORBUTi0}N@qlX@xj6f+`(gA^K8mqAADFwXA zds1cz0zUr$)ogWR<05qg&Y4rxk21xNwLHpLk;#@0Q zRC54)K|S`aVw6GvB*7jnf%Bv0oRca6XD}ds)fb&~mDolmTr#;>fs~Q~8{c4SN9KS8 z7Xzrerr@g^L15>ToR>#CKLHPMzxrY{{wsWAI_XjLU zoBDlfer0aFVMD~AtDMnqzok4+H(|UJY%Frd@OFXw(enaV2*|MkM3enB_wTQ)R(Q9`znt3Af|Q5`&LHg*2Kz)! zT5&)n-fXs8_fY`)pO3=1!x&_&W-FaGkKi{5s-4!wCM@}1qtdV-kVoEVpO(7DaC}K{RP&92m9iQj0EjSp z47v;JE{36^(e1Ky6C)fcT?v z+*20uT7XZE#U#b|weB?YrYBEBiZXJ@M9KxX@xa*WS`~{^x~MIpm9}8((l??ly5x=T4h19ZnOx7f;og+T}*9T zA+7G>T|yig`D8-8M@5ii1J*u~Sr#O??m?R{SsC)*_|~!|?Cd(EslbfG#I;PB+*22c zTO*j5CS(FU1FZG^tEL*zv>8O@21Zf)`rqS8#7f#N!oUhJ8yXGAdIh|!xj`jl30V*c z>VEX4=SCo*ekHFg0+<`y<4jJbUjVT!k_CjsY25GHfT1~v%90RFAMQrbN8Yq(XsINn z0S7E73q(^IPvyxcGkq7AL;LigdOR|$(zO9O6QJ8&2Wrx$v*yIDM&FrAbfoO0;_S6pCCvlm_67@DS#uV zS}@i?*;!_z;u%{24EhQq#0@E?3m73gV zz~M_WoP}hktU>*S^_{!dP%wF+5(*LsG9(`7sO{xb49Z(W%S6r=?e2PX0^ZSQ?8TX6V9;wQOaTCRR|TtfUTOo*T)D?;o{uy)JSQgljCUz+hOm_ zfy{-hKv9qZ1Fvi8t?Qun85m>*cu)|L1|UYe?K{(Otdv4h*d{=mgK=;tQ+cjlOYw73 zl!XVBpahhdFo?0gsixuZib@7_s$3vsBE}CAh0welpNDwY` z8;xSRPo$+GC{ZMz{-*#=peXtaP~q^+fjJul$SOh16d-(mX{_>Y1+=)lh)Cu(yC}J_ z7X%+${Oa(`^MFbaq)M`e+aeTZ=cvA$R`zhNG{{C&p}7WNtH=5~bt0CgOh+xmLUNL} z$SVGP^saZM&P4MeZJ|LPIg9H8Kfs;#6}t_CDPh5!t!y|xP5t?O1hmbM2e#f(TJ zn6+92$O_!(em<4+JL_xc^UfB4yfZ0%@TtVyHiH61jNfVXHnnICrD;RYG+b{EpaVg( zG61xVbr$ocH0m0|yx>AswKp828k2d8&hbmb;$QsB*mM+ylg(13oBH`zp4V91tWF~c zw$q71TM9|aghGI|lVb*K2c7h-7+hP(L*=I1ac(FDI4l{qgSa!|(hVV=4~XIpH2Tqz zq$ir^I8D2B+DF2fgGwO2*;rvJhEu4wBylk9r261Jbc! z@a`;voxx?3t&iLxMp)TDRTYjZz|3UJMW$`FK*8)T+)9RWSH zu1-ux6~;dKU*!kTY5Zh=OPP&t|w)LlQEHhXT*jhcWx+nhtZExqbWpf#a!f|IXp3%#Msj!#`BF6nR zpE_feyK&Ot?7XxsydfdA+@E_fupo3g*6cq7Qn2r##kVU?Y>gO`wzuhjIi@zXVDRV- zHh>l-DIm(dcmDttPZi--U0TpwSSl?f#G_9-=_GmYR{c54Ny05Eg&}D0fRxGa=dEwS zwTN}asjx8XeC5bSW8d#;=VLKwMh&;z!>PbY5Rof2ot`C(TljL6^4lp2Ns>tuzg_j- zlD5lZUL)|r^0|isFB#p|PKMtZ?Ohx<;3PGPS>{R`1gIx{>`cdcdYi?(zIG|lT1oK4 zBrDfyk8@pdyb@h;v^bdy7Msn+vFBYRpQkI=Us8>wvxLM9t)Q<-H-S2htEGrrPrTc! zB)}2k@C)t*{x!+t948Tgz_!4`E<$s28y@%g?N`HFdQi6lFvTKNwckOh>212zOMaYe znXcy$!J!QPU@1hTN@c*?R;$8w9S(DmNr;*zZ@>{WF>Qt{d3LvEp!;7fT9~6q5l*dF%YuaO?}5 zhMN|5nJY_^bJxzjP6vuG&oDr7dI(GeA|qcqP9u%rICdFl4%!YNHm$BNsO&4BjCb?D zQZS=D1ScYFqCl=$YZathXY&Mh7#-h0xoV?!xO2UQ6B%Ghy>Gg`oqn=|& z5y#=M%<`LUPLi9Il1U`N_*>&#tcrD&lr}OKLZ?DM{i@Kk;nj!C7NyvXflyXP)3N^m zG}bdg4}^x+0JaDFEp7}Zd#-m)J?Azh}e13+2nXb&ZglKGV5~$4=<%Z z^Vp_ZT3Syn3c2vjq={1e%ra&zg%uf*bJ4nvzfkF zf&_PxK|Wn^L&^GW6a-cq344+z+S!Nzy1=Qe~F0Vgf(|ECt7&=GC(nu0u^fhfzM6XVtS@2F zk8~}?@;Q=3E=WHKlcd_F4p$Vzt$2u8$d7p?DG&_ne_ea_tQ<+479D6Um0~%td0|n^ z8WYrij`h^Uq~Zd?f)<9!OKv9Uh?{}s6^&|X>?lyffQHFdwSP19O96*x0xg?PP!3t z;XQj(pTre7Sa741f5Z{{S4; z7n_KED_Y(V*ltP^0oHfv@T;D_(OjjihE)L^$q?H1E8b)8N>ZJ~0-PqrRt2^jLy1x5w{svsv6~6Bn#B90 z;(`HCKq!EL0N9XYl!D zK^TNEtUBO;g-5e0w?if-(`~O#MkP)&kR>Id;VVRd+JC#GdHGe08rO+ijxmvDGLyHE z+`;*pdN4`CB(w^g1yW!@1PMSVr8St$w-(xx!bmoSEzLBKzcEyl42`%Hm6ZE16==80 z+jp*jWt=JqT9R=H8B`7VXIu0-eJh^!AsF?6hDo^05i)g=J@tyn#=K@VTvHASJ~9JA zErN58{YJ!A5BTIENPM^#7X*yF&WFlta`36cp$d6G9M@zkedOuV^@+5(i9*2*h)F6D zHkcaRnYi_>pXoR@F$;O3%V9=*C=N}8i;!+Q0n)mBbAn>09QGy`GtCbc|Q#IS{jTsVi_$k}w6_G9$Upc`JB?KV8ai|3~* zoX%G21AqxW5#a9wx9wdX7P6dYw{2y`B&th+Av2&It2&U{@c;z#&{YQFNZVZxrF5FZ zA9*d+@K%;XDm*>b#|x4vEzxxaU4oqMt)e6a{}?{G6lL#Cjj~u&n-zTGTidh z>T|~1{HwH;7I3a%aIB@Z;s{c+5#sCj7PV&lFTj}m`U9EV!oxO{&ka$9dZZe24Zgbin=l6Q`^a;F)v*hDl?yi2WOCCJW2 zi3VdS*FZ`5&3czOmM8Q0#4?9nV3Jg_By&Ztcq0DxmFIBSMxNsiG?n{U&C3a#iHn|w z!&_IW;0R6^iJ4Jx2~C>Hm1YrP*b(}C^xtiB>L=lRSs2IAMB(Seh4@Nx-p5i$UXlfG z{7J`A#u#Z0Hib0OOKvn93MoJa03bvkG4mD4#PIf7;?20xF`63$> zkHkzPhb0MZhXPA(0H9P3r2P9p+PZUMKQ1>LX}&qfFzz90D-e}F>xzYvdTSC#c@?(; z^IwB;4shk*aLCIk4mfiO0(?Mjb8QCt*QES2!x_Z>C~KVB1ML#uHMIhx6z*Q$9oQVmLnU*KtL@!AC*F{(Y(z`wvXxOZ_&NDCQK%St5*Kpr&( zUJbyJBJvt3aou)Jum6U19n?mpNJ0s%uP z0!8}B{V_f3H{eV&7}r&S;^|`x!`VulW0vid>O5R~O9bcX-}Eo<69 zwY8dt&U5LX8G>&D);+vg$^QTvvg-)u2D2#K^C0i)B!R7I;tO-}aASbChEF2|8-1Qa zN_n$xSRbu-+>ItFI4{C(xb_XaMaQ^_sjy|>$P7&ge(Mm&M6DvvVZ*ibKOxI~=**(1f0ODjY z^B9IOtrjqMb1x_eM$$p?PfG%#ZZxN1xNB_SUTY6HLhFInkX{81kR)>)+d@c-9f&pW zxcB@{KNR_WwQ>-_Q^S%orNWYOr8-1KwE&2@HS@eH&+x2HC9<_I6UbAA(>%0=waY*e z5}*i+Xb9BJbmy&u&b^5kl`jvDN?OCXkvT<(Zo)~tiP}1DYoWw=IZg)!g&E(&w+;+O zU=|maGYxu!l+3~2x=Z{b{{R)jr;70WD*pf{fo--F=@wI<2}v;oxD9}lTx?<-aoixr zI?|eKCzcdQX&MlrskECL>9MYp{ULk{^Be~mi^1^)cpJ_JDLT%!Hz3Zj_F!H^sR41#SNZ(AcPwfKjNVU_rI5yF_k z3`)Um_nmFCou>(a;Z#QI8F!hySCPVTS6f3!2x+#9fugk_9Lli~Zo3PJ)YoMnhWNR2 zlG8=hIfq6quoacCg$|<9I()A|h$wRhiRK~S%%sEEMzG`-N^O|HI`pxMsgu($zhvQ< zYYbX&VpjSs`L1GA%Y5KxD7=)3*3w{itu5moMjgf*N?YYNOFY4w!yA;r9xLBKeJeK! zXAl1X7Uwzj;g$$fjt7E}mh$_c3k69Z2%5&WpKmTbmYr_~^M@}jWdlel9WEzHiJQ|k zjl4e@hG!X_lB`Qh3u+unR0$w^M&$TR-ZT(AtI=@WW-}cOaRsLjfLkLDT4f;w0AzSg z^}kQ0d6Z(6!|@C_(*XgN{{UJeGlXnyaA$iP_N@qQ}j5qT{k z*O`>32#}Ur5OO4o5IJYUWGYf*SA^jlH}X7CClH5H=*qK&a2&2TCQQVU17m+NOviC7 zHU%!>npu5}HPYNa2RYCHI66CN?y!LketaRBxM2x zf^G^)07;r(;oN2;@V6Oh)VRy9vZY}d#bO%)3T(+a!iWe`NdhkyIvB4%hvOK;U|jzI zj&;r*gKWRO#cJFEWTXIg5>y3w&L{Y98N%2LbwE6PN&LcskgdQf zk~}jcM1n?>HR+B$c*DdnyeA>RIC-u!%1WJfQVPPN(K14`9+i(1#ZiXge6_SQw0X`G zaEAqiD9H&kd9WjKGqcyGSCZmb3{Ter=;c1ctyL|)@a@dJGeCvyh{6_vLm95Xr zEyzlNX(bl8ksoniNBqwc<7{H^OkmLd0$UEF5|Wz(;L58ROr1kYKs^EpMURIs{{SnQ=mm7=sriVnnK0nSGSiC0A7m^Rk(rsf^!pa1VV8%p z@fqH1m6u>a6QpZmZ>4&iFX0>(HxlD)zVXJT)QKr72>{HQ9yI_a;yxAWI1k{)nc>_| z55%}~F)J;~-HfSVm3SPq0tL)oMv+}_T>cpO&;I~OL%4UjZG@{Z%D0TfBndqZ*0gz6 zg}#O3oOPE~h+04}=p?KJ!D@E|P3>V`{{V{r0Md*x;H+Zuxy(zU33Q(tLZGyHDf1-W zdI+x`&*02cE~5<7pP0reL^RtfobDuM<)%I2MdQp(sk88nthhWrBa1v#?k&6{jQER~ zl0%A%<;f8}&HlCZzr|cb@P`He0H-)ZgFxaK^-d2M%mj~iY`nG#lj0IVw2@ykz;Jam zye2P*%36Qgw~)?D#`b`ACPk~Nulh*-BY?TZ-p03vXOc@ytHk4uW`NUao5|7!*NtiG zSzbLDqHw&h;8NB>OKp%A2rv!x1W&@4+o)x=;ha%H1Qf3zSV-0hB2Scbtyqu3_?{bv z8QViRfha>$?Un+rRW=Em1t07+$43Xmhl_~A97F|@l9HgLgMTr7YNk|sX+qj*MQLay zYC4AsN?eHm3&;ZdlW8+r@kOUvb05kmf)=KnAqysSgL0V4ZPeE_yi)LPIW45P*zr2p z3d|(vNRK~C72^tu)TdMdAVN=#Kw1gt2kWf z78wXg!nPPlbH*1b3Oiq0!IN)6S#dmI@i$74gb-BYt}>uVE7C{+(LgT0=@30Bc~OhS z#v$^8QlBFm4*K7vR({!U=-fXMP8cjXh*mLRhg7yK;&!sN>pJKnm&JIpF|N4lIB?z^ zs3Z~z0VK>7YEGA>oHkUil@6JNp|rqCf&E8O_cg2j(QV>d#=5LAXdJ6#1#=DZ$7@aX zH|M^TR3u%TUJJi_Kru4reMI>ckM*AA@=!XE%yoLO1vd@z5MdP8o;cIOE`5n z(VR)1_!-7-NTdw*nY` zBq)%iBus$==h~+mDBHz9#qkSq#!IMg`el@a7KED(wA<8Hguc^EE@VK+0SZpJ@`P7Mof z*Dy+G=CXaA$PnK8i;H?zU&|ujlRVc~Cz8M`3Q(Oba{^3JaDT%O@t0P&RB&yb3>660 zGL33|ebIQHGlfH83c|Ej3@15~+(8r8;^gabSRdjlTAWs82OKhGIkwnpJo{I33HV`n zx7_6>5D8FkFqWVRE1O2O==jIrZWaFkAI$vfF!+~5a@&9e-5_^?rt){L zh(k=e+k9Q(hg3OEw9~5gCP=vJw`%8pTl!q#<2YaaF-|`Xi&iHT9CZ!zVS$*aTWRrI z<}X8sY%DJWfZ?lkN+qD{#(ARlDFVcc+f6IlV!sgbaTs=n5m-dFR>MJ{dB7RD8fgTc zy(X|@@tBNG9i$*P%qNtVnn}(_MO*igJu8p)cYfPBj~vJ0%zqZeG}a?HD+x(JAtof= zJrBb5w}<`?L%7w1sT`)ENkcHK^SJ1ABzf1RUkVtfW%c_uh;`%xbfZ%sb<#Y$*JB2T z7<~=k&`&ieTUnDL4TPi}Blf84<+`|4u6FETA^KHb} zp=XLG@cU~|55XfNw&r460c6afSxgxQ2!s3tVN=OgCCrWCf|91rCD#k2{{VPMG7tFa zHHQ#}v4|L#F$-<97%sZi)HfH{8NSu#w)OVuBUU-};?%b>4s-Digc)%_7XcO`017uL zlYX-lyk2HmbKT5X+0qwhHoi zobeQiyqE&pcBoX2b2tYvPAv*{T|nj#Y;UPOBXO{Dpokv{;o02Kyxe>f39SMD+ zSBS-{Coyg)w21u!(mtK(NNEA^q%W4*qyUD*xu6g`9eTxXQV_vmw*gowo>bd7(I5yW zFC)sbvx`qX#V|RzhZG8&Hd?0Ei$t9TX0Ar0t$1{}yhDp%x8i(-1gx$h4TI9hUpviZ zMj2T32TYUWfP5sZm>zp{gIaM7XH)$5P`p8d;gVApG1QA&YP@4kpckADA#Dt)D==aP zzZ2f|8t69OXrT$hwt>llwPn9E(%F3VwO%3c`p{TxFBS<3aj|B>J3#;$oh&Hu;Y_Us z#D>F-W^BD;orpgTdyhIsF~>@e<)%(>@NUSFu4Cm>p={vSg+u)HpyGm7A)-u!)aW36 zX=uSG28E>Nef6aTWD+Fm35$6P($w2{Y(Y{TS1~HI0V?Pfurpg3#J!X9xK~9 z@4Pev~ zhTKxh3XC8(bxz0PW_9$a%Ph9y2`MOO5*tT|4?eMPu~MeYJ6N1ZLyjc?u2gbZ5j)1a zo4}@|GSj%g!-~YXRSI}`tq}o09NJc_I@60^IrSErDM;n4p9JcVJN55a@$VtNTYu2Q zq6>I-&XzWfFH^q4aVreI?qCqeAj?h#hQ`u&J?NaALyJg2<|$CuGeiyUE;foLaOVb+ zw*haKN|H&9py_-Q9lGiq9v+Sly@iiTmQn9xu0T{Q(1WCJ^n!(k2? z%NtBsO}%MFkn5ow#_|INAjwxz@-dmq@?*+A1{Z<{>3gxGj{K zn+P8=Z&#O>jw%G^DmF}$Ht>Pl=X%hLGnkx0)aW6#D*4rxcNvG6`#htNM3`sn$Y4IODJeG$TMQ60Vl|II{j$2PGBu(N7_36EBOHAf*5>&LN zQV?eMm_D%=sO!x6G1mC?a7~+OYe84%1y1;^%=thI*RDmV6Hva%U z)RZiIdXn-^V52Xu?sSIZ31Qy|-G$5U1b+swpBBYkmmQ>qh0;gOtn(=;<^uG0{ z4Tn>{Czhtbgp&|SB#~~QP;;?K7{>XTLxyhRq=I@5y$Pli`$&Rc21#5I8fic3wl9{v zNW-#{;#-iF6u{G3k71C6gsCe4kOP|&*o*5;F_SoP=AOuw!pDWOM8MYFPwXgGmAnc9 zkcRG+6`3>T)+YK|w5>&@0F;He;F(y>9c|aGV@n}inS?e#2S^ZfB>K}?jg30m8CsBn z>?0`VYDew{zZ$YzX9N=X4lI%srA%&0Ko|c2G;Q+v<+PNcy;9y_5JzG!t@_qyoeIwK zn=2rMl(t}vV14XpV5IZVE&65C24Dv z8Y+h}&a0T~vHHNGTMeyfTZjvomdQ7r42${sRite^*(gJ6O3JM(GK8pu@t=pzvz5J> z33WLb@Px9Z$Od-nr`KBAFvAcVAC_^r5MeixbR$miEm|=wC25ATGyw_7wA+{kqggtS zoo1NA&Qv6zrWnjZk_aYXNz*~5T0mHH50RwFQj7v*C%2fbJW14J)?8Xc2rA3~Go_8S zfNw;GQ_3nZTP@}p;6iVq>nG(+NFKsxUxiAr1wkqRUeP;PPg>a48w}1D5aYtqM?z%C z^yn)ifWu-$L|n-2rsjPG8D-2y9mTznOK_M`J6SWKA}dBmUqU3U2n9ruB4CREC-2UM z+*lrwVVO&-C{t?Xq!lV}covF#2n{G%NLsXI7Z%kd>lX*gtqhIk z=9K0rIvGsN+)Q3|rZ$Z7ar8vsHpdo8QjeuU70e>M$Qj)M|D9->K zyMuVt#SjOvE5s>z5}*(YS~(9$K0{GHVAiIP)=p}tI=nzSEd!)!>E%jF#wq-mg_H>g zF;pIr()F0U7P%@(0Cn&i?sv3&VyJG!;#_s4C8p5ZM$)dk%v9c z-eBL*)yjq?Jn;xygT?_Obq8+#wVW(-3YJ6zn1Bqb-G1V_7?cN;;+bo}5^|`Ikdvmd zSXjd#fK&lW_D731awpVzO8%q3^6Dr`Qsh{hVN{Ja~!+77t&}wZ-Nm`Cj zjH@OyxhLZuk>y$!j&0=?Hvt6QB18_O?|KaCT9&Jol4Sn?aOoYip7miU!xT2KnOR@z zoWUUW>*qpQN4`vwY;$iK1N(1UdFK+)g(vdn*~A0;Zxo<{j$)FKR!mIk=0A$0VOWOT zd#NV}t?@f~dNNPlrm>;;RUK=4P3N4greLMX$q-8A* zw8~JYa`;JBLE+y?)_kd7na=XzE)3@T#kzg#K-v(7(HfrJ=oaf}Y@;uY zy8ui$DJB6ROPD{HuK5X~ShUg=M}I(HS$<_26a zL?Fo4C-+WWl!8UU0U-YX zuUeQ0GEwi4fZ>8}V2`hzCBhU@nnH=5f=ye`t?5p05Kd9Gt+$OhkO@EGH&uJirCjxUIow5QH*-0M4^+ zgI~XmXI^3A2RUAmU@uxZZL~=~1%*PSd%gbvYFmp+i9k^R8568l#Fvo7s!0$GLG`Ay zp>Po--W39Rb=IjU$PlFX2C|Vpaak7e%vCUE*){v^RXvRy;Dm{S4#!dJSX@$6xryH( zF%-v8rwLJjjbL7_Oyv?&+!0khAz>NY@vaEaoe!li5a2@mM4MU;{ku`~LqzHbv~TH1 zd0|AtQc1kbM{!jdQA^B7P!@v%$Jezf#g!@u$uMo+nubD>RD-`?pVp=?4p~%$sR)rB z`_;si8Is%&7PlKzqi(}71!PUX&+SsMeJQ00%BWql7T0k<-4wO0Y%R6&$}{boGu^b5Gv4X+tH|lTc>z)6c9ZM904Zrxt8vwkk_sXL zCt*ErW9JnVN|Xu`qU(UzCLw*hkw&gsU^Bf!Yia;= zD7J#Ao%GYbmY|805RsHDf>fjl0&f&$D`ydzSxz92aZUhH9cQl9OG#3IQqmSla4o&W z-?0O!rX@&2i7=!=UT$ZIC`P%Crhc>u<+iCqNlBO?aXC+Ox$oN53x#)7WN>(L4xU^6 zDAa{$l@)>nG)A6eZ{KPKGL=5wQmc;$7AgZ->3wJzg{4YbO3DxZMaHNjPrWKDnae^G zY=d5dYxFnLO$tF-3R1yD9Ldv`2Dj}x)#VMmu;(l`24G-;9S_H935P2~oWi3dg$08- zj)G^*+OG_SvbBWfaoFZW3vCCzEecbIFEkvZt2lQBX;-1Q0-*$?fx@ zOvrK|s4Zv;FoKgN`bTb*##Fx&kU%3bl9DaF{B9|0QBsa|gc~M6GDtBq+)(5~Wp3VX ztw)&$trMnXIx-O2vlvkk8br?Xze}djMpxpM+6FDWrg(5>T~j zl0v7Y_7rJK^JF#)Fr#t)zWdVTw&7bu1+F{+Hn-pJN01h!1T7g%5@3tzG*Z^ml!q1; zumH3s1dhE9pJuJZHkB-q&9s?14_^MYOG41zMK-Xt&Qf+7Tj%H6jcHOyQdZg)(S*nm z8I02IFysu_|I zBI8KB5NFI@godenqN3R#6W{~`A~yS)EURnTG?8&^_shI?Kf$5SCpv)&aIAm{kpc)2 z(y7D*k)Jkskl6;pHTXs7AXteZK?}G-P((-E)Gn*?d4@%W{vI-3es9y761#K`}Bc*=o+MixP_(U=9nlm;s6Nq^y}Jzd1hQvK@eUf=74k^XTR}H z3SYEvMt2hfA(^lQo`QjRhy`m`j2yy2gBr}+e>w_FDH#AlLu6|<&TasmcE3rerJu_! zGj$SAq4KZxNF>4D= zhl&iF?N;h}PAvsl5NF0bU4Vgqxv6ERIv~Nmww+XcL{w~}I@?JR%qDWeI$!5OX-VdQ zq^Om`k0@FJ9d*9770g<5Ay<p2Om4^xym=bc2Qagcq6u73G zT8fn8V0%b1518#hNm8z#63P+}Us-v zwwCj#45@0HjZ0*~gQ)6B+JSDZ3T&Lg#e*<@1ETRI5b1XML6al~PB8HKX&TB*kfA=N;>jzz_iIfJ^mmEM$ z1f<(3zWof_sinyZS|vWtwM-(#n(bF1YP)Q1yh(GpN( zTdfBqq1DPlA;6Wd(sbDLre{jkbAJuVkU9^K%97wxE<#a1sT=eaj`5Y_k*k1LHX`7d zKLe@n6^`g`18Go*F(fGW``)%<0#KEZlHr+)5)Q-4^`20pC1qu_z+4+!NcFFW{JZV< ze}@#>0Wh|uy&USA(v=5PhYEu9Ilzpga7RrmJ88_4RFE4n0S8-s-_o=u&*V2=l0QiA z)@@%Kr`+YBEVMJ|L=&CCAb0JhJqj*`HnkKRkl-R!{%HXUKnh-BL}ih2(EKYx5YpU0 zET|BoNkG(fjRvt?E6`#Q;LLr(m>j>-FY>mPp)8dHkQJTL5Fl?uhbdACQJGBT37s?@ zzRhS-6qEvz+5)8^dXDD*07F@!3TxRBl#rVL6vGj z+V$3TpoJJCAW)dG9fx1>Sk{xBc9@V#_a1+CuS~8s5b_qek8*SZ1u5X0D5k(0M_uWw zL2*cclv_-&A~mI~c!&cn!7C=NAPbaD)e;VIxZ007DF{lg46DC?I$70gNfHSpp0vT@ zNxGov8mM`C*0vy$q!iAg0sS=aw4@;`P(hL>Q|tHAki5xo6&WCCEpJb~YKQd754)}P zsKrLq;z&d*LT%-^G-z-Xftf7d}@=t-kZ-0UVPF8i6#nQ+CGt3l1N$1EH)!whSbKNJiizw+TO$X`c&AtTLAFE zDsZ0>3%$*+-mME#kGxZG*_gkdL0Q{U20$kwM!QGXr7;dE1gNMKUgAe{uJt&%TU#fZ z0!cv4A#r)_>q_xSY)SwyTTB8@vFl1&^R~1o=k}49XgAaM_)_zwOt+b9T*+F512b=} zPB&Y_g-AltVhDkn<5&i#HCefmlx-xzo~OO*p6(^Y5ZNVpd?S`^I!y0Zn#Bnj5DXQY zM@gM4JWX#dr7#pi+cza5>i%!Gln8hsOAE}}GKe7Dd2}7C1It>Hb4zOk7&?xcQj+b1 zkW?;6(sr%zJe`!{vXZ40XSszL-$DLpTy;w2<#gUrZ8g000=cbXl_5mP0GK z<2rpRA;6SoLy9C4M4J*uzqMtG@^rs4lsKs0K|TSs{G-;13km?F7S}RuAawGsX~dyP z3JW2)v5A4bAHTWqWgXe>|iDtuey>Lv6fIy!*{V3F6gHF&VlK_xQZ=>l>C(`|mW z$8qJlkA46UrJZ8ZJNZ>8x}}(uIyDnMwO%H=n4C#%oSfO_0Hs*S_;l@A-FZlHa-y`4 z3Fv&qVnfSZ1TVk|9K+!-b)TIRC@$qvfrx|u0JZ*q=9!Jw#JW_U0U!b4UR`#YV$u-a zUQ}pO2_*-#^faaC&*G3qLURM0>^}NaU@1rdk-vfk%xH9u-RPpcL?K+j5U@Zdz!|Xf z(v1Khpg5w}Eaf{*zF+Q|pqJESrMF9iKmZ*;=|+ZDIb|qOGYOlMx1genMpdB_gqRXk z*|@0Mn^r|61Q2q9gSOVDEtPMy<{eC0Bev8i3v~!6BoGM#0nO5Xnt>L)z$Ix*T+?z5 z&GkPq6tyjBPDv@;1f0{~{nN4+P(rg>NIQXReQCdyFtmqLbDKQP_P0_$dU_buo4}=$ zE1wzFBd^QlPj3u)c_ieF#31GetbC1aXNQLh@+ZbM1m-Y4yVpkxhe9AqmV}@m7|@*$ zUG(YYQ+mZn=ix9*QeY&a1jA_rL~XxI>3ZJY5ojJDlVG7FM{sr*y>wB8$dk?zh00Pr z+3Hev6|I~%ERzsHg0gbu^z{BUu2;8N9OO05@dAko0tk>}Un<-AWrr3UkkfWkVKIK9 zJpOd`va}?W${SFUi`wu>j#dt>L7vvy^z^otkm4Od4o`*-$INu=S^@$^oJOa{>)uWoo(Dd}TYUgUOq+yo4I@0cE8wL_wQ~`UZ&e7hZi3?E$NkZiF zKvbgI_d3&7v55{P2~cSw{t{qG@SUSe{{XsUX)YnRi*53?2nSE4yLPG8$fmIBNDY+b zLIm7QM@`^-eBzz?XHWu^as_`-k`_`r5Vau?G2QFl10HH^0(W!x5TpNuy!x&1*B!#$LKc{aLY2~GJ@mK)QG&a(R zSF}iORCL_^$DIPgk_%{0F=$p?qQn9EN!|=vyglD9%iF}qZw-$}BM`!1A>{&MU=U;u z^AaQcQxvwD!z{Gebf}D}1W6-N0BR1M=CSa09!Ifsp&rR^DF_*e8-Y5Dk1F59u;^uF2WJAuAkfd1Id9(lx zg`$ze(vQe3ZM~lxCn-hH(nQah?N8??2GTOlL41VYw8i(orE|4sHHLQ^gF+m|ExbCM z0JaGkiO@#CUe&R9*6{7H*DbIT-z~OD2eyNL{{SlGFBa|**IZ6?W^Tk117MLS*KPEz z2*ZEIsFKs5kPo)FwxssFeCjJPt(B>?0umc4Ia1m1&9(B2kx3ZrHw?uBP#nZF;7Z5^ z4RzCF8g~@DGjHP_2ymsQ)}oc5pBc5_jW(^={5~58f;IBP|9pm_+{;DYt zW6=IL6zH7Z%qRd<29P!y_pE8ekInOvg`rNl;a*@s+?(m=xuhYdTW|9il920$M>Rg^ zHqdBvuFe|8uMhgw>) z;Y$2ju>&~=aT^(fT>KmFVezh~2Dn7eG&Vx#WRiE*^)dK|us}TWQHXKH5L+P0Cc#j2 z??)RhPY-a0Wjw6UEij}a(8`8K}8%cTp*e;Aie87d;yiOuluYRQY>ipX(_Np;Bs zUvz2d^0i-9)bYnN>^K?3yi&+;A-KL=rY~}Q>!XCj;jsmHeqz0y`H4OWAKXu`q|jhE zMjw=e`GlFeg7h*k@QUf;G1x8}hH13`>VN>d`VUQOB>kOrx6{gE9>n6aw9ALTB9K$dXKp9v1Y`C`A)5cR| znUOKxx{SSsV-XFuw;og#EP$Dw`)%HVZ?M-WI1uM4S(_k|JiE~2_=)2LDe{mBxkNz| zaUElN)9s`4Eu^~I7lsQZY6oNkx_Szaanxb44XMTw;P-NcSdrA5i+$d*KZh-bgr~re zLyj3D_WElZZ(Os9PCfOu5)SG^fLn1rexi_^%C0Eq=9C=B+iodR2vkPWCqunw!aS8c zgjo%QfMmq<%qOnj8q|i+F*&8e04aqi6Fp4ptqKsNsktq*9DoNdNFT1+lk%%~7Ap{! zmSV0$B+wHSOF$(N3MrUR+nEx3}pu+bK(nC;&eM~EIU?D z&A*LTg*iEv25dI6y)PG`3rlIkt@<`D+dsH>|>3sr@=XODT15nJ9(Q_DOk*D#58FlP4&-uo2My^{_QBm90UBlpky$6PS_@uFzsS)+|OH zc(uIdbSz~FQ+swYFF(y~!?&5lI;akSLQr@3_n~u$EoTUHySiCa!;_ zx#_{S?i{BeamgMr8udFwb*-3A0@funhyli?W;F-&nfOgR1^HfJX)w1OgCt4;xhBy% zZ_;UwzPFUx8+C3IIk`Za0XOok+J`CBDVHU*s5a7qj&g0^zgVo#uMqYiVetf^uursl z&xP8;L&rd43{@G)Q>#Jzy z3Fd~C4WQ^nguu{MCkVBxBJzX~67F3N_l*So&1_!|&xy#F8zE%#306{ek+VM=pVcWuD z7KcdZr98B)1o*6W-{)%1?lDTl6*3eCz7dk&OKB#Ti(8MM3u#Ge=_NTrZMi$^=~_CC zEg|NYh)9CoQWqeT8hTBLr{MTe#3g8C6a~S~MozrAUX}fV`q&L0ybh$9J9|1GC`V$+P&4$7$ zyg@GK#1#`R2{~s=X|DIbN=jk)4jwTsDM)!ulj2Ek-~eu-4$&V9)riW<3od01j|g&g zk$)FWPs7TWo#(Ltl#sTBl_gL}w_QfHc&sD%1-h4(0dUGnCKNRwbhgyf2a0D1oF63! z3&oQvkq0E$l07563k)GF@|5910wgvFiJf~G6vSZLOKU1p1Ar3%f&@e-@1;g@0I`)I z9P<{4ANt9WskJqj>ER=mzGsbjOKDzNAN!vBYqpaWn5|fRb{#5kA%&|eg~aBxn9|^F zdQJ_uac<>dD#$Jp(13c*k-g@+kMPtpghQ>UqZr-GO$@{V5>K71b&75x#~X@eYl>n6 zEddT@P>T!xpOs|Cx{MpRU;@}t3vjFfEe?=oOisOGyX$8UiE9w06|HTiLrAc4PN@e` zZ!uhqUkv=>2QpS-QX4)G^Q~Ozm>vU+JU1TJDFMRcP7>GFmP$;oTm>?4%gFhIqMkx)g7^{9~wS;)N!w3!`tAx1cx?GVc zAPr5tu4{D{miMq}TO8u!YQvyg-UT<*lb{Ez@2x2b4ddJxR}{Cz`%Yx8;s>1RJ5!U4 z!*L7(@Eo^_$w_F98tNnU>HAVJP7FRM;@?npc1noR$liLJYpJ%N)!fvivH%Kxt0m zONTa8<;t5I`ugiz@ZW~Zq1;wI)|*4El5r*700Y_%xA};!ejU@nxL!RBII!4qT=8mk z1I*t2yHfuE=a-KBJ}@XlcxQQ~^1Gy#=IJpp_(=Z$R<1OjI$)Z1H&ZI$jf!gy=VsixRlw$xgF% zQrRsh*eNDwHi_LMQ*og?Z^^;nUEyDen`KBxHAyAbil+16F*BCqwuegRH;6nd6NkdI z+e|hfb3%N4&16pG+Iwv^=x`X!NWnkGn^!ZGNp&hnR&Nf5FXVThD!p%xIZJhKV>o+? zeMj5>0OVBoz#?GU0KKku>r?Tvcr(9x~wNF*%7UCJviPC(PA1 zGI~$MABbLijp5$mm}ImtDu&S59??nGfA#~)Y#`P)F)X`{$K#Z%5zJ}sYE(msg#^io zPO)s;b*`5Pz$X&^4fLxhTXIt200<=BBjc}VtXw60-W!Ps!VF7T=akBv075~K4b0^i z5!$m!Be8@0SNV<#{{SWS@aGc3(&>!EWV#zjH&MJ#W9j9YRvZ5SqD|qOD#!7BP9WvN zHsXnQFo3T5sxR7uf^g*U-X?}|c*QudPdFzu6$^-wc<3M*rs0sr3yWf1Ww!ytz8%7} zv6QIDlhi@mO4iO@J_qdiIHwK8;=d3h z6s4yH{{UtiA;g6*lm<|v)SSRr#`W01@ZKke!|_E2luAz}NG{z{qjal4o9Z>4=CY~c z&kbH+p@_pJ%p--=%E*~1Qmqy+0l#>v@~p>m@LnT_@U8~ZAADz1tAsek+j0s{RKx;i z#ORsQ)$`sk%REbhzU~!|%(cPsfP(PK5Q(!!bwr;Jz=6;tdCRi9E8{gazi4ZT1~3Vrsd$b(TEt3k0q;gjybWqYT^2 zdE7h6_tdd>8`msp2S9yjzv39hehU0Tx3F%n5^}iN<$@9cN@Fn6z!@_au&&N0ha&^R zI94MLgw7bHCE(l>m_SmMahP@7TGlm#8G~;Xi^aN^ROr(#!54PfPC;^uXyw$d4 zIjmxKASS~@Hm_U5FyYKL8N5R&4dJlsZLx_=p+Ll>Y7$0M>lNjh!>FM zm1DRtbv(>E*ltRkCDo~Ejr36h;MV%qypp&cFM~USVL4uR6NN4%)ac`C{UB*FJv&n| zK`-#I(gq_QrIemdp(_Fj+6+f|oo!y17lwQB4->*I>{tbC<^0KXtOW}%G1LttXg*c5 z5y7zEgm|j3PpM1B2Sei$3CSu1g&hF}CMI^8zb7nsY$I&(>_cvGFzao$R?~n3A;{53 zt&O*v+O{L`$K=-9@o%<<9&|EPunt59!o-uMqo^C+y*J~Y4&VH8IK~?q!f|I13b6P9 z3r#dY2v9Ms81>ZG8wG>LaCJ-gbT5WtGV>lFa-mAK$cY|s398+mhkFtK08>8-;P`h4 z!QuEz{{V>21%lHk#JS3C>ywq^AxZ$j06?^8O?=ZC#_@c67R$J$BRM)U0t#aB(4=jo z3w5ry75qA;l!q{{Cm(=p0GE~{DL0O`J$loV!&t)L8(1lQhEx>iH9ERt3R4nbNCrEa z=`qjSknS6ZaMv8nq_!9k<7CT3TGqCj#@bf)UU3-AJ8EGCfC_?LIa*U>=&96guT9Nt z$MD=?!#Y=oD7P(cxROh)ZInfbz0H6Jt#aRK%oZuOu?##*trIw=lDybv+`ov&9yU66P4DaN{D1S8~$TAQ9Ywu9oXr zpOn|2!s2lpMTLx8g^VU{W1*!9P>uEem=ih~>qP$m;tmnPQ-x0oWq6Km9JPz)DM`6G zWF6!Y;fn-;dh^9NJSHWDJlb&tunT2sj%fs(%8dyA-_;&;*Em~v#W>a(?BQh!a|pv( z32-EpfHpvh>mLfKiN4x~Gabgbi|TI(%j-)@Q_ph9hQtXVS_BW2>0Rb{t9VCPb;kbfw&wM?n)l=JW-;Q0D;gL<$(5WVftJ$DjEV{ZWLSa>z#<~CVsL5V z7_37Ifz+7uT(MJ{88>;c9tmEuqlKg2jnZxlui&*hYe; zBk^1KkcQAh9Hhf80qqivE=A17hIHv&9P#w!aGoQrAeCj9 zBzQq8-@`VpZYPVkh{LwFkhSApQn?tHmOnC=IhHd71nQMRv{#P7ejzx_UR*N;g`lXq z>JC?D`+~nv?0T5%P5%Ix$27}tAqaKCNGNznH;@tzfY_fQdM6&Ug78G*Swq}fF&wuX zmNQ9owkP_trS3M*SH>|IRq=tu1`86~cw&+n!KgG`20SG~Z31ivnUkQeBCo~R{{YJV zUEXUFf{{i@=VIk{{Z1d z@r-a~jvTx`9WABM8%mZLY^&Z>fpe(;0Cn6S^ps=xYljYSxO^jJC4A2c(gn+bCqrN_ z(Nur_@)_aDaXcB8u`jsF((AaSWiuH@ShBym6fR@Rx$OQp#k-7Jo^4GNktYzRNXsNk zfSpNDxKV*5#2Bk(*34(&oHDUU!1J3NJ*?_DmWogtPyr<7fh3%=BGPYb@*e*HrPyvK z!-I`Dmfb1Om?$BlB!Zb%`J~FW-qqN_GWQb1V|lNu8^k{_TyfQg{{SqhHzH#(_y9E8 zjm5K%Z7jWxVHkFgH!G_lw5e9*r9Y}<7(Qb466exxzHq<8?57li!|>|F8A4fYwJC5( zf+jAmksxndF+cRj8HU5AQgH9Mq8Y*B2snp9COjbD-7^|%Uqj%(iT?l#{uD#)wzqih zBNPuTHQ`1Q4w3HyZRj?vJX8Lwb6a6pb{T7!250cC!;q7xo6P0Ch2V9n^6T(CG5i6< zu-L@l)>*^2p#X*EkN~`c3IS3eT%S72iTom?jpU#!5bBf$SR@w&+Q7oTQ=zWw--uB2 zWgxcJCHD_A7l=+`sRSDfAQ>Hgw9Xa9pKCjqRIT?(DICOw^F~-XcbEsuwzXbVb6NiY zr-7~<{w2phDCO7Be zr?{HmacyNbQk16-b-;`5ltg(|FB0oGgegxc^|ubP=D^3gQ=uYu=~L%_Y{wG^{{T&& z#$g2e$o;)|?h4ymR4i;auYmdqVSQNkB@Zz=2@^i_F~gss7sx*UNZ6;LLv& z#kkfHmEsoLWz~k8@B|HY?G~=@3j8aI%C^5Uj5|@6C}@~+4nSaZ+*o(7cg8VK;ooVt zSB5}HAhZZWU=)H|JE+`V*Py}UFxWmTo!8vPEyK)gu%dtfRL7K^2D){rzb&MXABX<{ zr!RhR=V>lvB=Xd($bq2{ZVVG7{41%1`~il>V@PrD&CDqwr28>w303{ldPp1euS1N* zscUg~*PLy)0K^;?7E-rdF)5yhsI-$cNNb64ED%UbY;fd-q@kpnNxOFd0!Tac1}mNU zI{mi+!Lb-0!s~HZEIYW@+G$*_PzYLq1b8G5dMA5c^e$l6#1L@~mAMWgUQ%;9u8<9r z8lL|EE`Ca!xEP)m;u6ydP)`m)vgfRDuecDGECz z1EgyQQEKX~E`QoR$Wjr@DRii2T8!9b^ov{JPj?LaDs?M$eAi%$6D=Jt=OeUMUe!5s zm|)-&m28ZO3l28f$bv!LM)3npG3dp9AjIOtsf;A^GB61)>;TPVjcse!JJno{6RoMNY_yc& z$i}q(AHf;sVerf$c(zIpWsq}sI-KROiR)|@sNEb_pTp)x@t!6ch& z6->VVBskUyp@&=GB_tf>%iIIkNYi?Y)mATvVOw(=>fcaa45(&oMuyRwV|n@4J)~k8 zbN<{MFuIak5jk`!K1TkYRoqwM*D)=&aRfH(B>)#Blw3&bvD;x<*4`PF@>^gyj#*QV zKtdCjLY*vn9-V8SlCj5UhW`NCp=jq~7;4hi;z=1*qE5aaIiqs~hmc->7=X1KHYCmd zU`4^a*Fo%K#!Js}5K+O%Ps{H76TKGdk?aSaV}ojO~3om`H4d^K2?5s}q6(Yli*}%NR2f*>2Vd&Wf-n1&n*aF4&m#tdF16T#ny9murmka zT>d$UWt>yL@#;&Yz-hoFD8v#cdtPa}*$GAvtOdBTvH%?4akd9h@zc(yvwfsDg+Rn( z8)!JCqRqyJ2=C=`D@%9>Ijt`riBo8ZagaiaKojEI(@#BXLLTAR1vv8CTZsOnZ8Ck! zi-kpw_8ZjsFBulb8HAAPR_-O)<+q{$5J5c#y|wK^aM-*qLdcgCh zoI`=tt@c_Bxg{yXw~$1|&CjLx>r}@L#NnIe;uraKkU>~JHF<7DwXD|TD;Ni{IGjos zbCz3diOM$s4TtSo7sJ}&yw=(|-xHNX+{@{#?={#)9mF(1QW1tHC@P%fjRl3QG^}G1 z7#Uh=2t$(ZwG(1YlN$d3j@6!8sT}+s841NOroe2xd{O}*X#=$0!(D5j#|%>{TdGcc zLx2>QmG1TttQj}bMLPk6c(@zFBsSAf9mK|B?^D_@F|{#h!W>CWIyLSMR z1J}xR(`5G=*Ie-6%S*(JLY9X;=HMt_PYs2R`r7rj<6MkL#5~+Ig(0v|*(8y-x=x?s z)EG<}6^cW|ge@Y{qY^K3ynfZ$Yx3@nODuxIS{an{nU^uQZO=A$ox|B|yx-;= zP(yj#Ne%>s3BCSav%P1>soX{@Dp8ST)Tfq2fUU$|XpN7dtk9f39HpT1c}nctj*%Hj znDvdvdf)kEvw_2@v^I=Oz@&&L!VSG6Ywgyl7)Mu##6O76Mj0e$8(zTQrK8rG(o0zO z+zHd!1DKKP=5_R`)v$~MOG*^zTF@L!y5geKdA8n>6_*o$JTDcAE+sBD1UHet8G>R# z>~yV*_Q}P%u3{fTfh&*+B-^&KcC1(=D;bGgt!}!xaYbh_S99Jf^eY${Qkz4GQ)J~) zgEKo${ml}y;&97#5(se|#G_a;pAkKx{RkDa41_wjR{sF91P61I<0;ZKnLpyGqOMBR z!VHoI2n0=zS?U44@ig{XbDZLu=B@>a8HAm* z_4THTV-6PD+DKUdSmgw3F&lY$R(xU<^9V|mNG<@Yc+Opj>C!2WHwYn1oZ?7XAnW(v zT_~PHlnPsFT@8l-_do|i0Nb^usAJ-YUH^r`&qM#9cQELC{UQ zde)p<-=1MsjJoKF)#XabDLNdUP( zM!(Vs(^#1M6wnKAl!p*<^9Tt%zYtCK@2AeKlprH7F+d>7hLO30xYOfJ@Gle{N`s(@ z0kqABS?_6~%uqleWN}%F$)3VHcczL$(2P!enY>wsb0AvKI-AyIyx?w7zGG3U368Tn zosRZ3PvQm*ZXvRvp)z1@a`c}{1)*4sKQJVrx$wB55{f1X1{&o zwQ9~126YDl6LRIC8Jlc26@}St1+uqRi%AAx&cAxovFTD>%IcB{2QUPS2-bSqh%*eP z65tMk2u@IpvS+75_4rm*If!`~oNyo#vf`p|wDi#FLhd29n?q5~v+X>DrjL6dOQsSqVryxU@}#{p(SD zq#!hp8H}ztg<5xxg0o|aoA4;4x-J_to;BC%e5+z=i|Hqngt?K|3Y4%wl6M|mYMN-_ zmyrcB--*8s&S9(rU^?$hTj2z`oHmCW2Ov?I{i>bBrAl#4$Oun~+v#ZX^Q%oE>mf}o zAz=7nWD^sl?bqc_JlM6SwyiZZ2k6Jew zHc2VYL9jRL6W3Ye~WFQ4Wksv|MzEXVVYoZD~v`X8S!(?X2 zP3@@tsx1k1P?pNu5(4`D{b{ONR3HL`D4WDdJ^CGIYRJEIg_%U=AnFL&KhJ8|%1$8; zDaR7B99Sk?o6kWy^sKMpm5B>dijAUIv~~O1wIRh~@jSvCZ2&+ESG;W#6xW$bo6eOs zjO2o_dQRQ`m2=Wuwpvah0cnMTAm1qa{we&GJfx)n&5tY#nHvo!=S*A4Y4wDoI@B@= zoj3mgbc7(`l6|kg9M3I{bV|^$%9~zLP12h{+T;24sPS`{vZZqumsq&%<@{A3ge)OR zQE+K^Fb~+JVlhQ1%L+mWDsBYNU!-YBg{f(fQlOQ|_YR;4p8j>2XTyvzYzgK#gu2y8Q{VFg&uMnjG;0KxH4^^=yaur z7N$s&v;zq-n|=FLh4NPtpbQ>aH;#wz&blP!vf|LzX;C6V7vUyxQ-Q#;KsM@W z&O9+Ll;)hVl>Y#4U)qUpXA8_>!_;av`I=8b8GJ!WNSTljyAj*&)OKo8>cNwsv>)+P z5#a(9fC6lM^@>Ys2m~m22#s}2z>2g{V=)PIp+P4&0R&6}X*txCqb$J?pBCRwxTlcX zmJ$J4(J3=3lhg{&i6pEAk<-het%y-+7h0B+sJHP%+a(Rjjbu*W=+UhKw1kjk#0z{X zkhK`mv8r#cYM~)YToo070k!Q*S~56=7|Av+UQh2@1Feu@Fuik&5$WZ6UNPc@1!kE$ z-|O0tW-!#HL`(pq*Y4DntJ*9i5Qx=c2%0=f`GBb98IQjjj+Jb@IYj{4bLn$c5)4X~ zwM?oaE%J`Em7^nV!pS1!4J%R-gfthKIn+rgCdBRKNhwx&2XX`tr_!nfsX-d5-yn3g zMB(|SEbWHUoe{fXRN*8pTRZV3N3pBKI29rZM#OO57O|8#zOO?>&#+lwl4u zfS{mU$*Au=eQ0x+m5`JSreQ_`M13u-3f0NOfyzK|?KxIFhQhy0{74l96y;t+{{YnE z!np6I)co!s1*rQ{Ad+CHOvht8`cl@CkcSqavf2KWnGvWX`=Wfs79o&_BOq9wU{R5q zc_8$lQW_Zm0Y1)jF(+y1O(+WiWuUiLepyWO0rL7(T7t|>h@62pCUr5TF-lqyoh>%7 zH7F%W)6M~l%+S)aWpT7;1sSFRAjW_mr}nBG#SE$!U5O(#ghj^CNcEvwOJFpGA!uEb z11WG$zvho3kXu_$=P4I#>l)ABN(F=^Opuf%4XnztM1LN&Y~=u|hU1*ggMpz`0WA>ndN8a{vnh1!zS~iX2S*Vq`pc0gjwQX}~v=5!> ziEJ#P1ds)k91#OhZ?&mO%abgQS`0x{!1C)rN?GNCg$1rsGZw)XGTaD9UmfKBLRyOyy@wifJJR;sPfrjk^B;x+hCgGUf2RvH^mP0GN_B z)ch)v7aYWx1lmq%Gjn~ls}2y-)0#rSl+0$0eMe3HH5uk+4CMvg$QgExKabjtlsN?E zNasQJWg3C}&(@Asg}A6n+fDPHhgs|AR2J%vRTG^Ol1PGVJ~c{vDzg#^T>Gcpu-nSi zXpl=tLex@*(XTO4Gt;KGp-JYz3sjcCjc+<$)8FAl>eo5KR6}7&>F6k8Q3`WBT%d>m zbv*>>M1>f48CFs=wnfT>!Ru|O>qpH9Wuih)EJAh(J>y*_H}$K|w^G%Mq^JTWCItK< zscx^?rz%a1I0TTh^pG^xXaSTdNdr{{05s)J>0mjAdP2z?FoT&}0l&!!N09Dd9AoPkaALYu5 z*0edg&6V4=`qLDda59Ggg?oT#Mz`z!s(6>ob1@;18GeajfNVL@L8$WAQXfSzBghYYNIj zPNP{Kv{I0~l9KAPxF<32!8ei($o^`Ql9UG4PcVc?AW#1QUGw#;OHG#mY%S7YglUxQ zXQyhVA+@GUgk>=x7yxcM-_RN)MiwE&D1a@VGsc!9@8eK8%mwsGTHu!lgpGiWtwd2J z1Sn)&z#akdoh?Bt?;3i82MehQDT>^q}Qj1UHkwMU3csjc6B;si{bC=nHy8 z3ya&x)u=Xi3!3R(9`CI*-F^V*}(=}SPBl2VlcVw35i`ppDW zyv*s$sXCF` zMW|AOk{e2nL=q(jroRZHL>^iMAgQQ91b__4*l*-0bC9g5jDQbip*HRD>rPTq%S%}{ z2gHW_QhOesccrwG%K$3qfS4cD?`_AziVAbxNJ5E0%B-i}=&d!QWv>brm|6ovFwJ=A zBh%wiSa%v*M3AKBgut|Kq5lAN863wm6awN^l_1z#uT6FBMt&3lWwL|d<%=DUP)Pc3 zM5K(X@FikGO5@%UAoezojUH8~5Ksnf6A&hTr}nB!)au(+oOQz%F$QlvOl`GuuAKb{ z1-pk@%9Q1xm0bCl>otoK=tE(iVCE8L#{Iv=X;VSa7jrUHQYPC#=yx5dE}$i486gsL z5(otMovLfMEH3+*VNzfen;UJepUn%vsd>~C8y2wlde7d}p9pKA>gp#&{tNr4h}Bc*CUPGALu%7R3bI?eU0=t>ge zAQ1)ti*=7G+{zT`$D>Kan8x^)a=raKI`OH^ITx@eO0WK&h zVFd&9UeRkt``_nS-oucm5|`7Q*;$5I8%gPE>#eng6)2zqs?-LjPxs!j;!u?k6aq3x zxROnF=cg;nmg){sDpW)g28W@gIDm)>)+XY|xIY@{a?42wg1NNMUp>0gxmgwo0Ob*s zi1_+fY15sKW*^8 znW(+Bq!pz~u>@|F6965j?kXi_0ur!WC&r!6-&)KXP`?lfBRD-i`%xFum}LN=cMXy? z?^%#akPuV`rvCt5^=VK*Dk{$!8TtM6ti@^E@USeT4TnzRlpL}^nV2#4pf1XNs&8R$ z(n0x}H7G4Igo!8a^ut%oacj9!+(a8{e)?2W@)ONjM4e({`kGSVD*{1W`>q+j-n9q2 zmonBTP)7YlF}h${k?f`j&rT>U}k;$`%%-MCeAdA5SW^AoG3eMU^7- z7KIW_4C?~xfog9z{{SFx6~ueLPo3!(kV*hulOKO7JLLovh_TOU@~N?6x)K%rIf5_p z``U;tNm&q;I0ee>bFleR+eTnX&JjAnn+-)5B&9&+5>22?j`e_$rKp7OB(XCTuz=sx%nzaG_aMk;#9ToD6M5acluMBz@;nZECAsVAvu6CxE*V2 zcy&u_Z~|v@F=1|^Bkn1zw5d@-*2Jpe34w0=-lp`g7FLij?VzAGpa}Q;MD#K?{wt!> zDrGH_umF%sfG4EYqX^=iDlLM%)+ITF?_sajCc2nRDO05lLA(eZj0)#^bey^EVU&!X zFCDW9vJdxmA3AeHAcdg^IhM%F1tjPPXzNb=yGlbvXqoqxL?JV|`callqcTh8O_9>^ zK44U8u(Tny6pm_#h+Pu^kz?Hc@!qzy!k#h|lbJxnW+pYhmVrxBayi&r7IG#Mcr(llC5;xF-&Tkx0%i)Vb5mqn1%91cGLCyn*t(*7j0X*d+}(0TG&g+W-~PdhcBAZW4?%qE(@x!Gu@&7s4WyM&n*&_tSR*^p$mBUxH= z1JKWF?Rw6nj#?51K^bxb8LzNAR9fvhMpu)>wH73w{f(wInKSe4TQF{N6ibRj0R|EY z)M`w1-Z~n<_AP6C5~8r#@XBB)z`SfW*7Zxl^6?94u%U3ErHDim8o`b0pI+VhnD4KN zA?!Q6j5@;HNHVYL8|n_)X{D%@hb*w$z^QII5Q!vCkQ6>WYbyxI=`H6d9?f1MA$kOZ zvC!7Vq%xJD7+Z6h#2AyYo`TowUM{_TJ-q(_v2v8l>GB5r|MQftDwH-g0B(wLMQ~ z!lw$NvVg4K0Up1+A33YTaPD$Y7VvABlKYBUreN$2lRH!RD@~(_KJ)e&WtR2=e^&X0 z&8vm3tHS5QGUI3=q!mJtjTb%k7xao^9#Rt1Say@hX+_MF?>VNYUXxo9hDsLG3>7xF zBmjhr;^IiyP5n)1{{W14^2^6Gz;6!I+@kV`f~9l@$3fO-YUiN%YbnGa<5ZY^2`+%U z#?b`E^`RUS8^$p0;uh+#=){$_l44c?kPff}AKtO8=kOpkhIt&fXPV&?kz-Lh`NwKz zABui?9H&n$w$sj4%0P~T=Tw`&aai?X_*s7n&LFr#a_5;7Ic*l1>0G&9R@4HJ4Y`Ex zJ$jClTX1+|#qojcrF_$sMLMV*`d`lRn@bJwbiDCiE!Kc@E{Pj>MuttRkIuw#SDR&~RB|Qkh$> zy7)b6=rZJNgv|53F7JjXf6g0u(cQxI{yF^+%^*tj=`6kQ@p7o zofnWb6Zd+(m(-6pjh^jA@TIite8-9c%x4PNS_bvd{{Vr-;vB>NNwu zP&2-w2vfJpdJ+54xrTcZ&}S2ifU-$w8xEG=y<=7<2ZNQoKdWwLtC^qT^)Wd0XFz8P zwi^Ec>aQrt8^@99RjkVBWWpg2wv(MCWmaJ^Z>g^?;43oPl;e^~NlbtS_pfh&d8U`l zEGtQIK`=Ued)6F7xE7mBDN}B;wE}YW>pFaDtWP~ z#JdLFYcUN*f{U%K45&Cv0--TIx1&x27sRrRN|pI=N>WrNFWTLy{4Iw_4krwG zlgrFa)tl=T-os$=XyvIYN&{qqK-XetJ^fsg{kLqXuHzEeURqj6!;2cI2g)KSMkrsuG{Z9459B+r=Ie2v-W=e9GwOmi{ z`%|f&nep|rWY#9QTAfK#sxP~jmk@3=@-rF8;8HN0_ z=m9X<5&|xYQX9@h4;%;v6x=Ure&O5$U)H1Jz)EG)>$0{eMr zbf{l9OZ>~v7edflVYGo6q^KFNj+LDNy!Kq7w+WXrlP91td(DrXX~H(;-qH9ubf;{0O7$h zm^;nEBc-aAn-Sk*I;Tn{7mttUQFHLIAgjAtEmZ z#CN{6(P3u-r`^o3pyZPW-?fdjyzP43`D_*ym(*SMX`Wi!@oRlFj=ojTd6%$m9%gl| z*6i3(8E583!>05IX@-*EB}gsmLGTIgEOeWWm19mHg%Fmp1ODI#BOx#|YAkF64;z#zzg;2KD=5wH88dFGkrsnw)g+;l;Mv8!V{?F>Ur zuCW@Ly0IPld8n-G>=-&=M?AtclD>$st#<>~*e&8NbZo`DqCy(qO1W>TX7wYpsP%gID4nB*zlsuHxMY zs-eeGN2Tw9O)^uT# zeVeNfv7|T&6Sse{LmNLdsdcO|alAXG6dVKDz=8qPT;JhH@L`vcEvXNXkl9jv0@@MQ zBjW~*#TS}5g1qi5LyB|tMx;i@!ulF!DQFGz&SK@VkNq_w+EffUmR8O$DvXIBJCvli zX)}4uD_$QEQrSaD=3ykY%wM<#{3diFW_;@#GV5Wour6G4m_hJu_uf0uBN)fneM@z z4xXNo6ig!sw;W`;v~yBIoGJ0=hycc#A45ZiX%2#gxR4wLT*sB}jRyMz9qGIy3dR_= zhYvm1d?BpFmhThwtkWG14~$j`mWwU&xxN)RN%0LYu@hX(n3Q54ZPX>F1B4dQG3H?Z z06JHyaS5Cz9JKpbc8b)MKuB)-0TVs9?L)`$m}hu~BNK!ub)~~igvx!P12`gd`u3WM z(myUbaVf?OA~2!fW$jd)pp{t3?mB^3n|VtOFh!hKg2cl0w$Zd#LjqJ1`;DkHhRhEQ zqfDgz?@?H>gW~vSRM^8flgz!uo8}u@-x|40W5n?Hu$)cyiU}g_rLmfAK7&hE+#UpA z+U8$*+Iv>&EECwQI+np{KbPdMmpLcH`XGrWB-qZgHPd?r)7*?g7FO?c@4PcKLoIGV-l0gg~n2ufI2|2I-1*D`k3x;elLM( zm-(&paRntH$VhPY7S=Bt-mu`YFJtj7xY0bM*dQk?k~OuXX!5QH4`qxquk-z@g&{`f zG8wq~M)6+L@U|}vgT+4teqC)(FoGL_`;OI4J#!}5XW_mB!oN3+PZUvUq$e~<61lN5 zGzY`?HQ+xMy7n80zMMK$hQo~MZL+8$`bpH>YuB}VPBV{7Z=6;grM9$yGiH#YsR2+# zMWf?hdlJ$(t~rLwt6-N)q&;!~@R{E=>}t8|DtVsvyw(p7`3xv&MM!bO06cPoVgi-9 zA3Z$lrHH_%iDU4sa#e|Opa>*@GRTBprj5p&q zIDQ9<@a!^(ZQBG85`|{$1;)d^wc7k>&>U+BF%KwANf0vusU1fBMR|-yMtIUOjwN*-<31f#ko4;+S-TphJjZ#4WMmAVy(54&zPevAhu};+XWj_{H)^ z^$C{4dgkpL4NUi~oK^Q8;>;rk#IVaLQe*&BtB3^H7`*vbP9=j^4Pl2@h;7H#qs&1P za@r<)&!u$L$1e=q$zZnXoCPj8oX;c_3s@-a-ZYOY?eM-Dhxjl{2yxyf)6O`QAcEJs ze=}nvVOdj#agGy@#3^N@C1ASaiI75$myks3DsR9fnCic=RHJ_Yu zF}yuoCyL>*1qTqdnQ$RllQYv$bP?NmtK%;YA;+J1Hr^%Il!u$o8AL=#77=04)~+@g z;{0=ms|=?-t025gc$7#f8D;<-2Kq(k2NvNE@TZW-X{Xz6Sms_FZ6`?6FeI5Zx~U$6 z2gVCH=P@{ysN)@J4q+R318@pQheUxOovmI&@k-vrV?u%tC@=;oPNWHPV7UO?M&{sN z_1NRtUf>vGhfL({gJtC?EfCUM0Fth^zfC;jr8%UJaL*b1 zIm5pR{!TcY)C)mo5!1Pg=28sRfp8) z=2Bl!a_2b&lC6#Onfg}wBOGok_;VG8#bfbU{MejdF=H2o!?)l=fil~dw9T@c0ZT{x zbN>K?aVf_kD8vMW;W;3=%V-%`19O|LfHPg}Ul_#k3=Tgkitx_1j&p?jrqQSqWRNs9 z!Fz`>hkp}>z@(uMFbG42Im?JDa2|uDwbE+mU$kSBgTZ1rt`UdO&<^3)Q*F9a4Wd&V zwI(%8Td6Zx{{Ro*-^Qm1F)J-J)4Zox3YEBp4;qp*3bYL`-krnWdE90L4~%idG}E9d zkl=vH5)?gT&wA63;8@SYnA}2~bxXlK;)+~t$XN%)%*!%nY<02gU3VFa{9%UStzj{W z;rO)$;mOU*Yan?s?!dUx-bQN{5AaSe@gD(i6rcNiXi5?qm_ckvZt5oLFa$(Fn6-9) zAl?TM-X(al*j^Plj$5la)ImAhCh({hj)WUi7shd)hVfWDDgeQU5?jFGf>N?mn5ZR0 zNCpV_{5Ey?j&?ks;j|7bgBS-`=AkYIon)jWxI(4Fn{^F^#jP}0&-+|I8R4!x?j^2k zfu_*Z7XToF+)Ncrk)--pXOHmwZWD_PV$h|WNh%DfMLe_*7cp6GQcm`x;=Ba#riU5B zyM@Fr7Obyw^JfnvrBa|{EGi>iMz^c-_KO^RAK;hxrW~P9vWzp27h3$xtd`MVw6sf5I ztES0`GBgvuv`>B;jCKvxr3k`tRV$v_43YYVVocatAZa_*&hzbjxP~hc zjp7AJYnIYPEwTY1iIOj12IOxQ$^2V|UlebKVo`^~VV+ZMurS4u?3XY~w@rY8Z!Z{wA+m~;+<^(NkCR++-#rzwm`5Wdc}osGJxaG2i_z(%ymGw%q9)>QG;oi zldV*_^otxt@E16_3K`o*HLwGig%kN@j}hB&KD7Kl;ap}riyRqK4LgCuxJD!i1bfn` zurM;(Zx+_QN;sxB8H~bkrts>*VT`)gB)OGp2|AK@7ZFVlgc^ zRSr#*k+z0lYZet=b(fdVaDRlcd}XIpFp6Fwz?WK40S&1Ga$|ewDZlXe7V%s^9JkqU zG}@H@4+3GwQ7~m%1GjK?HR^DjHOz7Rwh){`-&Zj$t5;!C6qJQ{K`bFi7fDZ+64T2@PdVlen-lg`dX zp&*?Af!KU2TKJwH35adCL&{p95r+_hWRM+*DuM-sX>OHXOtIiNZ{XK(!xDnuGZ4+g zX%I5T(P9Xj1LveyTMPJGgy7QK&S75svXp0*sdXfYu&|7!B1wUJnK9^itJtnQ<_X5| zjUm)aNtHkn1%gNE1d92a;`4d9p# zZX1z`aJS(}c&{m#T6PvT1|lLWj_UD_w&lZkM-|FY#3nQ4i6^9W5D1F*oD=X%{8iT9 zS`&uKT7bYH9}&=>(3q2GnWEyj3?n$Tdm#Mc{#Vj1SR&IbgXOJ?xufGT$2Tv(eOcGFtl zA?B08#woI#6GY(Md_0xnod{Zq5gr|2*mv`;qu+;>g+q^KNp;Xv%WFw_=Y)xg&`3Jy zE^9(D*wkV%F5vLUU}BS%PNlG%$xmoE1azHZmh#=eG5MvsUB{>eB~CdAXvqQ~+SchE zYjq4byaD1)Fqim=b2#Ry=1yRfazd{VVnFDA9BghI4UFc7gP3sAqH!J)kSs-~{aU+; zVR*)2Z>@MlOUWF*Rv92_OdX6yy7Z{t8CYCXjhr*h;|!l_07dr`?-(ZL*Yc{-$bB3! zIOHb^F&KI94AB;96N)!>o|3GhpNd-V~x|DAWm=jcY>r zJT-;AiYZ&JkU}t*aJDWIRBj-}`g8)AoE|OgG8P|448ykIhSMc(8I#QJBww(mn7$do zICCsw{{S`)CGeL@T4A7X7F0lhHMdLArCb^ab&^q(42+AZKu8L5WTr%%qpa&p!6OO7 zP!Nm@_=Gr>mtMsvrJ^n~0oz#bT2aHD{JPYp(lA(HN?i%c00aq08|ghK&Z5&9QN|$ zhh0X<g&QMmMEod6s(&uVh*lY*#VD+i7m{o@xYjnV zerxe@@H`U@$U@#9nQ@RCaiYFgDN3IabFY2O&Xn9Y2S*mfG}}!!;u~!ELR88vbIa7L z)Lyz}d^-a24lKKgFjdNI9D;RF5M)6D=dO`kFpqH#B@0qqYYqu4wiPh|2_y&r2)HDf z>w25rZ;Ok=xGo0-R_cj-Iz5Vzpj`_;+SJ)HLDp_Ju9C3sJo9cVI@Sp(cNpN1FCi@t z2pXA>Q(Z5~;kbLQC2obUl>z1d0QEHha)K^*y>qb$2~(_PznoCfVCS*BTHHa;(=H`9EB{W5V9Ngi8_ZIfd@z_5_P$@m7Yz;Qqe{T zHp)=9)C8GNgyuf#j)vlUTYA%sLr*6W`L~kWK*Ts_I>6iugJ|&lcdfWS6^HhZ7FGaI z0d6@0NCP){9)jKLS{}nEhzH+E#Nu;hX(>!?Y`_bB4Mpi#HQd2yMgg}LkU;P%0f0dCK6+_hg?u#PFpeq$7My`Y3<@yqiIP-C zhf|hLlUSK)Np!HvxtO*1f`Azgx*nv+p53cFnl|`OO10gtY!e+LLhb@3MOz^w0j{4f=G0zgkMld@6%YOt<*CN;MUU8 zQUi-fBRP{kV_3J!D=$mKM+9g7S;Q%)F(_-qIe_xf34$OIGySK|vGZ|HVDSrM5QZ?| zaznUcMq{Cvi$DS_Db8Th(q2X(!Hst^RO4ktAvUo$g?93zX-+B@mWC0g(n^;0RRl)B zZ8z&tra6otvZnCNVVBGo=DgjkbQ?D$*xt0QmtGv)Uo#f(^#e_(DH|0P1JDqCG&4=Z zVKFFeY5`0KcYbaO_{bOaG*4n0!?*c!iE|hah^ZM;fG4j_Exl#wSjN5_ONdBxF^4C_ z8UO~*bF@Z=_pP{mFAh@JQwehr>OmjX@LUU@Skq~wI8x|oWuW2~LF6cyaeWV6k4UBB zoI{v{nK=h2iI{<`o`y_EL$yxov7yXn8wT3&_;#Ch&k$B52|`an*7pNQu5ejSJn~Xy z!xHbfgV5|R5UL*b|*V9c?1f5n*cQA%uQdxYH?N&+m-a&_{T@16y%Ct{H=A z3nvl86c$_N5L_F6(b~EA93g#$rC>M#DwQaVo?Z3ZLA51Wn0zs33y9@se-?73SceJa zD&)=W+vGQ>(@i|{Y_wGIX&?|&m86h-?fb-6LChOiJ|0kn2VEe`d5nwN*St^HY9#V7 z>*Rp2!)_p}C((2ITvWz2nic-;X1PRvDuBWA|pNYis7nde~YXvGygEjz>K%sfjIk73M*CLK}i(E(QF|~m!OzCsKXr`|W(`$6Emy6~@ zWVWb9$SWhSlxht(_O}rzEGRSibuIS@%B2`wUO)pP_+e#Y;m6uSXt;c=oW?i-a2Wt^=igce(zmb#B?AtIr7KV)#s2`QR>T|i(u!NM^KB)m zVF*;Xfd!+~Yjk~{>M3(Iu@yq|#W zTG?f+E-1e7TdNXGcumER$lqz8!-zoQc#w%92$eXMYhedB(vyUB$DLYIr4D0RdJz{B z8(+P26w;N2a}W$6!W&2lEg@5B^3(XN_-r!N<7H@Ew+EPuAuG}i_Y<#rtqE2cNW&KM zmk@~|!EC?)E%UzfwJGc{R}N`pXKenfst&?`%m}Wk!ws^IVq065OF{~Oo}(2QaVMq z)2(#4ZwPVWEw)>6u(J)3Ibi%GPu;0FH=Dyc8!RmhITmW>$(b`@5)XK$jP2pl>T25k5F1o2j#4Qsh`Tz~% zjyeR|f6XA(<_ZJat> zZ4H2+ToP19_qZ1TdDkxu&UtP)_p?06P*AjMd89znl|PInO^mWt;joC*p1h-4syIFy1? zTS;$4EN#&J#U;m(>WYd|hX@S-uLxIZ>A5uQIs%Jf64C=;2La9C(%xogv{Kc}S`dV} z2mqBRYURYAFO?z@-vHmQaiIkBo2HD>KWbtUpVGOdBJk+e+{Z8oLlNr0i6K_f$J4R`s{*-KbeI7$ny zKv2mXw9bY{pOqZwl9rlM(1!p>ax!L-ea!9JqC(zvl;uMJ6b#NJ#O^*rZ$GUDRkPw!yd(miVfRGs(qgtGOtcWLYmzfugLCWON)B)46oOEvQ6)wUX+P>} zlBU^81gn-hD8{k?>;7sXV63&%+Fs&M->g=o;Nq0gTFekLC=fJ`y4rtg%;Q0np~V#m zBm@vaooD=3l@%$a!&$*Ics;CoeVMHIl`@4P3Ql(;DL~P|v>K=}@=BbLvJehnZ<2p+ z_gfnYhSX3jGQ+l+`f6=iUBm#eNEw|}ovoxF=Xx$~Rk-6}OK(idk(FJ(_O6IbO3qfn zKrtYb;RMI+^X*vqC74okEd~mUYRxh=6LDHG4=s3{s!W))n-SNh(@Vt9jG<-4n?W*3 zBU##Xj+L>Mm21f6a-Yl-lG}s(d}`8!IEATb$mD)9|9?Spwi@mj#Ls*ZVc_$%8j^fS*#E| zS@*q+orh|HAT|hc@tEG`dPdMdiY1x+ONv^{D^c1~m;moSbd+JCw;qy-KGezZn7otr zYgt?XAczno z5~=h4X^lJ(*&NPdz&S}0fDYeEOUeAhX$T2HU8E);MeVt&3XrCtrcTl?mOk%PhSsGJ zkdn2S8Oabfq6~z#jOkE85i5Xg_9m2trCOT+u6s$_r z>ZQ+mXT)YLpz@|;kfp+4$r)Pux)4atRG^b5_xRStDPW<{2uS|`(_!)W%_VNHoB&xdai7;w zS`@}~sV67^>P7YGNp+OM8w$>}8Sx!F`c*)-ab={~n}{dYeQAH1T9+vSa0rFo-gL#` z!cD=?Ae3zz&>VP#JLI+#dw=P*bS8v6IE4i&b9ColjJ2T7%}pA;%Ji6+xo z0}zG7nNn@K#o}!{RChDPr!2dyOdr3c8Wh?cl^MK%H3P4Djz&TiD$l8#3E!;Nj(f-~ zt{gVp^gZKx%Cv>50*V(CeXDcJaeg98UBdI$9~QjdYKCqTH0g z1dV|GspX#y#LNi?YMhhc&FuH`t<Y5-btwIn45d_gjEM?=zjcI!|fe9VbiSwYMrKqLH*+Jz`sOJQiS7d>8(Om9aK0-%wbZ!b_7P=f@w~3 z6!9fZm&J%(^3VIGvVgX^Wh0n@bdo`Ijk{Z4-i)9Da?%Me*N-v&0 z-Js9Pi9{%=Z4{*_Z8AavZUhsUj0CXOzCZ=+Hju)gOvNdlztRV zEh<}zvw_8BBoPMiVD|)ks0tFa${k*O$1&5rhLb|dv!w|HmBge7Iihr(0I0rc$U;U$ zn2CZSZQn{9s!E^&S9pbQ7lXL%Kr3q^0ZwE|u$eQs^Bua>F!Cf6qn2hS(2&Wwk)LB9BONMbKx~4bhcyHfZQ=)S@kSw1NGHVLDGDpi89MpJK?-{^ zOcF?yn2QMqwuYijvl4=fONCY)E#I!Rf1w#bk}lZ+Aa(f~EIG;&K+B&rc>4M6R3T^? zPzWTHtp)%(Wu`4EX-iLtg#Zg=*pJaYQ$I?yWqH+vpsol~t*ncmDUaHLOYjDu7SHJ^ zzlX1X@l0`$_8k+I5@3;Xqr3yBmwBK|nU+1F0H#WTIp%C?I-Yt0N_Hy943H+?lepf1 zf*^&1kbr%x=sJD;C?l220XfW-Mwxr}CXH?@5Zv;|F?#{8LJ8Nr&?Um8qc{O1Luycv zPz{Lr+qD2ME+J)0bC^BYG6>&m%f2CQ4uGU-V>uJ?{jEf$b5s_e zY1?Ip*E*-9i+oZMB@n1m;fQ4Jwwr zq$xl)l}H3CGLbgueD|VD%0qckcL?Q{&Cwf2&*MolSSShr*FY%0_G0}GpHsB~wUv1r zWw1d3Nhl^TZB&(_L2gil zN<@$+H}>zbv8W;_1_JY~U;;>3Ob~Y_J0GQ5)1MAfGp-1pTCEWP&gV}$JigHiNhM}P zWPm{1%GFMxX;B3(g4hR^L==KLc}IE>KFB+n5F07X3c-mQf;85l%p7qcAQNH%*RHyC z_*FYR!jqZ8JR>N9^Yb*uQO*Dr42u5o@dK}VC<$8BnL$We#I46HvIpuWs4Z>y@~DLn zQbv=fsPm?wlL#U*8xyHJ0y@O?iWMv^v_^IKvYhIX16lIzL1Cn{q$tAM1m8=YHP`9V zfM-!Y?n$vC40QQU+tFqPwWy>PrgQba!($a{amN}d<_mx&dJt?ps3p(16s2h%k-|Nbq=m9eT#*maNK7WF|=` zmoPy(%$xPSMPCc|SwfUD8TX1vh#QT+)n`;CwZK?x5K@H$@Ey%R5b$Xv$^&4G$~TeM zq)leTkQ-Bwuq;Ri-n`$XbH7hd6MBq_aSk}Jl$2j8k($PCZ}Oz71R-h6S8-^b^{C6X z&X5R#sJ6W+2?X3_I#}L4JuCD70LZ@Ip#Cgt!!pt(u?|d=9vjTan^v}#hybYa!73_9 zJ`!|+_q`_!fthGdY~+wjWRNYOr?#abP>>@+TQW7Yb=JO5Pq)KEZ04{^G8ZJYp=pi1 z2AbA{cru345tG>_1ZaEt(%8fD)V!uv43vdjje$LTR<*)iU6v3WkTSy5HuRd|YrKFN zoMrh;9F3t9I{6CR`dR8u8I0mKH^A}!-RG_9Ph!P!Ux z-XJ#f+r2=}c9EG`HAx6m6@L}e$sR6S%qyC6kcE;-22Ps)0J=ijE~Ls(MY98IS75@D zLP%|Sr<$=5BkM|AO{E|Vt%MVoIJ&<2)y~m*aTd~&k_t%&LVgw>Dvsd_RxisSW;cs< zHPl8I+5ip6h#h-%>uMBX!V{fAAqzey2m}Kcy~&_WW=Ns5o!6=c_$pqidumg{o$z6{(8`@r7qw|CtZi7 zbeDuh!d3{b`lTqF+U#fger*l!X5PE%t91Ap$Pk&H0pBoeXuu77%s1q1~oq_1IHODb__ zlqI>9LPXwn=nXYk67AqQB&u~DL$BXTo6@n&LNbstsbq}V7BB1drlFvK4ouCUTxJ3% z=f0KGZvqzZl&C2hEgz^x=B#0mN)%8Jh=(l^{%bEykLI7Bs5G^0g5NF#GgsehmI2VK7v&neGSV|BA(j~(NOr10ybsR@6 z>jeS;Q`O zl$*rSvdVqplGr2yqI4UIdssJel!Z?+5+_LMT3NuQNkYNM+O7~UAa7B6T#R9|wq)iG z0t%8uOqhy$Z789&7T^mLmPx+Rw|d;1B7=mbKsI(ay!Y*Yl{u^$98pq>VnCD$16={s zdQ@Jcq~(t%iy+M)k#Hc5!TI{rTfvN@J1R0yjF~|_K*3>;1Gxx(^IgIT550! zSxVMavCPV+39yqhKM_5}bdiQUve79qY*(s`;SfNUKnQK!fJ)BgY_rj#KBqg1woVchS%YGsW95xH3!dHGWrKzXDW zAeQf;vUd8!ZYpn0@nT_@IcP#c7924MFctUHwOY`HF3M8lQoAiXk~`NyIAug7r8Z)~ zh$b|H_q}LW4pQBc*l?z0QzmtQI`_ZrS>)dkvfFEEZU9PRPwC7yjgF_`TM&ghvZT+u zl$_Dp!XsJu)kGQhq1tTz|Ub%tI?>L^qvlQOye=!HD?5@4mIAI3kyVISF!N2onRQzgVr9HiM|T zfDnVrE3_R*`074YsiZnmgp%FB8AK8jpwdY7ti3lF)Z2XL3Q(nxOc;)2>Mfwxx17_k zInu1DOgKW!x8f1J^}Op{EItuRWzf9KT-XpUCt!Uir7<`_rbtOsWD=54nu6MTK zST+>da5~akB>sfS>8_%8@~*2`Tdcjyb!q?=x3p-VBWvpvSY~o51-7||SqE7Fk|z6n z_M&wKT(pIcXm&YsC!pVPxVh2)TiJ=VIPZ=7JXRlnF>8 z$7r^lI_*=cj(hlFlQV7?G6)DF2?xu4JcV)Bg&gz(RJpaL;OYK)_N}~0_X1mU4!}am z333(ZBHQ2VHJR4kz_BO=r+Jnjl1ym>rnNS`9P-ZVZnpMiCPQX&O|5zTzI4_QzzqaC zlCl9vjHt>@pdH6wTC6@7Dwg|z7XJXLbCN$uG3V2*tGUCNV+PkZ5DFByn`O?mb@*2v z`p2V~(8dkaVTL8~EGVoNLGS>2p10S|v#SF8FFA*A{_)b-Y`6@_?0aZ+uCv&TL)dJ} z!z&Ql2?5mI1kHep7`^nh3OTq;KQ+~qIDh=ztAz=&4UO`g*c!PXX(8tVASS3KBWe*$->J;h$) z2~fm1Tf;g5NMy+d3=i1(O=DV?wKj&D%-Z2W-+FtVv87fgE3S@v%{bx~7{fZ?OJow1 zWz>@wF>CtQI~4N_oJtU&v6cdiT%BjHYuBj5{uOf<531a|aH> zBl7Nq6gCtFVn_-wNs;R{KTMrZ!xjgJJoXt%Mr0I`nb!@Bj)P4M9jjxQye0u)4DZ1u zN|_2j+ixn-jN%-?ws4`q+5VysV5A)!m!fl_ugY1a2br>A0pZgW;QPOtM^eD3A#- zH7BU7_%0wzp$cvvaXhwzRwv7_s&VtSdW%*K%w`alRIE9Wkv1gt>?>Xu@cK~D7^p!< zvS}mwf((+O_IlOeFm9oxqY(LENCTE`t^P4Lt#0Em>LHb=AxPI-kLI>K_TQ*tuq?96 zN?s3|Pz!A>Nq|V54^90l@Ywa>m_{8gg4=1HTPex`?tV9|7|t{?>1~`M3^ts^sWM58 zIs;dN{4tE;sa`4PWUSe_5u225}OOE>g048i-62&}x7?iYx>XxEG*cET-*0Nz7 zdG{p*Hu0DQg&ebRN!Ne(UYiH_O|-CId?k`dX)S{yJ9e&%oHGE%1#3dn%*+6t$4=GK zac|q7pEJ~PFgR=>OL&e+y_>`+ABRo!qQWp(kR0ipz-M_*J@s?kAqpU=*Oo zhS#>I?AB%cy3YB`j7a3P+g!H``F+_EdtcMax(LFp=Nk{O5P)QqB+Tqgk2+)6o*O7b zZ7U917lCgfNN4d5A%<3Ptp(>fLdd^KJ#Hem)MvZ&f9Ekcb~!1-^4n}hn~=FWo|W6f zV%d47)VB*wd(N5PsXxVe5BYps!MAa)6fy4QMu|N>mA!mV1m+eTS1GuJpqm+wpK7Vn zFBOCF4jUQ8OXH^sf=baG0(ah(aInuil9SjqmlZaQ6~@#yL1;!V84h zNdvc2@~Q+v(*$3VT3c)ha711eG8F2;Z&eu9Td26>k*E8E+#_Ws&UUf!C&$j-T+P z@cta9fOZ&Zt=1r{lO)G^J?ij}Gl#{4g#o-G?vpnl&V>Heg*bdd$T*C|PlYl>`E?Z5 zo&4Le1-A@@$oH!?em}N;H^o$G^T4_JcX~uBI zmcxxL#Q-jmmi~iME0%;F7zz$$wghtXTpFLXNi);BtWylK;tGc^Q*6cuPW|_0B#=r#^A_Iq&|?yw7TClz$%Pm^#EC!p^cMP8H;O#0Rw-#p z@*z!v9Gx~Idyj`&=((ffc+4;5!&p`v)*N&gIriQ*_!`W{6}0$5Q!bMT{?Z1j+o_(F2g%zU?06fgG0Ny~*k$UN^l{AI63Il3MPbs)oY1;Pqbvn^ZZibRD?x?78?v>5w ztPj0v-es47ONvU|MCB+<2$8wVgHdreQJfH1|1cN(>Q{r>NiWY6N32F5zDcEeL(kKsgl$m#`mk^rPX-^8@K{ zr$`1xjNe^+%{fl34vbD6Ew?Ee+$8quHR(@foH|zF#R-sv%0Pfk`~sRWzm3SGp_d3* zTWW9v3B7@yv#qI&@l`h2CB%maBf)FTpGorGxtNAISe1s%G_XcXtHp7yqIEQkN)QO= z2Loc@PJ$#GYxSyN7(4{zsV5uU|H`{LAYqK?F4YLfgw5bp-Mbaj89nYO+ciV!eO~JC= zuvWxhTL_xyH~3)~OgYA-#B$Um&A>#9_A+9Yv@qk25RyTF8gxYTC#U$Wm-NJa&SQ9d zJ4;h*Da;mZOz2gxm?AW&j5Echm8CfXw3{2~V_gZRIP!4JCAGASg+M_dl@0HxI`!7E zyN*^NXAgu?Q&K`!mWYuy*HZ$u7}nxh;rypDbC8Z`WonWmLO--?6W03IHwx=GmvX7+ z96|AOQfEUp1b3f9Pj{BJIA3!)3HEKHx1H}kde#i7=0Uhh2}%hGDowAX>uRY1;fh=4 z1t;?@sWy`wvo`epMH@2UQ^*N%#}G_vQ?$l|SQMNyUCHe~D6WO1C-ZQH;pj4oc0El-P$iNb5S*hSA8xhE!c)vYt|q z&;|*ZR#I=Sn%vi>;y7*`&K0(sNyI+s0IbS`QQvZ8eCvXl$3BNKM83A%%u)mhBU#*U zQ>e)5Q0q|%N>V`1EJ!=v=jGC)43g3jhfMo8S1m9BkVq4+TlKESGn@(@8hERphhfqXz(|v#qB59~sJYkaTdQc`{I^_eeq)x?iW(pgQxl*T zJqMk1Q;%zhClSbCkQ+F1hdfA769fp>Zhb2z8-ujAkn+lbSDohsGJ;n<)88))m-J4+D$AG2&M}3gos0*BYK@_JSn#qr)4yrcn_G^=_AT3k%-3(z=7=uDI_;@(&Eu-_kW9VoQ@*D$f19iZ9xzZ zp(IaT_pc<30K;Kiabd-w#Q=Z^9Ls}#lcja$@7WcCS~DRo6q`bGfH{aa%{_0WcJSOm z7(7}VX~;Q*+cr`)BdE8=xcKZSg_a3K0$k4kIG%&kr%9$^lK%kYQ2Sm2yJ-c#ISGU8f{^;VlZv1G0IKM zi+}7a493;waVv8j#a5Pr+Y59C%Sz0Kf$;gpzdd5TOStzP!7cPHrW;plm3an4()4$QRS3nHIe(n$Hp8_*7z0+mAF>3L3kDLGedHdsk7n z7~ni>1~Jd&Lvoi}Xv);P5KnQ|k^cY~j7~3zmJ(5iX+gyjKc;5HDn049YRz6a7=(tL z4Y!j5g`kjuIl=mqBT3RJuOx9^A;T1=O517!jj3FzBIZwj<67)8(lNYq0PZK2(_k5c zn#O(Yt-Sf`T5wnvI9C#55r;$ArZX)mal;5vn-q{>01l@0zDs%RZ{dte*mDz&oGS`- zPM|n)EmLR--oQy0GeO3<5W}Mi@x!HPaIRTwm~sK}6E}@-+P&`|XkuAIDPJ+XF#ek= z(R&3b={L1-cz*+0F$ltOhs#JuFpvSzL_zJO_Z0F>zP-HuGnd4;&KYoHmo0sc%rzVLf=xK$A=IdLycS!Xp^}SuGQVbBw>?>b&N7wZ=M_~U-dEz zYc>!?tD*k@3^5G4-WjjX99AQn&LjT-5s4rjceRhgo=SQA9|*+pTpOkI05Hl7rA?WA zu&csT69kK%lSalFyjS7;YdEzb*IFPj;?__bSXYh!yxt_*^ILGG&%^vz9D?`eR>S4B zW+5R$MboyH`EN@JV->`4i&VN@Qk`#@a)1e#1N(ZJ`WoFsSK!P)=kS=UE-A#dhjEgj za6(p-XJl*BwQ)GAaG(7m;&`kY+r+zuC=9su(4Ytrdngc1t7j6xxX&8H!2G@q;u5Dq za)ps%EvifnuhM}$EMc(^;S%>T1wlg+6bS|-5Pk!tqN-oYFs?0wXC3%c2aJ%8GG1^w zBo1g&reHzXdG>)^{7xqs#s2^g6>|AU0UwwSkQbO7w%t~n{H-4WTJYu8 z%F0}Dl@$K~>Jni(-gVZMhx|V4?_rw@LkPyQ=u*it-~{xv`R`pPOvjmeF!(Go)Z!a# zH|=xyicnw$Tc^)hu9q9ZJBs0aF?e=M3wUL1<)oa(VCMe-)W9>OlXw;BzYF4cHXrcv zFc09)J#LWGh;ykjbHE|=5;jRkl~(*13sbiHv~W&Cy!@cbEd#xU+?XtJ3^lWeyARvo9#yPQh^ zfyUj(sU^%_5TUmjb+Slo7zPE20A705hIoMBJVS~(gu@IzLV4NAamK+HB}3f;W3Nit z(s9SeaK$#h9;KlTBZ(_BxPDrJVZcgOnG+Yhi;-b!4lBa3JUbe~xSGE@X_S6@IZITovWX!0W z{{U!{we3~r&ljBH7y>akY-$>74}@s4(Jg~y6YSibhG?HkZZm@6aQsIR#c?eLk<6T4 z6`y2?Du@b9kY*L@wQk_(#i1C?9z3gttPI?i!R8Y(uoVOnn}|Ak(O~#{Sbie##fKcj zJe6}4@fjOCz!sed+QzrdmzOJwx~@OL1_WWz&A_`YVq0h+74H&!K){LKcZ$HS8^juA zyl8LpICmTkJ_2MVWI!qc@vgi1iuPPLhW`M{Vul$3MQsqtIzVflqAXe5B*W5yIs#1dn)X-;zhzAJ@NF*uWg z#5U5JNk}VO&U8_j7P&XD9R)vx@T6jRV%ZHdhs3F0)^r6rml8x=#EtDFO>dJgEran6 z6M*9Rf0G!@W3cZz)Z_vHf}3VhHyZ)8YgjP&MtIY>N1j@oe7L1DIbb2e04QeiB$1mj z(hcujb@23KIA$d-CB~m1mmBw;WUJggL}iZP=qrbS#vl1M1~e^eT0&*BcT+KR=ubnX z`&CYv;yg;Rc-$+9e;lXW{*rJQMU_INYT*;N!^*dC?g5Br28K|iaOc+IacRROm95Zh zyu_0l>Uzv{XBE%Dc#{}WiB27dB~CgaYb(nLCh>D=6X<5Mw2VV4!eP_S#=h_VK@Bvb zqZcRj0A|NeD&HhvUg5Y-3B(Kdu&i4SI!kRk@ADvzT8HWaP516AknS1YJ&J!3hDIL; zf^AkqQO*+pNFESuB>bz=KlmtNac2|6c!0-0A;+2uCA7E%0+23bYqZ5;#bNQ-9Ailh zs|$yHNgl}}7cfd^r%*)J&c8{>i~KUKB;#)|Ls*vDZzo3WMH0%C5S#vtDHbGs9HaItB`;#q$W!_dPGGE4`=7SXBjkzzq4LBGbi zU;Q7)Dd!Q&a}Wz<#}>5`xR{U*l1%ostLQ)Q?tUQ0mzRhQBb5npvz|(3NB*R2oy5&- z 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%0AegaJ6PIzgaL8o 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

    h-pf3KHn>?!8>S~yv8Ned-v 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%0A@sQrj&eJ@S@$uIF?*MZ7ruVoH79$^hmXB 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 z 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%0DXDlIBsCL~CU*)_*54(4+&>C5KHU_U|aRJ9z5 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

    Z-){c^S){nj$OkM)f?&Wm zl6&n`CLShEC3&)d(#n>rL9XV3kfJv92Vx6l00M)o2Q?Y{3#Jsyj#w;GRQ@SM1HGH&tCni@X1PIQ=2FLH3^C9(zGEBEk!v7 zLL$oXk^SAZ_*Q40Nmxt;xt8SK2cFZt2DfpzW>ggNf#yO~GTz<#hyvQlq+zi+mnqB; z1OTEm{ly36*0j!5Ey64avTxqrb)yZ!i)&ikbs!5U$=6~#Ypp#q+ogl$1-d0EG89|5 z3Rc(CznwetA%+lu0K}-QohQ@wi&}-oaO|`Q$mA1a;wJY7mi8gX85o76I^t}hF>KvV zx@-q(K_#DRI+ZpV71t@m3(!^vzZA#jrf z`t5(a*3`UzC|pJytpwe`H4*jH^r*(^?(lWBgJ9yyc}|27Wa@T3JgRbVjV*ozg#iF9 zQM?}xo}2lahX(o<(@rbE8!9cI63wm>G$dQ)HF$0g^Z0PQK}kUXE14jP*njf3t#huL zVzCaR2pA2Q+i*&UyEmH=c>C#H94g9~4XwFYKpeR3?-9~s;SORs z;V}&%1inLJVBN1EG_|Xj!0~9|uc){h$gl#EJSZaeI>Cdc-n9P!%VS=7{#wX&ZV7m( zr4u_w(Q4;n<#c#+;}MH#oJ)j)E{24g5J2o?-?cZ3EV#aA9kgLwCzcxo_=0wkv|R03 zcp{UAcNj}$_XT3iiT28x)Lo1QyWD^i%i7IW>fy;s71A9i=c8IQyAMlz#D~WT6V-S}Ih!h(GwfgJ(^{iizXM^HhExK3D zaS94USz=Gi_NZjDTX<&$#$sGsNy?TM&;TrgNe0AqF>mIZiQ$Z370G?%I_qv`bC|E{ zh_aL0_^y(;!mzk*b7^V8IeA!u0>SeW2VUCO8x@ah8N^z7r56g?CD2AwsfgGQo%A#% zwz?cI1cq?VI1*T1S>`O2tukya-t_bNpUVU(P6u$%dBllX(24&5K-WJ8@-Y}xI6{S% z6dOFGDFDpo?fX|ft}ym95LA}(A;3r}5K|Z5uDb7P%x-OWhYe+Th2mTa#ki3lmnrZI z6PwEQ)ZyF-Ny4KR>Wc^s#9H_LK2xN0r*M{B#2gbmKbGR$$Q*Qu%3|b$ZnxS+bP>V^ z9n5Q(j7i0|p9_d^fPfM;n-i>hQgi9cuG|bS4sCdV+bt-U00C}aFb3X0+tk;iz_EtI zVcdHg{{VB4^7%~|C0DmgTzQJ-W4{n{QHK}=r#NmD<4J&&4N6IqZ6-IN!M^Fp+bJ)) zQwn&Dvc7<6I$pH9W4DX^RHSfasR67yPqPjW5fFOK#=Sdrt`7>wvbTm-k%+{CNd$mV zd%?fPt?mvmGVc^uHL>DQWRP^d&V$OaVDXJJ`HYRD3|5faYG?%ly?yNsfb#XFIp$}l z(OKc_mIo5Yz6unqt+1VBj@C8jn#WEh)V8?87YKtX(gYLfbNo`+!oS3d7mImefI%=I zq!=KNy(db?#@5amXb8k4uWm^`GBpwFW4E0xbLXFU((J9*5c1NtvZRpQk}t1uuc#Ef zPv!$fmdkCe7Cs@T_W(5~{njiG8&Od)%q}X;xRRg;Ks(o0h~h>)w$_!SI%QBaL5)e+ z>wfhPmRVSk*x}qw^u5bpDni5wJq0iZZI7HwuNQow*H~28)6mfW!m6Ur%xq{c+p8i$m z_`eE6+-DYC<)aMRr9metQQStR*Ym9$SB-H@Gp-(bmIO9j%m7h6wmws(a2ds^7>5-3 zQ6%_g_LBi8d+R-GZe|=#x60O*FnC6sTc~Ke0uti3_{Y<6dgys1QnZDNwn*)Q%M(kzy8-D z-VSj5T|uNAW8i@R5?dRK+=rKZ;)sD_$A$pxzCFEH@zU zGpXyf_N3ym%6kag83|~+E-N$;FJN@-IhS5b%1RhQ70dRCG5`^2{i{X~hP%YEC^%M7#u*68Aj%Aj z!99Gcb5*i07sjy|ht`IGZz6e8Nl*i%Z9mO(+sD0%WU{oWc#t3|(Fi~~p2YXK71ve` z)su#04S<7~A!^V~@4ol`DF{;dQ|`BiNOY`7QAhxjyl823mVOwp+#eT+4zCvBY=7c$ zLnu_@#>gK5RRn83jOY4&8>-&%^<)4}ij97zyR&mmurs{MVH{QLHFi*vG(ZPDoYF zw-i*DuWb)68^p1$7cmZ$C=jAkWZuf|I(ZrtBM;6ksl)^QgG*PHN8%ST_@%Lg&a@Ct zKz-R7TkiGU!~Pq^@Z2xw-~Ogp3?lcKlQsjle=4Q*&V9BiEg|yTX&kczuPiK`!5_s2 zF$h}IkSU>?Dp1;TdCBXy!nI*|Q^mo|N|%+fn3Y71fa(sG?b@{=+%qraY$5mK#@dMh z5pXxYwNg3Wr{KOF_*ec!y6dSpOgUCY?FMy->E~R&F5^5G5VjaebxVR)@}Ps#yBLlo zipD9nu%%6*ZGcup$?fpgpMd-ljvD)J<5SE*Nh(T)Y^K)(fA?F7^3Q!&nr9P^;|{i8 zE^?gIkr{T9KKfRN_!IcdODcO2;T|9sGX(4tn{i#NP8%Qvpr-&)N?9QNf{vC2L1QFdF(a~lwjW_#I0zyR3CWsDcE_}oz02IW6*{YvKx>PNeBa31oZC{ zNpUxs-`i&xYX|xDt+b#70u2!>0%dLsxOqs4DIO{{S5*>pxDO4-D2D4%DOb3tWP+sU+(* z_#c%XCB_;;G0e1*8!}u8015B!@ho?^~;9@W4iL7Ri>K9$16I&sU+$t4-!^1zw>yPEE= z3UH0Pg~~a3vnj`XAv=TdwQslvYsBL{?DCx}0t@TujZ<4tX0ww1M) zh8f^8oI7aFl3=8r?t9HK$FBG2wsGaQy8BD5`;E@L?OLW zHvpYPeNA%l+*P(u`U#1sE`DMBqjoU<9)qrb{83kYlU+Vfa=-?8)(=Kz&$iK+PRp8VcA=4vF%_P6Jj=y zI!|7jRlkc`@a?fOw4?@+mO+DiZ5s>gMOm!N#JR-XYayADFaTJaUto6Mr2}|uKMKRR zr4*OKq>=#jCvi$Vb@=6=A<=iM8>mC~h_AIT;Le6!WAV?*1 zp|{S|>@u*;G#hXNuhgwiudS!}reX2lmU(!EG(kQdWajbS{eV4dQg;Q%v4(YNv9zcp ze8{9JS)x z%8(HtqHR4)5nvjo| zE(sIXXVSRXzB1EDS!q!UDkC?IM^hx)J5^%%&pDf zRFN0u+VQD6$MdCOPBF|nP|Hn$4#_K2g!G>AQw)V-o?kaIAtx{*Nj^tQ+O;y#4Ly3g9B$#k$G=b~C zr7h;2W#+h{UZ8gi_OFnIdun({ZQ=PdelA6r3`{OHxUX z7DT`%O~$sr?N|1b6~*7gtTM@kfBm#zziPA`FhZ{VQxy=ZOW9mKqJA0tqUJ9ly5r?^y9ztV_w{ z=230Pk!=mc-$@>QDXd^HcxJheg??a&Yy)G^U)FlwvT+V5ti?&?g4u;A0X-*9ohxEp zo*Rd20=AyUi#8;4FUwzO(_8KzY@S}~6_66%(~ zN<>`2Pj5miGdM)^OKrm4KKCzf&~=&HKrcxXSrv-`OK|26m1gFMvtx1IBDxqhvLl?K zkS@TeWf81^Hndu_U^sFx%W+P%%niV@Y)4RM?&7N&@L|%q9My@+fC2@z^{Z1(8xmf2 zN&yLysk}hfdw)IXxP$KE+FvonI80>(k0?I~u0j^}B&{q+kFI_p^%2<9lMNf+>cy4cqv4i<)p zea#diLDC8Dp!n89gn3OQwiTQR35Z!HWcELHtdFcRgasupx+NgRfgQ))_pYC5YsWm7 zUC2qy*Z|Fly^|uq{{R(<)u{(E1iDj{W)mGxZj|Ohd>sN8u@V4*KgDVoW^lNXoEegG z00a@Z>3Ak|=~o98hD$EEw@TKMm~9I%NB-TbMj5Azhn}}NZf*tRZFZ3Z{MS*2o?a*^ zZps{k1f4aR-amTJiOR`Z+(<8zDLRDqBT?JRw?RD6VeE{yg{}vQ!C`C3?KDcx;yeze z_tZfR=7ZM9r++$9-WjtjmhB`ocQ@1FRL(Q;h7-w~6-3_Gkyj zH6#B<2}*-tT6QO)k=C8Wc%eQwN}Q1jBv{S;--TttvbDE!1!@-{!kkxXg~7KNG^ntKFk#OBl+v)Sooe1En;y9Kp-JSFh_!V{q0@S)*X^C>4(ArQnM>A zai~;$qsqBldyFp@OO7ohk_JY^A|r9>=W5w>u4Bxtw}Dw9AP)f=9-qxx_>g585ZO(v zwOxHJ{MIGn66%tX2njJFXYc1scM#irfS3qUu2XUItHh>P@d_>i0tkzXfw!$1@Ncz< z{JP|>AjYxRwQj>Kx=?`7Y-Z+o%yy;XIFM6|Ed?Vss++Dg5!!(8*cCd0F$v|jGZUwu z-%13sj1Dof;7a7o8+?BCrG9W>i7L%079>ec`tL|($FYv)SBM`EG0U5d{{VKTA-U4q z*oBoyXe%&D5@)q>TvJEDnmejC`Q~{Mq5)4|#u<;Ce#GeoZkPP0@YJ~+XhgN{y zsKOeYr|u?WVocD=8@k0sPmUrx3Z`JNzQ^T_i79l z46>rE!Ns?vOsCGP82HL4pYVw1GgpKPA*9^{EF_CP$sNsl}gz!zBoF5aH#h zK}k>mPfAOJ^ml49Az1Wg%*Ui3H8iKWfwq42IC_d5Kw= zwugGx`Q+kI5|T0jl_nxO0lfLw9p!-P0V=)iY3hCy_OOpFl3b93{r3L=HMV})r{Zx1 z*V=88R#D-J*ZkJ31{pYK*1S;Vp|db!rHA>fcx*G6ciLWlF+N?WIl*8jH@S5M%z1U1q$$S|f})h5Eb9b> zR%fvxl=xyz)H_z-drc`0lCY~<28YO1qEwVD>oP|3)QzcFM01t`8&@!i8$lja)HYJH z;xIvoz0X?EYjp|3qn4-|8P+!a?Mvl_=kVm(PTR!qOhy?ic$~=qMBXRLrXlq;bT&u^ z0ag1)Y9x$HYQlsC1t7p02^!XPq%7u6X-1=4^_tX_{$Q-UppXOtPu{eQN|G8WOh7h? zxD`<~Otgy^1d?MU>U&Xh3IsO*z!Ex*sbOkc8O?%cXtzQ9)O6$|B|w5Rc&+RE*0CE} zpHqujf<{sfoj-a@*kF+W9WOp#Dkh4S5QKnwkYm=3ScNDyrvlQmWZE-!5m)pwWH|~* z1!qY*8qbDmJ(VOSIZWKe{U}fr%1ns*iU*a-Qp~6UqB@`Al&6&Ef;=50K%|M&F%AGjX(k4T zsjTFc%7IXxwQnpeW-67FCPdQn1cZ<_+PX-}W^k#}VwRPR{w=mNvnne{Bu0jToXS2J z9)GoLh}NKxToy5;4d_>wHdA5x$uv3P9ueW9k>Y8**`{^!A3ADXbuPn%NJWqU0Xqo;a3e}y z9SX#+D}2FumWVspl6If1ew*9ynFo<5ZV)C{GP~vg#E8((l>yC%Y0D|a<^i?2c^X^4 zZC`w&GB2=qiYi>Fd z@}g1$S22-CG`KSJ2Gdr6fCGeb2n8wwM35#x>Go={#KH>SlI63N0!6+@xwZPylnX$d z$#3$Hj8(rsHuglm>KFm0sgxGv)DQQBTgp+WV$pS!| z4?R6;jx8v3Eon=Qq<}+Y!fmM|&i2-UYeHCCgpjiUsJH|rz4Yp8`A(#im7^e3Km>%2 z-KO*WQq`5FdBwFyydfkDo}Qm7wV-m#DpD5^rID|Y?Y*>tG*N>iXmqbOKw%&%N=$1# ze`8aaQ;1#D%R+#>LT&S*X|RPY2?Y(2WE8+$`SiJ~bz$5)ZG{(_Oyvqp6LTNy%84ws z46bsJWECXdb+`WjvrTzOQ)^PxTuMi>1ZZbcHn(2WOG#UfuQ~=mlIp#ruR(LuK~GPO zEr&9pup}D=-)QpQiUJThxt4j0Fbc`>&XMv@r3%lm3PxpwK=2Pg4r#qar7bkDtm_6u z6@Bj>wHC^gBq~;b2>^l$J5K#PsF5yKGjmW&gq(yF-&;qK9~!LrNGVd3OoXWkf(g8y zn*6Ffhg)ca2yDSoB2c0Z#$tYTZzQ3_KrIpkAMQ-r+ifGtg4yK(p+XQ#fDv#siPVb< z7MGc)8YvDwn})@t^qn^!W~1qCvf(q!gOSDW10fNUQ>BljUV?!_-X#a~ za-gh^2#`Sj2&I)a>SP3!gDNsW>?dzt)o(q@W=c|6T#{5|9i}X8tZfx|cTOFbB$bUp z=53|VT?q4`f_c)3Qh{2s<-LR*Al^FpiVWc{p9+WuCg}&ciw>U(G%PZ?OG(A|wv9#k6y-M3%r$E17i8 z#P4JGrAP=!T9l6%oarzioqJy0=79)cpdjX1Ssg~~vDdvvorA@n<0@k?+pYA&9J{17gg0O%J9FGtp@g@kJ6fJ-8P-JY8 zWCSRJvEmt`MEYsxQEFP3%q4FG5uV^4$DkKK#ahZBfVDwPCPtEUfw_vXD~AJte7v6X zVbd|toxMj&r6{z#`DI{$Le5a)&hh*FswHseH2^lgV7{nIHNVeJ^v+pyF2o=}b2303 z40f0!wF0x0DZ-$j=~3`R0owLu$?t3fn-GfZ>@jb3Nm=EFs8RNlb&8!r|}; z7K7!mq~tZP3P@;>R#tVB zp%J%g7%rJf3o1EoE@T_dRKQa$ly%~V!1ULcCv>~|}!AoTy z1Z2aALe{bhk`QKQ(dpNEHL~(s=8>PAU}j8#<>za88gJ=w0kt-^)s;d;j6f6nZAP=C zCD4I&q>!fEZr&{cF`=DioP~oqR9ldhOalx0kvr1S%SJ?&(%Lmva87x*r2X$!aLCBo zTxNNffT_)E!SwVoMn#p_tz`>FSPi0Nh}03RDuuksad4q>2qX1cP5$?)N)WV%Cy}DE z7zFhFhn+R-I*WN>2pfsHn;VUHt~Jx2R{)ku+6l@5P|+zPG-wFvbEj&uM>i5bFsBOQ z2n5VT`NqesM689l(o6+{T!lu$JBhVD1R)L_LR(03#h{#|L70z)x>UUkScC+y9Lkpw zn#t5#OMUNLzDg9~2yCoqBXP0qUEEZFIqQ7T@!La zaUgrQ-o6)4(r~_BL_rodBp8@C^6y##h)gs|22U+Sl9AM!LO-dQw8=_INk0pG?M6r` zXooMCVFCt*eJhQ6BU&8g!BS2`?`04b_w%7a2u%1SjLO^}q#oU>k+4u(VCsRn*!k2> zMKF$HJOLzHb?ZBMR|@S9YbtM;jPMl)`h%$^w4u!7Hhna3+zmf!$eBZJ!HGP>39`C@ z=hwYG2?#e|EwzwTA`EmI*DD>PYfk{s36C0JZ!m4-JN;?A#1s;9WY)&SbUW)=P~rnf zY*}VbQTn3tI>+-`8C!)xDOn*0I3*&($m^!H#>Ys~%E<|kxFa^ZY5?;Qe%-5EWGJ_k zq%4vX-1htJSd$H1SsN31Bo8SSw+@9TAOv%Am|n04P(0$(T&t`xr52wF%t!<(0FfJ* z`W>r7Eud#gL^mW@>E?Gj{AQ5C%JY?>abN*CR(eF*2Gyyh7SvF5(%%07l$zDhI});Rn9nRRWfU5)zcG0zv|A zAn!#5?5?u3stgHnZHb)-J-T_5ylM2`T5=YGm@3XeB`!u==psMPn^!usvnm2ZNpQ#{wgB9V9Vc&<0+5B5TZ=DS zL|=IKO^NMHQqr_Glz@pK08D|@{C4kD(_z?J;lPq%WI{VccaaC-SP3ILS&CaB8U!5$ zy6v>?YkM;YQ3E+LKtAk6tUR^Wx$Nd-g*1>nGC_;Z@${{n)H4OOEyNQdWP&F9f=<6W z%BNKvoUTpaST?-C`E=BJigSuWi9(jV<^qVk9R+h!W`In$%hWglwfs76BKt)*Nd)L4Ad8--)2%|Fy{1y))edE|V#is7+e>*< z8+AP27IFz2Sat9Ge5)%eD_WAG5Hkr*e8nIMkUE-v1?5MK@`;dR;}`3#8q(1#br}p~ z5z9Io=?775I?%2jSV=1gSc{vKZxNwCwH_F$Xq2{)va2I~V?n4Fy#ZcZXG<9rJR95T z^QZ(I8Tp6_$#E_N?%L7VN0nMq87@N7wF{7h#Dk$H%RHkeQ*K#jg1T89zM$b2pWH;@gw*FA2jCD2qs z2HEYm>Wk|UL(Edj^$N?BWe{gsp1ps1tY$QRVB$c`Lf4iQa*K_oEGSiu<|PFRon(~6 z8IMu^DQ%%3<~bwYHW!dSCu+*@&xTUcmlj}v9f6d|)2+VmTa6|4-u_8l~*wB~eVLWBYmpc64VOw<6NqdQ;_3E#!0-h0+`DYq7k`9cW^BodH8-Z%dM zHK4I6J_IF4JAeIBA|}Se&#A0fm2*j3aN-muKpq*nBx$IhDq_~PCON7>2?`-{K=SA` z^0g`ElH>)U5Drx=jePbNin!-lii1bSP+Uj}8O5)7kF3zCl;$BxAjuHel9L)t>CjOr z!^$!gw;T3_W=-cAX%CX3-cX+q_kpn+TkiFIH-)>2 z<|Ua6Ad(mmWilPC+spK#&Y|(zIaK;@U2)<(Rot+f4`~r`Ea%_;fbI zZIHAelbyY9skkSvmbB-&ICx5yROKL4ibsX20 z;B0dMkm2zyHaqEUXUd=nQV`)<33LD;EDdK)-6En=u6B12AP_(bumo@MG^MHJHXBMr zAOJFn<&t&2lYM&D<}k(_{Y8|ZxLn8y&x0a06a_aIF5k@wb%iHyW8=rWbYi$sEA z+v~lwt{)lWX9^rr$XK)jZQ9#J+MmWaniy%ttz@o2%@zy#9-7|1bHsRxv2VhZVX@%_ zN9Psj_v?&oX1%~t1Yu)ff23bOZxV!}1O@Xy^`M8pLPsQEp`+II11Qit$TrquAHtu~Z z(Qu-qmAVc@BmfNUu|H0==J*o}$6`<$NdOrsne+p5Uh56Q(}Q6uN&*IGA$xSW*1kV~ zZ*Ipw8H;h0goPEfNFh0N-{o^kz@^nYa!Dc-5)6|){V!SZ&4e#FN~b9ehX#gpzwcTZ zOa|1n60mQ10Bd8pzLm{wXhFoOpwg1GTefl1`uYC=73nx<3g#uHB_y^yKhzgH{C<_q zz^6NT))0qmBYk>oFJ9w@;n9&7jIv5Hzz0kG>ZI3?<@r2*oemU$$}$*0F*B#3>(kPi z#FpCT5&{^EZ7n#ofKW_;MwYAR zly%W~Oj%p2MnL0$07)@ERQHsp8ySEzX!?rIm_y4}syz(PTGfV(LK}v{(gbTDS4ihs z)rVRDDNTXYnIKUim2*a7RJSZav>4X9D+f6#NhA+&iM?h<8RmRPG#$bE{OfU==aeaHqPGe^b^aCqK4j5;$6p)fUtBCmfm|sdH(>!7$+S{5Z%xc zVX|TeruEOSrSqEMjwZ?rrWKgVr5CPS*gW`W8vbymuX_%~8T2O+b+CAKeBHKpPcpero?H_o8GL=}s zC(4_L!YS7Y3X(`rCh@(edM+f|-ECw_`5=;$x0Sv^wY&Ip@eelEaw$dB@K}yF@mkW8q!wESak_Of`MS(=5Bh=%EG!wOegZo zN|vMqEJ+ZAgPFVhy3ygeZ5Gs0nIH&pQaa3hs@!aHB$oqZ5U5P7?;d|6NqLn3>ejU{ zDUmQi^4w}IR*_@4l3qXoN+M^J*pA;3HHZZ*IeETI_yVC=I1h5Iv@FWS)Tcu!`TI%0?M2WI}VK6%ix>89Gw=t7Qm7HpFf z1nGF!y+ymvX|yjm&ttw&Cw~2Pr|~Qq!{Q2p)(DVWPlRoI?YZ-=do2~NSCoZVK!Brv zmwMEgqLizfnk42V6J>QCmg#P$m>CVJN>S!GvEW9e#fi3tOx}T}v#7{Sj|@SAHjcVQ zsfa>R2ryew5L*{E)^*Z?DYp_)p3xbUNwiwsJv!Qzi3gBdbp-(DBmi&J>!J)uKIC-mGLp!KnXrBtIktrdl!10?H~{)gd9LoG6(;z2$y$_jf%K zH|u)8v^Qh1Y0MKKIG_o3eiz?xdS0?T^71Ss1vq`7Ak2*ion&Py<{oKXkAc3wW3B6Q zFsdyCw%T$O>bOnzB5Ib!rcm0-z{@u>0T%)_@A9kEF*?CobS0pn0mB=7ENMzt zDLFv}1cCv%1JbnSTbP*%Y&3(c$)2D5XX{q-J*HBz;FBb1NY>XqJ!^EwE$mx(XL6!Y zT5Ox|*Y8?p5vEHaYW+e4832l2F_jg96Ou^rPGTnBE8qOq{ttmkQo>TAQ(z1m?m_EY z)yT}+eiw#@h;*m)=F(>OIeJh&R>O;cd1|zv8;|o^!a|A^(pQmk*b5%%+h_u3v5FNX zyhv<8b9E77oo(k8$A4~_pH6xmN{}HWNz7xWnroy_r5kKKDD?$Y{OvB zFrg_?K|j?gG7i0<4Qr!@!z~HSlMSvWT$lncJ!D$8^oJcxI`iDO3YOqhs9r~3D}3gc z`F=|w3QAD5fC|i+jZVD{daUhWQW_9e;hUyNQNC}z>yW%UR^yIla1!5z0A2;)Eqz|&2uTX;5bm_Sh|8FHjV z<&ic$XX7=IK&N>%5pU`&@NxgEpX=P#Lli*%q00o}9+7H;Poog{jWIW6{ z0lO6uDufa~?XLAp!?cy62QkTj0;G_2pYcq?V9qt+mm*P@mZBs=0KBAVV$<5UeqE%Y zd2#@)08P(m-?945Znqq@I8+pZl(r#J2T?b-!Ye8tT!2vJtfV&4zw=#8P6WCZTFae4 zm;fBWXhGA@(w&Az4~I6exGp-c>I;OJixKYYRXS!k?O@z46gm}=Mic=z%6?>h38E=Z z5g3IB3#(a%oC)wG=`$ZH(Ti!tvPM-%BQPUK765D4%+x$NX~g)~oN26PohRY7ROuEt z?=*7-86ZlEMdB@%H#hUB-Y~rTOrw^D+k+&SHnh(F08?FVDuiK}!?-1Gl=DIoARwKH z*dDsx)xv0%ubQuB+6kP#5v{XzzVTh9*ou#!%q#$m!DLJsnUCMK>e_j1l7`lqS>=ZX z><{0@p3}+7>KbT;hVy3vAXsVFTZ+?$SmhL@32^(;j*1%2+Im%LamfuhqDfhhl169) zS+wXUZEez)@xr81>q!q&K$l1Tu9bOt86Nat&{!&$*$*>vJm(QJ-bY!Yv*ef5gxw6q~DsgSRF zZ{fFE=jL>;I9DyrA|X*4N1?rF!v~bip}uE}#J6+@V}1S<#%bS}ULOun;(Q7@px7u( zdT+0KZVk*suLjy9+1MD2*U))TI_4Ry1F0am>XpnS2?PAmwTxdmwPxieM8Sil{{U-L zn(8*gY~=jZAp~WU03SWY^zBjik%$GPFPNY?d0Ut}9eVYpC6qIVTAf;eSqhbtJ;d$S zJ!zPS@-rA_R2wcx%0V_8cGCLyH7aO-hP8&o0^+62*+N^?z_Ej%*1A}Bke1>6LNMzN zfA+gq+DZQaC(l~o;W&OI;oNcTLKp@+nN z61_q{5G4*FrW*E5z#-KY5PN#>NGo0;fcvX(HO^RRrjxW>ndpDrWWjP7P-$3l+wQBw zig{NDcrmnd7`4LWGBZL6Jk7N_+}AAqFIsWDaZdy=QIijNl1Wr+ex~)04Tn}S zXmlu{0FvB*Gj=h(^wyX80mKpt$NjlRY|F3)b?G)fewEzA;P4n9%N86;%YN}vr34ZE zNa}XqN}K6%+~C|R1%qJ^IfpJf0C236%eBr}5^dCP((zs^3v)s<2iR2iyend`o$cIixiinoQt29(;++8c!+Nm{HfHxXHowy>C_If{EC!o9|u0Gy<2w|w2| z-p8jIj&(?7Y(Xh)HaSJei`-w*qa8F&ysUmJIu=?dC6Hj9x@&tH^?1%A-UEgs3x!Z^ z^f~=WjNQ8Ro$p*O4Tf!MT9Bm}BIP2-Snt}p&0(2m8HdC;+Lm28lbt!{;$U^#(xRw@ zaa=rM)Qi5_iE+nGmD4xED`VJ)c$Y1virUEbVz%rzkUr+QZ1CJRH;)vhD#S)`=r9qf z>+3%%^*l3^gu-I*?xiSrOgN9!c93FiH|bMjZN~L*z8{0&h4z~mwV;O7lpC4z)D4Am z8CqMz7V#NycxDtijH2>Lkug6mo7bM=Uy1SD#it6=IRROlMz9DsOldk&8D|}deF?=a zSS&gZiKfgzy}R^{sf6bKUA6HfzHuywTaFk=z19bV;it;goxCB!sSV29Ew}+KNEwOP z>o$q)UH%KguoyCNZ|blT(`XPt?HU-Zn5-M`aQAU3IfDjL$r*!?W_n1q8RaEy;mgO_ zXa%++?uBFtYA518b&nR7up!Zo#xIBx3^9f<0yRhP{_CHGIE-LIfmv-ra|56n7`#NA zS62(dmydM?rGMKd?V+^~62OlMAe;BKLNBkjo(`gE;sR zMZAYmf7-onB^(ci;a2We`M6*~D_j|f0BhG<&2ZND7~)t$`rJ5VHs>uZtis$z*-|=M z^swi(HhCuV>;HH z4-~;*+vTx1mt1l=?j)-zh%x0G^sfFB5c+v;m_k%SQd6l1^(60j+OsuRuBX$_;C~9K zta|XpKt9~~+ioD*XSc_#Z9Fy16E3r#m&;Kg>&xo{N#E4hV+^;kd_`)+EAs3w*(ofL z2_60#Yc;12_CXJO^5fza$iV=IOJfqC>U=klI`!#Z zOB=_VKy9R{LDHg2gxn4E`22d;p?ifX@O*E;n4a(-TifbmQ-FF_u4adfV)59A zTS5{VGC>9vVe&KHqA*#STCyiHeCx^oE zMU)W!BU{`Pumh)Eb)(|kM;zi6nc~rPM@W!kLDDPFA>-^0847jG)5{k@kD;;C{8VeF zJo@(Zth(!|biiAH!;ox0^&W%vwKdElQbN|ShKz)?9J0424&vvvV#4A;z#!sQwFN-{ z47We4%F*Xn{{S0`e;ST^nZgy}WGZ0?OZC%TD$v=6EI9h{F0=^uN)RWwC(hDF-gLx% zBF1C!Ev1(b#tI~45P@w+Zjs)pXk(HZc@hv32nw@t)8(ymIC7FWh9SfM0CAL@ys|~b zulL@wS(3YWej*b38oJxcWX8LlG}?UW7`$IKzGB)+TFvi`Ozj&DG^M(=yq{)}30EvP zl)ybEyI2pxZgCV6xB(Xp7y$nOik#G2C%WL{)~13Jg$g9uDS#q+ohf`P0{hAZWllb! zDGCG)ez!5&yV$-Kjvn?QhYoV!{*rD?Y1nr1u4g^m8Vjx!ASg~iHuCFCTJxYE5d zD_`PHA(gfU5u_-H%NcdIdDE`d+Q;yv;gW_KDh|4@=_JIM)b2LFr6;GW`#gOaz;PTa z@aGM44Tf#Ah*E=Ub+(1|nChMVYmt_x3fJaKiOd`+ zAVK|I;^$p!aTb0ZTuH$h%!4`-ToC=uj`+OcZ%^>F<93c zVX)I^JhX+04g=?|lc!1toW?lYZ9!Xv9%GAE+gSMtrC{+Td`Y*~*jmCtN>HKz5jyTI zprCt=IgG@tw1qV$2%j7aYHUoI@~NgMJic1SAhza5P2_@7M_!#iH?F4v;ZGr_-fx+5 zN#x9^MTBm9de=LLVVuQcNhmJi`GrBq@O0ky{kE>({GzbvbHuFSIY3C8=`&~-^Sx6# zx9T`Qi2nc;VelL|+#^gE@iQt^PEjJ(*G;t|zI@N(mw1jX!x;jJFyNARzQ?HZ-n4!y zam7E0!!(6wCo_Su5+=}ew4aq{;a`T12=g%sLft+rfm6$$)Oz+h7_E|Lw|-=i?Xd2r z5Wsn1v=9QIlADn;F{FI!S;Qlp-ytCj03|Mzfi@PM#c`N<#fT223nM6t2$|FG%DvCw zFT$8suufvQlg3mt29RQJshjKGqa3@lnYHD=<1u_?^#%~@r6S?0pHt)ylvhWF@aFh# zEopHr7sbi8bnQM2}7a5z67Fp1I{Hrb{tWiTn zYAy2sC1eX8;EUFjEf{m*F$VJ@@q6Ap&AMqrF^QK``G*4sn!5tH$}DC*d+A!9z&nP* zE!Q3#-NZr^CPj}*tOh-nT76BnkR0}Hq!iqn!0HX{Ssqp|7l-9DoIdKZKp^Jx`Opp* z5(A(sI@d8GC;bp_HPC6NaSS@wzo!clj8vBRy;-(EVeMMr3lVQBm)9dp%Mgi>}#ur zWMi>GPrQa04TP(5lfC=-Zfh?cc{nE<sXqub5W(3RHn3 zp(*NOE6?%Op)a8UC@B7!0NYF3Prmh~&N}Pu!qvC;_*42aV0Bt z&0z_UuJ_XQQW82GI}?XEv^1VvF2!WR03H22>!pRn7xCQAS#DJc{U_iwGbXrvGY5%l z70h@BL&^y&Q*kCfdjnm3az8DEM>ynttIL*i zK2)1JlmsUuFbE>iw3xWAT7sM}1qlmONbr(lK^pa~N5$9Bl^xKB*n?OtBv|(;v5m21{EF<>iJdu2; z2Ur#8apjZ@i9#Q7P(zC_N%8~bTx@PV2vQQX!qPHjkPOC>H8ruCv|*dW;n3m~mkY8J zH-M89a}zOtTDKnj;0&~sphzifc!`0xQ~s#4E#Z)aws*IH01VFQ+TTjujA-C6O)W_W znn+ARfJWcQ>sD78)jRpp5tRr`q%SN)YI~m3FYPhQk`oc#1OkWj)rK_2iVN@P#YtR5-$*~1?iKnWp404HxjrM9TNVxz_#82D7;vzFNhDr3^w&<*bFM}|h&;$bQOs>> zGLw|p{{SD&V$QemNXpulgo0GFeLjAjXRQg8TmST_niX;;&|0U$kh9&E5f6`JKG9tqmg;j7l42Dl1Tt?EUB`PoBLzsms92 zsC7w51^{US>H|pI@4ZsEs@N++8cHBcoleqkd8tm14Z*{h_QTEwkZfS)pZ9yyTH&}> zp9L+bWrsI5^BRe+dhw6ELR8}1cPaj)hyz$1ziP;?B;%{)GMlIX;snV9LO+AnnMXq$ z>2nxcQh7nChEW9s8_K$QQ7Pnbv}Q}{CpPd&*VI-u5r$<7aLAcZCr;t=C28fR0;M2npQr<^^{%%K;YoK0 zyjCgPvYg-`iBLL87Y1$H*11^xJ0z^29#{}t&|2F5)QDtz7&)s#91XW{5COUFKYuzC zjtFhs$OUpl8|7A#N2b(_LYl$Cl%Pf9e83-%YK$!2Z?CLSf3M(7$+ix5;YoJ@99LQ7ZB4;=V=2Zj!}uc>m6v>LNRZb z73~z@B;FQD?Q8F~anj?Mm&!tv=qe-$k6PG=&I!e=gudbqV2{&r_hVIqx{fH;PC^?_ zP$afbf^0wreDCF4E-=naFma_2@>P^y-jku*sH_iTR-7?HN=nqJ$(Y}y?eV=}ahI_u z<`*1vW{HTrbl-m}*$^`Gh)*#WCKMMCv+6ZJ#WmHJS^*~_j1po@k*FViXr046_86%o zH6$cQ&(Hh{&JZ|rGUBA?@Sw>j_&uwryh0moEjYFEgLldSKPaa2oKlMCmJm>(aA#@1 zYUaI)UM#J}sYOlP3#!z|F>W-pAS@9XfF^I+-{P3fZhiLJL0U4lfFR!bZ9jLfKg97a zVwOV*3K?}fY4ELB%saVGcXAA{J4TlK)}6!fjibQZX>n%6I6#fh`l^``eX-%VTC$#L zQY=!G&4KPkVHjRmmr}Aov`zcQ-{QSSGZM}d1fUdxvPl4rhQRd^YgY~RxrlQ*Mnp)t zGdsjOzC=J@atJAguoWat50+E^`-IyNC;7c zW+}b8-@PLf`pZBmQ|lmdVJiWTGk04{{^@PJouP zRKhDv9OdLdN+J@Noi_72+}24(4j{=xfHvZ?NKC|Qy!5JR zmfKk>30r^^$=r1lPr`*QM8N_ehamVj(t*h52GeHHAj$VnnXaGd2=Z3QCAnOtb1r?L z^6UInu*tb`(l;FkZq&hvOLzj(E#jXMm_2W_P+OQ} zWLcH1w2MH~ziQ5gQpyQQg0UAmM@n`d5)hD-svsC7{CvbkM^@HhXj(;#m=>VRkttNb zAa0cF=hkbj&di3CU=&CfxS!fLK1zB|&iE%u+}KNAG$i6uPjqD8%R>eTs!C zPmCiZ2=?XwC9F7udq{z$Em(reWGsRN01SYCdf5;p0vppfk2oE_dQ052tU%sk zDT>6omSZ^9MK2*p&6{bmWcgLZP^u(nu>eRBLY0imDF7&l)`OgEqzE$t2hNs-=m{ta zI}3`uPOS?tw3)uWy(x%cD{CzJ9qCyzD$;|g6|I+0+Ct$l0fXPIC`Tm-TbdZR@M?^# zjS!f)JCQ_(iosS@N{mSR(yk9+MW^rKS~9trGE#3FX-egkI8vz--nVj8vQ&~zN#4Np zn#8hPP)JCW873;?D!>HX>3)$$@&hS1ffkEv)~(NEQ6Nt8G_1}pRUjK4zbe@@DM~P~ z1d6mNUhuZ!q*#M#t4Yd&Z8M>+h#VCv@`2WxjIc={TEkNmv@Qsl1nFv$rDx6HGa&S+ z6`YmjH|#+jDdLp1MV6bzn5&5(o%X%I_w0gRE&CYxJ7@KZu|qwWYTYEm=n>mPMU-zbE%vY9AYkOZAKv7j`%rkz+$R}zpFoD*Z)dDrYx)UlMg0cdQ(TZ;kP zu$@gonQaboGA%9Lz(F8u?|t5xC~3fln;~!%G9&}%tWYIOb)OMZiquI>&A`+F8o{PA z=tD?ALWxE?bFyugVwVYL4M zx-$;uDbbUfoQsIgXPM@GFX=+Jv!!Xc0sw8pUSQ?x8GW08#kcDtPfCgNmN);;Gatl2^-cA_-Cr z`^h7`(MwXpa#E7C7Y0z2=zqF(>opY7!+_eBgfyomDa{i%)DE-XwO$d!nC6v|)QRiX zcDL(yo9$|@*zGJhh9Y%C(|y3=$6FciKGY$dFVJ z+hIjw;EiKq29$i(o>Pf!ZsaP;PLen66EJBGg<;NFAsM_=}}qPD@%oFT*_Kh6^qZVv}B{qQ0i7$8W$8Z z05B?M}7 z7@6KLCZV80FzLh<0#LLpW;3GBxro=()}bhr0dyrK_~tD!ru11A%*`1uoHM8-nag|n z)w~NygOS5^a`Zin=`~`RmayV;dp~K+Y$qbGCVJT0_n}&pmsFKP5fGkLgd2~$Z&351B~~g)Xe%yb z`iDp!u~dxiCCDps54aQVC&+3xrsi$Mppsi?tcbR;e~GvvmIhlEZQrrgl1kI!$l*eI9Q))n5f>Ae2*oe98JO0#eF96{{9>4O+1fa?xPzVK; z^^K06n$*28tV|;g+EkE)UBsi`GH)}!{VS3(m7!S@f)k!*b?Mj6x){e^P7(@|v^GM& z_cLpr{{SeiTgvuCp(O&{#i`YV-QNOx!SnbSW{&Ym}U)= znoteSg3)QxM@lwhl0iTN-pVdVUzniCyQ$R3_kaqHk`3wM3Ty&YWgdj3n*5Eg1Hkmy=-knfR)P76PZD=6L=Cn zg1Fa6*o>)MrA2U(2bXS}*1leQ!O5+O@a_pGYRJOM9F(OX5G0UfL5*u!gaVQadZtlu z4%dxLkA-lq(H4>#a284CfRf(8bSJ&dYFSDEND6Sa3Q$R~?0SCmDVDJWjIxD75(tz2 zZ(~**K|l(X!ScV;_}6;JL8*}ewM-e15vKmT>(+$k4J^W>#r3|wO{lrN&=4gH0tm_o zA~Yvq*LoNzTVn7GWCt*vZF}!fq(Z)lS{3bMfJXJ0I>?2&DhNRaR7f|lkUxV+ zD-5{O&SFUtTpl%FVWl1#_*7-gR*+yh7Cq-#rLXfm;8K;LN^rJG0DwjJJvOXZ8%j`; zbCTFqfe^iJdyPEnT5_Zkaz&VkgdGgi(m}N2H_{q zay!nn#AZn_l!8(lOeRPXG3E3$gu>7D48_}Mc;pEQPg##MPGp54(o|X`dqR}&*J3VFUbB!FfHr2IFaQBOJbw2%qQ5}CHXfW^0?d0A50 zLL3KNhyr9^Q(*w@OH;YpS`4k#ndlGr2KKIqtP5~vi3`mt<<4t^sXywYOU#%G10a%5 z={6-JrCQoj+X`3&o{ik~^qNboDNbE;0_DLG8lPKLMAMvfsUs>B5ETLy1WB15bT1<- zveMF!0R$jl&OG-W>L8|F3TMUy=l85dk4Uz)6!vuUOt{vBL6us>b=O+hn!|~2nn?;# zD!3$g%x&0+`BpNnadB!vxs_N+9f%&C>qaF3EAgbIzy*kz{x`j2TcHWc+M~n?ytYTz zTi00UOiBvE(%~84FFXh%O*Is;lOOSU^KK(*RJ)JnCFH zjqYNdiOx`YXa^wxt;Ik&}%sCAxf{?OBn@5STy+8wg zp0u=L4p0b=Snz>mr2gi8G@;7m74u7IN^VF7PffJxQPrb4OcatJNSHAoj=mW<9%pXmx*SGZM8yjV&8j1B2iarlXda<<4t^(8&Jnr1{s;zYpNrN)REi;4(oH37s^&{?+37 z{!DtlE*_uo-VieL1xO~s7Db8D-35AlOO3t>Ku~A_5+DtSmX(8rGLnXg$X6t!0%QYP z@vi`twigR&QWi9r^Vj@W#kbzQ7u|3%pgE1@W(0{5{ij}$tlpf^{BVp!@yn!SFYZ82AF*LI>!$2cYj>?*QOh0EH|j6eM=}*KQv_=9gL&;#&Z~ z$g^W6JBw))f)6zaYzs+J`pxD(m2NH6EeLd^2{H(Suld%d8x9^>30$lk*VRB?Bd{a( zuA1_?*g(?S3QDt?nVYIF6`*2B2^mGnh%@(kz_zlG(D6x~VAh;DOdtUxSpaEWBb^>2 z7SdD&kWwUrSBBzEspJN1z3(wW{{S8w#1IkyHt`*Qihdh_Ck&;yWGq}LXi2Tg&5oNd z7jp@j5=2D*02Q+g(jHfhJhUgKqtkt>orPt@x`#q@glv39x*XMIK|m-ZNimvW*GT7D zF$hbI=MfVf53OKc2~Rj+WFW>sE#*5O=C$CMS#vpDHV$P2Y47*ax(_mzT9m0MgBeM; zSv7gAU{gG%RFwn{mz=}zYUSgbM=UrX5p6DJx)0(?MrkGiA!I~({ViOzA;%IMuv%?? zkugz!M0n0R7LdHENf*u{Z|PojC|Z)TlA^rA0X~s6?Re${wTC4jM2{Yp^R5zbX>EgS zg6KBi6}y{EXfN!zP??nw)O{->hpyn z_5#{(Kpf_Mgh}z^4NJ%aB;9@5d?ZTu;)@1!+;<{LDGEs*a z)dUDrV@coRzm)?xGJ<(t%?SjEHc&gwQ`nH{M=*x+NLG1)9#*3}wylGn;rzK-2ndUWMA~F&`**H_Golct$>u@r za7V-9MN$B06#$eYNJ)!se!mK9D=lG=>YNRLWhnwLVZNev?@A8{hEkK9O34|M1g;0) z?_KtJEaAgW#z``yNVeK+I&JG-b(Oe;B-+gZgLuh^)Nima_#fIRHkoxs5iz z^HJvK#|}#RjvnXYAV`tN}fs*;F5esQb;zon^;l?=V zQWW#A-J~L54q6m)0k}SNcs4>;G3?xO!V@8Wdv>Zxtp@Pu3x&GcM}&k-_9NC}nDi;6 zfG1L{_c5{4Lppj^!GvMNxU?l8BtlT$u`_O)nbcNiu;Y~Z@hu22sa9OlV*7~$TFG=` z#AaIoB?PvQ0p<@LY1h&|&2v`YGRX-fq_~%Y^(W6u@A1}ay@1}Ly=vtdQnID2WIV-;!7*TOGt%8U(~!#0SvhiK1I8i~{{Xag z^QO4UT4ic3jO#HcU^@4pY80XrfVVdU>OPxm@T%0{TV;eL#~w&)HNXH~2Be*JpIddN z;mdBTB0y=u<0{uJ>@U`h3vcqp3s6xKRAaz?Gcj+iFAmD{H<$w0&y*q00UFrvtu>eo zd_4dI%aFAUzpibUw&zKus|xCpcPKF0jFJVwAbR}wr@Xv}IZ!RfiepeWBTZ&IR+EYU z0JjNKc5x!W3mfa{r8LJW4P*oWOL=n%R9n*bBD6P|$3uugJ{uJP7EXuf@vCi>rCOji zq3&2gI!{_-$>o6x@IVAi#+Ug=YHG^-vE>H&K;Fnu&D%Ggqow_6s~BV)s0wuD%uT#I zO^4i7qbdt($^rq6WS)bssiJi$Tg{fu%o&`nWSEiV(`wC30-G)rEfBt9WB?%tXzl6y z)x6Qd42gvyAj#-s?)3aB0viZfm4Gt|v;iB?epINERtklT-z;jG785fy8mtpd7qjLL zEFyCqdRU3{{wT3H%$T*LlG@112BETc@}^<%>KOtCWz0YVLH<1G-ejevDJfHAl1dOJ zV$cZKR%&sPZKfTI zS~s_Y!gU>b*32^r4`y}3i^yzA8OK6*idH8U((xR$9%xA-;A9p5JJWd@-b1q~yTsLk>=52Ae zpRH_r8HdCvwWug8q9amt0^R=rdQ;5vT`Nl7Lko!uOhQ1?I!O3UsVRAKPDc>6fRG51 zqM6H@!bbjGPn~JO;8wD~VgO&g%uo;`bGQfRTQIG*w4uc%DFaY95e5%S+x*c!99|$~ z5a9qq02xRTCi;H$eoXOmu^?fNes6&(9KA_w{{S9UiR>HC0))xrk7?on3BJ8G{{R)y zRt>~Fx0K@ZqCqn-PNH}J03KD75QO1^&;SG+z@P&jpBm}UNU@t0fjEZRB;0Clk?HY0 zE11q5gs3Z(;{*k)5&#zw-{o4+A8BZFBBVGZ^9is$&se15aZAI6sVEsU5R9WJx%vItwr5Hd;dN<4j^4x&kWWeP z6WXvT^X(7<14G$_EPJK~v!R}cy>_15tDlU;s}eIjsYJm;lO4$$`BjWFr@DW5^-A_Joo_*HC+JU1ODKZv^AM&oU6=LFN=E zLH)f&XI2m`Yiy-JiIEx|r|){*fa4>EsFmeeCR9&|0zPzs#vR4DwIK!^B!nPICjS7j zt(uF5vw&*`mkY^AG3>*NJ|hzZ_SW>YVp+rD3)qFJ2nKmUUIKQLx7M({@{95u&IQ$+ z_zAYX$9fz(k*PtID$`^Qw%fk7SdD6P5{HV^k&&`Cv~&X3{{U5ZY%<&h$1=9vh)u}^ zXb9^%dedi;hX_wG5>QeJ@&~-DWt*NJmDX?ch`sFI=teELV7 zbTE&)(q}RdWXcK&L5oQ{d2Lu4&ZLzDfK)*X1OiE&JIvOOYSD=bR#!6LuH8OWl`^)H zm9Ha#T+&K|ZW)~~^wztaD++}tE@z*W1Iuj_B%gHk`_j0$e9piB0CZB&GN8Pmqx>B! zu#9Fcw+mQwgcnt4Fh!)#QJ}7NDmpmM9Ofaly!KYmA+QueoFL7QkP)S#vT&{zm)uLs zSzjqK0Z)tge~{p<>JXC0dS#xPjh(`Eh88CGKQ2Ef~ihH?+q_KH6YhN z^r>C7y3gbTZ#dIsDa_CW&btl%&8Cv#mBeuf2Rld!Up5-cn$skmyHfaX0%Zw6#9|Sg z9|23A>FGC(bscKBt}(RZ5r@JdE&f~p*ak15CUqqGSm|8xdTMxk96Jhe7`Mn-REEI? zYMp22W7fKO40az6hF(V0hK9sj#mxfJ09q$I7|xp+pRm2qfySqz={A!eH?$ z!pnGdw~<+bn;tTaZPKTxxm%bFaa?1#bhf8fP%}A}MtySwsMt=n?M}+PI>QNVJjH^x zrr=1pNftYwDsBWP4DUY>oQ=0FxLdhcBJ!#4uF*}#V=$?0ZKOl1P)X{LOrc#3y#;cv zlC(38UUng%LR#>xa|FlJx!ejCahRvvZN({h0JrulXcy9Hcy*NF`3i5I`-#wrLT>}> z=@qqHE0Myv?=3B%!W$t2Gm4T=g(I(jI_HYg@qBH3F>VYxfnO|wf}FxfQ?b`dz8i-BG43JV#G`x0rb{uv4g_BgJs4sZ8XAAl61&! z2ZWu>6R+__X?!ORt`14UV2&a89FNT`6Y3KX2q4!}4ft;or=5EirIom>sWL2gC)5ht z!P#CdPC0~Ai*2NZC<}H8gT1=-uHG>?Tz?O7r!fh`zRF1fwMdh24$=3ua;Uxga=2z4 zE;v&0lw~UB10WR6+fKxts@M31Ea2a73beGtfGd>*lY5XlNb;R@t^+(v5}XRu@}n|@ zG=Uz-2r5wNb86jyz%5JXpZkV`kQA{17`B@1FKsB>KW>lVb*ZHm#vNrBD{;>kg7EnP0O0CO!SI-lCOZ)1~%<%Gdlj(E9}HG!lJI@Ww*{{Zg4GFowA zY9KtTgx^c;tVfj@n|1AYCLr+MAu;)NiIU*dT0FplHj!HRmm6LskfxMd4gyNSf}{hK zne&@@8uIUPhgEqSvh_4}zeai+FWzlx6Clrh`ifP>p$h0TdqHi#HnD8V@M8MgSX$xxV%@2rAOpdVT)b7XZ|a{zJeIJV0TzLA*@8=GlAPL+cn ziboE|7ckJUg_Sn9Qy>Gi^gB;WQt_z7V&&{Ra2X(GQopEwK@(`Owz4UB)`Lud(Nm9< zkq1wK-inY2$705Jop+ewb0>^|1nX~wb=l)+UIoMgOYRJ%;xvJOGGxWHuQ`o%#?{DD z3fw6qAswJBYc6 zOCy-s3lhH!&*}%uN(UKn1KT(`?grx!kVL0pJxuv)RjxUA+o%_ZdkO9F3ozV6W=c-? z8}BrnI#A4F3uz?%|w+yPu%PXc|s0LJ2q1Ayge ztz!-$95Vp|)X5MG(zJ|Ih$>Ey(Hjm1`#Bq+6+$!cvgx-2|8+>cM z_kd3ixeTN%5#!%Ytrq@k8E34Hy7-ZI5czQhj59K% z5n|xBr(iXn)#b6gVNX6~N^m%GrViT)>wmLelM>4cVGJ~s5aBYTH!(6s_u9D_j4L>F z6tssNbm&`El%NT*>wkqzImpF;XBEZYT9C*_QJbc2-EH%=bX9LkK0YqfLX2{;ju2TdFH$oSvJd{=RYum16T?m!k%)boJAwd`2IonyNO7264}*PphETWGkeN;L#oYp1GTLr?m9tBwg#7YMGZ-1HZ zT&^RE!wguEfLb{S36f&>g9Bk^m#?t6$VesHN1oGTEfv>{aR(wj-;9Aw=X#&SwyGn28uSzn_`%G#Vj^b`S zkhP*B=0>&__lC8OhH?QWLbU)50qd=E-r=t~ zh(aED(y)`3;KBWf?M9HMRf{FpmXc8_Zsy~>`ozU`(%`~jns8(cKq^txL_B6ZA`*&@6V{9Wn5&;lz>D|_mEGW&1}JNg4Q@KUd<73 z22nDif#4Io=x?F^Xy>my8e6C-WoBIdpal3M zzflAc^{+?4_zFVFDFJJO0*ny?#{U4ewQE~E9eFV6MtP9oO~+M7?MC+#%*;08$vzbW z0tZk2H`IF3mj0M=c(ozLq1{O;ZZ1bpnEQ%W8N5ayui2HXASW>dqCkTqt^WYsQoPHMhfGN5 zetj#=apbs$oLD7*Y}kNx+vjs#74eo(+7y(jU>vD%+!Gx-kK3hZ;ygu;AlPAfmjXiU zXG`C$z7&a?^VobMv1>yttr-$62P`9SP3<+gj4L>0IGjVJ4YXhK+mZy3RdW!$Jz(3Hw~rpmsvy|o={ zoU9ODA_BtOkm*?$=qIFJCX|HAb`s)!{+8>yGkm4LGunRZJ ze&@AJGDAVmV$yNSvILVSLIu=LgmmdOF#N0=At`LFt*x(V zo&Hsrml$x>7FP3vme??r6u~#Pn(sb!vxcnU$`Z}i--jlG-Tp+=F^#&VAzZQ=Fl=rw z^b{Cmw%d)BE10yY01Uw*HWRPet)9nC96aJN#DJ$xre+{PB0g0yEi;5#6s}W?DTdNh z{W+M|U)m{HzA6yNAf>j+BPdK3?{gb@{{Wie;#Q}SR?c7?5+S>!i_YX)FGiNQD{;6Q-2LDb?z&PCH%#p4r1?n^^>NxpI>R$HEy9P7bRd4l5GO9;)0rC zX$V&_!X;}LBz=#CdTuL;!SJpkaLhb$4mNTncImH}n)1)SSBYL@V+Ao_58ql(+kXrx z!RAsDwcmN#_w6;IOKqnX8^dPE4T#^bobD-j$C^<@0dNu{L)Xt({po8$oMP&g8`oSxn9N|vRJVDKBIz~-Fm?0TRxA(ZvCGQXED~noz?u8`P~rj#+fY)9z$zj( z>D*ULEk_2@LtM8Vyft`7Pb%M}la6JaDhSWbC?pUy1o!&Wk&oqJ%%!%P$Vh_%e(hP+ z!hi@;mLbANNgF`Zt?LFgw4r1nWH&J)RbyczdZ`BEiflf&TPGqT+!1Yb`BK!6%oH}m zN(w3lKp=~0ub7&cMpCsDt^o-Xpd`-wPkP&oTJUW+l&dHHjh}RlW;NGZ(TUs+&J;Gh z%9tNh*Gtxt!tm_2T|$xra4iQv?tHq|2q<+KlqN!e%ixVPI-jqlblKvqp(QIxTa5yd z%oZp83bZE{WjJOqkeQpn`1pSIuP2Fh$Cij}HoVcyi{4GEr;p=H#4N2@mz0u}r}TrU z9cv6P6NqfBL2DvOBu2WPw*Bj38nC!T3rC4{L>DY#fs%2uspX#nZz zNyK6lyCKCb2vj9{&-$jYrdw&isV;=bGD&aOexz26c(t1)Xwc>ai3&gGr7=($ZAm`% zq!|X+7xWYub*mSN3R*!6R#LxoM&ds2LgV4gM5GS^hR~>zJNJ=Qg9?=6zR>15spk~geyB? z1cEZo{paIUoH1LW%t7{L%(+0h8+P@h!eNGI9dS!tp)u4AKd;w*07`*TBU{$2HWdp=LNbA&AX#30_0wAC;ZO`M#FBL&4P@BYRTzc5 z3NpiJG7y3F>s3(FwBfKAK2cw^aU`gZ6l@Pjt`;W~pZm%$x3(yArPTGsMWnOXCvZHMf1pl=Qq zg0i6E!R|c&0Bvh=!WUPS=khd|8NeV7&HB>uk2B5X;lKhisb=KuRVd4e<|GEl0txnU zt*&WF&5_6|LtsFY1n={$ie*YsQ2{zbXWkGlB-VWLvX=sgFjJfB6;TFZnhv(%NC;@A z2wCl|{u4@ZlA|}c_zu0i>8Qavgl178u@;>`{w8f%o%V2rXAX@{*6;gwt$~iU`Bdgt zjtK{N@8#ZwXi}T-Sb#GuA9wkzt-tw#66(AlWsT#frEFF?w2ul+(o-lfI#%Ee9v?Ub zz?laue#V~S^0bV@B)4Rp^&Y;Jm4{TZ;!=g=h`9Bp6_7GGu2KMk4alFMr{pK{&K_Ej zKoJLjmrB&UJ850zYYpl^*ZAp7dltO817d6>iOM%4r7J1O-~g2o+64V5hWtBCGLogN zu!uavsV8GxoNq4@^L(@@9TW-IzrvWy3QKM&YLgO>RUjVptRqV1goPZM*v0zNdKz%- z`v(9ZIbx8JbLaD=sj&-Qa<-9dv#BG#wB}rCyh_rC14x78BK}oKA;#8C&*>y;J07Ia z1(eH#W+2!Z%M2c|jc#;3YOqHc zC_<2(b4dVbIulv)t<|8YE5c;KGydzKQeI#{C`9YDPW2XqGvEismL_ILQCll8#$O0# z6g`-*9Zfx#d?+d&{mB=%Pmj=6E^}&9JS4ZTjC^WhURG}su5MMV9+eo@hcQ2wSO7(h zly~X%n!}EKIIt3B5(qn;qAEC2^1w;X2#Jjcon>_-FDmCG*pEBa^Bn5&GKK0%M3Oq* zjSA%qrt8?p%8-ojI8+FbGLGM4dfJ2`D$AIx#G6i={q(E)V=!fL2}BY4hw(~vA!<37 zBEUen?OReZ;#N_pI!4s83fB=Al5_Mtp|u3(q4Ef69No+3P7~4FwA6L^lhyuD+xNEI*4f* zY@;Av))d}YVN;bVoe0~fm0B5HT&ygUrTg`YLY5~q<{nn3ysv1uHrlhPTBs`8SZh@g zSCpY%83c)nTBU7^nCTQ_#DQ?Gm(r8(B#DmwYM^6k_ZC(JYieSYe@vu-U=4*V4*ITNYK>TLtRMJXN zq=G|^bnsfy+>7~XO?kBkrGx|lA~};IdFj~Dgatv8w&b5^MZft0Z$V3Okn#ajBrSH5 ztu*mRl%G8XS}KsX+2&=UT_Vzbzz$ zL|n$YZ8dqqhyAcH59lPx?bo^Up;}kUCBWD>NreOQAHS6tCe)<3+DlM`D9A8wE(skk z^r)6lAw&mZKxH!r`0H8@br#I44jUvSi_e!*B;4y+k(sGiFa&tpQu-ME?S9lwqR?J1 zvEe|R)B4FOpRE{q(}^ltRVtFAh?6oPjiNqr6?yz^$d@eOg-nm`k=}3GluAO1GNghC zBQ57cFm;$BhM0M6x&-p`SPj70KYmoVgWRCE5z2x_cTsI%C(s(O3#XXbE-Zr}*qIvv zZLiXcDv}&gB@6_?l3;Ih)@F(l+;+z3M=%D~V3H%=>L3jVThJjVI4DF(o>~=_#9sY+ z4X;khaP6+@Zd8qLX!l2-&VegJ64@|Ya9yu>0yR-T0Ywmna!L^AjEKrokP4vaPj9)V zDUrz}DM&%N2vil{_8|1A+duZmg=Z@v)a9{MSoz=gr~^)?#$mD`8H6PMy*Je@o5z3V)F9C=v~swmkgiY}h1IND(fibuk`xM?Fq8=%_fJ{_S|YE5DQ6|&=L&8+6mwnvAJ3GNG~|CO{;}nKu$X6i72E zwi`_7a)Q!DqzJX6`KYz6mt|6`6sQE5Pp;d{(V=p(U56VcIby*;X>+Nx&^na5h;+G} zfC>bv!(-Za`P3<1>2JcdlH791jWiME6v56~Leu{Mi9t<;pXq+roj0gc$$C+dvf;{5 zB|yx5%|)Q48C0_%%G(eFdTIV@#phZO%21Ro0$>7fdzk5SFgEQ}kmIbaY6>D_m=3py zpM^(O(r%dxUx<k^!d{q z_KC{0xt&Q3<(%1p@6gHDThiSwgrRP%jLI2`$AF%vywSHPZMC;8w&6D-EF#C&f@Lfg z(4r+!8YjdE(1ZSTijJWQDCU%`h)lL23Dd*VC}^f!MraaY z0y|zP7KZT6xYC_TEvGPW=x?~|_iAZSLQn@V2`AZtB>vjydQl~%L1{wrs4Y?LL5bcY z(wq~Ymav?eb1Fb5Lk3AdW++zK@E8VM<-?lmacg(CdK1ijBt7j3b1K|crt#Vh6dc8; zODdA#Ae9!xi4igTccMv0D1{(%0lbmiXnK#OUUWFTr#j$r+!=KM**%1OXb^-g2~yM+ z*zp-wS-qp7{%D#%5}s`=x%szb07;Opf(@o`KN_5+A>5`Ef2LarpD`K{B7-6WYf6{P z3sl0dsTM!Jv`Z|9P*Q*+-a}?V?eZE>i}58%TgpyykfLKOYXHujb)$MzN|K!DT5gq{ zK{p);I)OrkDNst1NJ12IkJbPiYaY7Vi!wxr-2xZm|_%^BsdF6UQ!j1?WF$zk=mJ@B}r0BfhRIR z^VT<|v>`~*ekl+x1a_tc_pgncD;?!)a8gCm2 z`qg3id7DXC3kKv~chvT!h39p`u#+%F;EV6mq|=cZlA;m;k`9ufG#z}ajdYDDmA{!; zvz?NtC#Ptxnju`EMu1qV#PvURisv?>vEoul1W78GBEWp?D{DEHme5w9Ib;B^1RL$w z>{lM0d2B%qHihIQ^3tU|J_V49J+j5`;5<-GhReKMu#W$0kWk=b-2~yE~qewku)U1W` z8w(jy18_h)p0U3ERiP?!N(#eZMriPmdXec*v+(^ByUvOf9;Th*=@)^ z836|KV-lk~)R6QDN(zrHXpl0i%H51myE3%2R-0x7-a0G1QQ?4DY)XMz3?Ux>0I1th zQ9(|er6CCbD|rhC>C%fM#tQDGfB?)DbLoBh^{t^`B^lMC3Q%%`Z|0QKMN4V22QhL( zj+=V!D4K#$RD!-~n|MJ0YaIYSbp&Wb+@{8Hoy!>sks1$EOIx9p0<{1TVpDPtOxtw+ zX$$5k33L+PM1?9mJ#D_%wf$*rVm~es5JupLW;~BuAyp>K_tQHsi@IX)sZqtfineN1cCPzps-Y>fOEAl zM8I&JyAR+R;YK7WcywnmeL+41?uh7gx7N0$D$J)#gx}gZ7h3uOu-D)zDn>^eUpWgh zPmbg-&wEia%EHi8g#we|E3icLy!IonTBW)yp|T5QNpS?kgB}UB&9&Q6dbNe5g%lN) zlW4bF{5Pc|5S`AQ4V67(e=fC7jQ%td95e1Fe(h;B2xM5!-e}-0P*h+JTo@wS51*+tr=Tqa6p#d@sLjW3?U}vk5VsshFsV5LtO2)+ zTlYUIYfA}GjX?w#0llZFd&zwKk@kDg>a&gjfU6A0ri)5|Tn4N=YXC%)p{g z-*FmKQn1<(0+cckm^bDT_pXAvU?$rOOMyW-H6^e`j>FJZIG0w72`%1elFT-0k(6w7JJNK!m11R#{z$os4U@%CxcI zLQ9J)L!bE~Nd6P_u6{ApsYO|gA83@7X&Q@t-mMRnw6$fGc!TQo)ON^OI zs*IpPnK7UT_~y)=g%s z3A1P#q17Z3PNv@I?GadblGNfCkvZl--_KgzktJ~)xsl^cM$;PgG_*EdQq&5ZZ$zMb zt3^j z;SlPUw&qDOBYg;wr2;l5tSaipI*@b}%W z(qwu}1_ZLykc0>TtQ|M7>UWyuaYn!I1Bp;FsR#hbCrf>LUb;Y(pa%<)kOatxBgB5T z(t{G>R^iT(k;ox-QGV#8sSm4WU!m1TgS0H3`(S8=Q;X#vosBOo@7;yo-+ z*{*93I)+QAZ9^gDl_(7?4E6fjx=o}m2a7oH#QV3o?L_o<4#FezQl3~rI_8Kwb`Wdn zTnhl&7(x}8q6wIfUyZB8;F(HRw1Ab6ZZ;w}uVBtI@)%B03Q81_<0pUEcCSar>)m*M zTfUdXu*gCbk~wl9X>UJ`ao8n{bge{#X>fbJEn8mVg~rxgL?HM{0BQ_Hs}k8t&Q`s{ zBrOI{dHde3{kX>e0Qn}s5?d z>!8LMzO*)#a^+Vbk^ZT)vOP-;q_>_z)-GpZA3ExVg3=J6B#62B50!K9I2B>pZB3O0 zkN&BqyMHy({IP98Qj)y4AH{lPd21>bmX;u2r0ZHRc@#4(WhG{AM}{k$>Ql`o0FX#Y z22~$=&?AZ*GIA*<*9rq~UFo=E)1l_nd<5w?6F=gWiE#x0pM0IkKj-hIdA4|??_^pC z5J^b}5#&2*>rTe;L&*wXf=q-@PN(CgSCl+T#5lC5Ac@1NsTu z{nnMU%u?DJ%FJGDNYG70Vn!VV6%d_3RiJk1S(|pR>R~)f2GZFDNwi%`w$ADO*|7sTL96EPZRtvf)FnC?Ks0f>);21Z{2W zp1quN>sz^MX`r+#kWu|Gv+?*&m5to2sPdGY>pmo)nJX64tXtt-05dU>D&{ssT46m0 z-L$M}Y_jN>bY}3y=UML})Yn*Q89cS9fUtvLPLUHk4=U$l-A^cmsI5T4atO)=>s}#k zVTe+*b25--!9sdyO>rK@2bNZ|0RI3_Q)$zvJ5nx1y9EmhB@0#3uq`_hY40iJ9Dx}G zS`0xZ{{S89DiJCmEny#}X6Qixp+is^al8_CRdw2EkwQHj$e59qtpeQCnQa~NV z(u-keD;~@VY_ zZ$rrrhSCuYAc6v1B!i@=ZbfQSO|30w_KnV&yk_6Po6eLeNVTMwp&^fd1V9(LCfkU{(f`_#o}B5t2tew)&S0z-^%*Z@T`R`Bp?eSX5KrA`?ae> zOa~OTI8uaWU7|s?iS9S^u8$7Ep&84-x^M4`S}d=W4z$#;{z-U%jFJrF1 zF4Qh??ptdsv=0w8U_t789cQ(6@p%6L%PKl5 zJ$8{S3C3V1lq5%n}QRK_|B44xb9ELh#@B3rRv`8>w(neL#sPr8B<9m2?FLc{j1IKWwurVMt4h>yh-xV3kfH+cX*!?&f?UT$(c8eb&(yu2DnSX zs}M6jq%E=m6X$d1QP1wL9EG^2TpYpdNdm&kj-ThfbQ!=UwIM()X^88%-gdodZwN96 z2wKQhiW6Wb=61G}$65<<#5zljHk`1rFb={s(h1%w{ESv9;IxG)GLQfe0Vp%3m!6-+ zV`~OoS`{h*WKgnQ}$>p&F0LNA&~k=Sh-9@9tpRxoY*RSfx1AUH>R(@;hse56@z6Cy&5 zuQGKP*Zff98d4j|(8#c%@0|j_Qb)!FZYicY?v|QKLj@$LgW@`Y*jPmRio%RoKtqU6 zEPwe#>m$=j*o-4ebaH@k$buG<2#@gss~3WCFCa&N3ze!w?Qzy3*RGPL$2s+LS&Ygh zFf9tS>_PjrW5i(AR21uKErI|M9I@8>`PZnzA)ZK<<liy8u9qXq(dqw4wo$OG6hzJ445a#e;5$U&1mBhv49Ca&EE^|=f1^_UKkO|!U zbnRU%b1Z~=M*u|SNCNZM={1Y;D0wrPL{3r5)&|oZwfI-3jGo*qt|Y$Wc~u3;us-IO zj=p`*Y9;Vz*1U~2T5KK1x(8muO?KAWA;h`>;GU!S{{S`Yakz7c(I!DC zY;IK=n&aZ|Agn{cpvjGrnEQ(B&wKXe*BSKTIL>o*2FW_MXVc1_oI-HJBS{Eu(`=?p zZ@q?<)OUqAk`-crGs5gajS8)>pM_*s3l5d7a)pgorfoF?XuoRdEOD~2x`bm~ZKlzk z0G!K4!@1Cr)Kg8 zZYzkatz(v~`G``|Y_8MPcIjIpYhD=~*1s`{3N3;O4cM9c*1Cy#N7x)Xkc$(O!{9yl z^4765$`OEGHDx9oAT*8F)NM{e6^G@n5`yf=k#V-W_w%TvbTA;}Uug`XIBST z>!#Jy;ejY~I#T1XjG+;>$|FD`xM{?US!sgW8-()BjzQK>udQufCl#HvwDN&LDFAGG z_uE>Ur>1L&A(Y}1h(m3xnGG}u0)MpYm(2VtgNWk4l*AOWkTMx7N~8nUcN=!DR}$y* z%V3O%NR$I8PS>Vz-W2=z#UXBn=AsqzWP zT*|O?3J3QZZ&OtS?*(&&1T?&jyUZNS>&!GH0HM^@oG%mnni|M5I6)|QfLD-`AX|R5 ziFlkl>_d)zXAphp{+di}5PSWa+rzj%c7(o{NLlu2PIDsSU`JoQdD;71r6m}iFNx%` zrIvt5b->+?>@>848*g5zpTc+?0||BYDcy)})&}VtcAHmW>^1`r!<$=63^W_&DWpz( z-3c1sZu?g+iD9^gFN3u6PN}>iSg|f-u{w}G9}4GNI@b>nnOVxvl^R6Q_Oe-i26~IBRQ4 zl`pv1Y-IrD7mYWK#=WX5w6AG~XAOhIwxAFe%V8>1z)BOSD)W&dt*mAfit&72DPx-3 zf>X>8fUbmWOql8`$6zpct|aOkOKWispKHui1GoU_qXK@-cW`bF6^B7>X*j>>ls25% zXKy&^T&i*1;#jm`ICEt#*~fWmWh8_o2$LO0QNFe1v7A**ytf?%#{o$o0thm6IubvA z^%C|!9^;hQb3Agei7jBR;| z9}Tvu#PJs$!E!MwQ6%!5Xb~zs<3np}VMSkVg0c7vTfB@WXW#L-4CVv_B$40hD@)k) z@g=s?EC$vSA=u68XKt0|uo(9FScJ5Y(Ib}Q&7=e*57W?%y3KlC7}6QSwh)A@xKIFa z_!}D-PNrZFDx2uOo{xoa6pS(#kHs``33HkGV4zUtwbNexX0-84V8q}tp1_137Ina! zx}Mka&{q)R)xxEI*}&l`D0eD~m86rlu|b2!@hoO5DQEK759yUS03d;?XI(bhX|6eb z+F0Pp#IUzslG-FA~xgq+#1wf`+8p2_aGXyA3E?Sn+twRxxd`!nv;V4r2yVMzVVEThqaq z;HzkH97}ILV203r)sb?e*R+Zc`BTGj4>N~SaF^xtQQ~s9+kSo+Oh0mpN@NT<~P;eJJU-Dyx zrAbmyyh5PK?cc7InGJqeVjfCENN`L|@@!@zcdV%5IHHo-N|-`MZysZPOm8zp-+xEF zf%e`tp|>*G1i_iL`d%vouPYLeZJjX*Zr9UYx3R1|Ux;Ec7;@q@DCOoF8PtR6TwE?A z61-j=Yf_kXz*3kV(meFMYe#9#&u>ti3(si0lOxD(M}PHQ>>uGli{|2SFD3N`%YkGr1`$oVme9y`(>%t~Pr7%w`@L@b`tWR&I`%|41H*Xo`?VZ;x9S1a9Ad^)AT|Ie zEr{BC^`XSN*W`;N9OUYO2dVlBrD2wa0)wC+*cE6`L;TPW81-1_TtdNT8L=dsPbfI-3(IO&L1LrwDFOz{!nnFxZffC@xrOxXE@XzywaR~J)wRkemnAc*D=XUxg? z#a|I&&Kl2wDO>6OqSBK93;Jz(=CsS~I9_$7Edb9fft@E@ur;cYa!Rytm$6DA!|cJ# zOoZBQ1+OtZYhMGvF~SzPUITJiNN5}{{S@qLOlChB&d7ogGYLt6AolAN+$I%8 z0c$Qfs))-uLA9f!-!;f;mD${C1>k#9skW&H#>o%ovFT%KP35G%+eL2+t zg=%MdC(eC5k|!ULazh=-Tu=AA&YGa8u|BBgK<3 z1xHvUZ6i;Gc~@`>a}$YkGI@?lvw|W()^r-{wH7Dw1~Uegm55r*=TdV5nA2F=VzIN2 za}=ei&MY9E$KAas$t*c*Yc?NRi& z^L`|9+a#!)fC73aUtO)zl-CgtVbG+qv>+KJXXQKmD^gA!SfAZ;(|+|QviwAuU(B1 zzR1Hj&0upoGGKVc`6KnbW=>r?cd-DltT(!jWG?TxV(@MX@ed$ExC?xxHUI^U<#xzA$U#IiFwrGJ=r_lLFmzw4Yj2Y5e9fhky^X zfiT)ggaUQbZR+4bXtvTh43^QBd5e%#cY!)uXS`Ox%XkbjIfO3|QUDGKBzc{>c~@fr zz=k7;EpNP(BqnU23>(<`>C(K{<5!q(5g26i#r$bjt*jiz6)<$oBVs;vw*uiyg&1V>!)gFJg=HxMBtiZp$H;WAhv<>ku$TQ1n3+5ByQPhz?3s3J_hh5Av*71K6iO9+E2F8Ga zx_Zg$73a9?%%c@7K@wqLf_*LYqh-8CI0xCxP~llJqX_^_{VOv=lIk*mLwlP5JKElL zuwEI3sutoB(i@UoJ`jBUe`?(G1-8ja&O{hc0F5s{d(v?DlsMyxaF+6{gr+19@%7f9 z{{SJ*!+4fCLUO^mpWdl0X+gu_(UlOqMCQ&eWL-f1)t?g6Ebz=ZP)H?LD@>JJr@)cg zvT;Ae4q`ArmBY6yOakM8z`t)IE6?#9W-BP?I#&wthUEVM_150ivJSh+cM$VTrAh#( z5>JQ?u0Lwighm?x7N-=K+y>3W<(+lcwPWFEP{YgDo0)O|9sdB2Dz&ogHVH^_;F*wM z7$lAKtuL~1Z*%cZsCe>9laNFa1XybzkrdnmFJo5XTM1#3a`PMmBX+SJeR|Rm(u3hS zp|E7F1WuZP)@!f%bBjkUl>o)YL|lNIljYmetrei**=G{i2b$oBC=!B7WB_-In&)vs z+sO_U3z;CBd@0KqOcNo;91oz+H0^)CpK9Y{xU<;Cn@UMZ3Nx62bG)6PMP!JIz(ykw zp!#`tk{wAVe&V|>ai=i2Y(qgM!W06WD<%NayuKS4tjk!Krgzf zxv(SeN$O_zA5OJ$dqrggv`W;qSt3X<1Y6h6g=Kh@D1@#Ik#nbW&{~D1 zy7Q8hnFOYEy!uyj3xG}?rpv3zGNRL30Ws;;{&m!F*}*Kn36i9wE7}{t``Wu$LO(Lv z-*7gBoZbR}R&wi0QOFY5Ns#2s8L&F{qH(k`m9j#db_LdS7l3;C4%A3EmOu0O zry(Fls$Tv22|aq&95czw&sV-ACI@}Topk>I<8om@3dmLrgCNgd^~OWQJlSX5{AicK)tP+t01iE8`K{9O!;kHJUa|?5hyEJ0kY!%0P#llxvL!Iwpeyj$ZcgL#<_d{ z0E))66_5ZcD*;4AgRr^vtz1da_9X>yj}!(_GU?O#q#own&FEo1_Ss_4A?$b!9I&8c=*p8PIn%jntV6SUJx7{{W$XI@Vgs0^3Qr zGN}@)=sW!)lzDhZ3JRyH2|7(wMO#Q2P^VH**!>OIcL4XTjdIeUq^V160&|@}=sulk zeixZQK$9eyJxuyhyM{P+3t=FwQm0@TM?!m0WX0l=`qu!s;eb^$A7Y}OD{*DQJRj3u zZ+KgO-j=44mt6@Y4NdNQ)wZ_XZO3zm7IX`_5H{&GSd;Mhp@Ajjoc799pc_w4^o3(o zjY9kWjNLtdaWB@OJKi;|d-+DYNHiA2On%NU;UNai3 z$U|XkF_tZVzLee-;Bc=HtnefV1cT>P)(y5&)^dfYi3W7;C=eVW{E0{qTk&t(&+Amf z9mcfQEWyYC*qu5}bKP~!N%1D{D`&I;_Dx5^z7?XLe&tuvR6ba@NB%QauPBlSy&a!apIx`-Yj+l`K2=9T9&AZu#+U6 z#aD|p)KlSZ5ZDnAQEhvQ#Q{gKY=Kt0IX(P$q6>MAm?gQ41;sXT&G&!nf!S8N8&ad&%)NuB^T3gI@p7IbzdvvR1 zLSbV%G>!cH_o)6{GIA0eJ3+dKdf3WQbxL{O*I;wTcN=u}WqoBMU`ren4LJElrH0MfCOJy+z{ZDTy+{Bz7AI-3rXYy9 z9#Jz_jMCg$QkF;~VZ2p0IeN!hW6DVIfIudas7bsT=ql&ZXmbRG*jz;?K5za%I(a4} zNe4@4X&FG0M4kHzsFM(@NVlaQh7e|Z(vYDB_R!M;lBqiHZ>2EM=T4Gjbg5Gyw28LW zDTco70eP~zTM;T*5D3;!L*A0w!$2i%CA2u8u3FRz&9**T`PPLelG@7hEVU%1%S@S` zq}*GqMJ&ri1|2!`;Wxn`9P9}bAY%OAvtFD>-)t*ge5M4kQJzrsnkK4 z@{d`n!}3!8LgzOmva6E(+A!thf0H{F`A1cnp~Yl(!Tcc3&faO5RWL9qmr zB!QkbGkP3BCa4hh5IJr302oNE*pE zKT8hO0*928tw>T=Vhmk*3D@KBwHg$*o&`V$5eFlh6p6I;gX>E`Y!Y$jV+05%|@BpKH6_Gyg-a~7agax*EW!9-r*6L{14 zrYQ57<+%u2$BWuXDhGd4@UeExfV9u z_qUZrFCs~JOPOUvgA@7<&&2cnhU65_EWrW}raj<#ePXSElq?dWgO)^?5jOz* z!S6L;DCQM~C17Y=P|`1_$eOpBTS;-n z1tLrr1dpFf{7nknIJ`n!%#M1jX47k*J!qZu4Cq4glm)0FOCq^W9YL2dHDFzL2l z(f6%Jxo80?3-ORVM5PJT#O@F8OmX1<04^3wKnEQ{(l$ALXZJNuWz0~J+k_n4v3WBS z<)@aEQYDh>WokU2QJGqUKi$}#odr^e!@3BJ=n&cw@3eLUw|cc<%iti16QcBVixV5_ zeiSWX!d>yE<_d}wHSM=TEkx**%0f$Wtb~=4vploZ6X{gq(y&Q_gaAu(ioazzGc7TM3@MH=#mG$VW9T!=KwI3hUJG*hL6-b+oVod3OR7sS-pVSexyBl$Tpu zOF&CRMWF)8PJ_6g;*G9a+6<&CCG!c;&XMsm)~%JHYeK`Q9K^V z9d*9+C|~`#c%)<=5J|nv6aFZa_KQewE<#8k0RXICO!kR7Uay*jAq}Vn%XgLL20F#( zwM<7WASap4<%s3wfS{SV?W|DBmZFwhY!e0`0p4RzDhtXPRI4k2(U&qUVYt4NYNr>; zO7ei4l|Yo2C#X98WN$<4(2Ti)Bg7KwWoZLZI%<6)n6!j94y|0Y%*>@@DB5-!3*Phu z>&cR`99dZaEhZz*H6Kb4mr#Y}_tKtTX3c>je2LP94DwqGs3oErrQKECswFbwpl^76amDJ!vtj$?c6zfdSc8O(;)Gu&RGk@x?4i#O7iGTl5L^5{wbxi&oLy0f^J}2PUe1dT@ucuM9JrH21ksyT!EJWX3zP}n$)^cSI6j(}v zWTft3%%1ye6~?>s^ycH1a*($@uP~h=5gL4}l(o3>T`SFy->@db*1H@?mRf1DM8Q52 zB+im|y>c8OwWDMMnowdtk}Kf<04weKPvRoh5D%b$if%YR!>D zRV4>`oqGJQ8diq$a?VwyYYILvN~itT$m#a^ISr*C&Sk)vL75x+iqVvNx*=i$O^4ss zX$i0^3PSRY2Zw%?;DDzPDtuuv%hhBL3H8)`??SvlAq6TXB!RFM5Q3J%)O;Cp86N4}UX=EEZMSlX0t{** zeC_iU4vRv|*~(U>oc<6Z2--eZsLzN3OJrt(L71Hk?@8wuOOlL;M)&PtG^=FGg+Vf< zkZs|&+?evL#Y*TSn3RB05ITq@Tl&ZGKvZ2E)sRAtSVFU0kFymUInk69z%XtJJ>%*7 zML8KVmlCkGj}By<*51Q?E1RS()h*<$!lVMBV6^5x4)(PWc`Ej2+(m*La!gO`Ns81M z0mleQE+cZOAVtU@d(uXDm82m6$k669U`GD{>WXW_dsaatExX792W$PzR`e9IvXzCl zB0*kIy@Va-pwbIv?V=)kWkU@|2Q?ee9%L ze@mKDPqaWu2-v9?Gq1;9(MH2vS#boRX)d=AU=lmV3v;H64#lYjZ9oF1W5* z97JUNwe6v`VQi%V#T?;a#EYFZp1mtmNL#tU2+BfvU^WPem_L1Mog<=xv?Zj% zod(b*=6AisR+PMys21B(YeR)dB~}3H2j2CGOUg|6!~&+02+SvF(`s&WC|FWa;>=uB zXD6&q)yD(YtmX-TNfTvq)3_b_#qU=sXs_6K45)%hfg0ca@7l8~5tIl)8Rsm(-%t*f zp{LM!W>Q=V77DQ>{D{3~07UYNb4UUK_oSZs=Kg7mSqLr_h=2h>1W7jozwPBuQdEbQ z<9$kDYJ!otJ8M~%zFJ%%S=$FRBlSp$x59j=0a=!{sSXZM00ksm#^>YHdbf~Xrt)M&jKEl0I?ep6aC5OQ7|L@7qcF%~ zMv;95{&ki1Wg!sZ0B$oBuY9C#1Xkst#4M5(%qkzMN8BGsq^Sz+O^^_3w5xStbqj~(GW>DByIlUvbW)BVQDBUkV(*A zYewt-4p%TlvUf8#%> zAbM(=a@Z+bXYYf?0qR2801}0HL^(w+s+SarAQ}Ml>(H< zF;Yt7-Wo@HPsWX$+|0?9k^uk_2@#?D=~UCGPC}%u1gJoP_D-I3v50X%p#exltt479 zgK^$XN}UE!L*Y=gq@5gzKkub!WhyUbN>YMA9K&rd9nEFKGNqs#=n=DklXIax>#Kyr zB@Cf^NMA-0uWHFszZb<5E>~u9R&6N05#IY zGRoQqD$j(Asw1%jUH{QUH%@^jk>ncnFv|%uWR-{KPj$ux%Kqgl(xVt zLP_POCsN=W_u8^!)V%o|f(f`J5_?Ad%|90L&u0cwAhz0l;XhgHrDScT;~ZW>+V;o< z-%Tb*?Rq)M`Aj><5M(J_rqiJlK7YM-I64V+4K@~Bfet0OC#RJs2Ho6BR7fe32B{r< zq*rGE!ZK#d2+$!w+Iq(QI#M}z)6j5S3Q|bsB&7IbbK9?I>!>|I$1fpd8x^GtYEjh|! z#tvX~@AIVbTr!MKY2mvyKq5HKr286QYX0W$}Y1V5$Eoj4V z)S)D$8AuRgZnd8o!ujpwk`{}SgYy;DMkOqQ(1M7VK)1(ZNm_lND^caCVFDZaQ-X?sj z+v0e4{j;w)=xjF$G9uI0&b)^j!u%WWYGY_B4OjG{==ZK(3SS2<}4rI1X|Z9LF4&4WRYhzeO)XQTw zbpe!sA#wW=@U>=nw;NA|CH0vEHg!Hm(;k%7xo={^-76?dVP`H;bRD3N+M_{PvlQp> zl!k(!kvko}n%0Hkd5HINNha&Edmpn^`8=;Iu257g5Hg4adevw_XfEa?fK-qz15$c? z{uK5KWViqclXU*6(_O^sds9n>8zE~soSzsO$=LjLnqw$9m6a589E-0sCBkl_$QE(F2Xay;t;%6lK8TOj*RSvLZ0CLl${sG4jk!^~1zw3H;sNEXt2R+f}e z5}?^#+a!}FAes79?jsnM*jn2GC89wAV?^u>ZN2GhmbrfTBmfbcI_T?Ci~Xv3v??pN;$G3(K+L>jrY>gUt(D3vd8Rl@d+B9&tY{>jo_amjY5bd1NWVL6C3o2Y;0Vc%+0F$hXh{ z05_Mz<-PCxRWltm;dz02ToR_t0o<6{-OQcqoy1m_2`MQA0!ePi=d6g0sMm{DY?4ZI z0vppIzO;v%NnUBP4rz-Wu6<{{A&mH3Gw!&*c}GPNq#mG9Jb=?#Q!5CBkfIJ_xIK5S zn$*9_l8+#rOwRqI?@Gyp!Tx3EGdekDN={LcBU^Mfi5gbQ+)N%A7S^Su12C{Rur`f= ziqxFRa#10$NG<7Z-4ED`*~Ga_WLgpk<>k%>oj{A}+kW-Sz+v54F8JF*Ze3icDm(T5 zD>qDO$R0y!C`eN60tg~|ZA`?a7*w43NE?wkuVAjC_C2pwwt@p`PcW?x!dpQCEh6!$ z8hX&Yv?-wCk1@>V=n#T*-%Z5!G%?C~)jZfJQjm<(1|mPr?b3`PNO7>^vX4I=mMI7|d$Rh#3|pN~5NczL%ik_?GbaWacRGq-8?Jreg8Eg+07_ z%E~gNw&J9?gMZ{idiJSiF@7d(Xl-a7HIMw37q#PUt+)obh*?V3(Mp>K-dgQ(H$NYp zdk#B?&eM-20c(zGE+IA>9d(NH4&aox`Gh6FsaJrL7u#p8)$;a^W3}_T;T@1iFP41Uq>nFc;o7pQP_cnMqPCoalmGAYZ8RirP|^9$H*z7f(P_ zexg2`*EMKT@h&ku#7RB?5(tSpZLHJnc+|={NLyhemk>^i0%QPU_xly0#}HY}qJ)#I zS`odp1IzcMj2cmiK~hTGM}!ExMxJw5i^R6l45Aw_2HIZ7@3m=~LLD5$dpHUl$XT0B zzK7{f#JXH<#@a$qd_IDr3^{Lp|m`uDRIkFr^Bg`n7qtuK+?c1Db=O0FEf-U ztls{cQ8)%r09hoUbV2YZpd)$t6I}O_=jNRX0Jw+*5=d{TzoeeRyDG#tmB=|8K!DjI z6c11?Z66)0HzzSGDlV4noe6=dx9N+)=~X(!-d=ka*C-d1utdojr{@|7`BqnRE!1Uo zCBkJWQMfw#{VTPM#5l`9w3Osg$`mimM@#SZtT>ijW#C*~-;000XtF(a%md zlCaohAqaUKr^3_>6zM%i<5}%T#TifK)|6cY021nU7Jx^dw6~Z40BpW`l-WYam@uLg zWW_B!)szJ+I_x@aT>dQU zxQJR-tsupOZ67(L;F)!lAx&F4f>e4By{o+E)6Z|WNeWE9Qp%vqVQM?r#k)wNU%cYs zG6Zt>kM;Y|Jjn!e6kA?vgl+)7o%hgIN0O|q!Aybw0FZ6kDU4`jE$oCY0Xeyo;Qs)B z&1+@nKQ6G+6p027#CQ4LrVR`y4-Tw4NfX$4d3C6qOZ=mU!!{7fv9OCB#?e8kD;$>8 zw+H3cpJ-NhiviQ&*0nDlFwP;gQAPJGz%X(|cWAg>Y zW(~lE*)lqb)J;Y$czj+*5K_GBM3lL>CsXEh?OMM!-fXQrT4@Q_Nk82JvADMJs|BPe z^2`+>IY{XPZRWc?AAsSpD?;-npyXsKCJ&&#m6bB7JYBTmn`yi{&_txgq*_5b{{R=R zrvc$kaYdE9<6)-KR5RNuG(UHnR;E$G_*Najpp%R_!FfrLNj9|D&4KglOIH+o5K3A+ zv^N4s2QZ)N0k^_FHP8MkQ}Em;3ePPsDM7reQiwA***;JsYEa@hmeRE0(G4TsN4kRE z+8g~k)M1o3+VKx4g5W6x_>5^8dXaM)UuthPl_;`8TUc0@ve*sDSJS-IDmy$IiDDJQ zl=AXA>;Ow<5gUji){gbtSK_QDG-6YWWE0B=lbRb!Vlsodu)T6w!n64nxnV7@ECe|q zP3~aQQNoMJb>$@x(3f!J1ds)fUzMws#m{c<{{TzzIL;P^aA`wj-3^9gFeY}idBoDN zjqt{Jvkqcka}u_I2{}qah}2K%{{R){_?Hqx=wTQTpti(2lxhjE2WIOC^v@YHw^`eUR{T8J*Kf>&Lt1N9ZwvT8hG3!gBAy< z);!H?$8$K|9$P^eMqsD`xzfW~JJDhA7<@+)3&e8PwInuLnTzW?3yXH6UIQGLzvD2N zpxXt};1&*E=QqkcsP56i8b=GkFdj&k+|8UMEH)=`vDW(6SB0SsVjFu75z7-HImQW zsIeb!Pmki9J&qpoLfyvV8zhFB85`4C{YKqu9|*@Q9f{_+G8{vIlChg8foRxTHu+bM zXBUdZ{{YxFRme#$6r%Pz+j*03+P!xHU^+@MOIjF9c5sj~qe~9D{hG`#IUUEaLx(ov z@X1rHm8gl5WM9j)bgpk6$KtqdF}D|p4VQ*gwz4zY36rl|n_4%faWBP>U~u3w$}SQ> zNh2U2oqE`VYwfLg@s3U}80Ie$wc-}pGj(JjTn?kle}!W?=Ka@K3y;O|974QFZ3T8w zfU&)f<}YgWX<8a#@Q)q_VNS}kgXVwT>&9SO#be)N6tyXafP|jY)205+dbD6Mc$5q~ z=|&R;m>yyGz}Qc1df$30sTRI4UP9YpD#SVyV(9UMtVV+I@UJ(HMmel$Kw-tKl6kYr zBKOzUy{{2p4B%YTusb{C0{Dp9__=ouBFd=z)L|rWq48#ns47CG4 zl<&98N*qhfwAvU`s&v61MuTqfIz^lm2@*nFWr)p<&CtjUP*N7CMPf$zio zLmI(GA!UWYQggW+zP9LQCTlu)!f+Usr2sSnJS!$j$-K=g6~-|NS1B&3*VZ7dtL6lM z1IlU}C7(=q+yLQCH_mWA>h0jL)1_V)2ApOs3JJ~*h(?*lvEH1H7l>9y+s9T-$DKU1YJ71zsXK3(YPuBIah#|pwUmP(d|fK)-cOldw->s)5> zj3*R^lyj6A0Neq%9q+9tAI32l_CF}oYIZ=AHV0wXrNyhG!ti)J4jjFRSZ&7AVWcKj zdZ^pIW+r-`*Ts3ftm-9V%u-8e z1r3-EWIB)id)J@CJh!ntz|bKYtC z91x^0C4o5zSC;lMMUVdgh2fk#2&|2-657z>i4g*KBWd5#l6cB+ESA~I5((Z;gUjn(5hcHD{{V||?{QpW7lu+W%{DU?1lclvb-~86 zR^&G%wgHurY&Sl4_4A7KkF?ea)Ft(E970!_K|mmGN8d{4VbO;Cy4+G!fjL`oTch^t z+M^zhZcjtt3R?dFFw?nPX)RsP?(&~lu8MfuoHen@Q78lz8423T^VYbk!?>ox;1(ni zn?rjlI_s{qta-`-ZM1yIa z_rBFmo-^{z#`uRhqV_)!ryTd2NFpY7JtyI|m5+yG7lUmHcpMhvJng(#3 z{6n~uCy>BC9PmIU{=F+3&pnPl(MoXuNLWym+AlP8k~P2hiN|owrz)`!M5U4vECz(> z*MC~)vx;X0iv|_Wx`NfRx}S&ApNYZ#R{{Bg;CB`-S8WNj$88OH*3)wi(^}PIhN~+$O-*Q7a}%}vwGc$;=l1&SMd0Bp|>0-Gmk27>DFtB z!nnhnHI8#A0RlWFAd(J~x$8aa19-eo6yk;uTybk5u+oM^uU{Ym277r?7oXdr{{R)r z{zjc%AP;m4qfK&+4yN8!>NpP+!eB9YWxU!8V3W(;aeZUwUUL`taXdc;9(5q%T{bP9 zcRdXM05p6P2IehAIl*B-4q{A@4U7*yo6#0a9@FtpBIq9R;Fvn(>@N z5smyqj2y`gBJ$z1TT!>|6gccNcz!Ch;hYbJ5^MpJX&!I|W#Ye^!Mi-(Tdt_cH_BsV z@8{l(xt;c8oQmmEnWGLj^cFFS#+t#!C>^9& zPR2DhI)639;!ArMi8yA~vv>kSpde`-y82Tv?P4ByuP-4IKm=s~MCKl#-n$qUaE&Co z^QEx?KorRlpz3G*(VtE#aIN4Fhl{FhYwaRp=KfN8RkR1@Q1Xcc9KfW+jls5&>+!9e zZKoc@fDz3JZ6q0hkv3OvFY`r(X}mCPPp_WZlL<$>LAW#Ab@HP%&*BJaXf5)~NC!{_ z!PL%|(%SDufxxnYRPbm5b0xWf=jBY|i$iTABAgAjGZ}~`I%!G5JcpEBl`^625=THr zv!Z9M4fN3V8O&ovv@{!H>QjqM5(a_>+h5N?UPp-~NkZFrDGLWp#?XI$wy#{iCHa(w zfi1IeQrf24->q{IhC?ngmdWvm0mXs_n#Q|TLRJR<01r6JfydTBSdxS)R!08-3){BS zLxg(`fqDK~QtvF1nAFej7x`Yb{vl;nLRakE6CBTVdw@FWTz(tF#wAEY$%f@1&WV8* z=qJv$H(kb(?-&531CWHsa413ZCqZ+z^~%RQw7&$bfgnw!-UuXkK$wc`lm?w|4%E34 z+I^fytoPC@9v20PTSF>Jg2+(j*b~0G8raQi!(v)v2mLh{9Px7%16|JZ-{o8kW;ung zK44Z&;CnuWQ}dmBSEFA7D`9TqT(d;;XX<)=X1uD<6O0e785_B5MCBWv){i-)Om^^0 zo-*Ol|9NUU|GTn3v^hC<;`$ zxdd5o-JdiMhjSclZ&tH{W{9()sMIkZ~H)=uzsO!*rYHLO*rm%Q*VZbezg%#c)_1#~+bMfvB zM+*dnAe8$@59$E^-8<5I7%}{76!salDSwy-7Lb(XfKB_G?Oc~JYsX|N_LKV1p*iPL zI((}t!^nMSF>!y?kOj6~wkNfAxMmRxS{9W9%N{Ji482YMU2Cpk^gJgGanhF@SVLrl z^EA!e?|WCN!@ko^w}x#Ea-jwY1ew@>C%x;5iNv~s#tnq6({#A>&Y%!2uC<|f2ir?Y z@dq4)=H_M{Kfx6aci2A_ahBRyZNF$+un4@EjW_9Dd52MqdR&wg80J8dNYsO``L4S> z2M(M@Y(PV?9JEM{e)?@($B@n+6yt3q5TzW+-BKptP4=sej{5k=D+U|S%ZCB6f+E0a z8vLuxr#}$IIHr(>n<=)iodv(o?Mrkm3UE96ECyMFy}Z7ar70~kgtwSt6eM_{NQep@ zcD~iJVoYTWU~sM_O8mmlh~>CV{&(BXx$LRe@etvF5)!7G1H4Rc9XnQsFixoe&_FN0 zK`o~vMZgF}<9|;(((!nFKL=QJDK0H$P(UQ*onv!97^{JY^9>|5hm_rxnX1-%t<) zXn)Q0t%DX95Vw>|jt)R4DrQJmeU0L^VBTAD$Rn9xQ4=RykCkD@6k(jm%5p%k00M0g zKKl7k@U#~Kom6uQK?*hi8Tw!0S7LPjYTV*YS$QWZTJ7uS*w>`td^!FqnNeC$p>j+Z z76;1z09xf>aBQXA&a68ik~2shXV%g>*L7TdSUw)KG@?M*-D;f)@;?eEt^5^j$ON|go+LIETV`VCKN^o^xhfa07~tKF9_M1dpL)#g>~F&-xp z+j3w7xY~T{d5MN23z@iCP%cSqBwkH~&vSoWscA_|PGo@h3u6@(n2 zVA@1|38kX~;?(XaOp$O%8`w{MYQN~lgom6ZV<0IcOxSks(va>M+-@PlxM9C^fNlZ4 zUYq>uTPWn7VNvEFp8^fdy7Z;uO1~@|WxxOdJi;$KkB*f^A!uU=;V4R0>_;%_qtf0& z{cA#TD8mfPLYE+jBI=Ji#xToqVGibMB&cN;9U`K6L1ek&06@HeN9r5itTCU=W6op* zhL8zVB0`Rl9}!3SmhjCsKufS-hYSSle_?vbjN=Y8(@AWo0pSH24#!W4tS#aa5tx!3 zaE#4^beqqX)Wn&^c(d<&BCy&4f(5|_)93P~;kZ+bhcOS6%VbGdx3oKY){F~H@?3f6 z1CRdzW&B-_-Rnj(3i{eBSjgeOEPSAUHM{tTV`Zl?c;_9;k&;QhyG?9i#Gy_p#bz2HU1su$aR2Uc6?@qMDG6FL#Dnb&Fl1|aN>3X2m;v0G8xR8*7a)iL}ldZlq zXh$gyXGvwns0*YC5hQ&pI$Ig@pe4{iQn`RdjlC!_nDdEIR%JFMLvlt_=e?*JymNR* z0X3XP9}5 zKG8sdJq@%2N~8t#x658B1WREI>Uy;IP2iLvj`E*m?z83)|^%(vOS9}wU|NPf5x?)H)Xk;wRevzAg z{{Z5%b6mu_ryX$f7h+@UYS8Wsr6nZIji$uxJgYmo5KxtngR$86u942xNr~3>X$C`0rXUZY7*d zJg7oEMg+}YigmSYs!(J%t72^@_Ow>KODv-ZGK2$`R1zRAbnRS>PZA4OY{0}{S-kvf zQ$>74f>cOuGY;EnS(MX4iDjN#mu~~CohNcDW+@MF(nE^_5tc{_nfOp)aqTkV0uo>X zzGAkEnD1O%ZaH}OopDY`TD(MPoZP$pb+e{fcu~HGtcL#)Yc$sHVDE zFD>Pi#DHzIbdQ~B;TT}+@aj%-M4z38 z=AO<0rGz-8?0+oOdysW2K-iHpgsnW1y17bzN>r;x>rNZ7RLQX^rigNKy;22sQ3Ccy%H=o?a zVJ|6?R3W!F5hPFFr4A+KVpLDLp#jg@vkhKyuoBXgZv%2GS2&@D(vN(L=CoBIl(MYZ zvxo!;iqhjr%^L-INtvHIQt-)2G7>ynUJspVII@f~Qm~_P za(lb#PTi|MFNq~h9}<=iYoETIt38a^mxxLMDMAUE2K@~qm>nq30TMUAl_x5}acWL& z%FJJ-71FrSKqdrw$E|e4Y40f+zyy;$V)S<^$fzXT&ClQQNmng0tGY*oNt5xRQE)y< zKmZ7_+L&u<-b-pFMGHj4U*+6Z2eBbeE>e1F2jR6Fkn&KG3J4Y(fzp7o2nA#WWwaS0 zD`bqcwx0Hpm}EY)(ur=w%4CBQO=SvFh=V!$8rX(_KnuH_wyUuutr^f46L|6zm7)X! zK#8rc1It;6S%{C*@vNZ<2gM=|vjfmlRM2H1AOVwcG{U511OSDnU22scKM9jCdiJHQ zek)&ddatl;uH@Qg1^p?>QBpGACrTb3(h#!Zm2EO^X^t%`TFO5_vF%w#d_!j_%%~>j zMAAqWv5ibthn5x(=qVJHI3@tw^cuM5NOTTx36UBSb)Ys>-CcXpx;$_Q6QH0@T%@SN zbP-)5M!0YYm>L5}TC*6FJ9n)`*g;GJB0kM5*(mA{!jY7)6r|;d^6N=mx2L$UkqI6x zO|`7+QC!4&8LEt`3ps!F*GeQ3nM}YJwF)LJtr8XEIgAm0mCznz6JZ;C>QyFE*bu1J zrAYh2nIMCe8PO>UF{sna&Z5>`FqJ6tAz9WSNz=^ORBe@|ZjNFQ4yC)1Ghx(kNI9Bq zc^p^0H!>}(jgQDpeW&97&tYl}LQ@VQ!U!6Zw4W*e05ulck^ot40U}}~By}BUug6M` zAMxP^om2u8}i3gtEOo3)fvZRBUX{W;U3rQZy zAT32VaEKjbPTKd@pv{=Nv?0Z};w{8T8ccT9DAt0eaw1py{{S#dLPT`htoj>S9zF+@ zT#y@Di6GBw(jCJmDw5)tokPSA>H@|LS|DG)N;XiIRJ_U{kI;f8UFYvg6`?Gp(Imu` za_&1mzGQfPu;;JC2eCGZEuZB}-dr1yGBb`}tL=t9onRD<%N-2&xR3WhY_$n+r64pwDvOBJ0XkZ3QEMnsY^Rh^Qkg;bK-_m1 z*R5O4lsS<^u;LTqWxW$73}|-ynm3!}fDl5?Lf5h@`WMg6|F%$vLX;V z?=$tJ^Rq3`&_D%7NwEiVeqL~C=ub7mxgoG1gsZKs*GtqZJglIolH@6E+IkVVG9r7$ z1auPVb2>w0l@Q>7ED4XTw5W%(yrSqWX9d3*0F&n$RVfK|1gT}a<#afb93yglew$R~ zO7kU4h=byQdrpAfXd1(=VWCm&A|W6P85{2cFa9VLgd~#5g6Z(2i(FU@<|NLPv=jp_ zS-@kOB5(5sg-oQ#T6wZ0>Pb42b8Al2FwDajkhhs@f&f^xwpRVEQ9!LFCzgSmF>S=i z?q|2}O-!vhNJ(#7UeTn-m!9;MsfnD5TMF>03D^S@CsAW+3VAJ+WC-P~svF2}{6O_P zccSq)p`Q4Ha;6gio&42rty8{gmT~+akFp#07S4#CEGFD|9HVI^xMxk_ibH9xcq7^q~hkpf3)G&S5A@pif!!n^Mpe z0??G927S;)j-?;qu~<)L<<0B+Ra5E0JcJ1 zB$7aA=72U9nfubFMO`@*KmsBmP(I*qLs#I!wV5GV+fHs|$@RCT6TTHM!{Epgk)R+A zys2$-*=>3J0S$r{ut-(r<9%%(3biG)CBV`{gE4>sHtRj7dMLuQwGB3~b2&a62_nXK z8ht4N4ZM}M26c@HGIh{;?kXi&IY?LlkQ9;<1c4w=QE9DTm@9Bcfe0}GiPJ&cZ{#SF z8dHivbw%5gIZ`AWTo0{UybTy}D^qFA*o?V>)JFT#8$#bg3f7kvph+t*eGi%1;p8O}**?&b9xkAbWK`uh zhaeRp12|ibxu=kxl@!`YFAif-m;ekfs8O559XB))xfv8vO8jZaNja^g^`iEQTZ9#7 zCM1cxZN7v3RTZR!r<7Z9u3D6(Unt!DK6MIPR&+e_qDV1dNB3!_nn{glDSju5uuxI~ zhy+MJ^h`y?t4AqHO59LGnN$E%jtqpDlW~7PF7$$xpdn7- zc>=x335n`Gb>0OLQ4W=$LyHStr38%T_8q$&^s7>kx$&0sK~s&VU^;Cd$*7o7%z`tt zA+-Zx+7InXLJLq-lwMSl*%{5WgRI`$QGCN!nJ$$TL$FR_CLmkOukS#%ijys+D-R2R zoVNg9TY1z{Lt&zZ*0d~dB1Fg?dXFl!d)a_4EJ-C2Nxt1kHO9L`5S6JN=j?DS-$`gt$O&#h9c5E@LR%pFjtCTHi=ZVPQZ42Erqu z-!)6WE^iYBq7nfBz%pVjcsu#Ua#WImc}twjq+AW9HP_-u<+fZoP`Ct1#Py9RRJfX`(nS&!@CtoUSOKKMBQMZJFzn|7=NNHKzA!bTs zWj|VG8WfaDWfKu0F<&F6+2x_RLNgU8FECBaPeOh*rphIwvNG!+`2pWUS(3AD1BFJ! z81fX>T`EzPBmhr(;HPD~%99A_0(Q(;DeX zX#hM>rHt@NnKsx*!kpO-w*Y5Sl`u?@I+3{6xz|Y7hgm~*l4jhr=FJ)(oP4WmN)X#? zQdXFS08EJJZQJ7&&SpXoPLeGmPQrAxZ3|M6(h8D=l4ebhQR%I4>DD)2JS7Nm!k7hW zI!uZC{wXdXJ}kLGRk?x<^%uFH+Nn!6LL}OGZg2O{R5?~X1JFVG7b-hdSEfDjviR75NfuAA3441^T|q=0R0NgEN@>026i!wU)t zLw7TM?H^CGT+?${TB^hLeofN6-*Ztn3pVZ0{I?0iiEi=}2phjlXaH6RMOxv03h8U>{^~Iqmz8oN3IQn+ zZwIi}MI=1p%!QlS#lW83DTpOpw-(qzf}HD2LESd~K6Mzgn0Z-{txj1`)E%VsfxS5@ zhWt{5D3F`n9=>O<%9e$cI^antKoT2Rlip)NdbOcEpq$}x?+Ai6gFb%P`VrJ=A&GOIWm^86w?cOG7qp$)dFUTG%a##oD7?g9O(a!Qs`;0tvk6tmED zk12{eCQ$03X+)K16W34Q<5V!2o^O_*24YOj$QLK}@}p@jvQ`^~p|hDh&wPm6<9Vi) z@>aF2N?I)>9nPQQdXNpWw+3AK$ht}dn{ImaAL6P#pHJGcG?yF8 zUzz|;8B}hi^1zTyyfI-tr%h_!A+(?`F}_gZ zz%e4`*Xc<~LQn|z!OB7epzXf#zgo8nFvBpE0Nzqi<)9JP)1=ohDs9E4Tv^NslB7kq z2c>Og4lFi;>JYRjI16G7*bg#3=CQOwB`av>l1TpE#Qf`PL)iEfm6LEvKqJqw>8(u- zUQR}2fB__Own*RS@vNAvLK;%Z3MDpAEzPHK>-VKO*Ob!yA;%C%PznId?^tmekdm|z zLL({wfirvj=^&-Ja{{Df%w%P_GohWPK2*09meNoXqi}hI+zsx2bS}akEAb!!Aqc$5 zwe__DBr>p)kf9Qx;@@A6)j-jg^5H2wvLFIUB;Lcn`=COSryM~_i;91~-oIW5tfENX2G2<{t{?IjnZk198Jhde#C^^Ugq_$>2{^8TTVZ^+& zgdb$%;F|`;zVz)|kbsssNm7f3PcmjtL;c>7@~(b3W?Iygg_VLvQ4)G~ku^|6ysle` zbC$FV>)=hIeC-tWTvk9*3y2~Pa0H!z@-tk;Efy$PQ-A@NNfUGMwQRzYv^J!HDVw1) zl!Mp%devf2US$$naI9+pT<&fwGpvN1>c|QRNHYL+neY2nrQ}OF~T^2|@m%1YDbGp^m+N9quH*$l!3;d_H2kxc*Tb zrRV@Zzk0^f(2Ow+G~0^?64^JCsqak2DFqy)xT5$XaP$2$XffWPCkW1LNreL15;HEv zeKm`nVAhTz(^w`$Ng>58Fyb@b_ZO2JP~dT>!y+ZZ>I@!Q2Zm>^`rPeFS`-;5X`sN( z;xJ^|M9)~B^cj%pkU~-iycq zwHo#|rk0i#w5uY_5**$<#=!4eq+(m@X(b@{$bv!>)ZatbY6Unk4wVEaB7q)a+w`Jd z8u4(C@VL z6^(BdC3({_NY57^`yK3U>s;X1gT!Wi3P9#KWg|OzNFKU*`PWMgiz)>wh!zcJA_=fD zsjfa9E5wf)ge(amHz&CC@)f%V*h`2641mej*0}HdRi?KxrMjdzRtQCak$*A!Q<%m> zlPL=(Bqr9>i2I69HN1ehGAx3mgpf|RB=5<1Ow+r@{Q%#b8oP!7Mva5#P-tuR7#0wziO zHQSW6hbS;xGaziK*za4*%iQ)g;zH3XImE!5fG1&9he3bGni>RymqECmy4D9CJoE)C zI9dLofG5a&$4b)9C1_QZJh=+E2hzGr?aI$hEATf7%Ik}{gMYr%ve8pM1(0lGEr#%R ztr%j5(zu>k&=DkSK9!;TJTsFzit}HrYx`B=HHQfMg~g)nn+Qp^ool^>Q>(HwDFAA0 zJqGp1!(fZAm6RNWixC8orFw1_>Ka6;$TMyJ&0i_*$3d1<+OsUqgu&G5_G@k*gsCkA zKy9>K5I%lYFj+}L6(wgxi<9N@u8N#(0kje{m_6&!BhJL`5hx`=c@RJ`79zP=#}uGU znZ3@j)E~VowTVizI*>x<<5?sRyH_6+#r9pj80*sssy>UPq51Yf;LT7$<2OPJ+30G1rT)Jn9to zF|d^>1-lMbfK7IIegl%&DQ}h|FeJ~y{{ZTj!te>_=P3&pB$0FF-~3a!ml94NI0qt% zbQ%pzS1B{ycDCP9&Ewd{(2|lrr|##zTYSm**M`J@-7lFXsqlz^b=JpT)!pJ)(}?iq z13!o;kbJ#uOZ>4>IU59s<;AWhNv<~Q*TnIUHOWlEi4ZcTHBp_r{{R$+&o#GYJn)3c zk*Am%n@nk2_^Of29`}M12Kl`<*13-%f0r3n2r!imAkW?F9mn2n1Xc)SmwU zW~s%t>ehsgSUOnfKALO%(-nX&5VqEG61W7|n*e^a+&74=1=5fN+(Ag{dv>kYMr4$= z?*NnnJ=1i+`cYu;=yCv;5fGqNmM%yide*1%w}x>0K3WCHGbequzm;XecvMnb8RqgN z?w|YEY!O2e(i0 z6t#l4R?^%J7`uH2qTk#8E6^>Jw!-#nasyp(0ol^(|z$PQ0f_`-%l!KmV0Y!IJm;RG9q($iu5(HPl< z!R5oFERZ}QV8&QJG3V!2@&bwrAt4Y6aNQC&zP&z`)50M*f&#)q)FMK3jX)lDpDJUB zQ%iAVDx4 zNRvMvzFn)Uj(J53X-a9;E>AQNNjuL&*UGu9FzI_T$pm}L5i@NE$63CWa|Z?s7mR zgKfO+Yg0^fu{b>GC~zSK%}T8{+kTqW;qdQ6i_PO%J_ikqM9AOIt#=p0l=B6|r$03F z6L1KCFB@s0tZQsGhccw|2r3C8#BL*A|yNhYst6PW=5TPha$=hH$4!c&2D?TNugq5N$Ko*G5?M=hs z7O-DwD=n2lDjH}3JtX{VVle!i>v1Kq7l_xP=zOa$MhV<9loAn~nDE3xLH#6+I>z+e zHXPydDK>Om^E5HnwP{)#P8|wZ<(csUEDS+C#kU*Oc?IC+bol+{AMP_V-0jl2c`FG4 zwYL8NCDkrW5J<4s$jJCtLkN_3GMtMFGY#o^5+_fMBM*deD_USFWZV&`>^`Qn;#Qm( z0V+WQLvj_+Pu}%9HR4)v&)?=G35vK>&=fOvkTDslJIESN)TxmUk*r3PBguUCn61vB^nrg&_r2 zN(>E#{dK1t8A{z!oXFd9tiRiTb~d$aX`I+%69kbVWyqUpXtlMe)jaxf80gpg5kqD7<1_ablQS=P@nK`o^v zvYX1IG5&2;ddGe_w52rS%#?=Pwou~Y(YZ8+*=)!_)HLX2ej{7u;@~oX$o!@ zbp`+(C$Cy3nIVweC8okkjHpUt`HxXMTjNtY)mh{8!;m2hN+oLpR1ze|)4dPnxypmf zSyM!E)&N26+gf_cl&r~UBXS!u6>Ii^I#g)_Tv%8~v-X+p2;O3^aXG3+7c-fUFd<+7 zLQIVYP_0O$duj9O>P)zUf&{iCJ)Lw1@RQN|JFn*({ zx0$51mzD+i)P{o6bFmj@xWB7gCvL;#7>br&9;s*sR|!j^*{ zq!IuFNe5yo)rNHe#@xylfRIoHp!|l%*1Bpjhl#Mm&aF)6G9pMbJ0F+UxtN!UB~2#7 zRV+v#YdvB>{p+ubQq)qCTrL7nhTB0O;<=ct8B$6R+M8R0aqg02ljbe8>(RyixOEsY zPo-ffQE|YP1eD%ji<$DQ=wzwo`@=eHbC`gukP{9RkJ69lsHmhkw?eS_ zSdwzdfT`)w@6s#LI*&c(uwyw+rE5*y5N%@z>U6GNA{u3W{Pch$y}H)SOF6OdM=@(W z!sCZwyy-pZOTe~*+R75)B12mce7Dl|=;p}tb+M z<^ahK1xO^$zuV+wPnBZDve`j#VqMM4)4-j*O=n&`Yf1wMA#nk~MfylOZ#2|6mvR*= zJECBpxQG?fOB}DTeqCijO{|8@W*~qJ^^TXdb&;10hZ%2{LWqSqWE}~Q-m&1zE;jm{ zaZR>>VA@WmVD#(qnp@cHI`G8`Brxbe5jKKuJ5u{gSy@uUnYp*NT@B8Wx7=38nZqju zk=6Ltd?`hiRtDSKa4XMX@#mM3Cm@|xbs{3#bQRd)xKOq8iogL^QDsb!AI!atIJ4nk7~+m(X;q*q;PyQi$buBX7*u9mG5}l`8A2=aF|R`44?!dr2@4HL0?1K zCfcNH&c#IQVapSb?A4f@fgLewv=5%X2`N2ix?+SK9OAPY~RW62Fe&y zCAZspPIaimo#5@D>swt)S!WKXacWsu%gby6zJP1kYgs=k?jH??b#5Rb$uA%YS&u&6 zRl?&~geldfrKxCHnQQ}n%aNh6v}y%&&32D&)<1`{g$^OKbHJGnfh2Bv-uBR%jlGNF zxO5Q8&{qmR%0p)Ql6D~5r)u*2JgtQOapVVEjG<*h$be=y(|YZr@etw|V$-plC@C$W zzX6f&4I*S1+PT>1)b<&8ML37uLx^ni9BsdFn@#t**LtjeBM$x%wvbZOd5Fl8Nk|(` z!ei!YHN#vSG&;A*Thbaz)nI^NnfThe93KIP!>zU%j(QXjpa4-3Hxptm51eaI-471@ zCy2ykSSk;b9u*N2v7HZ|(XBg)FpM*7U|=``k2Sy}m~FYYQ|sQlEn)G9Q*5}EHrhNY zf@FifZ346(=9&Kh9x*&i{`V^1XcU|(9I{(Zgq`eX&c?GD=Hzg6xZe;7X(XVgTPpV? z=ws!6(OryU+u`qmp zEepb?7Oq&4%Ye0zbrY#q_^ickwK$#~{7({LvV^jY651p$m^6{swP(igMX9jjoJbBh zK}Cr+01I{!dy2r0EsAyF;*L=XCuJGy_cfyz#T|PD<88FC>d9@)nhv`88)>}MW2D!6 zgNE78%qX^@Dt*EZ(IGpVX*9ks#T#c1+CnA3P5Pe3DL<0NaRP-n*le;vy|#f(c8Zay8P!L3-|f z9^m}O8*Rm?BzOQrc2S+D(9iK&Fx(xU7lv=yhTlwoRauOg5IcNrT_m#pK>AxKVL+K$ zvPVTFI$EZ-_xg7@TG_(1gyES=0WgxVdT+GavGHCw{yA-^te^(dCSU_Lj*xuJS2Y+X zv1-rH{Js!DRf4n{Sj2YkTJhXF4~@fNR)*Bl8YDXIAy8*%GaJ@pmQD7-`Q|vLJeC%g z*(8v+6A~4v1G&?0je4#XiED{5GPMKzsj1dd)W8G zY%SdX0Mt2R_up=}8&N*p92OaX>w%_FR@#Uz<)7b6*32dw45Yt@2ui?Il`cSlFI-GM zY&%)jjQD~gQVja->szoGY*J9;_?2?V@ixnHK=br7eJIO6*<40=ikxVBMiK~m-RvZ6 zeulH)_$w*ImmlS@z)vwEN3}bc-~0%!pCE>ofR@KFW-zX!@8ev&GSNBQ%OyU{tjM;& z9s1T{_t&RGg?=JyhT*Yrl#!P!WXVRqPL=1K#kl%PgQXCdkpd@8dY`37xI?(bt-_Mt z9kl}h3F>Y9R)>{`!r@uUl|Pu06bS;Ta!7Ex_3g#pbZ8A1J#TPZU&pEk3LW+`HGJ-Vq=sH@q zG`5*qn?f;8cpP&#EdwbgJo;~3PC3VwgJlij(B~+DWdS!o#Mez}=e3ZfZW17+39u8m z*y~vl`*i0w+hz}rxsOA5cHL6eNDW7@jdoFcIb z0ZJp3sUdcl+x&dRd2hm4OiK?TDMDN=pLMx|wa-b@V_we}jA3|$6|xuMxNyKx9e0bL zD5d-K-o0N=TKTHPtYFflH3!;9z5f8Vnv-s{<#62SE@59$bz?e$dO!v{#VBJH#&Kja z%2Ly0B&#%Ki`Z`;O7uK8AA{kHkfklaBsN=3g{DVM_ujRZ*z^2Fx0=Efp=Asv0zd*S zxSp4jsjoboX~U;02}&L1g>x2V1FQ)alRkCrKNNAXj>9Z865C1_Q%3N2@|#HOUS9*l zQHeouEvPKXRGs!6sNOHHZc`X_;#ZLK1`wYUEr}DSr&{V`*u!wV7)VNInc{SuremkA z&y{M%Fym|-J4gV)%91_fKPaVOe+}Z9K*!=cinMjdH+FVxR#%04FLU&+ zZVxi?8Wgxx3usNjJLMhB&3CwaD#Q+EBFsQAQYFNVP4*{#)J?35La{i9TnOc~6lXw9 zqQk#hLrpT$OKZ;IY=V$Zo7>7hRa|Efl8|sU_M z6WC@rc1DwtaV_%w;HB^0Jiaxz6^?%og%GY|t(>I|ZhZRrX&tMQ&I22ZTW&bhh+!%P z%;NDoonqg;T6J7+7~3l42yMVYA-kYVSZZ&*&eVpnE+u7U2OtoTq=i7-cN@;4O?1`4 z)yqOt;J#w&%!oE4zTW{|CfdO8%o@4t zxV(FaoK7JQ6gU>?x*SL(9RM19JJwT&Q#f|RNgjkY+sEN?&udR2N!%jblmlT!$Tn}+T5L3Aw zCVu9dgyFan^Ufp>5z1Qt{{U`>;iYt$8?PeMIK?=^2uo->Hn)A~*jrs~UG5XXaTuk7 ztc8GVqB9HH413;xJ!^I+7lgz|DJxk>g*bzBj^}9j%wD}m1i~xwp)aSGgAGbj2`g7k zJDoPAtm~|Bk%YqFxe6ge^@0;6v8Bg;-gPk?Weo8ES#7B%0-H~audzM7eicu=h2mdq zo>AsS%#~iz+;pZP%svI+rkT$sN}WhtZv)nSYEb98aW8Q+esn1ff#Gdwn3G`}$%@a$ z*(GP1rM6IENzJg4K7X}s#p4r*#tcKLD8rQ!15j>H(_dP?CX6;YNF`}lCLKY(VddHm z`_&H|q^)kL3}MO|K=BwbH27;>-V=t!;-5wv!rO@OgJ6X8Grar-Zg+~{cvciJ#kq~$ zLNl2=dG0=R94{WV;s4mCApJI?Lyp za}jYKCHZt7de)vL#FWc0%PL#suZenDc!1xep0^Y_t>Oz7w z9u=nX+v`}^Td8zAi2kcUlb3BRI+4^@QyYa_SW(CdY0uKy1j*aZ!np4+wBd4+6x7I4 zr|Yj@DyR~ayTqSuT<0uhL0YKK$a&XYoE%^Y)T~w~7{N-LZJ`ib1jt6rSBK^xrNod+W3-4kQzC&sdWkfl2j`O@)2hNp*Y_{yF z0bxEOhXkMr&~(;&-hpgzQ;1JAwmEA*tn}Vzdb~~;l`SkSE;u2wvv?CQLDc^M70~?3 zu`eNHmZ3RpGzQl6-nah%!@A>H+xBP)9w%)-3e7{1j04}eS!qqWqVH5Me&lVx&sxWh$Bb?u2J$r$tdVHZ9%JV;gPiUk zoU-CmozbA!4G)z}eoQnr6U=Zp3Zlp|1Y3FeQ$I7yZFw6@Xi&K(GYvj9j}3)N9x8c4 zz=93M;NSMHfoQ_5*4??!07km`_32wM{51>|C1oMke^Y>x6EZ|>X06;?e3UnZ%0qW0 zQcitmu+!mMzbE-tkm8DoDm#rQ_aC)RjC@gRS~8QI5)wiOyhf3>lklu6;aQRt;<6PJ z;TlfA9V>Pt5FBj{i;0gMz&#?d;&Iq~UIkN^wLE@EsowKImil`kX9D{vnS34yi0YTnKfp(|_!qAx14eKv~F#|J~Wd`2m1 zErdo{@PpcRz5CVZ&V&cvDhSSiAx;qh?mv1a++l^Se892>SaR|+;b3eI3xkFy8Qm)wm~?vgAVkt<<5X3vDG&=@Dt%#^b$t*OcPiIi#+`xE0fzsJ?}X z$K`02mW;O`krU;$EHZHfsv(drwO{Z3(Ed>@q!K~Bk<@v0n$Tg9%t^=yfF|?QS5L2` zf7T>8-WZ-(D_lhMJ!uWRx8(xl9Nv|w#Q2vf2wuKDG}5xL+snF&fmW7^xruDRwh=BV zM8b#!T6>!5vX|aup|q3*o5yOVaA65)DuiTye0|Oipz^rU_c)A`u!rg%&=v(Bo&kTI^ORxPz+4nQP+vF4^{W(zLYI}rlD&X7^Yg7vaTG0}kQ7V+QcPTFdc>5ea-<|=5(=Wio-ijP ziVDoJad2b`&qF$~D~!rfxUe^a_q_^GgeWamAlN4K^|F;R*My=)&#gt}cNP){j0h+l zYob~d&nJfS17x=1vhz<^2Ce4YPyk3U2{I(~AH8VAV;$wAmPkSbCm{xWt26JZq!gry zCh3SB#Y7zZJ`fai*DrSyJ3EpckY}->1ff?5wyFQbII|y{Hq4$k9UAuj?PGfg>}S%6pNQUi8CS(TEvL zrUyeb=a%kPkbg=+Nw>zaE##@-m&@jRs@AT98UsK_DqoLE5dPg*X+Itc^g>)iFy=je$DOl^8;n?a~YzjVJuoy5?f$ zbr?MaM{0;#n^F=825b{xOluWF(S`-@4CL*k(LC8@AyPB4qa^KC6qF=Mj*@CRjD#$~0O~C?qK^}W#;wVY)GkOyULI~Qe4(3@Z zi;ayCTAKvzxHp>UlH81h5Cj>Hv9q=cAm6nba|kd%8bGQGQOKh|epOi@gCb4z zt5k#qSof)!F+Zk&tdxLt6(~ygoi9?U54>hDv5?5rG&BdVZS|8>hK6-Gpo{oSDheU`wzxiYGVr9lBEYz?16H` znV9Mf@8wmo=Or#l%o|U?ZoNUdk2=0~US^rwf(j(U_cPKxY9#>JMqw zg-(}3z=Dv`m{;i10PD1l+KMGRkuKy?U2H@GB%OqM(7e-mn@MnmpaP<@NuIrkwZ#(x zg)Iz{=2C@{lj1U+AQ`^Gsc8vqE%KD;5M3icXQ|fv=@e>Ou<0sGKqJOWWXSl9$-P8o zd9rgW5VsrU!2Q0yhKfw6NkeM^0U)cwkOZAfZ!t_l;Z21?AQA|;H=mzF(t=hIB%~B4 z!wr*}1Ad*m%|wAYz)_b9lNTcJX4>Cgls?y;C|ODk>=Im2R;PW)ilXvT17$qUTY@=< z#wTu?jrFCVmJ*ER30fOaR%4i@1AA=%`BOPyG!T>&DPjP0028)j>+|!WQIgsbIX&_0 z^AIHK7w>!3C2C$F2~)+xrkccFKW>!3vZCrxWk~{ZD=|Gpcj-aRL&2zCdGO^wq<8PN z1%^`7fu$l#jphNeAw+b%ck5Ap*+^TZP+*Eh8!eM>z=v%afRkN!V@j zrlkQWEjWbAK#&p?W(*Mq<7wK|3CWunfX-K3Qlbz%2mb(%eSEJ>ODGO4;*|iAC`ui@ z^p3h~@uI`z=7E*hKu{_ykX9|A{rbf)BOo3T5=$ukb2q-%zoi1+1R@kt(#kT%#A_;> zPQT)b04(ysR7CS9L9e=dc|{6b%;8CJzJ|>63T~y55JY&p=^q-1A__o;)?p>dA;>z8 zyU@XAZI;T4Ot&Hz;U}s`@_%|1tSxQw-B81~4`p<7eMwJu-$PNd>p)M6j0BR3VdUXe_0^dBtm?;_5GfSdS zJchy!{*@52%Z?^cN_BB9k_D|D;@$pq#X8)APmK-98UlM-`qV?-$zZsW*SZ6V*luFx z(H(C=nQP9%)!=Ck2o1DI0u6`VzBQyH#-IsIT!iQe5Oml4QXRwh@Cb4k9r8S6au9n1_&g$W7>Ic zKAKRbQWmEX{XiQa2r3aj58jEE%ZpmV9V=RZEe8e9bD{mFp~NXNj6m=tMs+6X6QJ!h z0?UDv6*vJ{P*6^9(|xv`VAO334lJarn1xS?z)n+X9&{rzP1`~p)nG;7^!d{pK0M{1 zK~My!jENIr)Li_iniR0SNeT%Ih%;${^cx>Kn3mBEsX=Z=cp2a)pr78Oy!ATUZaS=& zQEUdZhw({q2>d*o;wo}tn zH3|#C1DM*@kp;A;D2T95@zQ!!*2Nb&jyB@cnC6C@UqV043YV2+6O#5xwZu-H^zLbi zO1Ygem zDJ9~7Gvx~^xfdxL!RTp@sYrCIDGn6n12Bf~e#b#dc?UMPJ`oy$p%Jvyy;08Mt4gs= zs3|!%2_##&J0HDklH!7$&J;hw2GQ%DG7aIkp={)W)7IC%_bp_D~R^{{H})1S2ZJD*8Tl- zkf2C6iuqkW*C#dLO4~%|HXv*9t%}U05)uTQrE9l&Jr0$X3Q#$Pgjk@9Pv51e+ixlt z%S-@s6dsySdh^$#md3(TjD#HISOF$x1weCRaF`@ozJ1Yq?l_6#ckv2L5 zJM@}zotrimg{S`j8Z923YmJW4p=mCaOaq(}k#X36jg2t~Aqxb|%qDdMtZ8p5$fSWP z9y<-Y0M9@$zv=b8G3B<(d1(p&s!GU`V?%ALosN>UWpN2In+OYCqQ=>WZnd>e6z57( z0wU!5;&&6JbCA5&_wxe?cu52uJgZ}H(`Z;pQruPGfi~Zz>z$6#v2P$CM=XM7P08C% z{VFJwEGfx@bmuY&`dtHP12+_~Z+bUnou9ZOp-EC5LY0!@{z@22(2$4GBI*9<92 zXhG+*1Jt!gIxgg8u*?E}NQ) zriNZhN&w6=n_nnBZ{$8ztr(IPgq5WQCP`kT>U|>Cu39F1DjI*}HuER2+MI$=m84`5 zD)A=d{=!YX>TFc5lB1NgAac-Re@u2HYhxcedwJF43z8Mf0R|%f02;{JLfk1NL?013 zM^S%WJgY-1km96*U>jUp?sn;V=VPR9OKCz}EnFacKaRCelJ_&fY%M0q(tQv4phL%& zKp?CLQ1rI?3KY5!kfpg`a}44It!Vq!p-adz_{`j=AWYAfYsbV@w4mF>C0wvv_Zv;8 zteqmMZKW=uMbjihgq;C8$*M{KaU=x-fiWF4`yF~vG1bUf(E@U#sI|MtezfJK$5xW8 z^D~^@2Eh4ru6s&Md&4@9h&U#G^DolIq|1H3LNGv0VQ0*l6JSsvS7=Zisf9z{{T#D z!FQk%^1c)Yc2++mOpE@-JK~X0$Ig;62 zMf3xvo6_3E5}86kT11i+U_B!~vbQGV+FD-k6~uvu7zC&Wle>_62O9Vo;pd7Msk!BNkd1ofSSR$$f63qeBL zNN|IhpqV22k=IJM5LsMEi;wBVoy2)mN|NGGv;cz>mA5npaoz-ze9oR-s^VL)?n4U_96?AaKrnUcZ?*bbv%cb; zR%C@Q#0WwYt)d`YdG@9<%8DT>Bwfjyksemt?9%ZHN}DZY$RG|_CQS9-fi9sk-NML{ z5hDBB={~h=I+jQ!B5q2(-~jcwr8?ox6{-N7@nhXRBGtDGgZ#rTrAsPy>IA@@t!)nV zU=X!q6nS}hgofe8SYCdAdRFE*VM0)q4sS5#KcpmPn;lQy)ok)mA1$Mp=CDnP7C*)M z)_i9WUNN@PCCrB7poX=lodOVoqJ$x$;*tmuZ{!Z9z+35EJSH6} z3ur8ImVc*~<_4y8zpV=>Z9KfIga8zk4FS=8#B~>n-G^&B0&ceQf_xx>JAiaQ#Ya_g z7{VKAa+bgfAo9qQFa^5TM+}Kmg{ScEOa2`ZVs zraOW0t4D6$6ApPzpoxM*g=24DuJpV^B`-^82`fLK%zEwq>39rEof4t?WCq$MJjJAR z6|)zgD%9vebpVhiV9d?CUXLBwM$2aoqQBN)C?x4NwZ660!53EO=77G5H}Gp-Xk)@L zJ`lB`2idHR3|D)GV%u6dYgaAPHU`A%Pt1HO<#O&^(|DE}k)B1|1`uS@F!(&SAY6NZ zUOINJgSeEujDZkAvIT+Z26h#AXbhDtAO(@)I+^&zZf$Ygi)=3h*eM*g&6Bx_)KUI$ zuMmYLKp33kr2YMxMkQ_~rSjopHnAh8sHbq;65T7eEE^vG0OGoT$2L7wRLdVH8)_D@~lE8BJt^4Fnl>2lJjXK#F4*{@A9pRTa2)C5;KVngPSS+`&Vhp z&w4`V<n77=@EC*(7T>>)8D%oTnNk2>}vx2K^(> zuSZLqnNUZvLi__Ew9{Q_E(s=Yu>c?6*1XysaSw9DgaiKojNJ6szSZ5rAzYskn6ztd zhky4~E~dl3Foxhbi3<=`Hu9gzQQ&ZifCm2nAG@01<8W_0 zZ)?cQVr}+omsQt@$o3^Ip-EX%7jk!q*0_9S4y~}II@oV4gqvHTCqq4VuE*rphixiJ z8%cIaAY9*S&5uEQ4oJ*ciO(H0gZ%l|p6l1os`B{?U0Pj20JJ2Xd)rv9lNeC&DTqSI zJNS_so}W(imEhKgd5)L_UJQZ-=ch~eifZu?g`gzJ7eP!B(|exXqPe{n-_wW28qX@o z0iQBw*16?`Ewhk?p-L&0P5XWJt$afg+~-nc8*=xK{;{QF#5^UkR|wDz76|ZU@{|#@fT}7F_V0=_Kc0izyvD)?oCNtpFk2Kn79NC{4iETh~((u1<87LILqM zFKutqxk$twX<7=KypRN+PrF{2b97wAtwa)efX;JqrHSoxTQKQLk`lbjBuGYJS0A9y z$K_ZOw5i84Aw>r2fJr?JYy4B#TC<>#rGjMTBg9Wg-rriv>4)(gIecYn+H%Mop*aG# z@`~gZQe9yt1SFK84M5!W>-4V9VDm1jdC~}Q18lJarn`F7Rus6L#Y)aUTY|uo8v22K zWYSz~jHP94DCH8I%5ZC!YaR8!r7g@sN{zBKm@W&BQJ8=~ezl{DA+$_|LI{c0!a(Y6 zHJb{8m9|h%faXC?;vmHLx6-OJ4nyU%kr3#Z&Samv8q5h>*^-rnz&00%(J^Q-S_5bf zEM;lfAt`|%9-ep8Yu1s12+r0_iv)t+ZA@%Nk@qy#xUXTt&OqgyIf{uO9c@2)8q`9^zj-FYblCJ)@jTktYTVGWER%136LXr>NmH>w{f_pu;mzZ6PaKp2ytII=mgt(1-2BF zDJn~i6!OiyU{AzPPW9ErGPY8JQd=?-6pe<~*V40LaOrX2sm~^KvX5Eytk#DR(EPS$ z!c>qUAxXNUw*9xR3;1%=s99vK5`YxA6BmPTFNJ!3Bby9`$Wwwq2w4D5nw>BHYn19- zaUd|K5u8Nkh}fQTixM?e(=fRe)9L37q)(jJpyFYW+W9F;$^-`6RFgLzU52q-yh>VIU^KL%1&k54 zm(Yvex$dTWWpxU|l%tmgX#fR}oO%2!laFyqe<;iw6E~dGpzq$drNWe~saeG3vW1V{ z^qf;^S{sYVJg}1!v`+d9oA#=eSkc0Gi*B?VP(YYcLi}GX#M-svl($`m(u z5j&gH5~Lx1(3aLjYwr0Ie*T_SSp0}m#1){EVQ3xwYnY6A$Y#qzkBw4e&wib~Ym(p=b&It!|84S+!aTnoj#jk?ndDZ{iD6ntZuVh1yO9lbQE z`J^~GiBJ#$0lh?vj=FU7u6=#Id|yQ)4qHOxg|HPe*@3;U(9NozbxR-so@B;ImH8Od zUwY8&Bm}7_1Ou41oTSOp4Tgf5&23049@IH<6V}6h1c6)4I%Qit*BvmvV}~`)kS>!O zcdX7}TIPa;LO~>x8F#;}WyPR6fRNgh(`nyx+A1BFGFkySoB)+roS@tj@PR?dFC-AM z5{U7xMD`@wVr@vv?TZtO=ckt5MHc);!=js=Px0EX^5D0a!)UTp7i1m$KM&%%7>2nc zLWPeMkTigPpIU*%nRBt!@R5O;{)tH~J0iBcKE1*D;72aO5wgB$eTKDEVL0Svg6 z0NX%MzXKLp!n51P|)L#QGgCd0djdkVAsK}t+ z5yUJA0K$MDsOblOlUT8shcSwUIId!^kwW>lfIV&Xt*(~b@XB09SqN+lgzGo7_MNGD zNl7UunoOiB{-eBCr<;#Gj!{}yiD{$|*>X;BnaW1C+(5ko`AobPpiqU7NJ)YYu{+m8 z5~kZ>d4ka420f$#HnzuIK2^;|BMyv1p~lsafH{gJ7~CH#{cF?B*Pp43{7Vq5dYV|n zw%8ucNSM<}x0&ax`D{J! zY|#LO_wRqDdb#xSb?wMj8KkXcYF2Wu3}~+|-Swfyp&_yZelo6DD6l7>8%1hJPB9RK z9QlHv`-uPu%)8HZkXE7{x%fR1Ie5uhCfIaqw}H!cg3 z2qrR*Evu~3dBw1`5CAF%TSR(wy=Q#^vnWPIk?sIR<4{l5tH~Hn8H_d+_LrZSun&PZ zLWa@nw`$#qdCXoXnPWKvO|0bt-?w_SVUvTyfG>zJNXj}*kDXf$0_ajlG#s4CQA!8% zAGHwZHkR9!y5U=p5|+{>18a?^py=GhA@=u;-R5aKjwE+Nt zbsx1}A@{s$Y_`)tz)1ib>PMcn7`H(fyx62EZT?|sPy?YOLPq*mrg0dzlZQ(=TIZ3O zmahggYH#qbFT-$dsSIKipvDl4z2xhr+t;MPejsCpvW5QuQPrrPZdu9)=}hczc5>oK5@*(ZYoWqF4`SST#!y^aZKN1fLx9{5C>D;DgZ@$eB(qvWnVKEqw%q5gDgK1EbsFypPj>HP#s~F-I8_cH*$He0*131`sztGof4~oU& zcv-?Bu+wDRW}D1S?bf;2=`Cu*VX&@Yn`wmyTtdo#1f&zPl_q^R6>R<=ZMN3qg%&az zN^GD`p`ptB33=hn)`DWdHelWM2fHKCvA@iWeVBf{?_8h}3lteh<3<3zZq-njp ztD5!9#NtVF42DwTl-Mme*pZrcQTXYtb~rN8_d=0L0r5a2roMO7-SWs8@Rd12_o^R zJtP|1Fet&6%dWQKIfMnb;UpyO{P(p*Y@E-g3^E!LEeA~|_wuejA(bK%B_FT-ySA3GGn1?dtIO^kET)Lv5vai4sZ7wG;fw`Nebad_`D{Mn@A5=70eq z17W-i7@EfOs6%e0loreYRNm$ehweTUt{uaZgu;b9@=*C9#UUCCSVxh#zru-nqJqeM zA-9{#A_)UB^@0YM-)gKjEQBGq&$Vp@B!l1`x7yM0taycgL2RfMxC(ueq&8ybNh535 zQw@V@NW@|tO2Y{-IcW#kkpP(Q9(JNFWKRiiiE`d_kISJeGP5XdbpTCh;n)mD3jnvU zt*NGkoKPTVwx?OG>r#1PtU6T=Iqcd&2Wt_~UrNrtHNREE%!Qc_GtwwU;Q>0k4Xvgl_9g>wLapnPgrxgL5)K~m|O^gLmB#4@(q&cG^% zQj&U2k7E}fy?J+3-T`I&OW^^zB<8e{5#&jjs>Ne5E;hHZLzYSR)YC%4g4U-v4Z!jpZGTz?U>$KykY!;vY(Ri5B!f5otyWL=>2afm!hTsOlm#dY9Z1{jUUwUY zW#=*_3v~>GA=OF%od@!3tj7Sxxgxw~3f$^?exaZc|(&vqFWj0E3 z&50X>ymjqci}Cf3qdmuy#W1a5nO7;ajLKvfDgb;h(`_q_!SIc;dG4072<1q*9lKsH z^P1vtgNVf}dqwiV0Hgp)K)Ex$#d^=q;BXj5@+Ugn9L{V4d7UHnra4*T>M`+5Q!o9ALcS6Ng8MV&NcO_9LeM019W~Kg8?f%(lo#A)}R72@)m& z-fyqQvGA;qrMC-aCe53K`Sua7m0m7Pp2k+@82~BIXh0bvNjd>PsK;B@#(0CO_6`Ek zM2IAkOlk~kSaCRPLez}8i;7LNFZy%1n|F%Mh{idC#=*n~U3x(TKt;Ot9WN%B+Hrl*O0^|v`jlLVu zAu7T+gu4F#DMl3EHZ0;v zldZx302Qj-VP}a1C2h2v_sFCqeuJmeT08=kiEt#Kt!cVS1PBL1I@W$AjAfirI3kC6 zc5JLkS6SP0P2r9{_C+f{fRvV#VoBEhH8fA*-okKqL#Gn*fdbaZBP{RR{8kV)=A8g@EsSa?$fOy*8} zItpO(Pl3D6*Z%+%%q9Uid_wUrAuBLcq!Mm725oy*;_^4)c&lwPe=N#`km1ZH!F$i# z#bm}~RJ?K$4>5P}pu`jYeix~od`Z%_$U+dDw;4iu)A()&@(!&ynOlThs>au_-2VW& zr2Q0@T*s$6$1%A9N111AZaQ3PNMSDr!`Q5z3Gf5piH}{y>$#jQ)FHB!=Sh)h0BQl- zX*yE4lUR0^U&J;LNFK)50DQliGg;YMl+&IiAqU!LBQ%*3E%$L)@rrZuYf_s?X=)mn z>}2)r+M3Qal{Vs#RU%0RMKT7RyH*FdxIyHhxq?h2NN)NPbgGf9m<&D#g`u@_xvtJz zB!Z#cK6R@f_^IqbSju@`@;IL0}gI|ZCNR^r@j#D1S6`&XYs z&Ptg?=P}|2GaYT%d}#5QbhC>@FFMcxDriX^ZMAMRwotcQa}kPgm8`*S7AT+Y8he;7ZT=@B4BDiiq*pKjXJfw`lG|k1x6%pA|eH-vH11|8F+S8oUD$PoD!CIuP zWTi!5lL?3#?`=HhxqLNDD1-$Zqz`jptaj38dsC3M+;y-M{{U{>tC%EaJCb#@Y2Upu zF0#&eMY0QttPjrzE5d!^4 z(0nV#wudnextA}9NE#w1ufxu_n3#SKhG#==xZ`CJ{WPXBi|f-(x>Mcajo}zx9k8aB zZOmEmk1pDI*i?Ha8L*ei3+gaJ44K+GT70V}8-|x3ZPyHhc&Aw>ub2Q;{{Yo7BN6$W zONw-n3Em5PTNSYSHp13VViXhDX{9n%eh(ZemDMW z%i=h|WQ1i>JVAH&E<0a0)Cv`GS62GDVMqnVMebK=(@`;1h;HKiRH?UE%tF)QQOlxq zipCV<>ssGhf)GR%iH|tmge~0XG&Z$?%n7{p7t^HnrEx4uc}s42m)TagUzg6e22|qQ zDR{J`f}<#o~)vz(`P9$Q~kWJN)lkLoThvDa9O+34k@}z}&gYV%{Yi)2;7U78rw}|WU?^eZSRF!J%y-K&UJMc(Qv5t%${`3UH`oHUyAK z(^Is60L5Z#TW*9iVP{R!(Z!dDfNS<)3!Y zFS-4yQLeuS;mk7gOINih_lncgPfxw;yTv%0Ny9*dI-*;JpPFZpiL|i8J`RsJ0;gFS?)v!P% z0_U{t{^mbL6FD~13wxe_BSXY^r*9r}yEWX}f#Z*mhTbO(v5!{WEKmtgTqx)}q!^5*Y>CRK1 zK_CO^{0fcXn|UR-6t=)Nw5%T?w)NI$64nn2LrDREV7TxZ%~}h2Xv1LKW7&yvPJR9r z$;IQBiViT^xo9Lpz{`{kzWP!)hY}BBoRgepzl!~hbFlBJ3o8!zK`|c-j`yyd@{3G+ z4ANGPPC~R;sRV+3KYsH}Qid4-skEyiyef$>28XX>K6+VyY+=|B1jr`hch^q8&25R$^FJoFrKXpkK%iieI}VkZ#<^H<@Eox*AiAn$I}g|x7wD`Rx`8;>saNG}l3LXfi)tRK@%A!>2F$jCIgjj8;QlH-n~1(9SM zdPen~mQ{#!subLa(q^o77{Vd2jG(yWI9tZ@0d@&!>>*YY+ zFuHlVe{6|0(`hY~EyXAle{@87)%^}?QrQxA8DJYl3z&ko@+9P+diTHWNX0s$LuiKJ zK%+S@7->qAmgnfDGlJb%ia|g-9y29enEB zPqfH{g~je7Nb6e1O)o3*rD;GzhCE#2 zv`e^!5{o8eb*i3|RO_K>LI6kz@Q6>&mbTTI%*i&fjXMafST>WNI+x=>nFm2saSXeUuxq7{K~DCbB?1Hx=H6o*QXypT!mbrsU)B(2HHN`~6b*XdlWO2XDix`$4p zk%ETM4$4YwAg|w86u;09? znf2bWsgk(V<}g9}ikC}rO{OvdV^fB-wh#-1gl9e!&Z*eis}giLyehCFEu;zZsLF66WomfBw<6-U zB`H}b5CnWFeGYr7@jytCd5TtLsC4Z{r9pD}hLV1?mD);y)2()nb*T-fA%Z$hF-)my zfIKtT=}SWL5J`vtK@;gr{K!HK2`1M%RQqci$|-g)+G&VXq)8p7mhy|r3s5p_NTEce zMqK^1tNbM8C}sz8Eo)G%KuiJVXq1eJg+!grCpKdy$G-KD8YN_nFB4Xz-s-&xUy8ti zxS`H-Us(9nVi8Izh`r{PuXvCJ9#IkprCveQ<+v5UL3h_$luAYBcBxux?+II(mY|S@ zlj5;6)BgaB{`DSoynu5VNG9--AVhZk>eTUIfV8+njgShiReRg@B%Sp&ZWNdEl?8!& z9LtTOZPQ-0_TP-p*ifai*h-R;+>$}@T+XLc+skSvlHy$}SC0;mE~zFwhP}J_O%ZH7 z*>PhaOlBieHV{5%w^|&B4JFjL;A{y5M1o?+S%|f4Ora^b0Vp=NF+`vPAjfiV_A1u9 z1Scuw0<5bs%8inAIuE5ZwsSTX9Oe*6EGkIz2Y4Dth}x2XmAT7Wl3D=eDO42w@A9fn zi6k@2Te;9u+?=8bgWi4u=80^!hT$Our1LqG;7?x&+AKjnRS@vzl@*YLi?1z{wWogO ziM;NS2@4S%v7`Yr-=Qa`dMLX(m86mi8$Qjy(n-8`?r5AyONa>#k_cBaKrsd`JMBP& zosv*ewu^JP1E!nbLVs#&ytdL!vM<9wtsq!^`A{y*yP3CnvO-Cmq(}r9?fcas)FJtG z)pJdQfMq0amtbN+s~M1`mr{Zx4A3`3&gu(f z5IK>d2HFmmqiYZ(p&`Yg5QSI`rpKY0u1_h#7_`om|F&Qc1roJlQBc1X})eOOF~$X)dG1 zFBr?Fy@>t0(6Fv^`IM8I36)6AZk>g%RO-`)Q%Z$rY)y`Bbic#O^c04n0Vqg72^pIg z18}Qscc_ewHrY#LH>z$&P5%IDYMBMpATsPA*`!z-ZP<6ziZzi9o@jNspBWs-H|gOT zngC`N0+>J!I-;Q1024ZRb{f=LQn0cN#N|rIz0_N@+oaPLhZt}vDdiG#H_J`R&BUv) zKTTjABkfA)+GG;1l05t#+`|fQ-(;;c`x~DT0 zrWUZFZnx=c_3cq0Au<$_P(TX`A^;Fio{`q(fDwoe4qCI_IZ`yZ+WN;z56grgz(863 z9_Y30(@}4Y8;+@>Tnpw1LQ+s9NIg&4t3shUTnk2J!?{uwHk>_ zhnZSQRiprvn*rSK{Lm6mwo{$NsU~GB7D8a$lcu)qr9=XP;zCuC!bkx(T&PU+rTZew zMWSE}2qb0P&q@}EV7fpKAf^)nNb@?5)LTYC^L(TP09-P?ft&W$Exo8*X$b{MQr)(M z0h&dH{^U@j!I7|)1(0RZAd5^9+BfS&7b^$^A=rzg1Zgwg@#6k!1*q~+0*Gt~%%_J* z*S?=-szahmj80xzn@!~O_0wtxT*-$4w$!v`2P2-~j-J07IZBee#Dd&FL4tS7)g!-1 zu65gwrLARo8z>WyiESbc#AWDw{OJox$c3Yr>V43nLHc#rADufomnpId5*tpc8qKUs zTJ@6WqX-E> zBy!eZo#fBY?^?BIPIZ+86^zBT9J3yEGC~TVOlU-9@AstF#_9LDMWH#$hERfGz%M)c zQ;?#y=FFJ}K@uSL>l#I7QVO7il&F}3smywl)|!cQ*d*jO$~3lvwQ{l6G`6KEg*HJ! zBoGe1M{`GqSM<`1t#w}D^z+lokjlV`2RvpIH$GiInsZQ)NtMKyTn^Gra;yrltYhZ6t~ zyVok~3}p&JOJMymvn;Jmq=w5(t1&1%W?y6bf-^Nd+UB?{dm?j-5ue zNKu8QB#hS$gJB}WOU=Qku8kbT5)zabQecCW0-nHV35vXg7Q)k^xHBoe$4-?JhT2Gs z%WWyjNZ!^x51keAf=Or;&Q;py*G}Dau61oF$`n^*!ORAi>+?3PXy2@D`)OgG{#g8+uWYsb&cf}$1EfuSOSow0oG1}En0b{gataOLH%gB17b9j z<-KEd;gx93%YZ@1G!k_CF(RY^0niE%mpNqSnV7$RpIUQrq%@Uy{hpd;-YF;uTEEWk6)D<)y;II7X#%%DK{nv+#T{iK~BM%J1oyj&_-bpYCPC=A2AX%?lZHjL*iH<~@A%Dm_7P`KB%ei9ah7*G}_ zH@ADvwSse0+kpxN5G*qI#CGYo^Gt2-QVP_PKmd)GCs6}ly(=@SQqu*+AQ9nG#DaUP ze=2Jz3L#v@5V(uzKXDVTx26r@YFRS5b8y^3gl*|=^pERjN)n<)>}Ds=y`$x7BrUf> z(&{;v1fn31Bk;D|u(2%ec0*5aCG4E^h z?YO0gLY5IFQVL|i1~nwsn~>sejE6RCxoy@xBAJFlB?u`20?FQY7COP8%B+fQZY8nr zLYp?8u}F1lY19yvC;LdYQ`U9^ezRQ<%iT)I5=EqG)So+EZ>24qK4j!mipZlaxdK#U zeb0WB81Q&9rom89C?bDIxtZ;+mG4?zWq4;fX;ikGIN}a-F<=g~NK`FpTU@rA)Pi7d zF}Ua{Jlu`}D?!Q}&y=MKovOyhSB7QuFA@Wdk_-%D-Lrqh$z3%k<)0cZ3GshDGh@;R%dIR!+k$(XdC|kBBxeM zEH{T`%K$AivES25r&6?>i*V;D0m9rH_5-A8QQ1NoaZN39V1SUE*6FlqdKU1drjX)t zm;`1|hko5J@TeJ`a5;!7Z2>3%W+Zer`HRu`!vsm@I1B@+=?7u+r!5#_-PBuKX57OA zEZD}~YZ{bRryR3uB$y_^^_}LCO2znF@RS4r1+zKTT&Qi&{dCs1uQ6;Yw46f$LSm;mJ0FRys=t*R(U zx>T^S%t{Yl@zdrj5NX7Q)dd8%m=Zfo)aABP@Fz2ICn9tp?KO?3olA}*FllJGI^J~Y zBd2;aBQl@@?m?Oc#&nM<`PL?h@B4zYBbE^`fuxuG*EQ4-q6(9p2GOx2q-lEe91#hCwWzoVwW0-hwZ4}?ImU8z1eE39 z%S!Cz)#0N%yFnsk5(z)OdIz|AP_U%fWg-pp7`%$% zaK-*za9fG!XDF_-Sp13&q=1WiMVa{buAI5nJZ1^5Xv~1xNV0-J^N)=l8Izcg>E;?i z0Qnl(iH!;-FVq_4uZV`F2|4l)43mDKdRD2g5`?nPEXI}@qJ1la#88!$l#&o80Wb%b zt!Tt!6tn_V7X#k|(0cT)b}gqLQWlU*4+tu`J$|*$k}?FB9tLG#z>o~9*G(&+ygOXG zjGGbZ^4_sChjcF?5=w+;xEou4O5U^(MpY}97Xzp7QynXb#TaOp0)Qvo(&~$e6G4UH zq5ygjkJNgew0N}^bGe&7QvzULUyU9K1* zxES0x4XsE?auiZR3P1y?`RQJ(i@c|~iA1a)>BzVvU*6T_@y;bkEhV)+LW+_CLG{x5 z8}_e1ex9$7Yt7^FArBOV6{5t2Ikd#~gIs*4n6A*oMt(i)h z@nmfR{ICEC8f8y;+LcWhbd|B2!U=aY{(%>p>O_nBRsMJeT!zD`14)&r&7w}5iL7gF zIECgf71}aHhX&f}Nj0ww!criha{{Jh^btF4=qd&rdX(eYmQsRbsjx{t8`^$0*0ZIA zw3ICksR#fS&F?-7oi+3MS5a6*vH-}@A`6y+leS+|uW?Iz4&G2MlpKmnahoyH-Tv)W zDCaVOhY4{gL0!CRlqGt>zg_k<)s;nqh}(GeB9`fd;~rio8+4_@2?fG51ZpM?5)&nXfvPgi7Uu`tKY-}~iE9RESH(9biBzaco)*LEJN_8P>B&da-Eev>c2iEnO zPZc$rGTN0G8s=8;bUV=E6dEW>iVF(`T9OUqp59bVpe9Pdaccrdu$_mNq|un#!@-vF z34#FV$wDGF6jMkZ*BgZ{D({S`;O1EGUNwBRD!pJKKLM)r1HNY*}c4 z6cm4b2J^Yvp|~a!l_^Fbt)vkWOpDw=>!fR?8?gLCt&(dFL5=2l{m+6XF9UyDI;IvFwRO~5`` zAz70kWlN^f=jLYL8tCy>^9IR4Es{!8m)aN*ZaYS^F4!aEtYMaebOX)T}?<_sVh%_dH_ zJ!~i86`CV#hk+|`R#YW>4yHcfikwRVhXN3oZ~y@kLDydY0A{oPeZ-KHnO^HgQI1p}b50zgfO)3LZBuZRRNm8%w zlctvQuEOxaZn%=O%OFWgbMK(tQabHG^Gp;Fr6v#pR41=bN?NxaqFh)|NiE2kxlcf2 zdskZn#8%=;8v$p+Ouz%69V-qe0y&czR{=vHGDgF`lN(;N@Qfl7g|zSgYoa(^+AN^tp{0Z*qE(xfm?X#^_n8qsy=z`1rMZ-I7N8P2 zmXb`!_}4katxTb5Qjh{}Qgsso40(L&qHvdSBbvTazb@GjSCk3w*RNe^ITlv5HbZTb zD9@;aGjTPk%mHP^wU930HUt=rE$;m_uB!c$jS`^Y zK+LB>$|uuW=i=MW09I3%PyVJP{G(qw@6B=QIT+*zQnr@?YcN3~8$Em2Y2L8n^QC2Z zrVK(iCi8B!*2W=C0Kz~$zoax3Vn?zDN{4Z+b8$?i2|gthW+FnMgL}kVTTZp?;=G;5 zCRXcYGzna8-h*2nu~^+lIZYNkVP;5nJwZEZT_;PZY!b>ukfj}rYzMCNv?a%zgrP_Y zm{O0tH@By)dgXZUC9(i5<{mVvK|19+ThHZ4$2<_X6on`e8M2TG^P5L{cjfU5QAtvY z$cG@nPeEChh)!f?Q(%b#E)Pl9(zJc&_4App72U^64U9)K#Xn721F6pYU3{o<7-$b0LQotz>b|hbPYVEmXM?3ObwLOa-|P+P;CQ|=)OuxSU~09t!$0TgZG@T$W&63S5E zP*Cv5?>D%;ak;PYOiCQYK8OV&wUs~uBUrxH-nz>Ch6k1kk2I6aXxvHA+QM(;)}d{j zJ09k6aLpoO187W_7AEts>}y+GMbx-f>uY`YPqTYh2@nY%J$hDrClPHJhY^LtB_x|S z5t~m5%eVNN>EZbA58+8z$2Iwu;u40{0l}?^HyvYJ)KdY&cvdeQ+pgyfA-@!Ld29-~6TnhT{3**IjY8@`RR%mF{wzYxS-gII{65b>c&4Bo06sP?OLTat5(X#&PUA z+r#194J@G`1(`|LeM#wD>!gn6JMkk;@Ur$F4A@()WJ%_0)Ss87dG7z|TbPD9 zf&*v3rFHG6?beXAU@-|C=ak+UE0|CdEAB||Xz2#Der*^93_23X2sw+6U1(4;0UPz- zTAXx{_PC}w$YD5egcwV+@2_1t8~S?JbMm;4$gdLW@-_%cMBT~OIu9$GQgCjJW(yOQ zu>0;wbztQeI(%rdk@q>Z)o zi_)DhyNl$Z1@(m}7c&!Ks2#qWRbcSA=GiZ@*~4L-PyywblxicnqT!guf5{;TQt>a% zo>?Ue+d~o~wEPVQj5p!r;g;I5*p*@w;3dF?M0A)CYq5?zJ;vHXpHokWtMV3kMZi3%-)5Ea~;+eoFM=f5?bygw+o zeXlh)a@t0-rOx%xV}PRE$I3a|2|UY$$g>KG9!7;lG4$x{HWceoKc^(`1dF)zwp{FqGZ8FesfGh%Iq3$b2GleWE z$DhP0{E$*aa{Ab9H~CiNJmN5@RPz?u9JZXcZlsUjOVJ_aV*`kN%eV*uw8en2jXG=E zp<7diW8ZfS+gNmloD!KX03cpZLmSO$O4M_t;z$DO<*1EMx<-&s!m(h}`7i4bSW;n4 z%m4wg`bqSzmInulTPxx!<+q0pCOWTh zH}Neg$6YPqfVhu#e^5x?wecPqfKD3>>Mk2e3TzNi;%x*DlYd&}rxxxdzsfe^*N6(` zk_N|As&o66Tkfj$CKu*vjLP;0xc&^R`{5}EK6tuG1ETo-D2j*|L`>nr;p1|Vp%oU`9 z22cS2sQGV3d1d-}Y#$R|CknhO+`EbrzGMJq37@&%w6lj&%LJ6a3MN8gHU9v2t8axk zwKleJ!LYJRXv?olcfZ27Vp2GMFe91DjY2=ap(oEuD}Cf65$szsLtq@H0G}`Q>soO9 zEb`kaLe#g6sc~RpZhZ*amHFo1!jiC*f(hoKLjGUHbQ(zN1>m^?FO)g1OINC0Fv z0(%*@wdVMiF%E^YK*R?1aDJOy$(cPo>Tu$1Yscfzgegn_v?P)oa#U_T&`o3D{8jhd zby?DcEQJybZLg61y=ZanH;lkGl!Qu^l!Yi?%g)#DN_7pgpUamd12`Z-gomD1{-9hz(|(|xTR?@bf88JtQ#}RQr`zK@kvNFfz(X>iu3$2>{8r9PIiC< zkhK5+y^|XG?-i|lYY&5Uu1jiOB=~|>n1XGTd^Yo=hmD^{J;HJ}=0?zhkQATXK-+t5 zS-;{xHW1^>Ky7kRR%H!=d)l*cPBvb2@}(TWCv#)<)OuEY9x=`(i7eqlP}wQ*6?g&K z2Gqw%E;?BJHwr*yz>a!=l_|kH-aFs?S0@nip2UY#*h45j6d>4{B!k-j0C8RA;dp)x zCl!swf{z(XWX6}0dh1?0@gL$uW3gys0Mc8-a^NK<>e!CAKDAOao37q3jpf2Eh9n^a z-i*F~ezoWEEHdG95Ve&J2y6mi^gCZa&laUx?xV056f$ z1K|k?R;EePH|lq;cj63FP2!dre1-@zvH`q_k=D>U*MKYdi#J1L86|mOXnfDY zYuY!5!|>OGxYZY5Oy+LGKJo!Kf%mO*>yH{w+s|Uuv@OPvwB$>k7Z13rMzd}273_Zr zaO_4UvimA6jU2$(ht|Q+}D(a(Z%cEijSF59dG-3K9y*F>71BX2bACalB6|`v@tFdDJ0%br^x*K(%#{?o-o;a65zvO$dxPzGDe1MXT5S9;|-xN{#^Jj z6tX?jGAE^myVpMz_?>xOTFam$#7M~`N!RIFhmHGm9%Z~S<+c*C0V-R-MCl{1?OXVY z*mH%EhIMOLx`{LA6JU3|*N*(oBOK>7;Nxv4Qy`NEUE~2B`cn~&aip)3QV@J(gWzzR z8=ds{*5dKqWZ-c8Im9d}Z>|!Z0am2juimxD#^c>Wk%nQuQ-(++##HK0*18-wfZ}+D z5WMPnF+Tp@y=~H#oPHM#%s^w6Ga=9c>j$AVg0Orgx50lH>qTlx;KVH?n}dGGTIb_% zN`Dw2=SGIsF|q5t{VN){t}htZD>BPx#9L_2Uov0;5%cR^1mYRM;TDF$FQF&I4#pxc zezm!SvxVUeF9sn=Lfh31i7F6pC+t@Xh&_nsp|%p7yZGS%#7CCf8s4l+uVEWciEYP< z2^Q)nPzjGJXlaIUjjBVEA;8)3sF7=KW94c@Gc$<7@Fg_*pl9%<3J@o!mwRn`;o>;L z@!Vm@mX$dw0U1;;JqGMB$?$Tg4#b#@8Rz@9%8vz7I3OU-)#X6gn*}J z3Z!2z#FNr%q=)-<5yeLe#w4w@^2@plP4x4wK0k_o$v#0Uyoq*iugHG%wPV|D#qttK zQ6K|i3_#| zMT|<6$`XahCR3JvJKT4r;ag>giFrg9KvWk1Gw1206Wmp9V;0jTLkyIHK=&YMVA^-B z5To+N)FiELPFMm-+c#+GSl5R_*ehC)+7h7>s2&;L@As@cM~oq`d?g452QFlY)1a;? z;;KvTB`!#e!4aV7D(5tMhFxD1E;hqpA-3Z|DU&h(0I@sQNx#GRUL4tf7_NRGBmmg4 zwW2h&bGTL?7lXn#ib_=34ohnyND+T8y(w>E9%BsS?I;7OAZT~i{{XqE{{V<{vFdr} z2r5XE24onW#@YcLt9B29mk2rio>Hwe>OE(AR|UfUdmQ4QLt;`)+>?9Hr%F6tJx(xC zOKl(+P#O>p{q+6nhbM}0A%S_&hY;*qN$@1jovY5U;;~rr08-XW%uJsCx9MGHaI3^P z;=n5|YKekGYaT+kejedP=OqL-=;$^&U%yDMlhhr|2MT}k2+pEG0zxcjyzgQrnyzmw zHiUqJL7cfs=z0S)71zLV>^BU+zRn_#2!NmQX7*X17SC| z$ID2rXxh(-!TxddHnpdigPS)ewEW>2ZrIvL2w1Q z01D<3Vm2p#F4e%}7?ff0PALr}pxkp6(?WXdy=?Z)Ga(NCV-Tc}Br0tp@Ie=?*i2G+ z8I-)y1WZ8(ZszCWYk>YSNWz4rISY-$WRD#6ANr3z^rl`e5Q5NJCShwLdfaJ$j8)?v ziwe@Q547_6XhfA}2UF7an|fM@@ka|oUfDTIYa!JH{{UybAIbfxZDJp1hmeqm%aA-` zEwO=d8c3z_94;aCu%xLWrv_jQOm91XkA+NU<;hkRwP8j@B?*9>;9XknFns*#kl8~4 z2)tTLM#OLRG-V7l{#Yj9>E z!v!Wa?@PpB!NHWIa|t0{03`a;-*Fgr%Wjg|l0uT0oZSb~n!HeThS~@aNiwsS(tGuw z;j+qs<~a>#fqh3o-k9?Wab<$o4j<`(VLg1Q?1f_&nPeDA2`JPLo|Wjad@}`r!UrBI zE6QO4@?tYcu#G#_>n+EP%*GQA+HlAVD^{yBY1|rTiW@o8lUR#|dHwXD;#igQGbJi+ z4p0(qeqK~qMJEc0663BCp(iK<&-bcJZZ8ZOU?%ba0w*Mkd_3!fx0_(NQdS*;BH|BF zKJ8naan-i4Nkkb^Mu7D0D+@_NREURHx{Glg{u_DKM1@!fu?>fp?9jLw+!`yYO>4q7 zaA|BM8448v$cUZCTG5Yjyfzp(R-#S9L4lBHdq}Qk6Bbrh;zmZmEu=Rvk+2^+-?Z1D zJXABxZMI6*QJ-CU8sg(IYQ|#2fGrCo1A8oWwWE2h3R!wm+MAF-$dNOD_I0JNhP8xA zaZBbobCwCx{{R8|*2#=xS{^uL6lE+01t`G0_tqzB&xwXo3n&YnNjD(*?OQQ;lC=1a zL^ha$ZysZDxHW?q@WiEMD*;HAHXIuI{3@a;SXYvK3M$G80H6R*V1Bi?4Dv#X)eyUY zZZwPf4JN$$aL%X_u%s?y!}^HWY&zbyvyTWyM?lO>D5TD58+NL(GP=ha;?%a%IdU|T zO22vYu6}0S<`AKuQnkr|JMVKuxI#h^E0@mEkr>gVrOw#+VBIZSxNDcXq{tNuT-9#wC*8^{L|I}w!wzd zG&>D9{%COAF~u~6f)Lp|z@GH-z*Zf?ys|8kO~L3RwBDjz=P3$MQu2u+a}?}5RgHNt z%4N1taw0i|-ot$cn))8qkBBV?= z`~B}zA}s>l=RtzKqhC+=TUP3n!%0dLAQeG0rm(7c&Qy^ReGjPXT6l~MNU%VQf|6lC zY(Cq=~e2_#zKW^O#| zU{(>dI`~S}2nv!2*8MvF02QYggNGTQp#$CAM8wCP0DJQ9FDXcG-7!BZ$BE)ge>zo| zPM7+R-nM%Vd1*@Ja`om2ww0kdnNulJd09ol^7vLXrM5r>`#?NdcliA&n9O>Xpph;S zVLAa7XlcdbRNHn;tS7=e^&|MK2Zo$W4Z5E?#9|b%5YW0(PnGFw#FwP6C>rS#=U1E{1D5hKoeFlX z#H$9%bFIgQb9g}z2{dcS(n$oYpO=`VyO=5hr+$JeHhY?wYXQ-b;HWyLL0NxD^*g@xzD z5~40|CgR$PL&_^xEo%W9nAB77fogE&5DA3F#8qI~hQk+D<7+bj1rjt!-^zm$>X*w} zK+B+k9ks1E=a7XIB*`FVhyzcZV=kkS9x}1w5xMXDP(KLr8f>L&mkW`7ty$iCor=nY zz?qE&W?M&=If4l@18(#3t3nizw;<%&^Drrh)5Bb#dVN_>a~2$-Zi z*l;ZA2UF6R9!zFRG8G$-rBm6|+l49!K=7MtXZ_TKhI~f$nCn*J6wo_#jlF1-l_?1+ z=AF9I&Q+*@3c!rp5PQ``v!NksC{*lpr=hh#0VxA>)`Oa^dCS%Y(Nyz_n++#T{VM&S z1!-|)Ni$)1nx(hmoTLp2A}I(QkR}Sph*OHQq$m=()OM@HY9QTeKIqmqp?T;jI*FZT_aTh0Qj=(2PU{QcMwul`C2u@RIG*gt4W+&%E?y5|G z6+w%TJU6|ffT)sSX;w@N0w=z;N4!s3k!h8ke`=Lk4wK`Wlr{IX!AjYXR#PpKV$*Uu z4Ls<4aN3gDA;n2>46ro@HXp#Dbzy3dj#}FxE+h~{4P^ab>r7fkVjaqxgA9lwbiDoc zue<5^i~h_hN|1zSX%XTC2#L~T<9(?)(&~eXvzb67?gp@S8uz6-v?L$|-OPb08YcVv z=1roQrOMHj3S0>xU>Sq@zD6q4q7(UW8-jsksCP$F- z)|Q67j5c$X4q~LhQhfSpPt2KaLvC{w;ww3{&?o(TZ$#Qs5|9wLk<3^i9LcdUU}T84 z+f&rjstqC5#m-Vm0xx(QnfQuWS_0*z!oNvZbgL$!#G1xg-(P=ycb; zQ;1hBr5vGCF)~D3&U+5@QLA_%ga;c#k(I7nVo<35)1?0ZtJ2nnRIJXtJS37-naU1; z{^PZ%^PvcJd9#Z)k|KPsrv6r{LX@;LppIDo0LBODftu%e8_N`b_?M9>4PoeBDXies#nd6`s)dEU`Y$=)s7>q{ppO4a~DNo7Ob%9HW} z`%n;R3I!oq+jbV96(j+39rp*$i1?NRL;_@jOodL918RlU;!464TWlVl@dEbTk@tF} zEM(=Oc>uU+Nyna9#qZxp{wZN)YC%dlg~B`$2q2!8jVve{$y$kMxIl7!nnal$JvW}Vs#z{6 z#b!q$J*B~f4S+lE{_1m=hIcCLNruaw73^Y0hxefNYDvn3tdg9_n~}LXNxqh#9O!K* zRH@EuW5g3639vopD@QFz7k5x$-H07y(^|BvB2gngs0nh}hQ1inZn_#$0YM5u4!W@( z1e2Nur0Ebxz|dG))S!&AuqVPsd)VJg9XgYGw3WQ#2$xDx?~xJ&StnWZ??j$r5Kxt* zw1nPnK?Z6ENmwZQcDQPNJ9jv8k5z^;kb=2$W zOv5tkPqhdO2{1yhHa-$9CgaOps+&p{)?|S>R+((g=Wi&VItbDN+Zh5-HTG~f_lfVM zQQ|VE5J%_=65EDnztibZx_Ozv9?jShbSR(H3H?*AS(+YFU0@+fN*j^jQl#qupDkkE zv=cjs0o0gNwvY@MFm>(qsmoQC+K348cmePtFCBzhmY|#}(4dtnK>;#j(_wvS{L*kp zC14Z+LH_6#1}r?g3I%hLg%rvVfG$!q5z}9tM~OnRC)oh3+5iC~L)4#@T3Aw>S_|3~ zKRw{49P&J-mrm&MEwLPuNMSiR^_w;DlETEgy0i;bo>us;eXQy>u8aXEmPZC57u zpItp@aPsgaO`|$eC0Z0g*!jkkSrVeSX=rfxkF@d|_3i6MpBlk&Rwp&nFf_kys9L2Z zADCVI09+2A{JLv+HlR>1tqunzU}aE2i^NmZl^`QCYeRuIZJUw$hFzdfoo9KHxKb6I z1cg}T8uaboSTts>OU&3yr5OwYAiy*Fqi^CU{A|Ug0YoKcB%#X+#|4;Mfd~YVAa?b& z#bm|iDMYMF(ge3_9SQ6N*w%)SG68nUUapgA)@JcF9(5=~i$P0Zl0u0Vll?MJ#?_Ae zxSU8K4TO};DtW8@LqX#>VZC7i2BXpm9}_x!J>mo>)lq#zPU zELphvk@T;L{JHJ=58>00w8=?OSvJ>O>`tPI3MFt)c_w6ky3B_P{la8#9|+r}5-|%h zpqzvW@u-u~n)uyE-Q}SRFAS+ti-dS&K>q-AK>+|L+*}Of-XFJ>EtM;oGt2};PQHK5 zTVBbMP&^0E2PXbus~%9SApLP(urNbCGl1D-Mv;0P8*LRWsyv6GRZQL50eXFF4X|Vb}cDV6n>z zaOCjHgr5(8TT_$ml?q3JaRp|;#iPATv^=dSS(6Bhl1xYK>E5;?GOaEJ7`Zux#=t<= zPbsVnx~$>o<*XT$?Q06q%cW{14Xp%=foMBgxYtPDpAs8Pp?(~pOVLW3kA~;>r!Ec9 z-Irnryl?AR(n{8Xun-5lf%ktaQTUYU3UI>Aog~ilzMm@NW2~(O(a3i>OcNj^_{HMg zD$9ycAvp$h5it{ZkEh+~d2|T`5@sA4O`_;kPor9(Pk zgZhtH(_QJgyagF-BuF2(?^$ewiBJt@kXLyp>MKGO;}WTZrk5X4)KpbNJV})d!2>FK z1diRjsex%yGbAz;05O&cyjqo=#X^j^Y@tM05_jpnwylhzX>266;Rv)CvDfTYDlI4} z$g-4|GD1XUG0=@Kt!iOmY%OBQDiUKcBd=J#onn&-LCDwur~CY19{qQ<5-|zPg4)$< z2M*u*_WuA?&Z-!ZWc_cPHEfI{aVzttmZ<(%VIT5L|nk_+MKm>PH++=OP8<{ z7d>S8(1?KuD0HeWC2EUL?O3?cfFWrzQsRcF20$^>ThrNElq_-}0(n_xLD%OK8dfxg zsmDs&xqzYu{)V)n4ax`^5RwxLZuZm&I#gDhl}c#}PG->r1Iw@xY_qjw#O7%}EV2e@ zJN5^+UEo%woX$8F<3#{j!ExwLnpSK|QOQD_X=n>FPz9S2tc@q3wHC~m3Ql!BoLVv} z!=?Ri(wO4P8XUkRoWTiXZD z`)?n$QnMkTr6`7wa)l8bv%06s{RODmX$k?bn;6TN^pmW0-{V*s(sF_fA+U0#rP?|Z z9dGrfGWK+}BsL6`x0nMuOz(f*vpVQoYK2(<**7M7Z#JYkiB@BILIm>(H`>Rb{_2bx z9hq7l5D|2Sh=ND%d(zg@lCzYaY4?D!DhxX@V2fe;Sh=nQYtkTB`QI$R-37Dz~#0{U&F>sF?$D*3pe z<=rCu;v@nz1Pc_+>r>dogshfS9E{yi05=2cu%%&^pn%#J%W#hx8#$0bv<~Jc;YXbf zC1b>bAd)pBLI@hrAtg)kx-&W;tZSclP@BPvSK z5DsWP$&3ANAt5d;emRps=5=!KfBy{f)6`jSI3poJ*gW>v$DNZ_-FC#@x0s=rptU*jf4RrP1fsLf+D+J8l zU-;Af?^^KSr6_qBiom#Vi(gS$pg{*KO~@W0CUu$HU#)Z)Wb(72r4$(O9;PG>^$@Gx$y)yasIz&I;yRlhyJ=3ttqEi)xNR#?Zd(^Nw_Dan z7UIAPlrH&58A!b8)4sIETqh9P98#Kt%Q>4e0N8e)rA7{d2v|k(03?eXw~W)EKe47K z5+H=2xH7@iYIg52V_6Wt%C>@hWE|m5kU$!5-)c9M9kPm>*arlN{ZMqd-)dq{dl1`r zuo4!BG|U7MXpYm<&a%8xpt9~}&<}v6B!PQ&kEK^7)t+E&2=I_n2^mS&JL!0<(D@`FPQ6W~! zERTl{3QNdcwyNRkYnf9wKM)KqYx0U7#Bj& zfBc^>oovFt$!)ZR#2;}AymTFovEG{WzT1i|^4k-XMZ{=lweP)JFICS(C2kccAqXaA z%PM@g*0-{-q6sG}y{X$l}Hl$hS&&)uk&^4TGrUn(v+!W2?0?NvF}^gj$3Y_ z0GTO>LzY$SCv)DmR}Q{6(QsT@C`oi?5^TAM9e(>({5~xza>`2E2YY${0Iloh4Dl>e z(xL!@Lt-SR`*+s82MES3NX}G2BiWVS_x@|F>t0^|EPVl-Vp+l1X9Nhn$QyR14lEMN zJVIg;vv~giHRe^0Iab+GLX?>!Hc~(Wvw(>Nu#z7!HFQ z&%IAV7W?I7CAi;&=(`F5_eTw3VNN(4?wlN}FwxqohVoOar5 zPmI8eg^fB}Z#qF`w5Cdc%q|A~>(6696HB=>8IS2K$HuLWD&m|dDps;YZPUMcc|*p% z5nD>}Eda@pc$hzNT-;-bOp>E>AOj@L3r`jJT?!4X$iAIDXkJ1VLf#4_06+%X{XflZ zWR6PVYaz6Y0|8)>F(miBYb?0h7nxbYd_WQ7@;#~OLJ$yh0_5LBiT(Gam9b8y(=TFElvR1)V#+jKDr9( z;@J-J(xj!lu^`yQz$57!(iX~FQ;1Sy^ubgRbT`^Hu2}ZU=An^?LW~a-BxD~^wNowf zAi`oJTPAzzPtv-J#DpxUp({i{2%7<|z|-$~<|)Jv8ddL$B%6|N={+h}E`{tcWhXFR zuu8_UZN9yH>m$78op2XIQ3RD*0E-_xeCwmmQrVlhiOft5jMgQj^A`JRTEZ4A6*43X z6X{hQB_j}puf(Hxu^&kFHHp-zr=dix8ij;Tkt4ly@y@m+t+C7`7--nQymXn`xeIu> zqECP!QdgANUMzO=={2!%Y(p*}dyBGK3-KT*+{VJ4hf8QVl$4~lCJn)XtPKR1rQq^9 z47PF<%7U$L?j1q6fzs8j3?(Ej#q-vW7*auivoY92>7d@St4nDLE)}T-rxFK*3Dj+Q zi&NWDgNRa_L@EL3y`l!6xU7g;7-Ie)inb=ztt*OA7^TZ?Ts$_0dW zJO2Q>?_yc;kd+YNNX)kgv51Qf&^+ss`vnL}WE21-#PxyYKT6$fx>HRz1xrSJq<9dV zph&gHm&&xa2@NC=K>(-&BhSya^;m2hoWxJKU?l)(W;NeYc-&iB*~v;2<{e5I)L}*p zPjTlI(ac8=S1c5ur^6*+0xh9TT+eN*p@zX1S#OqENg@XS01f=RTAIyr@i zlPk!5YAep-JW5ndh>}S7eQVP^*aS4B8G{m`aXriv-)%Rnk8svGh)R)U3%CsCJC8$S ztWs9anXqS)@&cP2!6XuTpWKV>U6nkCTFext0@6fS!QbFwE0m5Jwu`DLQ)`k_kj|I& z*L`bp6dJ?49Z@0yEe{AJ+Gk1A)+-9lhznC8vzsvnZy;Yu^WVK<#bJ4>D^O8zd#H25 zw5z0!-7B+@EodnV4HqFcln*|=>Kry;jS=D}EKXSS)L(esDXNvoVLmW{m;|htKF9=h z@3m*dxZ5gTQz~AKPlH_};iYvkXem!DC~L&VtvG!R9!2Y-cntOgkl;nA5$=D_i;JmN4M^jUbVVlD~=0v0{1C&e+ zBthGMT3-so7hYO`T1=BO3f{wg^cAxmgDoahmf(U9GEMc?_7gf*HN5TxXhvlR1<>Yb zCQi9@6@;4|JZ}qc^5C`z3I4+X4wu-UmrCFz<^EuWIFNxQxe=9Qd=9nMXNo0jSk9%a zkU2z@qSuLy_4!vn5r+(r$;E27O|6 zfztl~N=h{;LK=nSY*+}nJMXv7vwJoBG_2zJ!seqX@F7!@=0thGoJhX zI+&|?rzulua9SfXdq87mnASQzhEa`wT}?emyuc2;B1Vbd06XS zt}Z;C&5kj_@?W$9n~{Awp8NFmtm|4clzwLMLCag&3?I-W=Xq|Y+K`bU2KMS09?!C|y}>qrwPe?Qww_wjt6 zH@V_Av5#FVQORQ2%fDIc78Rwn7nFjeBtZ&GgKpiA@+$);kd>8XS_*}Zgzp_l{p(^E z6Cgq~AlUkCU2B|mFwX?311d{}d6aJ{=wnT5po~L}G+09t>ZL&_J~3-t?Od!IsY;>% zZ(PgN3A}Z!xOWos=q)dpwV6~CsK5E`HO|Jm_*J&z*loPeyBVb_$_Ti))K0bScqag7 z43UrG3zRNW(^3*#0_4HGSl652oTf=qvhyUB9acW=U3_w}7=Ys41DLO7-f{qL({s6s z;YH$k7|dIvD{MCDDsgRV%dmmopTmC-qaNlZYY8}J+gTnT8prnb7Pzcvam)cRhd712 zfXpDobtAoWczy-<*3${aHo_G$LUMozoW67CQ0c5Vw%9{+f?Afcm{fRsTc{WG@~t?3 z!g$Ox3F0pT?hV6}nJ2|*GtirDdfw7-4yOf$;mnsYO`tTVT~SkGt&aTx>r;;LUNGa| zk$0Ht8g#%42^j^aC=enH#*sx!Ts&t2T5w$7%%)0!EgNFFB~G9y z0N6Qgq#fWHrnQ4sClnKmB~7-d0H}l!u&|gPxSI4_SBf^qBMj~tzC;k;G%65c@*`a} z+}AsQ4wAaZ0InUA1nZ5NY%4achy+3EV`}H%m}dsI9t7f8{UH`DuRx&|ouc*>qT2Cp zqY;XINL#@irpO5`gQ0;iG`D%Zc6c@cyh{#|m6S9P=qM#hRPF26OPb?-H&uxIPOc=J zV?mJHN&;F61}tXX>hPFi>u}gy^1)>Q8BV|xVIEfLTbwu?18p*rKYmmqrv&EW>X* z5~CJK9YKNX+M(7-p56Wl#W4*m;vY(1am9Ny;uLa3SWi*+71%s)^9_XIQ05`RLFYI! z6y7d8><+b&o)nxjCFgMp=A-`r1AZYFkbb6^q`35kd5x9iN^3m`TQ*7J`l%#JaLC}8CI(hYy{{ndsOQ3I=CJahvD2jJ;Wc#`XGd)86swP z=ya;!rwhcE8d63bronDv99jPWb~V7j;$6hQhs@%gX|V|bBmg79eaCDu%JEo%Bl@JOWSc+}rT4v!a-73pi@2AZ!l?^sAtbIBnPlib?Q4oINbB%^ z5sl+`W*%v0^5x0Aq@7_$w$<4G0E~ASc@6|Hw#dr^-QG`8tc~l5_7*LgkCLJkEa}3&hPJ+37S(bUpX=JTrfZ}Wl0XhiQ6Qo~zbk>`X=WzFs!$>3pB0OKm5ichXhiQO?pLJPefCY$AzFN+-vdm52Xos>;BicF!#rF>{{TvF2gENJ`T@@BIb*{S0^;58^WLeR zF0;#ZPp!6^3Ha5*)uVQWFuZ_qX$1JV)XTHZX;&GS&rwR0Gqn z*G(&Nw`Zu%yc>DlP-#K95aFNAvXw2kDFZQ+q{sN8UNy{G(42^Auz#q71Waq?)3qWk zv(uf#xFT^av59%~;rWd%Sqg|G?n(GsxhThf#WWU=WQM?nAkI^uHu(8hPaNYbZEan` zuLvaO1`dGrI~^;{@p87GZIp$y0)Y!!WT{H+vD8|wM)O;EgUfi!n1F{ClOw{ zqTyI%NpY4CU{5td0l!Vm??}LKcbz~$Ah_W1XaGGY=X&%UIhHUZmXVYP0WJZUgBP~@ z8sGH3u1`&2cxDQocon$0%F2>RO}h54F^JbfOkXBx5pw3WC9A$i(UkQQ$@u_JA(=$uRN^ITQ3l&hFjcPAn4HN2RcQ1E~HZ-!+@5sgSI})XkDYtx%RGIb?agF12^b_SwyT?X&fXIj+V$GN{vBQ+Xv8T&(%_X}#+!HA zN6MSU@d#R)!QrssyfbQq!0-|K4SeKRq5M9)7Y$fWAlPIsHc2re)6jo6HRrW=te%~& z3i3F62*b0Pr&nb-zkN0Uj`yeWZZt61Alq(aUS*|ADUy@C^qH})7ajas!#IMBGIBPr z32?6I9lMRE_pd3%KN%_Vwvt?RWaSYt19Q*=y*KpXK0Uin<9t=zN(oDWv?u=n7$D^u zTKzifSomHG6^#uz`^94Z$dd{{5hu&7Z~QmG+sA}EjC`PyTyPiy*8@!}M-t;rH;F

    v)Dc2FD3+ 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

    `VsH*R(tHI>##I%J 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%0D(Z^&c-Exz9OaojlLaPVUt!WOtq7$gB(SsNMEGOH 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

    b%6EjV*4_hT>p6S* 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

    OTfa6xB)0&*Kea9k@L0wt66fYnckt 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

    7+^!+x>L3lQB|7V4~_}KotIvF(` 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

    Sp}N^XKfS&1 z92>!RQ1LO8+djspfp5Rc-kiMO=GP>KO4+-ylRp5ObSwr$C&&#hkfC=D=~((5izl60K*DLtmaBzD=J|9v%u zrx!b(jkLRnj++#0YVd^~SqVn=AG8h~p8tiXdb<uge_QD?}y_QWdCIpIo5^46+jk&QL8I}F?^17h%W96i0(?X(aw>>N2@oZq% z>Cx=Ka+k&|LB=D3H@DVzh$zMy96OO)j#A)&LW2+qih}#D(sWg_w>@ zTrqV)35v%vW5EmIryZjHyoo1EGKSvfkJ_AmHu2Wk3C3!{i&6#MA6nAmUXD|)J%x?g z%B59FV9PQomzH_tTt*)_-bIRJ@z$`Fhk`b}()4>@f9X}{jZs4VHp9Q{BE<3aI6S7k z>UcB&ETQO%iwY6}+8uT5ir1krkz}lk5Ds**sAx4z!Y{TI%#~ItN()6RWqruYkI_+T zv@MGr9#+{~epsc^AZe+BN%-1N?S}I8gQa$w$GMif0;YzA>Ra>>&jPudoY!XF?ykSe zx!Ohm9a9Pb?`$sh3ZJdOmRCX|Lo$?IuPVp5*DztHM)IC%AJhUv!;^z2VPiZdpmWW; zR^=sMXQ+93IdDL7n+_pv6Gyu}L?ZEU9P$ec^ydxP#tdCT*JUA$In&l|90)l_6a{Up zZYB{FKVT_uVDMt!SF_EM&8oNx+la3ZAx~$0esb(GzowIsCgPA{P(^MX*Hf*G)etc+ zFRy9BS4au;Murx=N5PTkc;REJOIOAB+efiUckOD1Akbwx?3z+)YRU&FUg3-365Eyi z77*n$v58F)!h}$A#~pHanw@Ttp%i)uzo;O*ZDLD*G~CiI`^H@9llV*>f1^F?NzvIx zIWQ5NNuTFb(D~>KHE3dJH>m+oYo5Bnv^`cAWUCb<0xAywC~)bE=Z&gy4r>@~rQZo3 ziSCUIm+evs)b)o0J7KGgzgtB%e%^5TVStWw|Fh;W%eITLDx=Jps)dZSp&!hqf8Y2bKPa5^Km?*rel>yUdYsm3=UA9DxTKMw|cU3Lz$)eD1BpJy2X{j<_< z1ogO<7qtsl_UzqR%1Tl%G!?^2PQhEmPl&Oillbl^w@sofv?2M$*PRINe&y8@GWehi zr4>IT5OKu*C-8p_lLgH#TihCno!BobA`G5D4o^gDes7+_?ssllwm#sctLfe3r*SJE z0<7E(-QB=A^tjxtvbLJ#P7;+KyU+m2H0-K3-;N=Ch+B>^Or#;6=>P(YLt(X7=yyaD z!|i+;Vu~#gqy}?`9aHbq59?2>k7QPv6>@IY9DU$Qk$MUM+7ny)e!2+93r(NWj=^V< zxDPzP{;t!bHSb3fNJycF+QTLvgUWk5>)yovy!>K0hLL@(&v_K7?1JNEDLMZ4i&~+cORe2+&G=%+B=1F-jwO}f3VSe+O_HDtr$-wiA#>ey?<@xH%H1WLu0I_CP&)F zuSnECYg3dTau3+HnjRdL>nPX1EkWyH_n^8!sPx1WgA~D0?qW=+3tS8;zE=8Wp}XPn zDo-dz!KAEsbv9Lk&0sTteD8%umWQ*2<7G$3e=aYV*L-9AWnKt~0ZeG1y|m1#S1`x3 zY9~uq`tO(oo*ThRY5Bze-Xe7VNUv-x5$y_i`0GkT$E#)6ySXZga9)`Am1?f1Kygth zE6cvPf|ouxZ*5xUivH9I0#rPhJ<1GDNN!~1)=KbH^kjrI5r3fh+f*z@LXr}38lr2Q zdxRRTj`tcDHp2Bf$VY=rpFs?2A4qElAA$bjjtZD3erFfxNb zitfVA&@qjGrnP)J&7~S3GOQ9%nY-g&8|jGj$;zgKQg+Zfg_n@ddA423hr4!O_lRl_ zecu+GG1~E5U}?^$vV`GbA>mgyYp~X{_TjSMn|-^q_#d8V-WTJ)ezhZvjKz^))pdl; zl%TvLpV9FySq^OFKOFV*t`G8!wcBqT=4M2v)(_xgZfbvz%dIdv@B6h~WX=8UnfLLv z){1rzw|t=CPbaL=1%bZ2{tEkmuCBg=Ed!GwMwG2a(VtAG8wUkKe?uVXXAb-;#P78k1Ws#sNm{6R;fR zp(y_5cXojG>A35Y_K9;c@8^D&xFiTFSWo?Ok!U|8WR3j1J4gdm z!dI|i9V9!mGzI{)6ZuChl=rZl^7%3>K07zBnCT;Q5eK(*_nf_6$C)>_LQrJ7RPE!x zF&;f_cyf2J0+@9o!IFLl`{%hcEGx_wU=y;(^l^FAU|8X1bqePLMWtWc`-fahG~+!k zA(4}7FJIR4{U`4J{=KT7`qH^lMc9pRB7PDU*8QgQDuJ_EnGHYon{(g4X!o>dnkfu$IC$6|Ac73s_EPm6BVp{aW1SqxOjq#0->mW&&j9ND*Ibu z&@-;~feHbMDck_@Q|v=mUa(TM#5#iB|8h-)wsV{ty98eN+=v$|ndKWus-DS?gG~Lr z5f?AT!rP6iN*(p#|2t~6rVH>nro%sU*rZ0Vf>Whtg*&Lx+ylx?CwCf97~q{dgLnUY zPh6JdxNJ=uw8!=^ zlkALc9+?Icf;+UC{m5vjIHx^Q3lFtD^;BJ8Sx5C9J0M}W^B$~{wRITQtXfqbD`<=V zS!+KEsRfX#G13(@x-Vax(qgH=bZ8C=r4H#7?-f|t55L1R4C@jD~*Xdh(<&i{GMYY`Cz5@ZJj;OVoRMz zP9AxAB;!aMIxT7Xc5O_BroXjX+&|<*ipKXGk6H{-^%p)ux;#=)y5j$l^zQLY|NsC0 z%p69kA*8lBw9RQ|P9q_QA!jN&IUkZ@Hs`~zv0;(3qEss9G>4?3ghEmz zo!`HGzP~^A&n~+>cep&ZJ)e);{dT?n{z=rr5fnQP45r24Pj81DwRF7ow{LjwM$Sa|}Z4ZXIjJ_+sxcA-1-D zEK5lYA&)N2{nltSJn@dC-xa1Vr1R(%5HT2M~ z4EiVJc7lnsB}*tJz7|xb&}_@bLQ>3n83v!Rs5bd~_m{Kjqjc4@Os`4UeMRQ$)&e(zKXpO1FF2ks6b=uMv=x+8v9n)v@JF11cV1q{ zlSy5}YWvay;@YmHHQ*cAWBz)0p5t~6Q2_=f+mYL;z#N&muYZVyZwCev^EYPN<9{%v z_vK2vOK7i>*asrDRD48Q2)qx}K{D9P}y*bBBKY7%w5HNY_ zp6m2vuDAhgZIU6X2`k)V)pi+)k!}~o+0!IfU8&IIh0?09^N>T2R)*CA=RgT8*#i%t zGJ>a~Nf{5ybOgW27!z9I+v>b^ZNN8i!-6<`d91X%< zT>l2;P28rV?fiqHHLEZ*>}b6(XuGTHr%%!KDT4B2uhj%6y)Jd5%(>M4P&CH8QP;cDS9Wao!UiD zO8#`pH)w%d1P$+ABTGri*0TGo2v)@wSO|2BVe*)1WW9a3Y)!qjq>4W$1H=wY+&add zqa*DI8ZclHv!(-0e~Hcdf_lsNZwK^J19lhX%=q?Ry z;LeF~Wc*FYbuS51woE0*8#PsGd2s&}kT*5XWP*ISKw|S|WDhq7J@L1I0hQnnIi|eo zBe74@O?9{4QF~x(&^)_it7zcZ%@@pBUG8ECDkvAWzGg)t;8UnUuXBt3eH0*&_^1I$ zq`K2`#;vy>0|QIH$xj6iIt@dK@-I62`f{r7KPHL06`KR?-iM=bh*W8lp-vC`Dj|=i z<5JGIU+}oX97ay&`4LM}TElyy9*Pxj?|n0WtBh%35uHgJ2uOS;KWX=H!DwI zv`*Vf=;fNo*Bwx5P0oc&3vcZw{&AO|1 zVYg7G@x@$}7M?{oMGn-y>f~ibP+TlY>LSzK%lUHqNS5z82J#+BZ0_cJ%#{QP%X7V% zK|j{yex*sgZfq{o*zvDPupY~9lbA1oN6-X4i*NBmy;J;0HT^Y_Hc3J;ocvxe=%<@n zzH!jn;Uoqf@qdj~Q*FIjcLV{CXr1OKf+TjUgpdyT4j&he|9>|=^88A9E7QkHY^vBxX?G-u1p&nzJ-UCbg%y zj}etq4yah=Oobip!pWe=mPi7MXo~aVc8$Q01Uuz~4Y5PBbtWgG=g~~81X!d(^ zChVt^U2RLAm`@NuFv1r=fR-ss+@y;~IIB2F7}YIL2Bs9C;)1}?`7mP)7&5u4-{7x@Qi=}mF}55G5EBTJ z6OrYrCn=phQ_Jy^w}m!&C5)HI!tCnV>aBD`MJY@gks)waRzRY!e-oNmOTDj@61h{r z6z!8wD_a!Geu^*6)L1>xwjd2P!+{ne1zY{TfwGGxbj0;+n^x3(E&tm-f?#nwB?H1D zX%)a`DT&A5{~@N<{4gpBNArqPftK@OypmD3+9aab$}UQ#(>MQK;ecYc>K-?sO-xyg z57~sS7OgpVENTPqH^}FJo*CYLzgqo9Yuyx*-S%h7eJmD2$7D zuuVT`R>w8~$*lj|D3_nhXq0^J!}Tc^dsS*Vzj=GEe)!97h548oNkC0ED1wIw@0dt69CiX;jOhTltP*GaS3>|k)< z$-d$P30skwWVtO;=e_>p_J8X>*>{5^?oPK2hnhL|KWxW%LQHRWr_Hfy>8hW@G14dI zaezr?*gwjl-DZ5HLun#SM*1EP^dD5F>l+Jx5UFl}pSlmp3!}50>ZhUy^p_;NAzhqD zsz8#PwL80Jxx9zCd8=vj(Hagn_SU&Dk}dz0Twy`%G^Z66ESWu#%rgBIZOdZ8M_DV8 ze&eNmIjOA2%gM9L1o5Y(Z@tAvr4Culyq%G`D4sMsa^WaVsJHiKh%HPUh27h!8^sVg zh-Yy`tQ2@7dGp9dexqlJx$fc9>yAxMom-0w(XP0pnL)5>D55XaK!#nQXP>>#85Nji zro9Abbaw@(uC|$gHat4hwmXk8GhvEgE!)&HQ8NZ&#q{f+>rNt*QOZ*Ovoy9UB_0Z; zia7>>#tU!remjwg&rd?3+(Bb02s$mQ_O=ZB!~ixk%4Ag5sHG;{QMBxScJ2DB0f-MG zaj2lo6=t>^YPOiM$83^q1LE4WirKx3m%cCLE1nW5COJoW2|R*ITm32*%?v&N(B_7& z>hls$KQO&5LhnLx2`In-J%icYvx8)V8SeuUz# z_&`N+Zg&fdlgxLk7Q^PHu9z8f4@co;-~>IO5-`dncmA=UO{zweT)O&825!6xT;0KM zhJrClDD%VW=B39)*IT(h{k@6{+QS0Hv(PQ|M!F-8ES~aEsf^HVBmY(6Y4k!$tbxyX z9eb=2Zrcdj$$=-|0-i;sNsGGkrak>G$1T0L-OvC> zwgZ(7DrARK&Rg*%I~-Oo@M7_l%=)@3$@jjCFS}K76DIA<5`{E zkRm-P`@q#)el6WPe6%W5{iVk=SKTZW3|$K7DNZL#JJwR1&psBhABJ+V>B8naJZ=|! zrB~j)5(PcDo=XjF8UKT57x6jN_MV~jE3z;y`84A`cH5~s`Pxj%ufOvmx|4P1KVGIV zKs}>~ph{~Ra7_#)f1~?{`>}TBon>qq@Y=)!vwrc3`nm9GSGUsZpC!pSeAX!!KgK7s zO{b*Jhq5ihD5FxS{%DBSAA(Nh!lde3hZTfR)B#mN+mRPtC#&LoiI1o!vqGPU3SU-R zqz4P}`ajDX9(oBXHT!Em%@y46Q|b9HsjXA)2AMCTdZW%TvyMc4@F@12h*FTIU;SzH zq>$0~;yoXeDZh|w(+BG9DADx;ERB}G*D#_n=@}_4oPF2dOE0+EE8bE3FWpgl0!mXR zPP@W+vV_EB%e_8I0?FJ?oxaj(uyMB6TTmOBPt-p%_e~Xyhth>)3#Pk)=2dII&U4;* zoo)0)!^DR_pS#UVVX_V};X0#8F$2)NWE#8kI(MzqC@yKxc&Glnsv3xii848S<@5wn zk(OCubIyAI{wYc+GZc@RA->su@gqle23Z}3FR;PK#62GR1>SpsWpTn23$pkV!^QTy z1D$yX>A)Oy14tln3O6x-*@|#)!N%@DFH;qDaa0HmrRvAt{(a5CQ9}<;%*xz7I>YAg zg>%$L155i)c4$O4TLM5W08}sd#ZX8%GG=*{RwO*M@FvJ_>9LPBZ6lsL)N&)hB{ykV z-9|Y*Oty39b;8{;Y$Q43X~(W|>I*k+1STnnUXb-%!zuN1`mdbBfh*rw#WRQW%#1 zoLdc;p-W*4quRp`!hnI7Hpk8^=^$}i9$ZSihh?c*W6woVnefRfc*>ToNoMYpU{5&j z>5VDu*0&bysX zzzeInw4C}81rn4J<4enucRaC^-R&m89J2-fjwh&vM%y-DsHDG6b8or+G+9L1SNb?r z`y-L&QLA9VtXj*J2+=Zd1^r!Qu0{C=%|On4a@9l~8`iQ>VGH=lT}V}U{iO5I+m4t} zVo0w4M?7=kMcKB)s7E0veV;22tm|?FiuSwya8-LdsGcm#c!^?8rq^yS)?Hp188y4f z`ra%|z=z1RxZo)^6#N17ey;FJ(yWHS;jdqvZA@6lWT>VUdzhGDSAt=#@O!#SIb&Kn?A!Y%nxF! z2pp(%!^t--P+2Q_$kXMD5WSS!32>CsvH5W$As5;4{??uqDA2rz#T$| z|JCxF+Q3ZM60V%M;;4OiFYpNzeiGq7B%rj}l5DaI^kb;mN0n zQW((Qwojn&D9%-DZ})xIf=wT4Uy)!St%AdWH{iyrqBQo{90*Oh;dCg!gM9zmAC%`Lm0^{|6|S zNSEr81s%$upbLZ?tsa#NOo$oyZ+dMjW}v$E8&!kxVAtHPEZURJzzz(UU?ue6_le~+ zTU}MOfeC1-MakYy!_aJ|sOLhRI8+J?TioZDt4qUjydqWMu8JD2)`2sM#Osei-OxdF z#jMU_pioy0qc&-U?FdYix*8tXNgap~ zGT&*nqX(xbHMFAbI|zOC+2pe|JRq_JGlOiZKfUkmnF|sMAru0J9&G*L zBwvw!+)Cgz8XuyjWWuC4bDC@V_H@=zN@q5>Ka*@SSMdHZO?Fob__j&E_|4UDvSFw# z(5Mb}rSRe(c>YeL4q}+9yk=HeADr>bwIy<$ufXA4k<)$vIBUl__KAnNVb?e$G5$Y* zC4n=`(zvV69jdOGFxasaJ2W0ziUrlj|6@Z~8vIIrV1nmsUcowQlm<`;?6@?0>9K}} z_vJwVNKj!Z-sk#`ak;N&285w&-xr>jgu{=bJszDh+1f<$cA8`~^{BP?t45dE-q)=FYdWcdo&`9C-U zd;gkrT(sGyT!38|;DbRVJkL!c!XeYCB~(BuXfFKCP@hmZ3GNA#IPvU9i@+=zka%z5 z`7TP4<{Z+OP;VK5=9%A3V;+V#So!yPTC44htySdM;^OB|MKc1oIXO{j-r(oAHu`i##tvf zKw;~yI=$-JpbbfSNY_zDCt^8yC}%VI(7O;4jz`Lm#0%jwnDg_`mR|E_-+guAN`xIv zDF8AG>V>cTVY^<}UicbjId`dPm8$l=l$U+n#@`aH@O!RNk?Zi76N>fCOJ&*nks*m92Gj{7aDDNVLz6pOsK}xIW=-v5L z&`;jO*~%sX^y_VYzmXKuT^s0<@nc)L`nG*$x`22QgU}M@M|dmxYz_?3p6b$6JFqEy zfL}~eadk{p6(mTcHb1LggKb_YubDpb+e^xRMzYt4_E2nF6?FQ~v?AZ_YS?BZ(bZ^F z-)OKNb5AyB07w^W<<~vuzr#_+! zEl(p`O&*bX1qCEXAv@pB-tCHOC}~Gjf$CIkPply{D6Sf zJGU20d0An3(HG`so`mIQlSs9fL!FYp*WroH>eM?td{czcsJ@XmFZbL-P2E&=jfR!9-HpiPYb` z85;u(M4(SAnY;+CuE;>8$}@LYw6&gq?}Z0&aTkWcI4?s1`)uhPXMa!_rB_(TNMYH_ zu=`ZImJK-aubE+ET8y zn1PbCyDk<`j~OM{pV5&Q&K!SfJ0d)%<<;aWc6NnOHYI_0cEhz4Vxsx5bhZ-{@&(Wz zxoK-MW#49Y4a5$nttczI$4k00Dk50^&>B(K9AWG~O8U#|zxU^mi^Xw;u)GM{;+=YJ zC`9uY0T~L#aJ77#eoea>(;$Fd1|B2FK;{q5mDLRzGtV;?rr*)}%H>7#ykxvPKDfec z{QxP)I6AQeVM_XE`>(tPw1%5>FTYY5SMnYjp->dD-@vRDP)sW{lPfHvWIEfW!ShD8 zq0|Ae>Cu-yv}Kg=7fI&p@3ok0Bi~V&uXAH#RUrQ1_!TDD`s2?LTzcu+61EC{eTOo1 zhYkz&UAtY>%b0`!%4S5(_FA@Or2+}+rydhkB=r$Y@SG;n@hlg6N7NNI1S)FTU*KGk zk5`1gh9p$aWb-TP>Lxid!n+?Z^b4);H65culLIJZuQlbHYn6@iEVWnRx>p|qr$-1l zf!N+W9<8X9YAt-v{q$M$a({4U_=)7UFNqeYv=ewoC&?gHaeV$nC}>IJf&2}6ulX@X z!#m48mB6A=LMAQ+D*5ebe1Q~OhQjNDvb-Ttm+t+096BZM-6tmeDxXr!sHGTTyR$FU z8bPF?3~{!^{qUCc2}MxFX5$Zz#6($J<>SGc1d64d*n2hEHcjWdM+P`L7dV5cT;2)7 zwezL|?ecX{l-lP8`@a}B`aNvloN>`d$TsSvl-@qP z@5ZC8)uJH$0>p_4hC!TFsryq(j77ok?QDitNw`fw6Q zG}NYo9LqTZTv|P}&k*+M(g3BSQIGU`XoRWi?O2OXk2RShroSK4vOB*xTh~ET>_ut4 zSsfFeF1r?aF^tA!h z1KU{bR)UO5ScG%rGe#YrfA+i`E(4dUB`FjcR9Cp23f2w~6HcDedpP|8AN!Ck6VAAp zXl3W;#@da*ECl7;`?lyG{^%z|D4n^+@apU0Ov!SrqfL4&y>u8nzS8a5fgY1*v+l)v zfp`5H(mCv2C3okiWHJ2p2;0(fr5wK2l$wur zysR`*UDGz&{faw@Bz;`n70<3A)8y;aeWse`IOTP01RozdH6=$3zc`x!$@@07*5$d* zC~m5&W!#^3w{!nRLGT+{@}=d5e6GUOtl(VQi!(NM?!|9D@;Rd})9xsD3}Pd5LZBg~ z;oE~Q;9fUPw!DO0er+!8!vL{~Z+#Wux3u_Kki_ZaCNPmNptU15&B#pNVtH;bPUK4v zn?7pbE0SjZUn2B>sZg!ll|%$Vp-O_UibW?PNY&qj%4=QS5A1W$S_Al&7hA;iZ{!)m z6j}C=HcFsn5OCi3-qL@Ztbo~uBu2&|P7a~E%Dm}Oy}rIl_d=Gt6cyXeRF*94Ppn1j zTjJdd&l5y(g}~^gXnu3+5$Wiqpnq9Q(e@eK*8~S0WZwmCMYP|XS|li0 zN#GIxUx#fVr&lG~KZ>4ax-KhZV^5~41{_1FS-k5m`}KRk)URYqd{f--qR7X=pqR@)f;V@5>xT2?QoCm2aj7Z z4#7Hhg#g+*>khyUNzBYlQ2_0{(+qk%ztal;c5l!M03+3Bn-{+ND?D8~OKPLNWb>mA%dXJCvVZ{DV|GMA@O7?~XK z2Muwphxo3;WY@JTzN>v>J|*A7`GZx4f9o_I_ZYc8xxsThUvErCQ6!p{voI?R7535z zgwf+QK_{>D91*Kr(UW==kbxBft&TBz*j?YZ-7K%;#e}20&Z1$CU@PY$S&}VR2S1EM z@-sduRGGCzf7i9f*hqSBd)tPZjniwtrK?JM_%eqZSTssaK4^aN;^}0~Q^N~8wc4;% zYRFe;`c&8lS%dCAWacSQGl~v*RX(hRs}|<^^2aIaJm!zBt=KlH1)XNBqn*aEWMX9= zAZ~>$u_d_rqRW8Iw{fId0BZ4(Z34jG`I05(CaNEZKO7?49g>?-&C%We1H`%&q-53> z&mt|(t$aKuc=69i5qMB@Ad(i6@4wN_h%n;%KYtwpA;qTL)dsdy0$wvUoOaKI03_H1mJ%17fls zZ&%ke-{uyG$~#uE+jT1AT2{tXr|QQnMFk1E7oB7jWd}=av0@Q~`l+9ZwGAEgr+>uk zUT3DPwZs0J-{-1!alB}jJ}4XiqIf<#yk@knz~RAdWKk6&mSyiMuQJiSyO>jy^XS8W zA$VBVBUcMb4&7{ln#HFMH$lrhXHAI8?JH!pp-pJLRpNsX{UvxFZyj;a}POz&? zwvMM|t9zHgvF1``povz??~B(P>?$ej52Yx}A~xXiA4CBG(gn*_)p)oznCJY)|Hhyn zr>DJr1sijaB76rW(;_1{HPuh66>~Wrs60~irV8MKGf^w#`=qeQnIg1mFnw7uj@RQW&@s4EnHcH;P%x)`k zLJT-oQ;M3T`bw9DBWkh-ZqWl~vn}{-l(8-U7De8#q?z$oN0U&_F~Im7fe}p;H8tUd z=WuwEpA`}}YBEV%FHU&jSMgjHi3Hrjq2t6H9skQ4Ed5DZX_QQAItxAha>ST@|4Fnf zi(aB36aWz*OxdTmZgJQ>dBF#+kB=Gut19IWYN@v%3|pe)1Z*;P%+F36zVzL6OYor+$Ce@o@ZHTKj+KaR_KJ1ib#| zIYX6p^c~)Tfx`OAQiFc(&plaCY9J791d?b@K^iZs}4i4l0UpJ(V_}O%R zSF{v#phM)eL()v__-IlwULPhR9Sc!Qt~e)a(sn(w2l(iUqH4%b=V^0c&HcH0ol&uP zj-+<5Ly(k=xf*{AK2x$*RUqjRW;FKhh4(fK2|Hc3Om1e0hg@-pPp+$)KF2bQ`TQh& zG2jt{S#Md}-W4UB5fzfyrD{;J@TK@kAYwG4}DJt|{)y)m5;cQ_P;R z$@i(RhippJlAny4CILs^a-X#SpuQlqnw%P}aw2xd zykm~OlcAp>NYuCbe7_ZSu0sfQ7qa54u$xtU)Z=9#)|LoyJcQ8_TYU?6s*kNX`;n`_Q~ar zQjTX2dB5~Ee2Cdi(hElAyDa`~9*xyiw51kRjOvW-#Qj=2cr_awYjS^%ehXDskNiZDhSu{LA;c>o<$RSBHM>fF5OBPAhxc1n(7kgR0M zl`I2EYx!HvOjt&pvsB6q#6nX{?o~AfKhv;r8u>NlaUn%UIH)S0T$#}l;uuEzc>Z^J zOZ8Nt&X(c7kMc#8>E;U1!5>r36fA5={9Cy`q{zap)N8n{hN}T5SX|37j$9u+Fr2qI zbeT_`xc=DAUh*r~wibQzaqL;9&wwJmXB#FJt&&WFnXqqLEilM2qhn@ z1vc(Rkg{*Y;i;HTB{FsMk&&FV()TLPC*qXxdbMTVwUHbGSPHsbz1U+0i}<&x z(=2`wfr5mf7w^O?y4b2C-e`GO7c(xe!_pG&e?3`LAx=!OEkMr|=6Flxh4A@6rLNw< z1O|z5%JWl1-~s{5pO*E1&}W(-gVR9$T)gAJRu20PO#^+Buti`d?9UW_W><|YRHi8c zU@7NQYn#Npk99&4c<^WoRYjagyps>hE-vUs9W~?ku@6oh0Uxh6<+<8x|JhS%S4k;o z!8hApGhNzJIQ0M~slb@6a-KUlr2Pa9Nl15^RKjLdMDu9A@&thWQkR%Klny+DA3x|b z8UtZS?wk$RPNT*Pmao~Vo42Q_O(6;TmYEIbuKC9;>L|2<6mM3M6-sf!d_o8knocpi z&ECnPIPt2!HAv`OQ02frnC&VreP=emDNw&iv`8=GVm=`x)~`=nw1a8QoaRaB$FA{l zJ1z5!0}N>NTpbJSUG-~PDUe>K3PYEb%MG7(Opg43r(*#>#d7HoYKS@afkmdJ4AW~? z!>5W88l5Ta97MH#&Z5A}idM9z?k)=NvuY9|<#2w>rOGu%*IzqL_B8wpc0n2GZ%;OU z@;JL{DWekDT(;cSW8?w zkvVd?Dc(po*jRp2?O5}XqYJn(X}K_qoGHnyp2v5dR~{4v@ySHT6YYll(1uafq(%i1 z-Sj20b6l;=VrfL+ZG^CFoqeGp;i#Jt^a0??qWevYuZl~_$HNePTNmdpl*e9tjf3)S zr};;(bBxu#D|@)#kxf=yXtsW!VCnIrd}i~m;H^hL*)8Nbs>Fl*&`obhbYP@s^{$Hy znfg^A&~`R^SA2MW;=^crXd7?IGB;*B`9if*R6h%LeJb?R^F}GCw6*(rDj0e+BdEZY#_=Q-xgeE|t@^9{&x@tKeX% zk+PSH^XoSkBM6pj$&y@(BtvZjd#*2$5LVyy?CN;TBGN%B1l)Dp6*DgC`T~ zQgW5+W6_nWsN8A%xG5*9k$CU>J&oIV(IMcWr9`wv_QATFjf>wN4gdKE!!Ra0SW3kN-2!xH zRkOMIL!-f(7t(I!B(c%@i|gzA0|wLA1`SKAayK{eI_aeiua-{ZaT6sEIZ7)Fxdx8D zTP=K(lMo$|@bTmlo%jZ>{S|TY^g^am(Plj5Z_^I7RKPY|RKettBh|M^#xl>&b~RT3 ztNxg)OL2Xtt}$?*P3(f90wRsE9@MzA@$>d|skUtPvlQ^AJ5=}+-sF4tA|;x{#LFUcK!eX&;y-c zNgj!oB>z%%Lf}6d&cd@at1%yliH305f+0Zc*}i7`FJY^9ezWk(a2%k9q4|Z43RQ znbK!ab5}wr@@9qh8)@h?-Lt~1M;|QTY@OO;dO6mq0*jqhrs+ zX)6RDXxKS3S)Cb7Fjw|nEN(RZ*o$sszh2v%*(OL z0;pqRU#mkp;$w+w@<;3$c0 zs2Ew656=a4}-_CRR1#mSjV5i%oiLHXnRv+fP4c&8Bi)} zt$(Epr9rS`&L=h#vvnScSo{xgo^jY)st)C93^8edi(;=csb{cVK$6V6+n=KjM(>j9 z+-mf)XQud)NajH$q+Ep9B#;h?yjrDW`5IcNmZ+dvnN7{ySW>E?F&yxYWdr7Aj2jJqRW$S!*49Dl3i zM3gUJU^R75JXWm3%VLWfKUP^&cxgRAQq;K#7F^sX@2hw;FM_OsCz1keZheW+K~Icg z5%A86uV>Xc1@!@J3`Xf>uI4|f3i7wG$B@dx z{v&bPEMNQvXI_sS?IPN zuDo4$T3pH@d8=e%@sE3PMhQUl_6K(i?=!q6r_@6uMqbFSs5QRenRJ}jA?2-+}g|t!PT48NVr#3(Vhj!Z5 zyv9_%btah9)lpA2lDjN@V$v?j7%tR~(m_>wDhM8a5EE>J*ekqxcV^TRT4?#*nq8G- zVJj{w)55FL05L?b%_|nEfnCd9{PEx`T|hzdmjCtECk8w8S@c}X8&VB}n|ECwN^&21 zVLek29S8s6&gygJzZtktfDOFp^;AbMXk_kkA`$nxByXc6 z*76n^GA+}>MZ2|&;U9FBgkd>-U!~DsIh*ch?_3j4q5UG<`bX!xzW@mwVza40!?l^) zU5CoWJ#SKQ3q8%)+={_259*|;*FQ#pnJiD;iaEj9A!Z&ET;o_&C6Rl@pHF~_8DA>gBxrvADqVD?*G5tcK0jg;@j?@XC~afO*y!`H#APB zY2K=H3pW)|`oCs{>sNOtQ1f4R&uwDbtf!3~n*W@q@L*E;9U9+H_WvJ25PibwluI%T z#AmCK?$`+gZ`u%9Lcz@(_s>(O@JckuH5RdxaYqTE1Z>(5zf#@=B6Wt$oF>+J=RSAwkwWB07pL>S?)T+BrB++Sc~B6KdI= zBY$mcSeIYC{kA=hASb}m(8p!3@6TNR*0Syu=Jz-(^0`9nec+7^t=1}tFd>OT$`OG5 zcv`y7k-c43a_B6~q5h%WAmn)GS$TI=QGqT|TJZ?z=BM<6~ z>T+~_A%;b%Z-x_pN>_v5ICqzTpM01%FQ{hqAHRQnWM4Zeiq$Rvwd9Q6D(ZjCepV;x z(H9K(u=b-$Q}mAC!+GoM~)>m3>+4+?2DqIs!3Xmz7Uxe1Esv#C?#KO9phsFyt9qElX@g~v3ch)!iTHz z(uwsLSCFXgfZGZ;`7c{QRCHjZ22yuU#>FR7j7*~)OXZt23qA#X7Otiyl*_F+pL-1t zxZ4ZKxBsOwVeh%T29(MMWGxhQ0h1+u<*((5xsGW^+Br-Z#hp6!jL!I0hh4kQ)bRHk zrJeNSn*lX*byNv+ZdIy;gq<3Uzz#DwMz|sYrqQ8!_COKXR1@jok{a*~^f1fcN>Kgu z0H69-D;oP0^4xF&^#xSrs`QF0^VE1frl{5}ls{vh-m)DJyf{@0PWVm8`gzX9U{D>K z|292|$No)*EO=Jo_CL4lmmZv*`gTA0MzBqQ5cE1vL0D|$cK)49l-m}Ver(c|tXK+E z)VgQmSU%Z`TZB+oxIdHcHx+)XWw|5DNl-e-h-Jtf_< ztyV58E10bl6^n-lUX7Ahqs;% z&V=a@m&wwsamOK-hzAQ?v)C{c=}0gX{DOtNP*~PIL)(Q)y+Tzk+B8P-61n(e>!>eW z0R|3G1K74wTVSoTsKTl04vN;;fPHmL!F;qjv#3lWjVSq$JDGbfsFw*V@PAV4x_+EY;DVE!TMF9F z;=w5if~~K&2!|%EB#K|d!Gse(<_>-q=|^;Ar&GpH>b-L+^(yqYtnOI6o~M8Gt2W@c zrZVipH;8@KnbU|f`SgIkpB13rZKcAxaw=+nBL~3bIj~#mQ}E&ET>!PID8he`hac~r== zPs3WrF;b5C_0um{N0E&A(f+Mce24hn?%r-)VVln-6J~dN9Z`}fe=uP2!~~hA919kg zgr0tylqYqNvV>#7JIcf{Xxge-zx3tgBOLPvR%)pRqO#`4?70WPvg#f1ZLAh< zyN9jrkqcgm>sJ@k;WkbWF(O6+ReJsc_sWy}>Mr?PR+x0eIEGk@+c#eo)0nULlp2=dF{rUh?@EhFX!9r4kwn@Q>y7IK4ih=B1Uwh*5_$8AA$ zvQL;KQ$+q$3_?8Uhww`EldnL^vq9eSoP5FObFVG3lIA};F4_@a{+De;H+yZXp(mq~ zn=jGGtDnP+9$HhqqWdc?SD~4kpzRHb=&x#kWwR+ql3dnf>jx|k@rtq z3eU+OSz`yqLOJcCVi0}JCsuB!ZIA|;a(e3J_Fmwgq@`8&QQr>|EUZO54&-viO1%2^ z-1R@mNE%bORvUeIymlFXuJD4{i%r|HD{`v@2@NBUGTcXzf`P1#g_2L+F-W0@^9tU8 zj3-lx6@*$zcF3t$@QgGpAVFk1*#Ju>$Iw*=pDV0331wZ|mQxCD2o?*|fl7M!67ANW zx-FzIbm^=o?`*WQcCm$wu9bs`h?V0WtOF@NCFa$Ps)V|5WQ1OC0kP{fK=ez|{70*) zABSVX05cCqC<40yK2AHnJOqagL5j?lKHN)#U&wAZY10sme=4mbv$JWfjSEX%HG8W; zAerPU$lqA_V;2|OZ>K0W_f{d3rGDz%ynW}<$|Sc-ENu|B&2pmk%Pl`u7VF9EP`~LpeU)%oK<+HtCujljeC@;eS z?8W9BB$oIhSx0XVrvI)D+9(2E#aUnNi8=;2r7)=WZX*&AZ56zYlvU6w3_ubv_!pZpJOmv9a{tbV*?oN%qb8sRnL(x(D z&+@CUrVJ-*bWq23#ZxxZzi>CS2Q;gYkw_V)n$>bo@?XN{VR^sq0b|s&?t0hyTj*Va zpDa?2R#m^Bok_RG`khT#(tQc0l`L+Vyc7(z0iBzSn{dsFvTtoai0j0H=e`v@j*bY1 z>^n%Czuj(S(%DhscsNXs^@PWJk;M-U(!X(5JsIb3ZA5Z|?#h$li#Er*UEw8Ba8>T9 zTVg|FML?lvJD+#;EZyXxwaOai%%kwU1%S}vpe3@T>}D?NpQWxUBVTc5i$$;JDKG;a zK-kExQkBx4``#$@bbjMMgaZ3GE$?RvKyu*=c1Tf2em%)OPG|+eOhx;7jDU^0HnrP0L#IUR|8K^6nOO`S}KYPDEERf{>PCnYGe zPCGxtaZG8LRBR$PKgu;O-AnfTVfzzZ66QJ9`4x8=Z}%&Aac7-A8m`7{{x!ILiFNrh zlvdVQ^GiHKs}6DVtfg|Hq=0NKnb-^Tzx8g(%a0U{E$$bPDAaz){17?P!z!5;$1jL> zI8n=ymN>BYjsTLHHTeXw%9^a7G`3IKz&~AfGj-S$=@7k3QX+=J*0fhm40BHKLo@D6 z;6&?&LnHeP(Gh-=lHLVq=9TZbaMsm{o{E; zXJ4lIa(VQII;X{2c;!})Q=QhUIp5rI_&Y^?*RMUEQQiiIn?KgL$SnQ+c1L^p|0Xr+ zT(qB8Kj_O}_I4zzL(-ECN*b|sv)A@LWrM4Q5Wc8#sK?aQlHby^@mY!oecf&Q9TbYMX$3!~eR3Gx zr$l24w<02M<=%M~h9xe$+eREg+nn5o8OJb7Qa{l+ujg{!2LD0rlX744Xzl8v%r0Dc z%@{Sxdza31mRUy)82Y{0x1zne;aQV(=;OdQ3i*T5+-pp()9j>WeQfN_25)D%pq?T# zZh@aaYaNS#gIrH~exQY^S64Jb79GVUI>+tgapHm#`JL(f3b}7|%W)s{l4sj#X;A)1 zsu>p9|G4{ii>c+jp@wP5o9MC;lQB+>bgv@<`Bgu9#6wM&b2G2Q&mYp-bEfr3Dm*lN z!Q&6z;-61mDqr1g#r5^LeWA-6a}*Y%_(TeB>Nj}+TX-I;nAa~koU7#D@7nRm-K{h2 z6!(fyu@B$e`!a!hj66|uO8ky2xmmbVxJtd$X*^asMYJyf@|vvAe#@>hiir#O&g7u5 zj##+~7uQfV{Y>eU{0pTh0tkku=ztk4M6)ShUAkXVl6G`Ic{hK#llLU$NR!}*8Db0Q zx0NG#=JdZ**6F-xw^QT%o{c{X3hmLboiF~KAVd{^%SKlHgR#B$_->x~J$l>rE9>;O zPz}{7`fHt_{itofz3y#e*_4Gs^i4_94_aZ7HQs&H%FG&!%QjRlaMekvaS-L1@w4lt zJ`=dDI5t2cbz50__IO>y)Gwmd?oU6qw2Q%58RKK#4o*Z`p8zjD5Rj9KcD?1wXBo~| zxs#{R8O;MddzbQA*aIpo&mi*}pktixUh|Akrcw=4iMslwY$X1*PLH>IwmGqDl2yHB zDuH+9mFOHBhE#5#9ce@xNXkbLL0&0YXZ2cOJfy3p#d2ILDN+;MKOmVb zB^Mrjv)J^D!;}44Z1_!X&4VXP1pP{Ety}sEV)8)LFW;K0=B>l}6{*jTi}Cn~6>*vw z0ca^jFRm|RAGg|{CqcZkGsX$*Q@@9bY^IJ(O|q(bH9!!FkAa>fJN?Y<_1y@6vJ)e_ zXK{*x^orizgO>KT0fcRp;|d~pTOrmopvw-I>+dsEU+nns-!sjD>AOt*WkS}V3V&Y} z)MuTvj@Z8zv=jy1QAS}KZh17xCs}8O^o;GQLb-@MX7)|?y!9CH+_XxxTHmb?eA z&!ky7MBrtl?S3u?j#cek!CqDeeKg0aC9kpRFk~Sjy?T3CH=oGk_ zAeD~;RfR6JeM6Dn%%=VQHE1FW<6CL?&B8W{Oge)7XectFqbGLY+zs)Ey=ZB4AV@v{ zaP3BlUvvpmM$oE!Fk#2h8|#K10p3s9g(s2@NOQIPNaago?n)mAb_5uJW?o3ML%N&hRVsM<(vVo;a z=*~o1iVs&?_2j|7oEICFPBmtQEck)VI<~Qscch=KVcJI&43r<`WWVCdWZd)%kFyoY zaMG24A5Cep23)!RgOq|%xj2Ydk8X(vO){5%+P1^CDTt}4T6w;+UY!9`xHJt)5}>1n zJd*)iwYmc|-{biMd$9nE4X*pgR%VNX=!d#Y9*s2Qln#Iy{mTiCLBJw^h|V<5?pt2e z)W10D9nsN|0B>--xQ{Q(cNhpS(cNI51VI={ce-<1=ST)tvkNBcQDX@#a+sr6$}KgN zyTGK+Zi zmgJ#BF>2;%)_tjObKg=BAWkF8cCgW_bk0)r#pbJCe|S*G$I9a4sPE(nfvlMixiM%! z)~WjTO!}5_m$f>6r35Uiz#!IpWG&ni?FgkjPqB6+f3N_~cc!QzA0Mg-%Fc!Aqn6q$ z_1@H{>o2gl?o-R&IuO=bsZ-`GFRS1)MqK^&cNEI0Amls!di`aqTxc2Xy3mFyA}2Py zbeuRpO4(rV9QWNXG4!GvwEkY$u{2qqA4lf07IDd8vz&Dy5jhdjv%qMfvGc}?Q@qa& z<%VRLP-C3Wi>(3OM~L~+sRGOxZq}~1cUzey^qne-`13L>A-~Frgt!@b#hf26yG0u=~WPOm!ZPIgD}a0`E>^(Apa$_ z`nIS*I8!XVtLWY4G}sxpZ|B)7^%X@fFsJF>;Fo?gV}D~lKafRHW&>4B2uX6} zbOf*Br_}mY&5D0*-k&!Q0`xGn05RRQEQjX)%M`9#ILWCWb}{;@|8%1lWROxlv;iDu zo=~Fw%9HS6oVk;Ny>BCc7)r!~>nC4nl2o>V72bi@r~#K(fHt<1Zo@8=6m(qii;KL; zd&T|xSN)yO-rMnY3h?P9n941CYR96jYLt;-VdEQr6W1ZY`EcyYC$}WgH^l;kx^6I{ z5LY3*T1}oP5+lA%TRok}5b>|Nwncs%*TE0xfWEW*oBI4rdETo{kXE$1$qcIk7g2Snj1#ZyQ8CsBMe3mAr*O_bpwBHUQ#?^XQI|?b?n{ zt)fL&F?A#rf`6>Czfi^B{k2TOcq8j{lq==qhykKV&KCSa*Jm%s(Qmd6F4a6fIJYBb z>fO2A4#&17bxxI1qZ$(W@79hngZWE-nfN{N5N)SpM`Ko-QkuNUkOW7E%!rRmaTk)r zGr`Rz7`NtAJ9ay#35zR?&yD;$N*kJdl|?#b)r;HA3eih9K6lkf z?d$R()=qAe0@L*vY~#T`$Ad9j>p%U9!Mk~&19TaAMfTecX?3pzz+cQcX2HCn&=a9m zKl}AJbfeG(bwR~VnjCYa3DIb;ZjF0v+&n+^;r_>@SO=%f+s3|f*atQDyf+o=peR4; zrO9wqjgv?A`m+0=kjZvV{nr}7Q?=1-iM*wQFW>3mh%Si5`CIl8N!z-(k<=T4jwA6-{NS;tJdLn-W|`8E|+(6TQlA%R+l~a z*?eqsr*(3zsiqqramR#++*)$dT=ssVbT|b2;^t8X@okoMxLvdqyDjlC=exeL!I5KU zp95Z5b{tQgWzKpRQq=1ifH}bnk^d`P!UbNO<6Cy*f|7c!r>?k?RBNV~ZN|!s zeVm^=ll9|nuoMn_R+|Ok;5R)!5MDX|UE~&xU@*r00GogKFa86ZoDwrTKDws$JN&Ut zmu>t$b&;jh-4f$C^c1om_VHn%$sQ@&od$qHBS^}PFAG~TT^Z48_kU5M>CPrly|%yy z*^P;a1;@mOv#cwT2FBwCLO{8{qvE#G`vWM=oJ?b2J+$0Cy$DA5^?IzWZd93vw8a5V zeGmo8s9@)`E3Ic_c71WeyU%wG1ueaye(mQe;~xyMXjaCFi1r%f(NO8*TnrUacv z{#o>4qE#@1u~--l1NXdXA^7KX0|_L7DCb0dC!WA9ujgtcD8%nhJ})h>Fb-D7f!18K zmZOaKt{3exTu6Ig%Z|fd@sFKqFC$VS&^bB;-Gd&@#bkz1$TYYpQQSW6mHKNs2jb&| z9rSyNfhT$v^F>KB>4nbyL}EIeMIfX-IJdsycS)ifc+gSg7k}yDGikYa``bG@6MH$f znr$rG;7hMaTvNB_%;%?O$|sRKOJN_&8L)ZS4 zrJWg)DJ+UsExdEQZ$sbXG6_eBrIRSm5q$KCSvz6F2UXYekaCNUUPUM^=DODY#E3k2 zJ`rTYwN%Hdn&L!hH<%J%!YN?rbro1NE&>%Rc z83+-r44F1{^OBg)I}#W1{k~Doa(+r7eNOo^uQmsmF{3LAk`4oeI>Wj|4%>Okis%{M zHEpd04!Y{5Hfh&{4yvX35fjzSGmIZf4>xbSW^x(iyg{Ric$~LC8t(b`&|MFCF zm4WCbx#%1$4DV0-`h};i=XprNzNw{PWbUA&{X+WsptTD{B%pNz+>xN4AGj<8zW*va zqT|q1d36bfS2Lx&^4LGB{>eE8^DF}Z2JMi&QJ-?~S!vhazP8{1)^3sKgWs1J`bVQ~ zPiP8}UF7a8p;X#%sN6K<4=>DMve>D#?fvm`RWoGBqoI5)O*XN}xEI!Pn@~OefRx|L z^TelpPM=N>zgAa6AMU>Nt!=>wje*L6Yj1aDiwph(WNWHu{|C_Vla^v~_TeU7%$s}V z#zx_{Mzkt6QnhlC24|1yI;EKvlB$fj^}yN;@oMfg}pQmk7o?b+1j)?A)NV zgk#!+m(>YHI$mT)m73;i|3EGVi?wvlEKWIZhm<(;=gJ~H>q54l**ra7S9|w)jTMCU z5Jl2LjJ)7vY!6J85OiZL&_Tj*8f)0hH={4@VvS55D&P?6$kZ7qp*rKpo=qQX&8*HH z&EbVJ{+OQGeM$Alo&bfiw;y7!bILf%=ls^vB%n$ssBK#-P{r_{u9gM)~pqU$+o#V-&ggg#jKN-Q_2ellsm&kHUfnVWjQ; z>22jsIo($S?x%OyWIfHmo#b@wW0Oi`!%kfMVe$oYYWmD#zHLr`HN+!LvK_Uo6Jr~b z|2dt*j{lZv@@1EnIQ2f2d-i;DKZyFzC2wI)!0LtbKdz@5qjtwHuO` zrCZ9RvKcUVck4@E_O@Wt$Kg8D8cF5sW_dmDH;BBk=JMr`h z($@RF|E=P}l2pc@n3}cq^YOGt{kJf~g=k#(LmSk-188_cY`1y6XUuMK6VXgH_!TjAVTQn~>3JX4l$g^+QT~LWR z&_gY4T_x9z`BYvv75c09vsG^iWf3z!G=ya-_}Y!u%D9w{8$904)7qyHZ=8^HbRO|( zrCmpc_|89jDPb-fc6Zq7MR16YOY&ytbuwBd2<7N`|u{geyWG zgrxD_z@|$BV-Yn(G?|k0kE^1-Y{k?HiQdp_2PSUNI!xYUzYR2X($H#2Tai`FS52$# zP8W)cA%7QjLU?c>GH>RUh#P^}DyNjT-H}1^FR;)p*oQHwzqLz23s8gdH53D?P}>>b zc{XUoPj-o69%Wtyhg6H+q(H0RAI73{L@o~z0DMSeP;Q71EXm|MUNy&+!c2q3X_U7Z znUPtRMuf^#i*F2qoM%<;CqcvpOoUWEdbmB=)u&)-(-<@#R+k`V6S36a)EK|Sl6bnLbvj1JmBrShE~u$e z&L5sHF9(cx`z-pY@AH&&KPKI5Xp!0El~^?ilpCX-{0B(D(Z{(;Kls)uNa{Qk0Iij% zbF1&TT#j8R>Bv32)UXkHjU~&1KIpp~PuGY%Fq_#dQQg0yA-ghns8kI{re7*+d6BCu z-~zMt>FCo8l&?SoEOlOarSMlN<+&hC8gAc0X|vMQ3U)YTos@su*5(2x(gtVaLdu~o zDaYE%ik6-CEwDJ=uPnfK?@B}zugr2~d*)og&iABR-eNJ{@Im z^sLU?efiXWO7*O7To!!tJWZ$CcBH|o_`*=fl| zXVts!_LqxgEp}`zNwID#0Vk>cqP*v^vJ2$C_TU#eNg3a`pE~dx*H}90>PYt$X%yL} zp!dqP$6LBf&MA=F^%;2&TZq6tNjBp0H}*uGr~0ApMP~nq%;`*u5-d6#QI>$eH%p+rb%$^^Ko{Vv&k$lh>8AW^3JH1 zgMS}&{$vM?boUoMAl(f3e(@x7@lbhD!X6zkr~fL;dYH0RK6MSG4!cpa^nK2O^E`n4 z_Cyc1Mc?Q`l(N}Z;I2EiQ9d61&nFA3if;W9+N}Kt2%nkQtz^!{z^tRf>PxdNm47W_ zh2fs{%J0bH?sx70$2j+Zr2s}1?W?-BROaPBxrUsV8``5?4;f0VSlZR98bfwX$MU-~ zdi=dEOH-M(jRPJ>BoUh6t*?>;1;w{i*;P?~ckrB+s;>)LKV> zFFS}g2WpyEP0hn=q+z-gO*RmmQ(2KiBmu@h-U- z9I~NtCYV!nqr6eky(RSCN{VfiT@ky0ZZ`{NE(?U;cq~kxQjM!bjwWknfMl2sUAEn7 z5_{`kiqjne%}nigy1_F`N{ z+}5>#-`WJelt#K98P^l;v}!bvazz-GIFGEtm-8R;J=5PmMQFpL=^>%mU5?W;Nw^n? z7H5zP*&z9yO8Yq1Q_(5+x)D*0-WIV7b|=Hhuc8>TERx2}IX|Vza%{V9dDoqSu!7L} z?b9c4j++t^rPJ7P!LZf7Sl#+lTDYrkQuIo&2bOoH;@#{&#uZi|TjeNd|3JXm1 zXuo>LkPTObb`d*(t#K4pRzP-6jjS4+3@nzdFE8{y9%^7^bGDVO6Ycr)p@~XSQ-W)o zy5T4OaB@qu(=jXXlKj&57AM8#L4XWCCu5o1R?Hmnc;a<$f@gvyy9ljplbwy_aJy8s zT9;|;pP?Xk9f)sejRobZOq73z@`2nmc@!}Vn?0FECq6}}_OOd2)Jx^w`%zNN9p5d4 zs@GegkB-w@hK`U-aQ|FP$qCYp@F|jh%QGgu!MsoM>kV<=@xn4JE<@&x{k1F$MWT}= za|xSkZk6?`R@t~XIeNUU`sg$hE@!BU%dmJJG*vuByhPhLerO%ktW z0R($zsVtw)x2x1qfcpI8%(_KPIu?f{NQtB}nRBYw`=`;2FVD(P0+G{?JjZD5W~Dxr z$QX&j$P2$Ch@p7$hJm|Vzwoo7zl7m6r$>bHaI0nc4&to@k`+j!vf{-L)mGS z9~Ic_ECAdjv6%p;oEa=h<}nPtx-E2l=0~^@ew8zr7cth%V*KNeG1D3Q4U!YMh>sF@ zlmi_i7lDjQ62#3pVQ&EjS$+|F92nVEl{`7M;;%7eNqz%b5>jx)v!dw3IDyBV_cn?> zwoJ2m05q_=K(M>=Z%$9k(P5%o|I^o#;r{{L|Cn*G-;WV8E-a0gPK$M@vvICBwybE> zJxoQzAYxuK(!HXR-Sd~FF>BShhSiV)AO5bNzvq==StxXQI+GT!q>Sl3H(N4kCiTB{$oKLf}(HP`4tKPA}1w^fs9oFzV8^X?9#$qZf^2d(N?DRFSgqE8=%UGL` z21ipXAp-iq1f~R+Fq4B>7RZzCuPObp?e1*wstE~P#qu7|YZD)vq&td8trOu9{NnWX z!@{65{Ni!HB=()x)cGE{==$j>^B)@c#41U3KgBb%1gjv`15@{S2OpZ`cDAsqg2rSM z>sp{CSgK2aOLHvum*i(9q@vP%a+SJylvF3+DcHzvW9n3LcUrA@>y85F5MI(Niy(l? zqvG}~`}(Hb5_9WO$kY7F^lgiP7m{!fW4D|LjZNK{Ee zGH=scL^4RQMSG~;{+kG^)ZtRSNi57a5mib}S7=!zPaL4i{-IOPFAYf4%=4(KbUV~R znufNz3^|tz=6{y(&ahcVLJ|}HlKy}iOae;P%1Khx`a+v%MMN3x0rM_WrFZhFNhq^5 z$sao^N`b3P+A^j<2y`3CG5}XUHXNAkO_iXd%?lIfmfn9gl#fdk5y~ zl}IVi6HG^Z&|vcfr$DEmA7yuRWR)4>Uo-bVACR@MaDyO=^@A&YO#UAHz2XtkOG)?h z%X)Y!x@*_wjKyT>k+%FN4p`)M1XK+%I&h!ntKNVxDory}0oCudvMkxSKo2I6tDJHJ zohD(S9Du?NzG3f^*enN9TxD0BsU749A4cgKk`{V1;Y3sFhB$~lBd_k1NK~NBB9-eP^3U7MFSy8AdxZbEkaz()x(Da zA0r)*X$ZrVl3&<{|223@tCXK%Aqvtp=oVi}R#|DjBfM$IRsrjMD-ZfM*m09W76+aJ zddei>2q=AURk2;sOlekw(h&k}rYH#ru3G$(BhER`<#Yu5Di8XMM!mjrO8~#4=$ozJ z;8#cqBFH+$UAS)YA%!b2^Y$4^PY?W3A&qTB!EarTR43T5gmNEHd7EjS7nYp`+B7($ z-M;kFCU$w|Qu|#o<(t9;1f;@-Cz|XN+kIO+}H{0q%v6npxt^%u$;CR_@}gKX$+2`^eeuqT@gn8r=inOxmc0ga7{-SGa1ab{p^dec#<|!}*5x z$-5o*yw5Ur!xDkrPr*pI>+RcrqU0+z#|~TQjT=TnsGqUlr8DmaH_KV4Y>P~l?3?BP z>>=8^oEKg4D}I;sm?njN;Flu*-0)WCzekZ?`G?@kfYRWvzEOa4c64S3#vChwA`oZ8%Ncg}8+t%RLq|x7 zZfZ`^I4D8Cw!^1Vz2o!KFH_1}A{wUyPegvS&z5~mKpR@f5pBM%3DhrN(IVE4RJ6 zWN+KO+Mxrg%j)5@5EXk6xs4fQj7o2?Q9H18*{N-s41Xuv{$U3aAX z)S0N)DGTr*m#ekcBCj&V%q#R8BUrag>DWB&?ZqsGI?P;a-R1X}K07d;;;pYDS~ zECk7E$9G%Lse-TVJ4#ni2pJTD;X?H;p)J z639PgmdG)C`8p6AdwuN=jmhCe^hVa>4kL~R~ zN8Fs+@WxhE_Fv9bu;Q~yPPiFq>PCc5r zp}H>sWI7im)i-e4>WZwP7R^{cpRVGhnN*!Iq+n~<&HVC{h~3;sbXB^A;UjSvBM&RD zh~t*ax?bp2N+<3wdQC2^>Y4><)_c~X4}YH;Dp1Pe+>f7yDLKJ$B|Nw+XM;^E=9YUO zZ=Fl~OzSP#XR_;iom`jm3SR+`4GOJ#UFh8pp%2p>ON#w? zDzn#^{_5F2I+H0lvSSwts!cL{l(e<;1zY%Oa6XB1n-KrBN-?kC;wZ?p_A(BO+1q#P zPZ=}gMYPX}EaSEul?a4996Ft9@?)H|_rSjJpBFy9mOW?b(s$5jZLPj=r(t^eP=0^2 zW`%ZkTI}5|jv?5^c`Y1@V1UEVWoVj=3)dQk#+RKARh1shx=9Q$je46x`p%PwLY(Q^ zoD7xenb;Y^q7sZ5fbs53WLvJB2-)#2o@`%7&8E)Mxe1@w0u z;F~0r>@rQBPPvNNqDg_Mv<~G!hv0IZ)1}|(F@N896?V|Ti&|Q@)@o40E8G`HB%pGr z-;ttSu*7R$14>1>3vB07uynZS?SAcQO>;Pe1R^0B^+5)x{ekI-BAw|*UDcWxLc-o5 z;u#;AH|u#W@I2!U5D0GzH{V;J~T~x_cbQlWE(JMv;TQ)}alPQ(pORe|oEDAtV}w@+E8H z9M+7YO$D%_%hj;~l<=ng*Nn!O-5`U`(ZI)pnGcJ8O&7cgH2;=ChZ@wEe_dam<7cP^ zlzp&fBn)EwI$u8zsQuAo!DQNB4||9iRfJK(3sZVC*6S5MA<)rj%&xF^S=vRf0{aWr z8zS0Ynf+5|cAKn#XYi5BMz`_!@iGV;DtjzDJ1kH>~2DnrZ#3cU7VXyf+ zJG=AUGUbM|sbbAI(Ae9Q_u&^j_Xs~(38bq;6iAt2`dK;ND(dSwcAQ{&?5OYX5VzRm zAj9iM%_$XK2Pnv$*nQ|KZ}aeWPulob?rWVF%a#Wow^$GSNtWMW(ysW26=icUf&pZwWodjfBjD++Uhe<2d%KVr@eD&=7(7$7RP~5H;+1xoyu{%MMqtT#g{JqTfseOJ&kd4YQ z$Fvf$FrJ+5UQwfNG7+r}wJJJgGxf9O+j`MfJGMG*37=sZquX3QIVD3Aw;-Pmf>*-A z+IiKT$kFu8@j{&vkZ0qW*0XJqM9I3~DhopV*Y5@F1sDc0`3SepJeyjl2@8Lw?58tT82(NklAK>uYZxYI8G7T1cd&K6cTk zpOMO=U=r;&0^0Z6_f4Y<&~rC8x|e${)Y6bak>4c$0+fiAFBUM9!a zb~ubGt+T_D8WHYZeM}aWduTfCN`#!Rtqpg{Oz0u_6u?MR*i~O6P;(1(p7;CHtCs$;R?20QG~1-iRpviLi=AXRq^ zu6C2H5t9-|H43=B#(%YZuMPQ%gxNy^Gs|T^tz<{PP&$El^Uf-s9Gk3@ zEVjW;1&c6`YWp11faP7^QGgymczXr+m`XnSKRrpk}?tPr>Z=ea0v`9Dv=QcoRRk zNnMWK7S<`_W3}sMZYZmsbmguB$#KC2=67q~GH9~B2D>#E(Ix(ay0CHq#em87VA2e5 z#FEr@AB@6OtQV=FZkzV9-65YZ)%P!s5`^Z+K~eTCUb?!=3NAL4r51BOOQrZ?8FK2WOmHFNfZX?wULSPgl4CLOP6`|1DW~LSbJLq z`F=>6V`8JhA-O#c~3}b(F97l%*e9q!HlD?YohH( z%NcmD8of`NIy949d=m=2?cdkFu)GYU5y8-c3;}seos{(pl(KIj>@aU;KYrUfy(&M= zxBk!(Y;~trx?$Lw3z7qY@1N!1BLYB5#}k{3al~S9QGDFI7megiEdRQwJ`4kStjfK0 zRCLFuK`gf%opZ86w(KagbQHB%+u5jgk6J*V;fh0j<(TGNU`+mhfS0U{m!}(!8_{#o0mVfzpO1cC!>z((u{9Px6Vp#ofF(~RZ)BI8;Y{Kq zn&zw|pA9M!UsY$By$p{AGUl9g71l8!;y7c5KdUB_F$DDN?1jLVHvfo#}K=lt;$6O6iYRmd4_!n|%1H_bcLo+4}O7OSOdz-rUF>FZJ zQ2z2o$B&fI6*ho6rYAjI#;M`%LMEsB@8-3eF> zkeiORO$Oy&YL_QA-o8}nUP1d0;G?5bn^;yF&Kt}y`t6s4AP~|MP03*lS0GQFEApsQU=*h0di$3-Wt)I!u+#0g z6|XQ72;wyrzOf~=O4TqjO_5AA{9w1laSJ2Mw9vBmA5F=6Y=O+y96N1Svt!OZEk3MX zQV&c&zupLWpvuzwxH`!!C+AljP_Q#MR4OsTVH+wqnBI|S0R=q%k_tWsevN;^QZWXY zGkGw&hV0gwW={OT(P+tJUD2vSXf}7d0-&M^4UCM;BJ^;k2sSfOO?Kn~DwVl$ozX0A z--k}ljipv`TP*kN9_IcP!fz;T<$OYnYV8K9x<^8NRf#50^?;!TO16LwtgOGViC(l* zVTeLXoBvR4h|M}8O&>exYx1hlO+@Q<;=)~o{8EPNJt}5MDk1bW>IqtJ9**X3@|3Oc zTIC))*wbkhnK0zDuN2={x^nX%)Lle7FQ9fy*8$B^vN50rGi1Gd(2bT`zymL60#&!RI9(_|6!qj`g8+`QB_AtFcpwY4+t0XI+6Q=9Ls;sWBPuV4SOkZP+%=4L4a zDOV(RD5Qi>X7K0~cE{K}cZ?Bv;IXV%3M*tK7|c7vr_M=#uJQka1_U&Jr%8dt(#JM? zPjKdJ)ht}1Fp?H21%TK5KO6vsT{6Sjkd8nDEl7NEBVCbC-J~xVA6ja;GC>mZcJLjk zb85a8JY$bd$*}PM=>k$pF%IJ+or$tAQWs8h0Nq>RaT6?mz@6(Fsh?J#Ly#w9MW(v_C9rlOKn}hZuEt! zRVdwMsX`n|W{dXx{-NVzd8oU$=>ES=5EI&x1jd(yKgj;lW@w;huc{2DyJ{#`sdnPx`r zby9~}m%ARhzcKECevW7|INm93{0HXE=jHrOsxvqO?1)t1B|s0^s>U+*LA%&wvDhgm zFjSAD{T$H0r6TvJXTHF~*n_>t2%90H9ShVADXCGp4PyiX^oG1m;yBAuQz`bg>{{B8 zOg%w{S#F@ZcrK|XdhZi>I@jsIhN;`<{Z{wa$ULCgzo>GrO~) zfPmn&E>Hnzn_@(i_SOFY87CKZZcB*!?wN$~ZLv^HE6@5{xXUQaqq#7j?;m}ukWo@D ztBl;@Fg}#F8Z#V$R<8F^6c)xh22L^xU%5TIS^v5O2Ex5~5^eenoqO24ZeSXK0vRQ! zA^zFLtLB~Ml6;fLl1oh2pZvWgmXsZK514Stxnt;=hF=7|u}INvh;Sp}wgEC`jeCH9 zZhXx>8hbla&}AL2jta`C+t%RaNb}?VG7i4uKyb(DAfLpniF`E|hBCP~GyVe zK3v3h(%b=Vv1~PqU%Xr3Z5ixsLeCquuv1zmD=gh}#2+{pQoJ3xT7FyzE~6C0Sx{H` z(Q#4z@gpuzE8Hz*|a7xH)e#jSI;;C7D2KkPQEGdCLFSxe3HiVCSM8J(8<<6 zHztssI&_)17c4Xl)#umD||j+JE+ zRxv5|uHQdMII+zO3wV2-X_n-6b_caOTYE>szaob|G6yu27mcWcIG#`@buT+_9=Qw2&dNU?dKg+E+2fKfA{%h-x?X+q}Qj8 zRtbD_+@BX?!)xh3=7|^9z~_&_)zv$$+_Zhch%9@T*hPNRJD=cVUGMTdSjuy_T>%Y@ zc5{nDV?0V#3PYE_Xt80}J&h-_G+$M?)!C?ZY`a~FJQkQdlu*Z+ljgRR9==Xq<)T&2 zinw~2kR4?p&hm}716Qrv6JX4nS;xS=h^^L~-@>eNU4wgHLK ze*mHj7~vY2qnPe_w4*TbGv-p%6`KEXW|@@Eo4Hw#a=O9KOHFN91~CXG%_mx2Xu#nc zP}joR;%!O90HhkI&*Ju78k^Sh&+ExvoSrZ!$G-O3Igvr?lw+^6udFQM>@G`lK$$zF2vlx0tbXxu3R`pGVw?RvVnbWg?>}%5u?j%LHRb?KrV+V87U%JDG z7%Pt0NY9kYg4lD3i#}WAYH4qv@%p3Iz~jo00_4MeE4~ONMmH}o{jnid_59fD7Z;+V z{7%1tn9piLkH4R^eii1Jwvhr;oFnPQ8z7h&P2|}7{o@YTt!Kj7H(w56PtL0udI*0e za+%y@h|HeMY!Ja;f0X~&rOfH|2@~+SJ5A1e5@*(YJa0I@M#_ClzkalS!1L{vd%1Q3 z0(c)v0mZyJzW?rpTu$rA-4f(O04!nj`<4TaVW%K8HaGlnEA%y7ZeaWX3E)kPn4Dy! zij2sT>8 zguf;v;kmKTeuyrn`Rr!As(`yvKIYwNy>tCi-FM`wX*X)_MH_C-iNHT$qs2Ddi5sLf1*T7w;)b1 z7M#LWldAOESXD0l%X94SEfET-y;}P!$oXrNCirEaxo^zs_VwDd#C=V#);#x=0TQ_4S$i>+ zY5uzF11@&AD|L5X-COBHJ{yUG6E z^1PM#J>E=+f&AlI@UPrPfHXEv+&1#Kvr`KFS8ol|al35IES(38gqbA1eOBO%DXr$? z@J~H^lr|1vG^}>__b6BxpV$sF{J5>qZh59H?8Wc4-siQpM!tsO+s14penQzJ!6VmX zvMG_r=h2^yBxI|-jbj#I2NgI0cGYHT@VuE>@~N(7X9Ci^E0Y1|W7}pU<#{MlbBVdIK`I zQ-Re1AwU4IEsNJ`g-IoD0!5hip#UY+_2tVWuUg3LTKMl*8ss!^SoimC=Eckc1qD z8mU}4<&rDWLFxML`h35?e|~?w{@Fk8_infC{eC?kugBy5xO#JiQ`f;Gd%3TlcsuO& zaO9{H{0cQSSZgZWuiIpgS!A)#E8?T&c3dS2+ty8@=!mD;jAmJ8_FxO`(^%XBdqo9k zO>5G6K+y*)wSh9ON#g*TOZp|apRl@TkOq~x)3vR6gq@24{ZkD72G6N;hIznYeN{Kw zd8TA6R$qj_M;NTIG0T?md0c!6JpI*LjuozhlS|D5dS(pQ+$2JgS@kJ@wng>OqX{!! z`uWv`kRqk9g02;L%T#x%n*MdTD*cj0_4dTIW9C5y2QRNV;p-rViV+_LP57pEDS<;5yY{f z%_UGxCpTJZ80oI`ZaILEMu~IZfNo6Oj{L}MRvri}_AX;O^vR#eSX74#+V^XCwTNbH zJqeAZ!?YTaJG#oav#p8SB`n*hqohifn?12QkDvQ?~xW#p=4CABDEJ ztKWJ_;On4_^W8?sgdDNIFiRUMiqypiR&BShd(Iz_86kGB;w#4lq7|tCU8WJ~kV5hZ z0J3xx2K|xkJTKhPh&|h`$Hj!`S1R9E5WQv_KB-)V`hGJxDDVO&{d=YOKI>N(h}Z{Q zRoezM=lU7L$ZnB{ZjMS&M#4nyNs^h+D0;N>8&44GjpToF*v`1r!U~)HxjYyD zDOfs1B{6`!0-I985`>P6TT(n(6Pw{W6=|hyS@9Vi=}s$&lU*dZQeY`*K5Z&h=$;8Q1g&ZT7qOH`73VH z8g)EbbmZ)|62b8kMpMcr;BI9uVMWbgcg*PIrwG<17G#!a@(#S`e6!6jjAhCcJ7D!R zxqbSyIhw$U=;{}lZ{3=1j}lx_vG%?PRR$FU4f4Wedm$Ae#BzYp{H)i|=U7P3m zoafTo8?!7Nxy1B0O{_WSRt;BxO{n`%j8@8e6<6ZSfUIgDf(Q1cu4|IiKELBv5?@sE zOyH^oByj6=YRLjmHN^JDl+p(+BnjU#u)GXU`WSSHqj&sYz-+hKA70AvsaSaLE%Vdp zBR?DQk~Cx6G2OtahJJdt2pbu^FRu&-`7I8n@B2CKFJ^UxD*E7fjQ#%Jgl(1Zl$d4w zE%_2Fo|tIz8GZiyt^piq^>UPMKjo<)N6}gWMoR8-PT3ZEN!um(IKsbx88LE2++d+s zd!zQ<2H;I0P)}zej5sr0+jQpWrq(xldPamN=(SqIkdDs{9~KJ?E4PbrPTZ$-8D=6? z08E^2GLO(Q+ch+TSpZ+>HdH^i7Ct7ejsGcFF;Jw!K#YI5*XVmSJwzhTY61Isghn8K$4gi zoKWIw9VUfUOLy@uI!lG=B0&oFtMK^n5nFqrqoML$OBlkj^N+E46o?<8-Y@TD&PYAJ z*uigETt`SrxTxiY@@vn!Z|&{!1K_A13uXFSIT~Qovu(uEhn(-IbDjBM|KF4{P z+-E$1R%vJsHoP*Vl_)i>t7*kO_w76l`X2Rjh3#eO5BdOuHlPt|L71KRg|q| zqV>o2y<#C;yX!}FJsGdIt7O%k5KfC8ZFbXw1WFS`ftC zO~He}x|RM~f3%z1^De1*^8EP#EeJF*N206>R(e-_UFUs5%g<{s_!==uEj|BaY@US& z2x9PU3Pu>iu3Y)hv>@drg&D5p$9P*&DWPN|s>nvo_lU$UBER_!eKvulLB(8#hDtN# z3m-R-Z)zjL4mw}C6^4Nf5r^CrFIaaJTbZCR6_$xjU5Z1~ML-b+1?B4xPK+vX+qtRt zn#y@7Ui&Uv?#KxpR0UVH;CfZwP`mQ}yO!$r3&X!`I3k*HLwyQKuL*1*GI^bkn?;R) zv`V-MG6-Xd&{=hPJhNB|f)#=`03F*NnCm5<+^7=tNTaklj9ZAje!XJ+enAx>T*oJf zpCejA{S0+2Pz$@IQt!B%sp>hh==H+N0{`GfP;ZOQi;2^yO5ft5i7!55*JtL|QABWw z!AT=gmDprR^$XG7)Su&!MG3D&u@Z|_te0BOjaR0d6}OS??h}{vNYchv{CCVE^ZdOUosICW&nQt)MSFAiBQQhKp%1 z{6o%SV2JIjgtFvZ?_YeO$zT3Q&N`Aw%yS^f3qhM{w#`CEBrpvZw{j4Hb~|~7WO(B) z$_7p6+#FMq81u3sS1Q%DJKF7B#gnJ_oDoE#Uu6Y{D5Pi#`JCXd&6{kT zH(vq8KIUOBNH-vM&Bx-Jx5iF&V<^}lA(E3m4Z~L@(Cx*Tnj-V*-GcTtCb~Wu<4O=J zX#X9f84(h7|0@8i_`g|iDqhT02>*1Zke9pB3?ZFUVk+Rj#;(@$od2nPG@o=$gRjGfLGL^TZpyvQrK? zOxe@emu70Rl`T2GYB84&Y3^W+ap|Q`W!c^ley^yFj3O;>;24K#N+0}o)~;rPn<1 zrwW^KxKG8FwE0DFI{py8_6b_WR^=u7gw&;>ylQR8E9O)CynW=E(b)d`UDe}NmOhV? z6fQ?(dc=D+m5*C7=JGj-6K_AIPYk$Z)toEF1@Et@|HmF=KaTKIBWqiPF){{4ZAwzA zf--!c$}nZ>>}KPnmV~E$GcTQw=k#e2-#F*i24lTrMBFD&aZMkipGjl<6Mo>T8FdEd zl5d)AU5x0Wq`N0RQKUkoCI(CrHEkNalR(a_kM~v6f!8iwqu9>u;tJa)6MfLYsF(*Pl`E1_U;h{Y*6I zJ%P{NoJ}3ts;0WE+_E-uj;za7R5_QG?fm(^sDfk+sTdRGGuW(X(yE{1-WSWTQWVkHR(%wic zUpDeA)v1rF*R_I{Zh)g+)?EF=*0>4d>Fq1qANb(7t-j8$@=u^yV&>RixJ;G|-S&;2 zi}&~4et7EiK2!Qyjw_!kW*(!7nrx(!?~49IoOaHEG=>5ufWI%x9#~Qxnl7Ci#AqAC zKpAV%?v{tTiDUB5EznZPY9r^oc^jc~T<|mJjGlDRDUw2QkC^(}Z)_w$AnXS62gFB+ z%p|?zby|1j4CVSVdBxgb#X{?A-Nz~d!=-WjuC@=c0GPo!CmhUl%JSs-aIm(Uc(H85 z@V2I`yu{NW3>xzxx)*%;D_zM#_1#Ni<5*L9*`6CxxCK)U?@C`)Uff%_d%~~Lp?b>q zO?tA&2e{E$PzFrVeZz_j9z+sBpv6AmgN5P?2C?6{7Jft!R)h?KrhBr26@EUtPK??sITD9k^1%+*b3xN^RL1+48U1q;;(HV7ntkc8kACA1dXyzHkr~&-I zSW@p&Z5Mp5Bhh_PN%D^RQ%S02`AngHsE4?sEeh3YKrFk>k||P0J`Uv=Sm%ICR>e+P zSbO1WWNr{~O>*x!sM?}0o0Sshez&}TnjSL!F>{~&1%boJ34>CB2C*mx?E5bu*U>@Y z7yl_!+Bs>qa8`)Ky|p)=WYOX(ZrM0BLD3*~gQWC?( zv^{yd8jZUo?8JkkMR3DXM|Zwi#V1F&8j<7}hciz+R4IqLb-$PZuyb%x6qDerJ= zOSC$@Hy@9nd=nj0JmWb!FjKSVl)V*FUhCK$cwkzvaYd+Ydd;EPm)(jdd}BJ=WX-^c$sUGDly;g#UIv<08F^Y~yw%^zRhMH5Q@q|+ zaoluJ?@^JMXXDj8)zU`(estk%h9Z-mDK5q9cFm#=l&rf%nnAb$3pNvifqwyV)OOWp z6p`#<$*w@ph~Y5fu`>tB`r~m`$1Nn}Bg?}OMW-$7Tpx{y&ifWFxEo#&EXDP_%8p*^ z{QJN9FdCB|FAsPB=LN(kE7GTBVm1JU#^bHzs|yLO-jg~)4{)adtueHa|Cb39n6Jd@ z6jBXI7X(8!KqFVQQ>oamnA3mEJW#0E;*5_Hj;kU_NV>icS@8=pPc+MU!+tAewp^0* zj;yV?5a3Zyc!`yek$3PO$R!z3$RNFFC&jzU$~s`)SB)e-!WR|0=Rea55 zJUf~z{`{o4;ytP!r2O^Y&=`-%JvG7>?uH%DV(Ey`BRAJwLp+GMr{PKHkM3tyE>!)z zWHhgTQV%es9EdL#k#Op^r6Z8FBt=!%xwE>5%A%v)(ixKcjF0ciCq0?5#B-ye~I$AfX?aaHBn+J)>V~r=IC^U(loV3TwjNLqB zcikEN86X;-yO#7z8D|ud3&w@lA2T-TnVsp5`*QKAp@_IUDpOJS&^fnFw_Dw3`u+vL zQ#@JeN*8PIEI%QB>{4uNQ!WE3f@J^z_0jJWjSqic8aS>@j1^B>u)6s7)wkql=awxH z!yiqb0RZ{OPPYEBpMY@o8|u#MjCH&U_)-32=5+RGZ{#0g+ zp7T}hUo$l+uoHUFB8QDr4j*gZHT*c(NYLqfy2Ug#kM?ao%6i9(466Ub>+Oz9PiQpg zk6%PLinYs46*#KePZkP)Uou3I)qs0RgmglPB?U0!ATdyC0&%0&Wo9bkWb$9nIEtd- z?c4JmZHY$JwS-r!`)d$AQ&TJGu`65G!}N!s9VLf8CFUvH$+AYBcS5IB+qrg`IdkuJ zkIS6UGd2%VxHz2yU8;dAI1rj)Ajpn)1G$3=_O;Ys@WQ2DfUu=SDZ;~aVU-C;7>mz4 zd+ruEVJGqELZ$>LH%`DH%cZ9SQ;(>AzM9-v0oKKwc0E7eYUVPy7d5u_=Mw971yH(t z)blr4RkWqA+)%Rp#ri5@x4K;@=aDk(yITm{vA#4Dk&GU54!U>f5>H>EPPeH zwt>d|9Rn{!#u#*)HX%JJZcQ>Qw{G@zqt&XupSV}qJjH3{wut1Za9DRj`pukgb)QI` zdCaIaBCIZ*>U&QbAwidl&=40SoqJhAcSdAg%K|pc-Q7A!S#YrGo<;^ zg!K#$rR~QWZ?o+&rydb1IW1r*p*Pa-;1+*mf|HkiPyL}fb?**obG92`oy3AnZ(sSc zj?i2wL6E&f3FIUFc#SAHStz^(VvmBsCeO*ze(8;YQ&%|MTlCgRPxuI_1ToJwFrw#W za1L=A=*MY57ENff6tch)ue2Kp4VRkYniA2%!O`{NMB35N0$mFpPy-7pXvLCVu&j7; z(HL7~>!CVg>jMoX=ko0mLe(+``n_(KprY)|6{jRa`|%g*y}RxEMHYt~CZ_zF`=lvI z=AKOPraqmoo`|8=`6%Z#*UFFm^|E3n4G%AqFP{E&lgQ9|A`eR$e4Ldk+a(Dju)kd zFHtm@u1_7dEH8IR+-x3EcPn%l??HzK=cZmz&ZydF@WD0rn4M$@PjmtD8<4}gB-v6U z$BXjExh^EGke@P*&@NT06Rd+h@Z#jL7^u>*1pSZh>pXbY{C4jBIX+a|1y0Py`cmN6 z9_+3_nQ(bS4c*gSg$Hc{+)ni6%#C!zvLEfOp&YQ!#6bjtHH0!Z9G)7w9U_5_*T~On z;o#kAH7_Pd>y@Y=Es<`q!s-dp90w)WB)HE&BHif_d?q+$d=V|LvT?0#I<=wC#{2!X z?|%$SR|=~VIx>VpWTsoF=#AL>HmcR^suFuIH)-M4hmpK5Per z>K(diaXq+|C6+AnrYpcRe;n8;>3bArL8Aj}ziiR5aFjX3-LR5TmO~8k$Gb>nYLbv} zgpsG`yP+1?ah)p%c&^aR18dr?`u5r?7#k_de22om|JaAeo_Oy`S_O^fQzk2u3jX znuF8LV&JFxF_dpiZrHV!L^^t1((544^GzbB=Pn5glYmXv@&`t-(HB%gqP!_F$27^C zb7`xdXLT0l69J+J51>tI#8nm!rr?JOlV}L9(c}y%ZuR(==9fvcqudZo3F;;FX;TDf z!ielyK?e>`&5aw(H%|_wIwhbcV7nj4xvCal>5Od~l@0t$AfEs%h-kzW;Y(tz1Fp0y z7e<`^%kNk^*BTEl!Bgk+O)=BylL}0^Xu)*~A^0G|HK4uz#uVb5r*vg5b_5X$=-%^? z^p{zB)>j0$)p-NY0#r(?3lB*N*2-48qy~jr2oyDh2so3+zSMP)!8*4c@FOb7rF3Ge zDJO*|C+q;i9>+Og5SPjODr@@v$kKK7Y`8Vy6sM60W*;YU{%7U;&(24?{E5X9=7@jr zg-pj&942Q)NRXuBl`E?R!nYV6$NkUWryq^qb-)WXPvHtAHU@rc7Iri3^|j#$tAM)O z*@Vj5>4Zxhj?m{XR4|2MXvMrNVUiiglw6tO9xhEv3wRlpp02YS^FZSQeKa7kzfSu) zA|tb5zP!sdJ2_;iskG~p^JXyDs@6s99|dGb{&1)jMAv9Ze!oQUT#jSC@#iOd&UvNi zzrdq!qbx-_W){RsMxFWNp+ajcukgvIH85)8929wOP4k-Pmv2 zb>px&qa!H`RQr51r`h?HWa$SjNIAaf1Dt$93PFD&xc!QP`_#@Ro_Ywv3U1APwb3A?UU6k4RJlWAdtSk<7#ta zur2W$qiTPz^;qI`%pYTWRn-Y8Y_Jv&`2@8*)o|?(JAy3zYSkX zP>mWf>HyQi(C6A~j@ui^E@WZ#fGQYrF=ef-__C`Tt?*&?CHFvAFA0}x+*eVRP4b#i z;E}{1_e@F*+zS}dt4Qs@>n#n3P3t{vD*`^ba{n0el}4j*>X0&EFFn`l@;cYkvR5t9 z9SjFKZNj0W8RsW?t@v!^jv*;Id*oZwPLkN^qdawJ=8<&J=xR|ZJOH?MwQ-A$o4|P_ z^?;7FzdmrX^Q-l<7ao+}8%fnGcAYb}RjWKnBU8=*b|cb-F|yQ`JTTcce#KceTvwcFhfqp-C7&z`Ftu~GtTuN+MlO_4jHhLA?io9UR9Y_qeMmW)7B zCp<#?K}9Je!>-`*7lCIL-ust6;J&*o_v}=GC-Qjixg~gjKWP6Q(V6X4H+XwjTKggn ztYIh$w7h%&RJ=m)zTbkS1nJh`4(Y~Q{5sD;51d)UAVuF_ zTY%J7J+-(>v={d(6{w}1)yF*wL}@1SG)RWNsTLQM!BxQGqON1a_ByXaChShtg(pqr zKK}v~CcZy@Ot1?fEiD3-2frvtBs%Qm(le!Afn$5eAU}i&@Y$DFtvq5Exu<)ot6zlW z!~d+>kF4gQ0@H@sw#L4deNl~-fz$PNnbF}%)klA(J}XGArkYVLzyOHrUC zP8U$KHQfkb<4<=1)O+@I2_7IPj zSc@3fhNA40#9f_$jIEl3OmTzK4`;%qzl9G5h;{hRU82mhWhG91x%Dd-Y-W}Scq1f- zDdixsL;g}}3!=F80!NijB9t9%e3{7r=mUy_$q5iC$!-8syf52byzT6pYh`qltkA#RqHFBksZR{mnoe)%=53P_@s+^=Zv4+M-W+jwR8P=*0hyodbV9-(Wp%zD5kpmc^z84{21TgVj2!r z9SXH%hxF3?zB&zo@zh2-m3~#eM5R}M46ArGM9UAr@@o#hOSZ**n!ej~ zBJj3Sxymu&-(sI@)>4|6vXi^h*n{XolNi?g?6U0o@<7R|FTqG@_s8*BQeP} zmdOr`DL+1R=SU||ZTgc&f-cwM0dmOAFLSXtIscUZjCZ>C%MEgkV8>-HFkr() z;Z`Ztxbz-dA0VXoe(89K$;@CVGxj8p!c~9n+x;~j;h2lG3vRO0d4al%3l;T2DQ(qX zkXxe^ej0j)&Q(PG3wZt0^Qtvf`zY1GA^`m$Lm;ICt#O-fJW>b(2aVx<<#nIN-tN#} z$gNM58p@Ox(MS4DF2gfuPhJ2Deb>ciYOZf7oFk28c4X+uK#)vR#*dLkIr?+TD>9Bc zO{f#O`#Mf^|DBtkYi#WE%ny`#^gIiborCK8MCG*2a1W<1T?tGZ4b?-P1L5?Y?DPL@ zt2XJ$at-AQK=>b9wsZa(xM|)Ea*Al$YXtrakF!bTvqFth~+k3E4V5yX>!2AS(w8P~(#mo}iIzabwSLH}@k0Rr04} z%Ex4*a?d%rC5U%g9)xHXlZZ+CuGPz@?lHGLEAd!qEa4sVpnRDo#<$iaV=?W(Qo++~ z1zjr;DWjN4(-4j&JWiNzj*)kaTCpGma{J(+`$sPuY7%Gtu+-ZCl%=+Pe)N@HPVv{e z9wtqsQZfrvkT7*zJ_WmX*Yb3&uO-dka4yc51(|eb@FNao`GRZVsfl9f6bZxX5)U2oGJ>_*mz`dv2;?EweTJ*A_94wRJ5|8OW@Ru-xVwv8>C=NZB+`OH}Ab~Ad2+{Mwq)2P4n z)jRs6Yoz*xM)94A5%r={;qkCab5#ujbE(0=)gWvEGj-b)y+6ntS8dDu^DW$jv zZD}PB(wC?`)h#N8Jb_5#=l@>K!-+F)WI9IYGfw588Cvz$e+>N^oc?ZTLPwmd51pO$ z^?=^I$Pv`GW3Z(Lwy}%e;8dK9PGZXn1`L8hWTF1Pq9xLYZe+}U@O53rrAZ{rq+FR2 z!R=1LcQB^7R@vv2Us(5lWFxs4lOe-mc#V<=F*O~a39!fh$;Di=)Lp|GjlghsHKFSm zk)RJ!_@0-NL}gp1>p;@|Lp;T5pGTo3Vdc{qhw(C}qHIF7QOG*u!DU1f?T{JLpzqj9 z!O?zE^4>raIJ%ySV+t>jB6b0_8dmQc{dUnp)G z*={O!*-!lMR!Lu$N;DjP=gt4f*6h0rhSTO* z2A4U}^97EElIB7$p96oMBqtcV!l~e}OioPw;z``Y3GIMBlR`(KaJ<2SN}P{ZzFjd` z<@`VF(|_ov|8HS2!n9P9a9TQO`e=&KjOIx5PRbC;81xe~=YMLUNPS&%JBFZgd{sDX zkva8rn$kQ|(a_96Sg_jCM~F$m?1^{n&IHXHW)=Y0cxUwfPFC$#_{j~w@-#wgjVs30 z>~^{Xo^Hao5jryHmC_A$^V{)EmdOS(v3{Db40OWx!M224D!*F=Vs9}RiIUIb!oTVk zY+@WUST%<|WhymGyxTn0ZcgAHs9A~YVOOU1#w3@-+K8sSt7Dgb>4s-7BPws2G7>p2 zQ!qZT((VA&xnt;(xP(o5*Hehgqzvmkb6nd%pSo8S1V~fj65&-sem^KZ^gMmn?QIK5 z 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

    =O-OGd3x5F!}}qEvREm0Ti;dEPpfuynZQ=Wr<{ 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 + + + + diff --git a/frontend/dist/img/graph.e9fcdd63.svg b/frontend/dist/img/graph.e9fcdd63.svg new file mode 100644 index 0000000..fc0a3bd --- /dev/null +++ b/frontend/dist/img/graph.e9fcdd63.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/dist/img/lock.7aee2123.svg b/frontend/dist/img/lock.7aee2123.svg new file mode 100644 index 0000000..0c9c8fe --- /dev/null +++ b/frontend/dist/img/lock.7aee2123.svg @@ -0,0 +1,4 @@ + + + + diff --git a/frontend/dist/img/pauseIcon.fe9c0941.svg b/frontend/dist/img/pauseIcon.fe9c0941.svg new file mode 100644 index 0000000..95a35e1 --- /dev/null +++ b/frontend/dist/img/pauseIcon.fe9c0941.svg @@ -0,0 +1,4 @@ + + + + diff --git a/frontend/dist/img/playIcon.1fc9ea3d.svg b/frontend/dist/img/playIcon.1fc9ea3d.svg new file mode 100644 index 0000000..3c71f9c --- /dev/null +++ b/frontend/dist/img/playIcon.1fc9ea3d.svg @@ -0,0 +1,3 @@ + + + diff --git a/frontend/dist/img/tokenNumber.00b0ca2c.svg b/frontend/dist/img/tokenNumber.00b0ca2c.svg new file mode 100644 index 0000000..f73348b --- /dev/null +++ b/frontend/dist/img/tokenNumber.00b0ca2c.svg @@ -0,0 +1,4 @@ + + + + diff --git a/frontend/dist/img/verfied.815c6157.svg b/frontend/dist/img/verfied.815c6157.svg new file mode 100644 index 0000000..8bb728a --- /dev/null +++ b/frontend/dist/img/verfied.815c6157.svg @@ -0,0 +1,3 @@ + + + diff --git a/frontend/dist/index.html b/frontend/dist/index.html new file mode 100644 index 0000000..68d0240 --- /dev/null +++ b/frontend/dist/index.html @@ -0,0 +1 @@ +bound

    \ No newline at end of file diff --git a/frontend/dist/js/ArtistPage.cc88fd13.js b/frontend/dist/js/ArtistPage.cc88fd13.js new file mode 100644 index 0000000..800cdc1 --- /dev/null +++ b/frontend/dist/js/ArtistPage.cc88fd13.js @@ -0,0 +1,164 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["ArtistPage"],{"000a":function(e,t,r){"use strict";function n(e,t,r){var n,i=e instanceof Error?e:new Error(e);if("object"===typeof t?r=t:null!=t&&(i.code=t),r)for(n in r)i[n]=r[n];return i}e.exports=n},"005a":function(e,t,r){"use strict";const n=r("218a"),i=r("33fc"),s=r("d3fa");e.exports=function(e){return function(t,r){return i(n.source(e._getAsyncIterator(t,r)),s(e=>(e.content&&(e.content=n.source(e.content())),e)))}}},"0085":function(e,t,r){"use strict";function n(e){return e}var i=r("64f1");e.exports=function(e){return e?(e=i(e),function(t){return function(r,n){t(r,(function(r,i){try{i=r?null:e(i)}catch(s){return t(s,(function(){return n(s)}))}n(r,i)}))}}):n}},"009e":function(e,t,r){"use strict";const n=r("fa4d"),i=r("2644"),s=r("f0e1");e.exports=e=>{const t=s(e);return n((e,r)=>{"function"===typeof e&&(r=e,e={});const n=(e,t)=>{t(null,e.map(e=>({ref:e.Ref,err:e.Err})))},s={path:"refs/local",qs:e};t(s,(e,t)=>{if(e)return r(e);i(t,n,r)})})}},"00c9":function(e,t,r){"use strict";e.exports=function(e){return e=e||Math.random,function(t,r){return t?r&&r(t):r(null,e())}}},"00d8":function(e,t,r){"use strict";var n=r("da3e"),i=r("3fb5");function s(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if("string"===typeof e)if(t){if("hex"===t)for(e=e.replace(/[^a-z0-9]+/gi,""),e.length%2!==0&&(e="0"+e),n=0;n>8,o=255&i;s?r.push(s,o):r.push(o)}else for(n=0;n>>24|e>>>8&65280|e<<8&16711680|(255&e)<<24;return t>>>0}function c(e,t){for(var r="",n=0;n>>0}return o}function f(e,t){for(var r=new Array(4*e.length),n=0,i=0;n>>24,r[i+1]=s>>>16&255,r[i+2]=s>>>8&255,r[i+3]=255&s):(r[i+3]=s>>>24,r[i+2]=s>>>16&255,r[i+1]=s>>>8&255,r[i]=255&s)}return r}function d(e,t){return e>>>t|e<<32-t}function p(e,t){return e<>>32-t}function y(e,t){return e+t>>>0}function g(e,t,r){return e+t+r>>>0}function m(e,t,r,n){return e+t+r+n>>>0}function b(e,t,r,n,i){return e+t+r+n+i>>>0}function v(e,t,r,n){var i=e[t],s=e[t+1],o=n+s>>>0,a=(o>>0,e[t+1]=o}function w(e,t,r,n){var i=t+n>>>0,s=(i>>0}function _(e,t,r,n){var i=t+n;return i>>>0}function E(e,t,r,n,i,s,o,a){var c=0,u=t;u=u+n>>>0,c+=u>>0,c+=u>>0,c+=u>>0}function S(e,t,r,n,i,s,o,a){var c=t+n+s+a;return c>>>0}function k(e,t,r,n,i,s,o,a,c,u){var l=0,h=t;h=h+n>>>0,l+=h>>0,l+=h>>0,l+=h>>0,l+=h>>0}function C(e,t,r,n,i,s,o,a,c,u){var l=t+n+s+a+u;return l>>>0}function A(e,t,r){var n=t<<32-r|e>>>r;return n>>>0}function I(e,t,r){var n=e<<32-r|t>>>r;return n>>>0}function T(e,t,r){return e>>>r}function x(e,t,r){var n=e<<32-r|t>>>r;return n>>>0}t.inherits=i,t.toArray=s,t.toHex=o,t.htonl=a,t.toHex32=c,t.zero2=u,t.zero8=l,t.join32=h,t.split32=f,t.rotr32=d,t.rotl32=p,t.sum32=y,t.sum32_3=g,t.sum32_4=m,t.sum32_5=b,t.sum64=v,t.sum64_hi=w,t.sum64_lo=_,t.sum64_4_hi=E,t.sum64_4_lo=S,t.sum64_5_hi=k,t.sum64_5_lo=C,t.rotr64_hi=A,t.rotr64_lo=I,t.shr64_hi=T,t.shr64_lo=x},"0109":function(e,t,r){"use strict";var n=r("ffb2");const i="networks/5.0.0-beta.135";r.d(t,"a",(function(){return f}));const s=new n["Logger"](i);function o(e){return function(t,r){null==r&&(r={});const n=[];if(t.InfuraProvider)try{n.push(new t.InfuraProvider(e,r.infura))}catch(i){}if(t.EtherscanProvider)try{n.push(new t.EtherscanProvider(e,r.etherscan))}catch(i){}if(t.AlchemyProvider)try{n.push(new t.AlchemyProvider(e,r.alchemy))}catch(i){}if(t.CloudflareProvider)try{n.push(new t.CloudflareProvider(e))}catch(i){}if(0===n.length)return null;if(t.FallbackProvider){let i=n.length/2;return null!=r.quorum?i=r.quorum:i>2&&(i="homestead"===e?2:1),new t.FallbackProvider(n,i)}return n[0]}}function a(e,t){return function(r,n){return r.JsonRpcProvider?new r.JsonRpcProvider(e,t):null}}const c={chainId:1,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"homestead",_defaultProvider:o("homestead")},u={chainId:3,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"ropsten",_defaultProvider:o("ropsten")},l={chainId:63,name:"classicMordor",_defaultProvider:a("https://www.ethercluster.com/mordor","classicMordor")},h={unspecified:{chainId:0,name:"unspecified"},homestead:c,mainnet:c,morden:{chainId:2,name:"morden"},ropsten:u,testnet:u,rinkeby:{chainId:4,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"rinkeby",_defaultProvider:o("rinkeby")},kovan:{chainId:42,name:"kovan",_defaultProvider:o("kovan")},goerli:{chainId:5,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"goerli",_defaultProvider:o("goerli")},classic:{chainId:61,name:"classic",_defaultProvider:a("https://www.ethercluster.com/etc","classic")},classicMorden:{chainId:62,name:"classicMorden"},classicMordor:l,classicTestnet:l,classicKotti:{chainId:6,name:"classicKotti",_defaultProvider:a("https://www.ethercluster.com/kotti","classicKotti")}};function f(e){if(null==e)return null;if("number"===typeof e){for(const t in h){const r=h[t];if(r.chainId===e)return{name:r.name,chainId:r.chainId,ensAddress:r.ensAddress||null,_defaultProvider:r._defaultProvider||null}}return{chainId:e,name:"unknown"}}if("string"===typeof e){const t=h[e];return null==t?null:{name:t.name,chainId:t.chainId,ensAddress:t.ensAddress,_defaultProvider:t._defaultProvider||null}}const t=h[e.name];return t?(0!==e.chainId&&e.chainId!==t.chainId&&s.throwArgumentError("network chainId mismatch","network",e),{name:e.name,chainId:t.chainId,ensAddress:e.ensAddress||t.ensAddress||null,_defaultProvider:e._defaultProvider||t._defaultProvider||null}):("number"!==typeof e.chainId&&s.throwArgumentError("invalid network chainId","network",e),e)}},"010f":function(e,t,r){(function(e){t.utf8=t["utf-8"]={encode:function(e){return i(e)?e:String(e)},decode:n,buffer:!1,type:"utf8"},t.json={encode:JSON.stringify,decode:JSON.parse,buffer:!1,type:"json"},t.binary={encode:function(t){return i(t)?t:e.from(t)},decode:n,buffer:!0,type:"binary"},t.none={encode:n,decode:n,buffer:!1,type:"id"},t.id=t.none;var r=["hex","ascii","base64","ucs2","ucs-2","utf16le","utf-16le"];function n(e){return e}function i(t){return void 0===t||null===t||e.isBuffer(t)}r.forEach((function(r){t[r]={encode:function(t){return i(t)?t:e.from(t,r)},decode:function(e){return e.toString(r)},buffer:!0,type:r}}))}).call(this,r("b639").Buffer)},"014a":function(e,t,r){"use strict";const n=r("d58b"),i=r("d27c");function s(e,t){let r;n(e,i(e=>{r=e}),e=>t(e,r))}e.exports=s},"016f":function(e,t,r){"use strict";e.exports=function(e){return()=>Boolean(e._bitswap&&e.libp2p&&e.libp2p.isStarted())}},"01de":function(e,t,r){"use strict";const n=r("34eb"),i=n("repo-migrations:repo_mem_lock"),s="repo.lock",o={};t.lock=async function(e,t){const r=t+"/"+s;if(i("locking %s",r),!0===o[r])throw Error(`There is already present lock for: ${r}`);return o[r]=!0,{close(){o[r]&&(i("releasing lock %s",r),delete o[r])}}}},"01f1":function(e,t,r){"use strict";var n;if(!Object.keys){var i=Object.prototype.hasOwnProperty,s=Object.prototype.toString,o=r("d621"),a=Object.prototype.propertyIsEnumerable,c=!a.call({toString:null},"toString"),u=a.call((function(){}),"prototype"),l=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],h=function(e){var t=e.constructor;return t&&t.prototype===e},f={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},d=function(){if("undefined"===typeof window)return!1;for(var e in window)try{if(!f["$"+e]&&i.call(window,e)&&null!==window[e]&&"object"===typeof window[e])try{h(window[e])}catch(t){return!0}}catch(t){return!0}return!1}(),p=function(e){if("undefined"===typeof window||!d)return h(e);try{return h(e)}catch(t){return!1}};n=function(e){var t=null!==e&&"object"===typeof e,r="[object Function]"===s.call(e),n=o(e),a=t&&"[object String]"===s.call(e),h=[];if(!t&&!r&&!n)throw new TypeError("Object.keys called on a non-object");var f=u&&r;if(a&&e.length>0&&!i.call(e,0))for(var d=0;d0)for(var y=0;ythis._reseedInterval)throw new Error("Reseed is required");r&&0===r.length&&(r=void 0),r&&this._update(r);var i=new t(0);while(i.length/^0x[a-fA-F0-9]{40}$/.test(e);function d(e){const t=a.getNetwork(e);if(!t._defaultProvider)throw new Error(`Network with chainId ${e} is not supported`);return t._defaultProvider(a)}async function p(e){const t=(0,i.encodeRpcCall)("eth_chainId",[]),r=await g(t,e);return parseInt(r,16)}async function y(e,t){const r=(0,i.encodeRpcCall)("eth_getCode",[e,"latest"]),n=await g(r,t);return n}async function g(e,t){const r=(Boolean(t.sendAsync)?t.sendAsync:t.send).bind(t);return new Promise((t,n)=>{r(e,(function(e,r){e?n(e):r.error?n(r.error):t(r.result)}))})}async function m(e,t,r,s={}){const{message:o,timestamp:a}=(0,i.getConsentMessage)(e,!s.skipTimestamp),c=(0,i.encodeRpcCall)("personal_sign",[o,t]),u=await g(c,r),l={version:1,type:n.ADDRESS_TYPES.ethereumEOA,message:o,signature:u,address:t};return s.skipTimestamp||(l.timestamp=a),l}async function b(e,t,r,i){const s=await m(e,t,r,i),o=await p(r);return Object.assign(s,{type:n.ADDRESS_TYPES.erc1271,chainId:o})}async function v(e,t){if(!f(e))return!1;const r=await y(e,t).catch(()=>null);return r&&"0x"!==r&&"0x0"!==r&&"0x00"!==r?n.ADDRESS_TYPES.erc1271:n.ADDRESS_TYPES.ethereumEOA}async function w(e,t,r,i,s){return t=t.toLowerCase(),r===n.ADDRESS_TYPES.ethereumEOA?m(e,t,i,s):r===n.ADDRESS_TYPES.erc1271?b(e,t,i,s):void 0}async function _(e){const t=(0,s.verifyMessage)(e.message,e.signature).toLowerCase();return e.address&&e.address!==t?null:(e.address=t,e)}async function E(t){const r=d(t.chainId),n=new o.Contract(t.address,l,r),i="0x"+e.from(t.message,"utf8").toString("hex"),s=await n.isValidSignature(i,t.signature);return s===h?t:null}async function S(e){return e.type===n.ADDRESS_TYPES.ethereumEOA?_(e):e.type===n.ADDRESS_TYPES.erc1271?E(e):void 0}var k={validateLink:S,createLink:w,typeDetector:v};t.default=k}).call(this,r("b639").Buffer)},"021d":function(e,t,r){var n=r("69d0"),i=r("3ba4");function s(e,t,r){var s=t&&r||0;"string"==typeof e&&(t="binary"===e?new Array(16):null,e=null),e=e||{};var o=e.random||(e.rng||n)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,t)for(var a=0;a<16;++a)t[s+a]=o[a];return t||i(o)}e.exports=s},"0254":function(e,t,r){"use strict";const n={description:"Empty migration.",migrate:()=>{},revert:()=>{},empty:!0};e.exports=[Object.assign({},n,{version:7,revert:void 0}),Object.assign({},n,{version:6,revert:void 0}),Object.assign({},n,{version:5,revert:void 0}),Object.assign({},n,{version:4,revert:void 0}),Object.assign({},n,{version:3,revert:void 0}),Object.assign({},n,{version:2,revert:void 0}),Object.assign({},n,{version:1,revert:void 0})]},"0286":function(e,t,r){"use strict";var n=r("8707").Buffer,i=r("614f");function s(){this.negative=0,this.words=null,this.length=0}s.fromNumber=function(e){var t=new s;return t.words=[67108863&e],t.length=1,t},s.fromBuffer=function(e){var t=new s;return t.words=new Array(10),t.words[0]=(3&e[28])<<24|e[29]<<16|e[30]<<8|e[31],t.words[1]=(15&e[25])<<22|e[26]<<14|e[27]<<6|e[28]>>>2,t.words[2]=(63&e[22])<<20|e[23]<<12|e[24]<<4|e[25]>>>4,t.words[3]=(255&e[19])<<18|e[20]<<10|e[21]<<2|e[22]>>>6,t.words[4]=(3&e[15])<<24|e[16]<<16|e[17]<<8|e[18],t.words[5]=(15&e[12])<<22|e[13]<<14|e[14]<<6|e[15]>>>2,t.words[6]=(63&e[9])<<20|e[10]<<12|e[11]<<4|e[12]>>>4,t.words[7]=(255&e[6])<<18|e[7]<<10|e[8]<<2|e[9]>>>6,t.words[8]=(3&e[2])<<24|e[3]<<16|e[4]<<8|e[5],t.words[9]=e[0]<<14|e[1]<<6|e[2]>>>2,t.length=10,t.strip()},s.prototype.toBuffer=function(){for(var e=this.words,t=this.length;t<10;++t)e[t]=0;return n.from([e[9]>>>14&255,e[9]>>>6&255,(63&e[9])<<2|e[8]>>>24&3,e[8]>>>16&255,e[8]>>>8&255,255&e[8],e[7]>>>18&255,e[7]>>>10&255,e[7]>>>2&255,(3&e[7])<<6|e[6]>>>20&63,e[6]>>>12&255,e[6]>>>4&255,(15&e[6])<<4|e[5]>>>22&15,e[5]>>>14&255,e[5]>>>6&255,(63&e[5])<<2|e[4]>>>24&3,e[4]>>>16&255,e[4]>>>8&255,255&e[4],e[3]>>>18&255,e[3]>>>10&255,e[3]>>>2&255,(3&e[3])<<6|e[2]>>>20&63,e[2]>>>12&255,e[2]>>>4&255,(15&e[2])<<4|e[1]>>>22&15,e[1]>>>14&255,e[1]>>>6&255,(63&e[1])<<2|e[0]>>>24&3,e[0]>>>16&255,e[0]>>>8&255,255&e[0]])},s.prototype.clone=function(){var e=new s;e.words=new Array(this.length);for(var t=0;t1&&0===(0|this.words[this.length-1]))this.length--;return this},s.prototype.normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},s.prototype.isEven=function(){return 0===(1&this.words[0])},s.prototype.isOdd=function(){return 1===(1&this.words[0])},s.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},s.prototype.ucmp=function(e){if(this.length!==e.length)return this.length>e.length?1:-1;for(var t=this.length-1;t>=0;--t)if(this.words[t]!==e.words[t])return this.words[t]>e.words[t]?1:-1;return 0},s.prototype.gtOne=function(){return this.length>1||this.words[0]>1},s.prototype.isOverflow=function(){return this.ucmp(s.n)>=0},s.prototype.isHigh=function(){return 1===this.ucmp(s.nh)},s.prototype.bitLengthGT256=function(){return this.length>10||10===this.length&&this.words[9]>4194303},s.prototype.iuaddn=function(e){this.words[0]+=e;for(var t=0;this.words[t]>67108863&&te.length?(t=this,r=e):(t=e,r=this);for(var n=0,i=0;n>>26}for(;0!==i&&n>>26;if(this.length=t.length,0!==i)this.words[this.length++]=i;else if(t!==this)for(;n0?(t=this,r=e):(t=e,r=this);for(var i=0,s=0;i>26,this.words[i]=67108863&o}for(;0!==s&&i>26,this.words[i]=67108863&o;if(0===s&&i>>26,l=67108863&o,h=Math.max(0,a-e.length+1),f=Math.min(a,t.length-1);h<=f;h++){var d=a-h,p=e.words[d],y=t.words[h],g=p*y+l;u+=g/67108864|0,l=67108863&g}r.words[a]=l,o=u}return 0!==o&&(r.words[r.length++]=o),r.strip()},s.umulTo10x10=Math.imul?i.umulTo10x10:s.umulTo,s.umulnTo=function(e,t,r){if(0===t)return r.words=[0],r.length=1,r;for(var n=0,i=0;n0?(r.words[n]=i,r.length=e.length+1):r.length=e.length,r},s.prototype.umul=function(e){var t=new s;return t.words=new Array(this.length+e.length),10===this.length&&10===e.length?s.umulTo10x10(this,e,t):1===this.length?s.umulnTo(e,this.words[0],t):1===e.length?s.umulnTo(this,e.words[0],t):s.umulTo(this,e,t)},s.prototype.isplit=function(e){e.length=Math.min(this.length,9);for(var t=0;t>>22,r=n}return r>>>=22,this.words[t-10]=r,0===r&&this.length>10?this.length-=10:this.length-=9,this},s.prototype.fireduce=function(){return this.isOverflow()&&this.isub(s.n),this},s.prototype.ureduce=function(){var e=this.clone().isplit(s.tmp).umul(s.nc).iadd(s.tmp);return e.bitLengthGT256()&&(e=e.isplit(s.tmp).umul(s.nc).iadd(s.tmp),e.bitLengthGT256()&&(e=e.isplit(s.tmp).umul(s.nc).iadd(s.tmp))),e.fireduce()},s.prototype.ishrn=function(e){for(var t=(1<=0;--n){var s=this.words[n];this.words[n]=i<>>e,i=s&t}return this.length>1&&0===this.words[this.length-1]&&(this.length-=1),this},s.prototype.uinvm=function(){var e=this.clone(),t=s.n.clone(),r=s.fromNumber(1),n=s.fromNumber(0),i=s.fromNumber(0),o=s.fromNumber(1);while(e.isEven()&&t.isEven()){for(var a=1,c=1;0===(e.words[0]&c)&&0===(t.words[0]&c)&&a<26;++a,c<<=1);e.ishrn(a),t.ishrn(a)}var u=t.clone(),l=e.clone();while(!e.isZero()){for(var h=0,f=1;0===(e.words[0]&f)&&h<26;++h,f<<=1);if(h>0){e.ishrn(h);while(h-- >0)(r.isOdd()||n.isOdd())&&(r.iadd(u),n.isub(l)),r.ishrn(1),n.ishrn(1)}for(var d=0,p=1;0===(t.words[0]&p)&&d<26;++d,p<<=1);if(d>0){t.ishrn(d);while(d-- >0)(i.isOdd()||o.isOdd())&&(i.iadd(u),o.isub(l)),i.ishrn(1),o.ishrn(1)}e.ucmp(t)>=0?(e.isub(t),r.isub(i),n.isub(o)):(t.isub(e),i.isub(r),o.isub(n))}if(1===i.negative){i.negative=0;var y=i.ureduce();return y.negative^=1,y.normSign().iadd(s.n)}return i.ureduce()},s.prototype.imulK=function(){this.words[this.length]=0,this.words[this.length+1]=0,this.length+=2;for(var e=0,t=0;e0?this.isub(s.p):this.strip(),this},s.prototype.redNeg=function(){return this.isZero()?s.fromNumber(0):s.p.sub(this)},s.prototype.redAdd=function(e){return this.clone().redIAdd(e)},s.prototype.redIAdd=function(e){return this.iadd(e),this.ucmp(s.p)>=0&&this.isub(s.p),this},s.prototype.redIAdd7=function(){return this.iuaddn(7),this.ucmp(s.p)>=0&&this.isub(s.p),this},s.prototype.redSub=function(e){return this.clone().redISub(e)},s.prototype.redISub=function(e){return this.isub(e),0!==this.negative&&this.iadd(s.p),this},s.prototype.redMul=function(e){return this.umul(e).redIReduce()},s.prototype.redSqr=function(){return this.umul(this).redIReduce()},s.prototype.redSqrt=function(){if(this.isZero())return this.clone();for(var e=this.redSqr(),t=e.redSqr(),r=t.redSqr().redMul(t),n=r.redMul(e),i=n.redMul(this),s=i,o=0;o<54;++o)s=s.redSqr().redSqr().redSqr().redSqr().redMul(i);for(s=s.redSqr().redSqr().redSqr().redSqr().redMul(n),o=0;o<5;++o)s=s.redSqr().redSqr().redSqr().redSqr().redMul(i);return s=s.redSqr().redSqr().redSqr().redSqr().redMul(r),s=s.redSqr().redSqr().redSqr().redSqr().redSqr().redSqr().redMul(r),0===s.redSqr().ucmp(this)?s:null},s.prototype.redInvm=function(){var e,t=this.clone(),r=s.p.clone(),n=s.fromNumber(1),i=s.fromNumber(0);while(t.gtOne()&&r.gtOne()){for(var o=0,a=1;0===(t.words[0]&a)&&o<26;++o,a<<=1);if(o>0){t.ishrn(o);while(o-- >0)n.isOdd()&&n.iadd(s.p),n.ishrn(1)}for(var c=0,u=1;0===(r.words[0]&u)&&c<26;++c,u<<=1);if(c>0){r.ishrn(c);while(c-- >0)i.isOdd()&&i.iadd(s.p),i.ishrn(1)}t.ucmp(r)>=0?(t.isub(r),n.isub(i)):(r.isub(t),i.isub(n))}return e=1===t.length&&1===t.words[0]?n:i,0!==e.negative&&e.iadd(s.p),0!==e.negative?(e.negative=0,e.redIReduce().redNeg()):e.redIReduce()},s.prototype.getNAF=function(e){var t=[],r=1<>1,s=this.clone();while(!s.isZero()){for(var o=0,a=1;0===(s.words[0]&a)&&o<26;++o,a<<=1)t.push(0);if(0!==o)s.ishrn(o);else{var c=s.words[0]&n;if(c>=i)t.push(i-c),s.iuaddn(c-i).ishrn(1);else if(t.push(c),s.words[0]-=c,!s.isZero()){for(o=e-1;o>0;--o)t.push(0);s.ishrn(e)}}}return t},s.prototype.inspect=function(){if(this.isZero())return"0";for(var e=this.toBuffer().toString("hex"),t=0;"0"===e[t];++t);return e.slice(t)},s.n=s.fromBuffer(n.from("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141","hex")),s.nh=s.n.clone().ishrn(1),s.nc=s.fromBuffer(n.from("000000000000000000000000000000014551231950B75FC4402DA1732FC9BEBF","hex")),s.p=s.fromBuffer(n.from("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F","hex")),s.psn=s.p.sub(s.n),s.tmp=new s,s.tmp.words=new Array(10),function(){var e=s.fromNumber(1);e.words[3]=0}(),e.exports=s},"02a6":function(e,t,r){var n=r("c3bb"),i=r("9d8a"),s=r("e0c5").Buffer,o=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],a=new Array(160);function c(){this.init(),this._w=a,i.call(this,128,112)}function u(e,t,r){return r^e&(t^r)}function l(e,t,r){return e&t|r&(e|t)}function h(e,t){return(e>>>28|t<<4)^(t>>>2|e<<30)^(t>>>7|e<<25)}function f(e,t){return(e>>>14|t<<18)^(e>>>18|t<<14)^(t>>>9|e<<23)}function d(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^e>>>7}function p(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^(e>>>7|t<<25)}function y(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^e>>>6}function g(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^(e>>>6|t<<26)}function m(e,t){return e>>>0>>0?1:0}n(c,i),c.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},c.prototype._update=function(e){for(var t=this._w,r=0|this._ah,n=0|this._bh,i=0|this._ch,s=0|this._dh,a=0|this._eh,c=0|this._fh,b=0|this._gh,v=0|this._hh,w=0|this._al,_=0|this._bl,E=0|this._cl,S=0|this._dl,k=0|this._el,C=0|this._fl,A=0|this._gl,I=0|this._hl,T=0;T<32;T+=2)t[T]=e.readInt32BE(4*T),t[T+1]=e.readInt32BE(4*T+4);for(;T<160;T+=2){var x=t[T-30],B=t[T-30+1],R=d(x,B),N=p(B,x);x=t[T-4],B=t[T-4+1];var O=y(x,B),P=g(B,x),D=t[T-14],L=t[T-14+1],M=t[T-32],U=t[T-32+1],j=N+L|0,K=R+D+m(j,N)|0;j=j+P|0,K=K+O+m(j,P)|0,j=j+U|0,K=K+M+m(j,U)|0,t[T]=K,t[T+1]=j}for(var F=0;F<160;F+=2){K=t[F],j=t[F+1];var V=l(r,n,i),q=l(w,_,E),z=h(r,w),H=h(w,r),G=f(a,k),$=f(k,a),W=o[F],Y=o[F+1],Q=u(a,c,b),J=u(k,C,A),X=I+$|0,Z=v+G+m(X,I)|0;X=X+J|0,Z=Z+Q+m(X,J)|0,X=X+Y|0,Z=Z+W+m(X,Y)|0,X=X+j|0,Z=Z+K+m(X,j)|0;var ee=H+q|0,te=z+V+m(ee,H)|0;v=b,I=A,b=c,A=C,c=a,C=k,k=S+X|0,a=s+Z+m(k,S)|0,s=i,S=E,i=n,E=_,n=r,_=w,w=X+ee|0,r=Z+te+m(w,X)|0}this._al=this._al+w|0,this._bl=this._bl+_|0,this._cl=this._cl+E|0,this._dl=this._dl+S|0,this._el=this._el+k|0,this._fl=this._fl+C|0,this._gl=this._gl+A|0,this._hl=this._hl+I|0,this._ah=this._ah+r+m(this._al,w)|0,this._bh=this._bh+n+m(this._bl,_)|0,this._ch=this._ch+i+m(this._cl,E)|0,this._dh=this._dh+s+m(this._dl,S)|0,this._eh=this._eh+a+m(this._el,k)|0,this._fh=this._fh+c+m(this._fl,C)|0,this._gh=this._gh+b+m(this._gl,A)|0,this._hh=this._hh+v+m(this._hl,I)|0},c.prototype._hash=function(){var e=s.allocUnsafe(64);function t(t,r,n){e.writeInt32BE(t,n),e.writeInt32BE(r,n+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),t(this._gh,this._gl,48),t(this._hh,this._hl,56),e},e.exports=c},"02ce":function(e,t,r){"use strict";const n=r("e782"),i=r("0c9a"),s=(e,t,r)=>{!r.codec&&e.length&&(r.cidVersion=1,r.codec="raw"),isNaN(r.hashAlg)&&(r.hashAlg=n.names[r.hashAlg]),r.hashAlg!==n.names["sha2-256"]&&(r.cidVersion=1),r.format&&(r.codec=r.format);const s=i[r.codec.toUpperCase().replace(/-/g,"_")];return t.put(e,s,r)};e.exports=s},"02f2":function(e,t,r){"use strict";(function(n){const i=r("f654"),s=r("ec12"),o=r("d7cb"),a=r("41fe");class c{constructor(e,t,r){0!==r&&i(r,"A DAGNode requires it's serialized size"),this._data=e||n.alloc(0),this._links=t,this._serializedSize=r,a.hidePrivateFields(this),a.addEnumerableGetters(this,["Data","Links"]),t.forEach((e,t)=>{o(this,e.Name,t)})}toJSON(){return this._json||(this._json=Object.freeze({data:this.Data,links:this._links.map(e=>e.toJSON()),size:this.size})),Object.assign({},this._json)}toString(){return`DAGNode `}get size(){return void 0===this._size&&(this._size=this._links.reduce((e,t)=>e+t.Tsize,this._serializedSize)),this._size}set size(e){throw new Error("Can't set property: 'size' is immutable")}get Data(){return this._data}set Data(e){throw new Error("Can't set property: 'Data' is immutable")}get Links(){return this._links.map(e=>({Name:e.Name,Tsize:e.Tsize,Hash:e.Hash}))}set Links(e){throw new Error("Can't set property: 'Links' is immutable")}}t=e.exports=s(c,{className:"DAGNode",symbolName:"@ipld/js-ipld-dag-pb/dagnode"}),t.create=r("70cf"),t.clone=r("64d4"),t.addLink=r("11ca"),t.rmLink=r("69e7")}).call(this,r("b639").Buffer)},"034e":function(e,t,r){"use strict";(function(n){const i=r("96a8"),s=i(r("eee0"));r("a43d"),r("9051"),r("b6fe");const o=r("f0a0");t=e.exports;const a={rsa:r("2ff2"),ed25519:r("7cb4"),secp256k1:r("9294")(s,r("3d5a"))};function c(e){const t=a[e.toLowerCase()];return void 0!==t}t.supportedKeys=a,t.keysPBM=s,t.keyStretcher=r("104e"),t.generateEphemeralKeyPair=r("6b25"),t.generateKeyPair=(e,t,r)=>{const n=a[e.toLowerCase()];if(!n)return r(new Error("invalid or unsupported key type"));n.generateKeyPair(t,r)},t.generateKeyPairFromSeed=(e,t,r,n)=>{const i=a[e.toLowerCase()];return i?"ed25519"!==e.toLowerCase()?n(new Error("Seed key derivation is unimplemented for RSA or secp256k1")):void i.generateKeyPairFromSeed(t,r,n):n(new Error("invalid or unsupported key type"))},t.unmarshalPublicKey=e=>{const t=s.PublicKey.decode(e),r=t.Data;switch(t.Type){case s.KeyType.RSA:return a.rsa.unmarshalRsaPublicKey(r);case s.KeyType.Ed25519:return a.ed25519.unmarshalEd25519PublicKey(r);case s.KeyType.Secp256k1:if(a.secp256k1)return a.secp256k1.unmarshalSecp256k1PublicKey(r);throw new Error("secp256k1 support requires libp2p-crypto-secp256k1 package");default:throw new Error("invalid or unsupported key type")}},t.marshalPublicKey=(e,t)=>{if(t=(t||"rsa").toLowerCase(),!c(t))throw new Error("invalid or unsupported key type");return e.bytes},t.unmarshalPrivateKey=(e,t)=>{let r;try{r=s.PrivateKey.decode(e)}catch(i){return t(i)}const n=r.Data;switch(r.Type){case s.KeyType.RSA:return a.rsa.unmarshalRsaPrivateKey(n,t);case s.KeyType.Ed25519:return a.ed25519.unmarshalEd25519PrivateKey(n,t);case s.KeyType.Secp256k1:return a.secp256k1?a.secp256k1.unmarshalSecp256k1PrivateKey(n,t):t(new Error("secp256k1 support requires libp2p-crypto-secp256k1 package"));default:t(new Error("invalid or unsupported key type"))}},t.marshalPrivateKey=(e,t)=>{if(t=(t||"rsa").toLowerCase(),!c(t))throw new Error("invalid or unsupported key type");return e.bytes},t.import=(e,t,r)=>{try{const i=o.pki.decryptRsaPrivateKey(e,t);if(null===i)throw new Error("Cannot read the key, most likely the password is wrong or not a RSA key");let s=o.asn1.toDer(o.pki.privateKeyToAsn1(i));return s=n.from(s.getBytes(),"binary"),a.rsa.unmarshalRsaPrivateKey(s,r)}catch(i){r(i)}}}).call(this,r("b639").Buffer)},"0380":function(e,t,r){"use strict";const n=r("cf8f"),i=r("1421"),s=r("6166"),o=r("bcc7"),a=r("4bc2"),c=a("libp2p:circuit:transportdialer");c.err=a("libp2p:circuit:error:transportdialer");const u=r("05c7");class l{static get tag(){return"Circuit"}constructor(e,t){this.options=t||{},this.swarm=e,this.dialer=null,this.utils=o(e),this.peerInfo=this.swarm._peerInfo,this.relays=this.filter(this.peerInfo.multiaddrs.toArray()),0===this.relays.length&&this.peerInfo.multiaddrs.add(`/p2p-circuit/ipfs/${this.peerInfo.id.toB58String()}`),this.dialer=new s(e,t),this.swarm.on("peer-mux-established",e=>{this.dialer.canHop(e)}),this.swarm.on("peer-mux-closed",e=>{this.dialer.relayPeers.delete(e.id.toB58String())})}_dialSwarmRelays(){this.relays.forEach(e=>{const t=e.toString().split("/p2p-circuit").filter(e=>e.length);t.forEach(e=>{const t=this.utils.peerInfoFromMa(i(e));this.dialer._dialRelay(t)})})}dial(e,t,r){return this.dialer.dial(e,t,r)}createListener(e,t){"function"===typeof e&&(t=e,e=this.options||{});const r=u(this.swarm,e,t);return r.on("listen",this._dialSwarmRelays.bind(this)),r}filter(e){return Array.isArray(e)||(e=[e]),e.filter(e=>n.Circuit.matches(e))}}e.exports=l},"0395":function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=f;var n=r("c1cd"),i=h(n),s=r("532e"),o=h(s),a=r("6307"),c=h(a),u=r("76bf"),l=h(u);function h(e){return e&&e.__esModule?e:{default:e}}function f(e,t,r){r=r||i.default;var n=(0,o.default)(t)?[]:{};e(t,(function(e,t,r){(0,l.default)(e)((function(e,i){arguments.length>2&&(i=(0,c.default)(arguments,1)),n[t]=i,r(e)}))}),(function(e){r(e,n)}))}e.exports=t["default"]},"0397":function(e,t,r){"use strict";var n=r("4ea4"),i=n(r("a34a")),s=n(r("c973")),o=r("9440"),a=n(r("a18f")),c="https://ipfs.infura.io/ipfs/";function u(e){arguments.length>1&&void 0!==arguments[1]&&arguments[1];function t(e,t){return r.apply(this,arguments)}function r(){return r=(0,s["default"])(i["default"].mark((function t(r,n){var s;return i["default"].wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,l(e,n.id);case 2:return s=t.sent,t.abrupt("return",p(r,s));case 4:case"end":return t.stop()}}),t)}))),r.apply(this,arguments)}(0,o.registerMethod)("muport",t)}function l(e,t){return h.apply(this,arguments)}function h(){return h=(0,s["default"])(i["default"].mark((function e(t,r){var n;return i["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(e.prev=0,!t){e.next=9;break}return e.t1=JSON,e.next=5,t.cat(r);case 5:e.t2=e.sent,e.t0=e.t1.parse.call(e.t1,e.t2),e.next=12;break;case 9:return e.next=11,f(r);case 11:e.t0=e.sent;case 12:n=e.t0,e.next=17;break;case 15:e.prev=15,e.t3=e["catch"](0);case 17:if(n&&1===n.version&&n.signingKey&&n.managementKey&&n.asymEncryptionKey){e.next=27;break}if(e.prev=18,!t){e.next=22;break}return e.next=22,t.pin.rm(r);case 22:e.next=26;break;case 24:e.prev=24,e.t4=e["catch"](18);case 26:throw new Error("Invalid muport did");case 27:return e.abrupt("return",n);case 28:case"end":return e.stop()}}),e,null,[[0,15],[18,24]])}))),h.apply(this,arguments)}function f(e){return d.apply(this,arguments)}function d(){return d=(0,s["default"])(i["default"].mark((function e(t){return i["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,(0,a["default"])(c+t);case 2:return e.abrupt("return",e.sent.json());case 3:case"end":return e.stop()}}),e)}))),d.apply(this,arguments)}function p(e,t){var r={"@context":"https://w3id.org/did/v1",id:e,publicKey:[{id:e+"#signingKey",type:"Secp256k1VerificationKey2018",owner:e,publicKeyHex:t.signingKey},{id:e+"#managementKey",type:"Secp256k1VerificationKey2018",owner:e},{id:e+"#encryptionKey",type:"Curve25519EncryptionPublicKey",owner:e,publicKeyBase64:t.asymEncryptionKey}],authentication:[{type:"Secp256k1SignatureAuthentication2018",publicKey:e+"#signingKey"}],muportData:{}};return 42===t.managementKey.length?r.publicKey[1].ethereumAddress=t.managementKey:r.publicKey[1].publicKeyHex=t.managementKey,t.publicProfile&&(r.uportProfile=t.publicProfile),t.symEncryptedData&&(r.muportData.symEncryptedData=t.symEncryptedData),t.recoveryNetwork&&(r.muportData.recoveryNetwork=t.recoveryNetwork),r}e.exports=u},"0398":function(e,t){const r="https://api.coingecko.com/api/",n="api.coingecko.com",i="3",s=`${r}v${i}`,o=10,a=3e4,c={GECKO_ASC:"gecko_asc",GECKO_DESC:"gecko_desc",MARKET_CAP_ASC:"market_cap_asc",MARKET_CAP_DESC:"market_cap_desc",VOLUME_ASC:"volume_asc",VOLUME_DESC:"volume_desc",COIN_NAME_ASC:"coin_name_asc",COIN_NAME_DESC:"coin_name_desc",PRICE_ASC:"price_asc",PRICE_DESC:"price_desc",HOUR_24_ASC:"h24_change_asc",HOUR_24_DESC:"h24_change_desc",TRUST_SCORE_DESC:"trust_score_desc",NAME_ASC:"name_asc",NAME_DESC:"name_desc",OPEN_INTEREST_BTC_ASC:"open_interest_btc_asc",OPEN_INTEREST_BTC_DESC:"open_interest_btc_desc",TRADE_VOLUME_24H_BTC_ASC:"trade_volume_24h_btc_asc",TRADE_VOLUME_24H_BTC_DESC:"trade_volume_24h_btc_desc"},u={GENERAL:"general",MILESTONE:"milestone",PARTNERSHIP:"partnership",EXCHANGE_LISTING:"exchange_listing",SOFTWARE_RELEASE:"software_release",FUND_MOVEMENT:"fund_movement",NEW_LISTINGS:"new_listings",EVENT:"event"},l={COIN:"coin",MARKET:"market"},h={EVENT:"Event",CONFERENCE:"Conference",MEETUP:"Meetup"};e.exports={BASE:r,HOST:n,API_VERSION:i,URI:s,REQUESTS_PER_SECOND:o,ORDER:c,STATUS_UPDATE_CATEGORY:u,STATUS_UPDATE_PROJECT_TYPE:l,EVENT_TYPE:h,TIMEOUT:a}},"03b2":function(e,t,r){"use strict";e.exports=function(e){return function(t,r){r(e)}}},"0417":function(e,t,r){"use strict";class n{async canAppend(e,t){return!0}}e.exports=n},"043f":function(e,t,r){"use strict";(function(t){const n=r("1304").Key,i=r("bb8f"),s=new n("datastore_spec");e.exports=e=>({async exists(){return e.has(s)},async get(){const t=await e.get(s);return JSON.parse(t.toString())},async set(r){return e.put(s,t.from(JSON.stringify(i(r,{deep:!0}))))}})}).call(this,r("b639").Buffer)},"0497":function(e,t,r){(function(t){var n=r("a977").strict;e.exports=function(e){if(n(e)){var r=t.from(e.buffer);return e.byteLength!==e.buffer.byteLength&&(r=r.slice(e.byteOffset,e.byteOffset+e.byteLength)),r}return t.from(e)}}).call(this,r("b639").Buffer)},"04dc":function(e,t,r){"use strict";const n=r("231e"),i={16:"aes-128-ctr",32:"aes-256-ctr"};t.create=function(e,t,r){const s=i[e.length];if(!s)return r(new Error("Invalid key length"));const o=n.createCipheriv(s,e,t),a=n.createDecipheriv(s,e,t),c={encrypt(e,t){t(null,o.update(e))},decrypt(e,t){t(null,a.update(e))}};r(null,c)}},"04dcb":function(e,t,r){"use strict";const n=r("faa1"),i=r("26a6"),s=r("d720"),o=r("65b6");class a extends n{constructor(e,t){super(),this._options=t,this._queue=[],this._stats={},this._frequencyLastTime=Date.now(),this._frequencyAccumulators={},this._movingAverages={},this._update=this._update.bind(this);const r=this._options.movingAverageIntervals;for(var n=0;n{this._updateFrequencyFor(r,t,e)}),this._frequencyLastTime=e}_updateFrequencyFor(e,t,r){const n=this._frequencyAccumulators[e]||0;this._frequencyAccumulators[e]=0;const i=t||1,o=n/i*1e3;let a=this._movingAverages[e];a||(a=this._movingAverages[e]={});const c=this._options.movingAverageIntervals;for(var u=0;ut&&(e=h(t,r)),e.isProbablePrime(o))return c(null,e);e.dAddOffset(i[s++%8],0)}while(a<0||+new Date-le&&(o=h(e,t));var d=o.toString(16);i.target.postMessage({hex:d,workLoad:u}),o.dAddOffset(l,0)}}}d()}function h(e,t){var n=new r(e,t),i=e-1;return n.testBit(i)||n.bitwiseTo(r.ONE.shiftLeft(i),o,n),n.dAddOffset(31-n.mod(s).byteValue(),0),n}function f(e){return e<=100?27:e<=150?18:e<=200?15:e<=250?12:e<=300?9:e<=350?8:e<=400?7:e<=500?6:e<=600?5:e<=800?4:e<=1250?3:2}}()},"04e4":function(e,t,r){var n=r("8284");function i(e){var t=this.__data__,r=n(t,e);return r<0?void 0:t[r][1]}e.exports=i},"0503":function(e,t,r){"use strict";const n=r("7048");e.exports=(e={},t)=>{Array.isArray(e)&&(e=e.filter(e=>"object"===typeof e).pop()||{});const r={};for(const n in t)null!==e[n]&&void 0!==e[n]?r[n]=e[n]:r[n]=t[n];const i=r.format||r.codec;if(i&&isNaN(i)&&(r.format=i,delete r.codec),void 0!==e.count&&(r.length=e.count),void 0!==e.p&&(r.parents=e.p),void 0!==e.l&&(r.long=e.l),r.length||0===r.length||(r.length=1/0),r.offset<0)throw n(new Error("cannot have negative write offset"),"ERR_INVALID_PARAMS");if(r.length<0)throw n(new Error("cannot have negative byte count"),"ERR_INVALID_PARAMS");return r}},"0512":function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=c;var n=r("0395"),i=a(n),s=r("ea8c"),o=a(s);function a(e){return e&&e.__esModule?e:{default:e}}function c(e,t){(0,i.default)(o.default,e,t)}e.exports=t["default"]},"057f":function(e,t,r){var n=r("fc6a"),i=r("241c").f,s={}.toString,o="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],a=function(e){try{return i(e)}catch(t){return o.slice()}};e.exports.f=function(e){return o&&"[object Window]"==s.call(e)?a(e):i(n(e))}},"0580":function(e,t,r){const n=r("faa1").EventEmitter,i=r("e063"),{WORKER_REQUEST_READ_LOCK:s,WORKER_RELEASE_READ_LOCK:o,MASTER_GRANT_READ_LOCK:a,WORKER_REQUEST_WRITE_LOCK:c,WORKER_RELEASE_WRITE_LOCK:u,MASTER_GRANT_WRITE_LOCK:l}=r("2046"),h=r("c275"),f=r("c707")(),d=(e,t,r,n,i)=>(s,o)=>{if(!o||!o.data||o.data.type!==r)return;const a={type:o.data.type,name:o.data.name,identifier:o.data.identifier};e.emit(t,a.name,()=>(s.postMessage({type:i,name:a.name,identifier:a.identifier}),new Promise(e=>{const t=r=>{if(!r||!r.data)return;const i={type:r.data.type,name:r.data.name,identifier:r.data.identifier};i&&i.type===n&&i.identifier===a.identifier&&(s.removeEventListener("message",t),e())};s.addEventListener("message",t)})))},p=(e,t,r,n)=>()=>{const s=i.generate();return f.postMessage({type:t,identifier:s,name:e}),new Promise(t=>{const i=o=>{if(!o||!o.data)return;const a={type:o.data.type,identifier:o.data.identifier};a&&a.type===r&&a.identifier===s&&(f.removeEventListener("message",i),t(()=>{f.postMessage({type:n,identifier:s,name:e})}))};f.addEventListener("message",i)})},y={singleProcess:!1};e.exports=e=>{e=Object.assign({},y,e);const t=!!f.document||e.singleProcess;if(t){const e=new n;return h.addEventListener("message",d(e,"requestReadLock",s,o,a)),h.addEventListener("message",d(e,"requestWriteLock",c,u,l)),e}return{isWorker:!0,readLock:e=>p(e,s,a,o),writeLock:e=>p(e,c,l,u)}}},"05c7":function(e,t,r){"use strict";const n=r("9941"),i=r("8ffa"),s=r("faa1").EventEmitter,o=r("1421"),a=r("cf8f"),c=r("567e"),u=r("fa5a"),l=r("6c8b"),h=r("bcc7"),f=r("f8c9"),d=r("4bc2"),p=d("libp2p:circuit:listener");p.err=d("libp2p:circuit:error:listener"),e.exports=(e,t,r)=>{const d=new s,y=h(e);return d.stopHandler=new c(e),d.stopHandler.on("connection",e=>d.emit("connection",e)),d.hopHandler=new u(e,t.hop),d.listen=(t,s)=>{s=s||(()=>{}),e.handle(i.relay,(e,t)=>{const n=new f(t);n.read((e,t)=>{if(e)return void p.err(e);let i=null;try{i=l.CircuitRelay.decode(t)}catch(e){return y.writeResponse(n,l.CircuitRelay.Status.MALFORMED_MESSAGE)}switch(i.type){case l.CircuitRelay.Type.CAN_HOP:case l.CircuitRelay.Type.HOP:return d.hopHandler.handle(i,n);case l.CircuitRelay.Type.STOP:return d.stopHandler.handle(i,n,r);default:return y.writeResponse(n,l.CircuitRelay.Status.INVALID_MSG_TYPE),n.close()}})}),n(()=>d.emit("listen")),s()},d.close=t=>{e.unhandle(i.relay),n(()=>d.emit("close")),t()},d.getAddrs=t=>{let r=e._peerInfo.multiaddrs.toArray();const n=r.filter(t=>a.Circuit.matches(t)&&!t.toString().includes(e._peerInfo.id.toB58String()));n.length&&(r=n);const i=[];r.forEach(t=>{const r=`/p2p-circuit/ipfs/${e._peerInfo.id.toB58String()}`;if(t.toString()!==r)if(a.Circuit.matches(t))i.push(t.encapsulate(`/ipfs/${e._peerInfo.id.toB58String()}`));else if(t.getPeerId())i.push(o("/p2p-circuit").encapsulate(t));else{const r=`${t}/ipfs/${e._peerInfo.id.toB58String()}`;i.push(o("/p2p-circuit").encapsulate(r))}else i.push(o(r))}),t(null,i)},d}},"05dd":function(e,t,r){"use strict";const n=async(e,t,r)=>{const n=async()=>{const n=await e.pubsub.peers(r),i=0===t.map(e=>n.includes(e)).filter(e=>!1===e).length;return i};return await n()?Promise.resolve():new Promise(async(e,t)=>{const r=setInterval(async()=>{try{await n()&&(clearInterval(r),e())}catch(i){t(i)}},100)})};e.exports=n},"05f9":function(e,t,r){"use strict";const n=e=>void 0!==e&&null!==e;e.exports=n},"060c":function(e,t){var r=Object.prototype;function n(e){var t=e&&e.constructor,n="function"==typeof t&&t.prototype||r;return e===n}e.exports=n},"0611":function(e,t,r){var n=r("c027"),i=r("6a63"),s=r("4bc2")("engine.io-client:socket"),o=r("666d"),a=r("7c47"),c=r("f4d7"),u=r("c81c");function l(e,t){if(!(this instanceof l))return new l(e,t);t=t||{},e&&"object"===typeof e&&(t=e,e=null),e?(e=c(e),t.hostname=e.host,t.secure="https"===e.protocol||"wss"===e.protocol,t.port=e.port,e.query&&(t.query=e.query)):t.host&&(t.hostname=c(t.host).host),this.secure=null!=t.secure?t.secure:"undefined"!==typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.agent=t.agent||!1,this.hostname=t.hostname||("undefined"!==typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!==typeof location&&location.port?location.port:this.secure?443:80),this.query=t.query||{},"string"===typeof this.query&&(this.query=u.decode(this.query)),this.upgrade=!1!==t.upgrade,this.path=(t.path||"/engine.io").replace(/\/$/,"")+"/",this.forceJSONP=!!t.forceJSONP,this.jsonp=!1!==t.jsonp,this.forceBase64=!!t.forceBase64,this.enablesXDR=!!t.enablesXDR,this.withCredentials=!1!==t.withCredentials,this.timestampParam=t.timestampParam||"t",this.timestampRequests=t.timestampRequests,this.transports=t.transports||["polling","websocket"],this.transportOptions=t.transportOptions||{},this.readyState="",this.writeBuffer=[],this.prevBufferLen=0,this.policyPort=t.policyPort||843,this.rememberUpgrade=t.rememberUpgrade||!1,this.binaryType=null,this.onlyBinaryUpgrades=t.onlyBinaryUpgrades,this.perMessageDeflate=!1!==t.perMessageDeflate&&(t.perMessageDeflate||{}),!0===this.perMessageDeflate&&(this.perMessageDeflate={}),this.perMessageDeflate&&null==this.perMessageDeflate.threshold&&(this.perMessageDeflate.threshold=1024),this.pfx=t.pfx||null,this.key=t.key||null,this.passphrase=t.passphrase||null,this.cert=t.cert||null,this.ca=t.ca||null,this.ciphers=t.ciphers||null,this.rejectUnauthorized=void 0===t.rejectUnauthorized||t.rejectUnauthorized,this.forceNode=!!t.forceNode,this.isReactNative="undefined"!==typeof navigator&&"string"===typeof navigator.product&&"reactnative"===navigator.product.toLowerCase(),("undefined"===typeof self||this.isReactNative)&&(t.extraHeaders&&Object.keys(t.extraHeaders).length>0&&(this.extraHeaders=t.extraHeaders),t.localAddress&&(this.localAddress=t.localAddress)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingIntervalTimer=null,this.pingTimeoutTimer=null,this.open()}function h(e){var t={};for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);return t}e.exports=l,l.priorWebsocketSuccess=!1,i(l.prototype),l.protocol=a.protocol,l.Socket=l,l.Transport=r("19c3"),l.transports=r("c027"),l.parser=r("7c47"),l.prototype.createTransport=function(e){s('creating transport "%s"',e);var t=h(this.query);t.EIO=a.protocol,t.transport=e;var r=this.transportOptions[e]||{};this.id&&(t.sid=this.id);var i=new n[e]({query:t,socket:this,agent:r.agent||this.agent,hostname:r.hostname||this.hostname,port:r.port||this.port,secure:r.secure||this.secure,path:r.path||this.path,forceJSONP:r.forceJSONP||this.forceJSONP,jsonp:r.jsonp||this.jsonp,forceBase64:r.forceBase64||this.forceBase64,enablesXDR:r.enablesXDR||this.enablesXDR,withCredentials:r.withCredentials||this.withCredentials,timestampRequests:r.timestampRequests||this.timestampRequests,timestampParam:r.timestampParam||this.timestampParam,policyPort:r.policyPort||this.policyPort,pfx:r.pfx||this.pfx,key:r.key||this.key,passphrase:r.passphrase||this.passphrase,cert:r.cert||this.cert,ca:r.ca||this.ca,ciphers:r.ciphers||this.ciphers,rejectUnauthorized:r.rejectUnauthorized||this.rejectUnauthorized,perMessageDeflate:r.perMessageDeflate||this.perMessageDeflate,extraHeaders:r.extraHeaders||this.extraHeaders,forceNode:r.forceNode||this.forceNode,localAddress:r.localAddress||this.localAddress,requestTimeout:r.requestTimeout||this.requestTimeout,protocols:r.protocols||void 0,isReactNative:this.isReactNative});return i},l.prototype.open=function(){var e;if(this.rememberUpgrade&&l.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))e="websocket";else{if(0===this.transports.length){var t=this;return void setTimeout((function(){t.emit("error","No transports available")}),0)}e=this.transports[0]}this.readyState="opening";try{e=this.createTransport(e)}catch(r){return this.transports.shift(),void this.open()}e.open(),this.setTransport(e)},l.prototype.setTransport=function(e){s("setting transport %s",e.name);var t=this;this.transport&&(s("clearing existing transport %s",this.transport.name),this.transport.removeAllListeners()),this.transport=e,e.on("drain",(function(){t.onDrain()})).on("packet",(function(e){t.onPacket(e)})).on("error",(function(e){t.onError(e)})).on("close",(function(){t.onClose("transport close")}))},l.prototype.probe=function(e){s('probing transport "%s"',e);var t=this.createTransport(e,{probe:1}),r=!1,n=this;function i(){if(n.onlyBinaryUpgrades){var i=!this.supportsBinary&&n.transport.supportsBinary;r=r||i}r||(s('probe transport "%s" opened',e),t.send([{type:"ping",data:"probe"}]),t.once("packet",(function(i){if(!r)if("pong"===i.type&&"probe"===i.data){if(s('probe transport "%s" pong',e),n.upgrading=!0,n.emit("upgrading",t),!t)return;l.priorWebsocketSuccess="websocket"===t.name,s('pausing current transport "%s"',n.transport.name),n.transport.pause((function(){r||"closed"!==n.readyState&&(s("changing transport and sending upgrade packet"),f(),n.setTransport(t),t.send([{type:"upgrade"}]),n.emit("upgrade",t),t=null,n.upgrading=!1,n.flush())}))}else{s('probe transport "%s" failed',e);var o=new Error("probe error");o.transport=t.name,n.emit("upgradeError",o)}})))}function o(){r||(r=!0,f(),t.close(),t=null)}function a(r){var i=new Error("probe error: "+r);i.transport=t.name,o(),s('probe transport "%s" failed because of error: %s',e,r),n.emit("upgradeError",i)}function c(){a("transport closed")}function u(){a("socket closed")}function h(e){t&&e.name!==t.name&&(s('"%s" works - aborting "%s"',e.name,t.name),o())}function f(){t.removeListener("open",i),t.removeListener("error",a),t.removeListener("close",c),n.removeListener("close",u),n.removeListener("upgrading",h)}l.priorWebsocketSuccess=!1,t.once("open",i),t.once("error",a),t.once("close",c),this.once("close",u),this.once("upgrading",h),t.open()},l.prototype.onOpen=function(){if(s("socket open"),this.readyState="open",l.priorWebsocketSuccess="websocket"===this.transport.name,this.emit("open"),this.flush(),"open"===this.readyState&&this.upgrade&&this.transport.pause){s("starting upgrade probes");for(var e=0,t=this.upgrades.length;e{let n,i;if(e<0)n=r,i=t;else{if(!(e>0))return t[0];n=t,i=r}for(let s of n)for(let e of i)if(s===e)return s;throw new Error("No algorithms in common!")},t.makeMacAndCipher=(e,t)=>{u([t=>l(e.hashT,e.keys.macKey,t),t=>h(e.cipherT,e.keys.iv,e.keys.cipherKey,t)],(r,n)=>{if(r)return t(r);e.mac=n[0],e.cipher=n[1],t()})},t.selectBest=(r,n,i)=>{t.digest(e.concat([n.pubKeyBytes,r.nonce]),(s,o)=>{if(s)return i(s);t.digest(e.concat([r.pubKeyBytes,n.nonce]),(s,a)=>{if(s)return i(s);const c=e.compare(o,a);if(0===c)return i(new Error("you are trying to talk to yourself"));i(null,{curveT:t.theBest(c,r.exchanges,n.exchanges),cipherT:t.theBest(c,r.ciphers,n.ciphers),hashT:t.theBest(c,r.hashes,n.hashes),order:c})})})},t.digest=(e,t)=>{n.digest(e,"sha2-256",e.length,t)},t.write=function(e,t,r){r=r||(()=>{}),s(o([t]),i.encode({fixed:!0,bytes:4}),a((t,n)=>{if(t)return r(t);e.shake.write(n[0]),r()}))},t.read=function(e,t){i.decodeFromReader(e,{fixed:!0,bytes:4},t)}}).call(this,r("b639").Buffer)},"063e":function(e,t,r){"use strict";e.exports=function(){throw new Error("WebSocket Servers can not be created in the browser!")}},"0676":function(e,t){function r(){throw new TypeError("Invalid attempt to spread non-iterable instance")}e.exports=r},"06a1":function(e,t,r){"use strict";(function(e){var r=e.MutationObserver||e.WebKitMutationObserver;t.test=function(){return r},t.install=function(t){var n=0,i=new r(t),s=e.document.createTextNode("");return i.observe(s,{characterData:!0}),function(){s.data=n=++n%2}}}).call(this,r("c8ba"))},"0730":function(e,t){var r=9007199254740991,n=/^(?:0|[1-9]\d*)$/;function i(e,t){var i=typeof e;return t=null==t?r:t,!!t&&("number"==i||"symbol"!=i&&n.test(e))&&e>-1&&e%1==0&&e{const r=new n(e).child(new n(o)),i="function"===typeof t.getRaw?t.getRaw.bind(t):t.get.bind(t),s=await i(r);return h((s||"").toString().trim())},t.readme=i,t.parseShardFun=h,t.Prefix=c,t.Suffix=u,t.NextToLast=l},"07be6":function(e,t,r){"use strict";(function(t){const n=r("b13c"),i=r("e009"),s=r("b061"),o=r("2f58"),a=s.toCallback,c=s.toBuf,u=s.fromString,l=s.fromNumberTo32BitBuf,h=(e,r)=>{o.sha2256(e,(e,n)=>{e&&r(e),o.sha2256(t.from(n),r)})};e.exports={sha1:o.sha1,sha2256:o.sha2256,sha2512:o.sha2512,sha3512:a(c(n.sha3_512)),sha3384:a(c(n.sha3_384)),sha3256:a(c(n.sha3_256)),sha3224:a(c(n.sha3_224)),shake128:a(c(n.shake_128,128)),shake256:a(c(n.shake_256,256)),keccak224:a(c(n.keccak_224)),keccak256:a(c(n.keccak_256)),keccak384:a(c(n.keccak_384)),keccak512:a(c(n.keccak_512)),murmur3128:a(c(u(i.x64.hash128))),murmur332:a(l(u(i.x86.hash32))),addBlake:r("74c2"),dblSha2256:h}}).call(this,r("b639").Buffer)},"07e3":function(e,t,r){"use strict";const n=r("135c"),i=r("de17"),s=r("5f0c"),o=r("5dd0");async function*a(e,t,r){for await(const a of e)if(a.path&&("./"===a.path.substring(0,2)&&(r.wrapWithDirectory=!0),a.path=a.path.split("/").filter(e=>e&&"."!==e).join("/")),a.content){let e=a.content;(e[Symbol.asyncIterator]||e[Symbol.iterator])&&void 0===e.length||(e={[Symbol.iterator]:function*(){yield a.content}});const n=s(r.chunker,o(e),r.chunkerOptions);yield i(a,n,t,r)}else yield n(a,t,r)}e.exports=a},"083e":function(e,t,r){var n=r("918b");r("5ee0"),e.exports=n.cipher=n.cipher||{},n.cipher.algorithms=n.cipher.algorithms||{},n.cipher.createCipher=function(e,t){var r=e;if("string"===typeof r&&(r=n.cipher.getAlgorithm(r),r&&(r=r())),!r)throw new Error("Unsupported algorithm: "+e);return new n.cipher.BlockCipher({algorithm:r,key:t,decrypt:!1})},n.cipher.createDecipher=function(e,t){var r=e;if("string"===typeof r&&(r=n.cipher.getAlgorithm(r),r&&(r=r())),!r)throw new Error("Unsupported algorithm: "+e);return new n.cipher.BlockCipher({algorithm:r,key:t,decrypt:!0})},n.cipher.registerAlgorithm=function(e,t){e=e.toUpperCase(),n.cipher.algorithms[e]=t},n.cipher.getAlgorithm=function(e){return e=e.toUpperCase(),e in n.cipher.algorithms?n.cipher.algorithms[e]:null};var i=n.cipher.BlockCipher=function(e){this.algorithm=e.algorithm,this.mode=this.algorithm.mode,this.blockSize=this.mode.blockSize,this._finish=!1,this._input=null,this.output=null,this._op=e.decrypt?this.mode.decrypt:this.mode.encrypt,this._decrypt=e.decrypt,this.algorithm.initialize(e)};i.prototype.start=function(e){e=e||{};var t={};for(var r in e)t[r]=e[r];t.decrypt=this._decrypt,this._finish=!1,this._input=n.util.createBuffer(),this.output=e.output||n.util.createBuffer(),this.mode.start(t)},i.prototype.update=function(e){e&&this._input.putBuffer(e);while(!this._op.call(this.mode,this._input,this.output,this._finish)&&!this._finish);this._input.compact()},i.prototype.finish=function(e){!e||"ECB"!==this.mode.name&&"CBC"!==this.mode.name||(this.mode.pad=function(t){return e(this.blockSize,t,!1)},this.mode.unpad=function(t){return e(this.blockSize,t,!0)});var t={};return t.decrypt=this._decrypt,t.overflow=this._input.length()%this.blockSize,!(!this._decrypt&&this.mode.pad&&!this.mode.pad(this._input,t))&&(this._finish=!0,this.update(),!(this._decrypt&&this.mode.unpad&&!this.mode.unpad(this.output,t))&&!(this.mode.afterFinish&&!this.mode.afterFinish(this.output,t)))}},"0841":function(e,t,r){"use strict";const n=r("694c"),i=r("eb8e");t.encode=n,t.decode=i.decode,t.decodeFromReader=i.decodeFromReader},"0866":function(e,t,r){"use strict";class n{constructor(e={}){this._cache=e}set(e,t){this._cache[e]=t}get(e){return this._cache[e]}delete(e){return delete this._cache[e]}add(e){this._cache=Object.assign(this._cache,e)}get length(){return Object.values(this._cache).length}}e.exports=n},"086c":function(e,t,r){"use strict";const n=r("fb92").Errors,i=r("4bc2")("datastore:core:tiered");class s{constructor(e){this.stores=e.slice()}async open(){try{await this.stores.map(e=>e.open())}catch(e){throw n.dbOpenFailedError()}}async put(e,t){try{await Promise.all(this.stores.map(r=>r.put(e,t)))}catch(r){throw n.dbWriteFailedError()}}async get(e){for(const r of this.stores)try{const t=await r.get(e);if(t)return t}catch(t){i(t)}throw n.notFoundError()}has(e){return new Promise(async t=>{await Promise.all(this.stores.map(async r=>{const n=await r.has(e);n&&t(!0)})),t(!1)})}async delete(e){try{await Promise.all(this.stores.map(t=>t.delete(e)))}catch(t){throw n.dbDeleteFailedError()}}async close(){await Promise.all(this.stores.map(e=>e.close()))}batch(){const e=this.stores.map(e=>e.batch());return{put:(t,r)=>{e.forEach(e=>e.put(t,r))},delete:t=>{e.forEach(e=>e.delete(t))},commit:async()=>{for(const t of e)await t.commit()}}}query(e){return this.stores[this.stores.length-1].query(e)}}e.exports=s},"087c":function(e,t){var r=1e3,n=60*r,i=60*n,s=24*i,o=365.25*s;function a(e){if(e=String(e),!(e.length>100)){var t=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(t){var a=parseFloat(t[1]),c=(t[2]||"ms").toLowerCase();switch(c){case"years":case"year":case"yrs":case"yr":case"y":return a*o;case"days":case"day":case"d":return a*s;case"hours":case"hour":case"hrs":case"hr":case"h":return a*i;case"minutes":case"minute":case"mins":case"min":case"m":return a*n;case"seconds":case"second":case"secs":case"sec":case"s":return a*r;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return a;default:return}}}}function c(e){return e>=s?Math.round(e/s)+"d":e>=i?Math.round(e/i)+"h":e>=n?Math.round(e/n)+"m":e>=r?Math.round(e/r)+"s":e+"ms"}function u(e){return l(e,s,"day")||l(e,i,"hour")||l(e,n,"minute")||l(e,r,"second")||e+" ms"}function l(e,t,r){if(!(e0)return a(e);if("number"===r&&!1===isNaN(e))return t.long?u(e):c(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},"08df":function(e,t,r){var n=r("91f5"),i=r("0d0f");e.exports=n,e.exports.parse=n,e.exports.stringify=i},"0909":function(e,t,r){"use strict";t.deepEqual=(e,t)=>{const r=Object.getOwnPropertyNames(e),n=Object.getOwnPropertyNames(t);if(r.length!==n.length)return!1;for(let i=0;i{const t=n();if("function"===typeof e)return e;if("object"===typeof e)return i(e);if("string"===typeof e){const r=s(e).nodeAddress();return t.host=r.address,t.port=r.port,i(t)}throw new Error("Argument must be a send function or a config object.")}},"0937":function(e,t,r){var n=r("f64a"),i="object"==typeof self&&self&&self.Object===Object&&self,s=n||i||Function("return this")();e.exports=s},"0948":function(e,t,r){"use strict";const n=r("cd6d"),i=r("dacf");class s extends n{constructor(e,t,r,n){n||(n={}),n.Index||Object.assign(n,{Index:i}),super(e,t,r,n),this._type="feed"}remove(e,t={}){return this.del(e,t)}del(e,t={}){const r={op:"DEL",key:null,value:e};return this._addOperation(r,t)}}e.exports=s},"097a":function(e,t,r){"use strict";const n=self.crypto||self.msCrypto,{Buffer:i}=r("b639"),s=65536;function o(){throw new Error("Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11")}function a(e){const t=new Uint8Array(e);let r=0;if(e>0)if(e>s)while(re?(n.getRandomValues(t.subarray(r,r+(e-r))),r+=e-r):(n.getRandomValues(t.subarray(r,r+s)),r+=s);else n.getRandomValues(t);return i.from(t)}n&&n.getRandomValues?e.exports=a:e.exports=o},"09a4":function(e,t){function r(e){var t=e.length;return function(){var r=[].slice.call(arguments),n=this;if(r.length!==t+1||"function"!==typeof r[t])return e.apply(n,arguments);var i=r.pop();e.apply(this,r).then((function(e){i.call(n,null,e)}),(function(e){i.call(n,e)}))}}function n(e){return function(){var t=[].slice.call(arguments),r=this;if(!(t.length>=1&&"function"===typeof t[t.length-1]))return e.apply(r,arguments);var n=t.pop();e.apply(this,t).then((function(e){n.call(r,null,e)}),(function(e){n.call(r,e)}))}}e.exports=r,e.exports.variadic=n},"0a3d":function(e,t,r){"use strict";const n=r("e62b"),i=r("09a4");e.exports=function(e){return i(async()=>{const t=await e.repo.version();return{version:n.version,repo:t,commit:""}})}},"0a4a":function(e,t,r){"use strict";var n=r("4ea4"),i=n(r("a34a")),s=n(r("c973")),o=r("3337"),a=r("b0e4"),c=new o.ec("secp256k1");function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:64;return e.length===t?e:"0".repeat(t-e.length)+e}function l(e){var t=c.keyFromPrivate(e);return(function(){var e=(0,s.default)(i.default.mark((function e(r){var n,s,o,c;return i.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return n=t.sign((0,a.sha256)(r)),s=n.r,o=n.s,c=n.recoveryParam,e.abrupt("return",{r:u(s.toString("hex")),s:u(o.toString("hex")),recoveryParam:c});case 2:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}())}e.exports=l},"0a86":function(e,t,r){"use strict";function n(e){return e}var i=r("64f1"),s=r("8e7a");e.exports=function(e,t){e=i(e)||n;var r={};return s((function(n){var i=e(n);return r[i]?!!t:(r[i]=!0,!t)}))}},"0ab6":function(e,t,r){var n=r("3053"),i=n.Global;function s(){return i.sessionStorage}function o(e){return s().getItem(e)}function a(e,t){return s().setItem(e,t)}function c(e){for(var t=s().length-1;t>=0;t--){var r=s().key(t);e(o(r),r)}}function u(e){return s().removeItem(e)}function l(){return s().clear()}e.exports={name:"sessionStorage",read:o,write:a,each:c,remove:u,clearAll:l}},"0aee":function(e,t,r){"use strict";class n{constructor(e){this.id=e,this._index=[]}get(){return this._index}async updateIndex(e,t){this._index=e.values}}e.exports=n},"0b0f":function(e,t,r){"use strict";e.exports="/mplex/6.7.0"},"0b0f7":function(e,t,r){var n=r("060c"),i=r("27de"),s=Object.prototype,o=s.hasOwnProperty;function a(e){if(!n(e))return i(e);var t=[];for(var r in Object(e))o.call(e,r)&&"constructor"!=r&&t.push(r);return t}e.exports=a},"0b22":function(e,t,r){var n=r("cc29"),i=r("6f55"),s="[object AsyncFunction]",o="[object Function]",a="[object GeneratorFunction]",c="[object Proxy]";function u(e){if(!i(e))return!1;var t=n(e);return t==o||t==a||t==s||t==c}e.exports=u},"0b54":function(e,t,r){"use strict";const n=(e,t,r)=>new Promise((n,i)=>{if(r=Object.assign({concurrency:1/0},r),"function"!==typeof t)throw new TypeError("Mapper function is required");const{concurrency:s}=r;if(!("number"===typeof s&&s>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${s}\` (${typeof s})`);const o=[],a=e[Symbol.iterator]();let c=!1,u=!1,l=0,h=0;const f=()=>{if(c)return;const e=a.next(),r=h;if(h++,e.done)return u=!0,void(0===l&&n(o));l++,Promise.resolve(e.value).then(e=>t(e,r)).then(e=>{o[r]=e,l--,f()},e=>{c=!0,i(e)})};for(let e=0;er?1:0};var s=t.lowerBoundKey=function(e){return i(e,"gt")||i(e,"gte")||i(e,"min")||(e.reverse?i(e,"end"):i(e,"start"))||void 0},o=t.lowerBound=function(e,t){var r=s(e);return r?e[r]:t},a=t.lowerBoundInclusive=function(e){return!n(e,"gt")},c=t.upperBoundInclusive=function(e){return!n(e,"lt")},u=t.lowerBoundExclusive=function(e){return!a(e)},l=t.upperBoundExclusive=function(e){return!c(e)},h=t.upperBoundKey=function(e){return i(e,"lt")||i(e,"lte")||i(e,"max")||(e.reverse?i(e,"start"):i(e,"end"))||void 0},f=t.upperBound=function(e,t){var r=h(e);return r?e[r]:t};function d(e){return e}t.start=function(e,t){return e.reverse?f(e,t):o(e,t)},t.end=function(e,t){return e.reverse?o(e,t):f(e,t)},t.startInclusive=function(e){return e.reverse?c(e):a(e)},t.endInclusive=function(e){return e.reverse?a(e):c(e)},t.toLtgt=function(e,r,i,s,o){r=r||{},i=i||d;var a=arguments.length>3,c=t.lowerBoundKey(e),u=t.upperBoundKey(e);return c?"gt"===c?r.gt=i(e.gt,!1):r.gte=i(e[c],!1):a&&(r.gte=i(s,!1)),u?"lt"===u?r.lt=i(e.lt,!0):r.lte=i(e[u],!0):a&&(r.lte=i(o,!0)),null!=e.reverse&&(r.reverse=!!e.reverse),n(r,"max")&&delete r.max,n(r,"min")&&delete r.min,n(r,"start")&&delete r.start,n(r,"end")&&delete r.end,r},t.contains=function(e,n,i){i=i||t.compare;var s=o(e);if(r(s)){var a=i(n,s);if(a<0||0===a&&u(e))return!1}var c=f(e);if(r(c)){a=i(n,c);if(a>0||0===a&&l(e))return!1}return!0},t.filter=function(e,r){return function(n){return t.contains(e,n,r)}}}).call(this,r("b639").Buffer)},"0bac":function(e,t){e.exports=n;var r=Object.prototype.hasOwnProperty;function n(){for(var e={},t=0;t>>t}function o(e,t){return n[e]&i[Math.min(t+e-1,7)]}e.exports=class{constructor(e){this._value=e,this._currentBytePos=e.length-1,this._currentBitPos=7}availableBits(){return this._currentBitPos+1+8*this._currentBytePos}totalBits(){return 8*this._value.length}take(e){let t=e,r=0;while(t&&this._haveBits()){const e=this._value[this._currentBytePos],n=this._currentBitPos+1,i=Math.min(n,t),o=s(e,n-i,i);r=(r<7)this._currentBitPos-=8,this._currentBytePos+=1}_haveBits(){return this._currentBytePos>=0}}},"0bd9":function(e,t){t.getCallback=function(e,t){return"function"===typeof e?e:t},t.getOptions=function(e){return"object"===typeof e&&null!==e?e:{}}},"0bda":function(e,t,r){const n=r("1421"),i=(e,t)=>t,s=(e,t,r,n)=>{if(n&&!1===n.assumeHttp)return`tcp://${e}:${t}`;let i="tcp",s=`:${t}`;const o=r[r.length-1];return"tcp"===o.protocol&&(i=443===t?"https":"http",s=443===t||80===t?"":s),`${i}://${e}${s}`},o={ip4:i,ip6:(e,t,r,n)=>1===n.length&&"ip6"===n[0].protocol?t:`[${t}]`,tcp:(e,t,r,n,i)=>n.some(e=>["http","https","ws","wss"].includes(e.protocol))?`${e}:${t}`:s(e,t,n,i),udp:(e,t)=>`udp://${e}:${t}`,dnsaddr:i,dns4:i,dns6:i,ipfs:(e,t)=>`${e}/ipfs/${t}`,p2p:(e,t)=>`${e}/p2p/${t}`,http:e=>`http://${e}`,https:e=>`https://${e}`,ws:e=>`ws://${e}`,wss:e=>`wss://${e}`,"p2p-websocket-star":e=>`${e}/p2p-websocket-star`,"p2p-webrtc-star":e=>`${e}/p2p-webrtc-star`,"p2p-webrtc-direct":e=>`${e}/p2p-webrtc-direct`};e.exports=(e,t)=>n(e).stringTuples().map(e=>({protocol:n.protocols.codes[e[0]].name,content:e[1]})).reduce((e,r,n,i)=>{const s=o[r.protocol];if(!s)throw new Error(`Unsupported protocol ${r.protocol}`);return s(e,r.content,n,i,t)},"")},"0c4e":function(e,t,r){var n=r("d7d8"),i=r("e0c5").Buffer,s=r("5190"),o=r("c3bb"),a=r("ad17"),c=r("ff48"),u=r("72e8");function l(e,t){var r=0;e.length!==t.length&&r++;for(var n=Math.min(e.length,t.length),i=0;i-1&&e%1==0&&e<=r}e.exports=n},"0c9a":function(e,t,r){"use strict";(function(n){const i=r("9efb"),s=r("ef89"),o=r("bd14"),a=r("1d74");t=e.exports,t.addPrefix=(e,t)=>{let r;if(n.isBuffer(e))r=a.varintBufferEncode(e);else{if(!s[e])throw new Error("multicodec not recognized");r=s[e]}return n.concat([r,t])},t.rmPrefix=e=>(i.decode(e),e.slice(i.decode.bytes)),t.getCodec=e=>{const t=a.varintBufferDecode(e),r=o[t.toString("hex")];if(void 0===r)throw new Error("Code `0x"+t.toString("hex")+"` not found");return r},t.getName=e=>o[e.toString(16)],t.getNumber=e=>{const t=s[e];if(void 0===t)throw new Error("Codec `"+e+"` not found");return a.varintBufferDecode(t)[0]},t.getCode=e=>i.decode(e),t.getCodeVarint=e=>{const t=s[e];if(void 0===t)throw new Error("Codec `"+e+"` not found");return t},t.getVarint=e=>i.encode(e);const c=r("ac5c");Object.assign(t,c),t.print=r("ed71")}).call(this,r("b639").Buffer)},"0ca2":function(e,t,r){"use strict";const{filter:n,sortAll:i,take:s,map:o}=r("8d3ff"),a=r("289f"),c=r("3be2");class u{constructor(){this.data={}}async open(){}async put(e,t){this.data[e.toString()]=t}async get(e){const t=await this.has(e);if(!t)throw c.notFoundError();return this.data[e.toString()]}async has(e){return void 0!==this.data[e.toString()]}async delete(e){delete this.data[e.toString()]}batch(){let e=[],t=[];return{put(t,r){e.push([t,r])},delete(e){t.push(e)},commit:async()=>{e.forEach(e=>{this.data[e[0].toString()]=e[1]}),e=[],t.forEach(e=>{delete this.data[e.toString()]}),t=[]}}}query(e){let t=Object.entries(this.data);if(t=o(t,e=>({key:new a(e[0]),value:e[1]})),null!=e.prefix&&(t=n(t,t=>t.key.toString().startsWith(e.prefix))),Array.isArray(e.filters)&&(t=e.filters.reduce((e,t)=>n(e,t),t)),Array.isArray(e.orders)&&(t=e.orders.reduce((e,t)=>i(e,t),t)),null!=e.offset){let r=0;t=n(t,()=>r++>=e.offset)}return null!=e.limit&&(t=s(t,e.limit)),!0===e.keysOnly&&(t=o(t,e=>({key:e.key}))),t}async close(){}}e.exports=u},"0cb2":function(e,t){e.exports=function(e){var t=function(e){var t=e.indexOf("//");return t>-1?e.slice(0,t):e},r=function(){var e=!1;return function(t){return"/*"===t?(e=!0,!1):"*/"===t?(e=!1,!1):!e}},n=function(e){return e.trim()};return e.replace(/([;,{}()=:[\]<>]|\/\*|\*\/)/g," $1 ").split(/\n/).map(n).filter(Boolean).map(t).map(n).filter(Boolean).join("\n").split(/\s+|\n+/gm).filter(r())}},"0cc4":function(e,t,r){const n=r("df7c"),i=r("b8ba"),s=r("c807"),o=r("aea9"),a=o.create("orbit-db");async function c(e,t,r){let o,c=e.caches[t.directory]?e.caches[t.directory].cache:null;if(!c){const t=(n.posix||n).join(e.directory,r.root,r.path);if(i&&i.existsSync&&!i.existsSync(t))return;o=await e.storage.createStore(t),c=new s(o)}const u=await c.get("_localHeads");if(!u)return;const l=r.toString();a.debug("Attempting to migrate from old cache location");const h=["_remoteHeads","_localHeads","snapshot","queue"];for(const i in h)try{const e=n.join(l,h[i]),r=await c.get(h[i]);r&&await t.cache.set(e,r)}catch(f){a.debug(f.message)}await t.cache.set(n.join(l,"_manifest"),r.root),o&&await o.close()}o.setLogLevel("ERROR"),e.exports=c},"0d05":function(e,t,r){"use strict";class n extends Error{constructor(e){super(e),this.name="LockExistsError",this.code=n.code}}n.code="ERR_LOCK_EXISTS",t.LockExistsError=n;class i extends Error{constructor(e){super(e),this.name="NotFoundError",this.code=i.code}}i.code="ERR_NOT_FOUND",t.NotFoundError=i;class s extends Error{constructor(e){super(e),this.name="InvalidRepoVersionError",this.code=s.code}}s.code="ERR_INVALID_REPO_VERSION",t.InvalidRepoVersionError=s,t.ERR_REPO_NOT_INITIALIZED="ERR_REPO_NOT_INITIALIZED",t.ERR_REPO_ALREADY_OPEN="ERR_REPO_ALREADY_OPEN",t.ERR_REPO_ALREADY_CLOSED="ERR_REPO_ALREADY_CLOSED"},"0d07":function(e,t){const r="moderator-access",n="MODERATOR",i="MEMBER";class s{constructor(e,t){this._capabilityTypes=[n],this._write=[],this._firstModerator=e,this._write.push(this._firstModerator),this._members=Boolean(t.members),this._members&&this._capabilityTypes.push(i),this._encKeyId=t.encKeyId}static get type(){return r}isMod(e){return this._write.includes(e)}isValidCapability(e){return this._capabilityTypes.includes(e)}get firstModerator(){return this._firstModerator}async canAppend(e,t){const r=e.identity.id,i=e.payload.value.capability,s=e.payload.value.id,o=this.isMod(r),a=this.isValidCapability(i),c=async()=>t.verifyIdentity(e.identity);if(o&&a&&await c()){if(i===n){if(s===this.firstModerator)return!0;this._write.push(s)}return!0}return!1}async load(e){const t=e.split("/"),r=t.pop();this._members="members"===r;const n=r.includes("mod")?r:t.pop();this._firstModerator=n.split("_")[1]}async save(){let e=`${r}/mod_${this._firstModerator}`;e+=this._members?"/members":"";const t={address:e};return this._encKeyId&&(t.encKeyId=this._encKeyId),t}static async create(e,t={}){let r,n,i;if(t.address?(n=t.address.includes("members"),r=t.address.split("/")[1].split("_")[1],i=t.encKeyId):(n=t.members,r=t.firstModerator,i=t.encKeyId),!r)throw new Error("Moderator AC: firstModerator required");return new s(r,{members:n,encKeyId:i})}}e.exports=s},"0d0f":function(e,t){var r=function(e,t){var r=e.repeated?"repeated":e.required?"required":"optional";"map"===e.type&&(r="map<"+e.map.from+","+e.map.to+">"),e.oneof&&(r="");var n=Object.keys(e.options||{}).map((function(t){return t+" = "+e.options[t]})).join(",");return n&&(n=" ["+n+"]"),t.push((r?r+" ":"")+("map"===e.map?"":e.type+" ")+e.name+" = "+e.tag+n+";"),t},n=function(e,t){t.push("message "+e.name+" {"),e.options||(e.options={}),o(e.options,t),e.enums||(e.enums=[]),e.enums.forEach((function(e){t.push(i(e,[]))})),e.messages||(e.messages=[]),e.messages.forEach((function(e){t.push(n(e,[]))}));var s={};return e.fields||(e.fields=[]),e.fields.forEach((function(e){e.oneof?(s[e.oneof]||(s[e.oneof]=[]),s[e.oneof].push(r(e,[]))):t.push(r(e,[]))})),Object.keys(s).forEach((function(e){s[e].unshift("oneof "+e+" {"),s[e].push("}"),t.push(s[e])})),t.push("}",""),t},i=function(e,t){t.push("enum "+e.name+" {"),e.options||(e.options={});var r=o(e.options,[]);return r.length>1&&t.push(r.slice(0,-1)),Object.keys(e.values).map((function(r){var n=s(e.values[r]);t.push([r+" = "+n+";"])})),t.push("}",""),t},s=function(e,t){var r=Object.keys(e.options||{}).map((function(t){return t+" = "+e.options[t]})).join(",");r&&(r=" ["+r+"]");var n=e.value+r;return n},o=function(e,t){var r=Object.keys(e);return r.forEach((function(r){var n=e[r];~r.indexOf(".")&&(r="("+r+")");var i=typeof n;"object"===i?(n=a(n,[]),n.length&&t.push("option "+r+" = {",n,"};")):("string"===i&&"optimize_for"!==r&&(n='"'+n+'"'),t.push("option "+r+" = "+n+";"))})),r.length>0&&t.push(""),t},a=function(e,t){var r=Object.keys(e);return r.forEach((function(r){var n=e[r],i=typeof n;"object"===i?Array.isArray(n)?n.forEach((function(e){e=a(e,[]),e.length&&t.push(r+" {",e,"}")})):(n=a(n,[]),n.length&&t.push(r+" {",n,"}")):("string"===i&&(n='"'+n+'"'),t.push(r+": "+n))})),t},c=function(e,t){return t.push("service "+e.name+" {"),e.options||(e.options={}),o(e.options,t),e.methods||(e.methods=[]),e.methods.forEach((function(e){t.push(u(e,[]))})),t.push("}",""),t},u=function(e,t){var r="rpc "+e.name+"(";e.client_streaming&&(r+="stream "),r+=e.input_type+") returns (",e.server_streaming&&(r+="stream "),r+=e.output_type+")",e.options||(e.options={});var n=o(e.options,[]);return n.length>1?t.push(r+" {",n.slice(0,-1),"}"):t.push(r+";"),t},l=function(e){return function(t){return Array.isArray(t)?t.map(l(e+" ")).join("\n"):e+t}};e.exports=function(e){var t=[];return t.push('syntax = "proto'+e.syntax+'";',""),e.package&&t.push("package "+e.package+";",""),e.options||(e.options={}),o(e.options,t),e.enums||(e.enums=[]),e.enums.forEach((function(e){i(e,t)})),e.messages||(e.messages=[]),e.messages.forEach((function(e){n(e,t)})),e.services&&e.services.forEach((function(e){c(e,t)})),t.map(l("")).join("\n")}},"0d8d":function(e,t,r){"use strict";e.exports={DENY_TTL:3e5,DENY_ATTEMPTS:5,DIAL_TIMEOUT:3e4,MAX_COLD_CALLS:50,MAX_PARALLEL_DIALS:100,QUARTER_HOUR:9e5,PRIORITY_HIGH:10,PRIORITY_LOW:20}},"0dad":function(e,t,r){"use strict";var n,i="object"===typeof window&&(window.crypto||window.msCrypto);n=i&&i.getRandomValues?function(e){return i.getRandomValues(new Uint8Array(e))}:function(e){for(var t=[],r=0;r0)if(e>s)while(re?(n.getRandomValues(t.subarray(r,r+(e-r))),r+=e-r):(n.getRandomValues(t.subarray(r,r+s)),r+=s);else n.getRandomValues(t);return i.from(t)}n&&n.getRandomValues?e.exports=a:e.exports=o},"0e3e":function(e,t,r){"use strict";class n{constructor(e,t){this._refCounter=1,this.cid=e,this.priority=t||1}inc(){this._refCounter+=1}dec(){this._refCounter=Math.max(0,this._refCounter-1)}hasRefs(){return this._refCounter>0}get[Symbol.toStringTag](){const e=this.cid.toString("base58btc");return`WantlistEntry `}equals(e){return this._refCounter===e._refCounter&&this.cid.equals(e.cid)&&this.priority===e.priority}}e.exports=n},"0e54":function(e,t,r){var n=r("3053"),i=n.Global,s=n.trim;e.exports={name:"cookieStorage",read:a,write:u,each:c,remove:l,clearAll:h};var o=i.document;function a(e){if(!e||!f(e))return null;var t="(?:^|.*;\\s*)"+escape(e).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(o.cookie.replace(new RegExp(t),"$1"))}function c(e){for(var t=o.cookie.split(/; ?/g),r=t.length-1;r>=0;r--)if(s(t[r])){var n=t[r].split("="),i=unescape(n[0]),a=unescape(n[1]);e(a,i)}}function u(e,t){e&&(o.cookie=escape(e)+"="+escape(t)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/")}function l(e){e&&f(e)&&(o.cookie=escape(e)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function h(){c((function(e,t){l(t)}))}function f(e){return new RegExp("(?:^|;\\s*)"+escape(e).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(o.cookie)}},"0e54e":function(e,t,r){"use strict";function n(e,t,r){var n,i=e instanceof Error?e:new Error(e);if("object"===typeof t?r=t:null!=t&&(i.code=t),r)for(n in r)i[n]=r[n];return i}e.exports=n},"0e5c":function(e,t,r){var n=r("5995");r("31a0"),n.cipher=n.cipher||{};var i=e.exports=n.cipher.modes=n.cipher.modes||{};function s(e){if("string"===typeof e&&(e=n.util.createBuffer(e)),n.util.isArray(e)&&e.length>4){var t=e;e=n.util.createBuffer();for(var r=0;r0))return!0;for(var n=0;n0))return!0;for(var n=0;n0)return!1;var r=e.length(),n=e.at(r-1);return!(n>this.blockSize<<2)&&(e.truncate(n),!0)},i.cbc=function(e){e=e||{},this.name="CBC",this.cipher=e.cipher,this.blockSize=e.blockSize||16,this._ints=this.blockSize/4,this._inBlock=new Array(this._ints),this._outBlock=new Array(this._ints)},i.cbc.prototype.start=function(e){if(null===e.iv){if(!this._prev)throw new Error("Invalid IV parameter.");this._iv=this._prev.slice(0)}else{if(!("iv"in e))throw new Error("Invalid IV parameter.");this._iv=s(e.iv),this._prev=this._iv.slice(0)}},i.cbc.prototype.encrypt=function(e,t,r){if(e.length()0))return!0;for(var n=0;n0))return!0;for(var n=0;n0)return!1;var r=e.length(),n=e.at(r-1);return!(n>this.blockSize<<2)&&(e.truncate(n),!0)},i.cfb=function(e){e=e||{},this.name="CFB",this.cipher=e.cipher,this.blockSize=e.blockSize||16,this._ints=this.blockSize/4,this._inBlock=null,this._outBlock=new Array(this._ints),this._partialBlock=new Array(this._ints),this._partialOutput=n.util.createBuffer(),this._partialBytes=0},i.cfb.prototype.start=function(e){if(!("iv"in e))throw new Error("Invalid IV parameter.");this._iv=s(e.iv),this._inBlock=this._iv.slice(0),this._partialBytes=0},i.cfb.prototype.encrypt=function(e,t,r){var n=e.length();if(0===n)return!0;if(this.cipher.encrypt(this._inBlock,this._outBlock),0===this._partialBytes&&n>=this.blockSize)for(var i=0;i0&&(s=this.blockSize-s),this._partialOutput.clear();for(i=0;i0)e.read-=this.blockSize;else for(i=0;i0&&this._partialOutput.getBytes(this._partialBytes),s>0&&!r)return t.putBytes(this._partialOutput.getBytes(s-this._partialBytes)),this._partialBytes=s,!0;t.putBytes(this._partialOutput.getBytes(n-this._partialBytes)),this._partialBytes=0}},i.cfb.prototype.decrypt=function(e,t,r){var n=e.length();if(0===n)return!0;if(this.cipher.encrypt(this._inBlock,this._outBlock),0===this._partialBytes&&n>=this.blockSize)for(var i=0;i0&&(s=this.blockSize-s),this._partialOutput.clear();for(i=0;i0)e.read-=this.blockSize;else for(i=0;i0&&this._partialOutput.getBytes(this._partialBytes),s>0&&!r)return t.putBytes(this._partialOutput.getBytes(s-this._partialBytes)),this._partialBytes=s,!0;t.putBytes(this._partialOutput.getBytes(n-this._partialBytes)),this._partialBytes=0}},i.ofb=function(e){e=e||{},this.name="OFB",this.cipher=e.cipher,this.blockSize=e.blockSize||16,this._ints=this.blockSize/4,this._inBlock=null,this._outBlock=new Array(this._ints),this._partialOutput=n.util.createBuffer(),this._partialBytes=0},i.ofb.prototype.start=function(e){if(!("iv"in e))throw new Error("Invalid IV parameter.");this._iv=s(e.iv),this._inBlock=this._iv.slice(0),this._partialBytes=0},i.ofb.prototype.encrypt=function(e,t,r){var n=e.length();if(0===e.length())return!0;if(this.cipher.encrypt(this._inBlock,this._outBlock),0===this._partialBytes&&n>=this.blockSize)for(var i=0;i0&&(s=this.blockSize-s),this._partialOutput.clear();for(i=0;i0)e.read-=this.blockSize;else for(i=0;i0&&this._partialOutput.getBytes(this._partialBytes),s>0&&!r)return t.putBytes(this._partialOutput.getBytes(s-this._partialBytes)),this._partialBytes=s,!0;t.putBytes(this._partialOutput.getBytes(n-this._partialBytes)),this._partialBytes=0}},i.ofb.prototype.decrypt=i.ofb.prototype.encrypt,i.ctr=function(e){e=e||{},this.name="CTR",this.cipher=e.cipher,this.blockSize=e.blockSize||16,this._ints=this.blockSize/4,this._inBlock=null,this._outBlock=new Array(this._ints),this._partialOutput=n.util.createBuffer(),this._partialBytes=0},i.ctr.prototype.start=function(e){if(!("iv"in e))throw new Error("Invalid IV parameter.");this._iv=s(e.iv),this._inBlock=this._iv.slice(0),this._partialBytes=0},i.ctr.prototype.encrypt=function(e,t,r){var n=e.length();if(0===n)return!0;if(this.cipher.encrypt(this._inBlock,this._outBlock),0===this._partialBytes&&n>=this.blockSize)for(var i=0;i0&&(s=this.blockSize-s),this._partialOutput.clear();for(i=0;i0&&(e.read-=this.blockSize),this._partialBytes>0&&this._partialOutput.getBytes(this._partialBytes),s>0&&!r)return t.putBytes(this._partialOutput.getBytes(s-this._partialBytes)),this._partialBytes=s,!0;t.putBytes(this._partialOutput.getBytes(n-this._partialBytes)),this._partialBytes=0}o(this._inBlock)},i.ctr.prototype.decrypt=i.ctr.prototype.encrypt,i.gcm=function(e){e=e||{},this.name="GCM",this.cipher=e.cipher,this.blockSize=e.blockSize||16,this._ints=this.blockSize/4,this._inBlock=new Array(this._ints),this._outBlock=new Array(this._ints),this._partialOutput=n.util.createBuffer(),this._partialBytes=0,this._R=3774873600},i.gcm.prototype.start=function(e){if(!("iv"in e))throw new Error("Invalid IV parameter.");var t,r=n.util.createBuffer(e.iv);if(this._cipherLength=0,t="additionalData"in e?n.util.createBuffer(e.additionalData):n.util.createBuffer(),this._tagLength="tagLength"in e?e.tagLength:128,this._tag=null,e.decrypt&&(this._tag=n.util.createBuffer(e.tag).getBytes(),this._tag.length!==this._tagLength/8))throw new Error("Authentication tag does not match tag length.");this._hashBlock=new Array(this._ints),this.tag=null,this._hashSubkey=new Array(this._ints),this.cipher.encrypt([0,0,0,0],this._hashSubkey),this.componentBits=4,this._m=this.generateHashTable(this._hashSubkey,this.componentBits);var i=r.length();if(12===i)this._j0=[r.getInt32(),r.getInt32(),r.getInt32(),1];else{this._j0=[0,0,0,0];while(r.length()>0)this._j0=this.ghash(this._hashSubkey,this._j0,[r.getInt32(),r.getInt32(),r.getInt32(),r.getInt32()]);this._j0=this.ghash(this._hashSubkey,this._j0,[0,0].concat(a(8*i)))}this._inBlock=this._j0.slice(0),o(this._inBlock),this._partialBytes=0,t=n.util.createBuffer(t),this._aDataLength=a(8*t.length());var s=t.length()%this.blockSize;s&&t.fillWithByte(0,this.blockSize-s),this._s=[0,0,0,0];while(t.length()>0)this._s=this.ghash(this._hashSubkey,this._s,[t.getInt32(),t.getInt32(),t.getInt32(),t.getInt32()])},i.gcm.prototype.encrypt=function(e,t,r){var n=e.length();if(0===n)return!0;if(this.cipher.encrypt(this._inBlock,this._outBlock),0===this._partialBytes&&n>=this.blockSize){for(var i=0;i0&&(s=this.blockSize-s),this._partialOutput.clear();for(i=0;i0&&this._partialOutput.getBytes(this._partialBytes),s>0&&!r)return e.read-=this.blockSize,t.putBytes(this._partialOutput.getBytes(s-this._partialBytes)),this._partialBytes=s,!0;t.putBytes(this._partialOutput.getBytes(n-this._partialBytes)),this._partialBytes=0}this._s=this.ghash(this._hashSubkey,this._s,this._outBlock),o(this._inBlock)},i.gcm.prototype.decrypt=function(e,t,r){var n=e.length();if(n0))return!0;this.cipher.encrypt(this._inBlock,this._outBlock),o(this._inBlock),this._hashBlock[0]=e.getInt32(),this._hashBlock[1]=e.getInt32(),this._hashBlock[2]=e.getInt32(),this._hashBlock[3]=e.getInt32(),this._s=this.ghash(this._hashSubkey,this._s,this._hashBlock);for(var i=0;i0;--n)t[n]=e[n]>>>1|(1&e[n-1])<<31;t[0]=e[0]>>>1,r&&(t[0]^=this._R)},i.gcm.prototype.tableMultiply=function(e){for(var t=[0,0,0,0],r=0;r<32;++r){var n=r/8|0,i=e[n]>>>4*(7-r%8)&15,s=this._m[r][i];t[0]^=s[0],t[1]^=s[1],t[2]^=s[2],t[3]^=s[3]}return t},i.gcm.prototype.ghash=function(e,t,r){return t[0]^=r[0],t[1]^=r[1],t[2]^=r[2],t[3]^=r[3],this.tableMultiply(t)},i.gcm.prototype.generateHashTable=function(e,t){for(var r=8/t,n=4*r,i=16*r,s=new Array(i),o=0;o>>1,i=new Array(r);i[n]=e.slice(0);var s=n>>>1;while(s>0)this.pow(i[2*s],i[s]=[]),s>>=1;s=2;while(s{const n=a.createHash(t),i=await n(e);return r?i.slice(0,r):i},a.createHash=function(e){if(!e)throw i("hash algorithm must be specified","ERR_HASH_ALGORITHM_NOT_SPECIFIED");if(e=s.coerceCode(e),!a.functions[e])throw i(`multihash function '${e}' not yet supported`,"ERR_HASH_ALGORITHM_NOT_SUPPORTED");return a.functions[e]},a.functions={17:o.sha1,18:o.sha2256,19:o.sha2512,20:o.sha3512,21:o.sha3384,22:o.sha3256,23:o.sha3224,24:o.shake128,25:o.shake256,26:o.keccak224,27:o.keccak256,28:o.keccak384,29:o.keccak512,34:o.murmur3128,35:o.murmur332,86:o.dblSha2256},o.addBlake(a.functions),a.validate=async(e,t)=>{const r=await a(e,s.decode(t).name);return 0===n.compare(t,r)},e.exports=a},"0ead":function(e,t){var r=1e3,n=60*r,i=60*n,s=24*i,o=365.25*s;function a(e){if(e=String(e),!(e.length>100)){var t=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(t){var a=parseFloat(t[1]),c=(t[2]||"ms").toLowerCase();switch(c){case"years":case"year":case"yrs":case"yr":case"y":return a*o;case"days":case"day":case"d":return a*s;case"hours":case"hour":case"hrs":case"hr":case"h":return a*i;case"minutes":case"minute":case"mins":case"min":case"m":return a*n;case"seconds":case"second":case"secs":case"sec":case"s":return a*r;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return a;default:return}}}}function c(e){return e>=s?Math.round(e/s)+"d":e>=i?Math.round(e/i)+"h":e>=n?Math.round(e/n)+"m":e>=r?Math.round(e/r)+"s":e+"ms"}function u(e){return l(e,s,"day")||l(e,i,"hour")||l(e,n,"minute")||l(e,r,"second")||e+" ms"}function l(e,t,r){if(!(e0)return a(e);if("number"===r&&!1===isNaN(e))return t.long?u(e):c(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},"0ebf":function(e,t,r){"use strict";const n=r("ba68"),i=r("d58b"),s=r("5fc2");e.exports=e=>t=>{t=t||{};const r=new n.PassThrough({objectMode:!0});return e({path:"refs/local",qs:t},(e,t)=>{if(e)return r.destroy(e);t.once("error",e=>r.destroy(e)),i(t,s.obj((function(e,t,r){r(null,{ref:e.Ref,err:e.Err})})),r)}),r}},"0eff":function(e,t,r){"use strict";(function(t){const n=r("c449"),i=r("f654"),s=r("ec12");class o{constructor(e,t,r){i(r,"A link requires a cid to point to"),this._name=e||"",this._nameBuf=null,this._size=t,this._cid=new n(r)}toString(){return`DAGLink <${this._cid.toBaseEncodedString()} - name: "${this.Name}", size: ${this.Tsize}>`}toJSON(){return this._json||(this._json=Object.freeze({name:this.Name,size:this.Tsize,cid:this.Hash.toBaseEncodedString()})),Object.assign({},this._json)}get Name(){return this._name}get nameAsBuffer(){return null!==this._nameBuf?this._nameBuf:(this._nameBuf=t.from(this._name),this._nameBuf)}set Name(e){throw new Error("Can't set property: 'name' is immutable")}get Tsize(){return this._size}set Tsize(e){throw new Error("Can't set property: 'size' is immutable")}get Hash(){return this._cid}set Hash(e){throw new Error("Can't set property: 'cid' is immutable")}}e.exports=s(o,{className:"DAGLink",symbolName:"@ipld/js-ipld-dag-pb/daglink"})}).call(this,r("b639").Buffer)},"0f0b":function(e,t,r){var n=r("7a03"),i="__lodash_hash_undefined__";function s(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=n&&void 0===t?i:t,this}e.exports=s},"0f11":function(e,t,r){"use strict";var n=r("f40b"),i=r.n(n);i.a},"0f56":function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r("549e"),i=r("c1f1");function s(e,t,r,s,o){var a;e=n.arrayify(e),t=n.arrayify(t);var c,u,l=1,h=new Uint8Array(s),f=new Uint8Array(t.length+4);f.set(t);for(var d=1;d<=l;d++){f[t.length]=d>>24&255,f[t.length+1]=d>>16&255,f[t.length+2]=d>>8&255,f[t.length+3]=255&d;var p=n.arrayify(i.computeHmac(o,e,f));a||(a=p.length,u=new Uint8Array(a),l=Math.ceil(s/a),c=s-(l-1)*a),u.set(p);for(var y=1;y{const t=e.toString().split("/").pop();return"_access"===t?e:n.join(e,"/_access")};e.exports=i},"0f7e":function(e,t,r){"use strict";t.create=function(e,t,r){const n=r.storageBackends[e],i=Object.assign({},r.storageBackendOptions[e]||{});return new n(t,i)}},"0f8a":function(e,t,r){"use strict";e.exports=r("2bdd")},"0fc0":function(e,t,r){"use strict";(function(t){const n=r("ec12"),i=r("23bc"),s=r("0eff"),{serializeDAGNode:o}=r("f140"),a=r("adf6"),c=r("4706"),u=r("3e7a");class l{constructor(e,r=[],n=null){if(e||(e=t.alloc(0)),"string"===typeof e&&(e=t.from(e)),!t.isBuffer(e))throw new Error("Passed 'data' is not a buffer or a string!");if(null!==n&&"number"!==typeof n)throw new Error("Passed 'serializedSize' must be a number!");r=r.map(e=>s.isDAGLink(e)?e:s.util.createDagLinkFromB58EncodedHash(e)),r=i(r),this._data=e,this._links=r,this._serializedSize=n,this._size=null}toJSON(){return this._json||(this._json=Object.freeze({data:this.Data,links:this._links.map(e=>e.toJSON()),size:this.size})),Object.assign({},this._json)}toString(){return`DAGNode `}_invalidateCached(){this._serializedSize=null,this._size=null}addLink(e){return this._invalidateCached(),c(this,e)}rmLink(e){return this._invalidateCached(),u(this,e)}toDAGLink(e){return a(this,e)}serialize(){return o({Data:this._data,Links:this._links})}get size(){return null===this._size&&(null===this._serializedSize&&(this._serializedSize=this.serialize().length),this._size=this._links.reduce((e,t)=>e+t.Tsize,this._serializedSize)),this._size}set size(e){throw new Error("Can't set property: 'size' is immutable")}get Data(){return this._data}set Data(e){throw new Error("Can't set property: 'Data' is immutable")}get Links(){return this._links.map(e=>({Name:e.Name,Tsize:e.Tsize,Hash:e.Hash}))}set Links(e){throw new Error("Can't set property: 'Links' is immutable")}}e.exports=n(l,{className:"DAGNode",symbolName:"@ipld/js-ipld-dag-pb/dagnode"})}).call(this,r("b639").Buffer)},10:function(e,t){},1005:function(e,t,r){"use strict";(function(t){const n=r("021d"),i=r("87dd"),s="/",o=t.from(s),a=o[0];class c{constructor(e,r){if("string"===typeof e?this._buf=t.from(e):t.isBuffer(e)&&(this._buf=e),null==r&&(r=!0),r&&this.clean(),0===this._buf.length||this._buf[0]!==a)throw new Error(`Invalid key: ${this.toString()}`)}toString(e){return this._buf.toString(e||"utf8")}toBuffer(){return this._buf}get[Symbol.toStringTag](){return`[Key ${this.toString()}]`}static withNamespaces(e){return new h(e.join(s))}static random(){return new h(n().replace(/-/g,""))}clean(){this._buf&&0!==this._buf.length||(this._buf=t.from(s)),this._buf[0]!==a&&(this._buf=t.concat([o,this._buf]));while(this._buf.length>1&&this._buf[this._buf.length-1]===a)this._buf=this._buf.slice(0,-1)}less(e){const t=this.list(),r=e.list();for(let n=0;ni)return!1}return t.length{const c=s[e];if(!c)return a(new Error("unkown cipherType passed"));if(!r)return a(new Error("unkown hashType passed"));const u=c.keySize,l=c.ivSize,h=20,f=t.from("key expansion"),d=2*(l+u+h);i.create(r,o,(e,r)=>{if(e)return a(e);r.digest(f,(e,i)=>{if(e)return a(e);const s=[];let o=0;function c(e){r.digest(t.concat([i,f]),(t,n)=>{if(t)return e(t);let a=n.length;o+a>d&&(a=d-o),s.push(n),o+=a,r.digest(i,(t,r)=>{if(t)return e(t);i=r,e()})})}function h(e){if(e)return a(e);const r=d/2,n=t.concat(s),i=n.slice(0,r),o=n.slice(r,d),c=e=>({iv:e.slice(0,l),cipherKey:e.slice(l,l+u),macKey:e.slice(l+u)});a(null,{k1:c(i),k2:c(o)})}n(()=>o{const t=new n.Encoder;return new i("/"+t.write(e.buffer).finalize(),!1)},t.keyToCid=t=>{const r=new n.Decoder,i=r.write(t.toString().slice(1)).finalize();return new s(e.from(i))}}).call(this,r("b639").Buffer)},"10b2":function(e,t,r){"use strict";(function(t){var n=r("4ea4"),i=n(r("970b")),s=n(r("5bc3")),o=r("f002"),a=o.HDNode,c=r("f28a");c.util=r("427a");var u=r("a886").SimpleSigner,l=r("aaed"),h=l.sha256,f=r("3337").ec,d=new f("secp256k1"),p=r("a4d1"),y=p.randomNonce,g=p.symEncryptBase,m=p.symDecryptBase,b="m/7696500'/0'/0'",v="m/44'/60'/0'/0",w=function(){function e(r){(0,i["default"])(this,e),this._seed=r;var n=a.fromSeed(this._seed),s=n.derivePath(b);this.signingKey=s.derivePath("0");var o=t.from(s.derivePath("2").privateKey.slice(2),"hex");this.asymEncryptionKey=c.box.keyPair.fromSecretKey(new Uint8Array(o)),this.symEncryptionKey=new Uint8Array(t.from(s.derivePath("3").privateKey.slice(2),"hex")),this.ethereumKey=n.derivePath(v).derivePath("0")}return(0,s["default"])(e,[{key:"asymEncrypt",value:function(e,t,r){r=r||y(),t=c.util.decodeBase64(t),"string"===typeof e&&(e=c.util.decodeUTF8(e));var n=c.box.keyPair(),i=c.box(e,r,t,n.secretKey);return{nonce:c.util.encodeBase64(r),ephemeralFrom:c.util.encodeBase64(n.publicKey),ciphertext:c.util.encodeBase64(i)}}},{key:"asymDecrypt",value:function(e,r,n,i){r=c.util.decodeBase64(r),e=c.util.decodeBase64(e),n=c.util.decodeBase64(n);var s=c.box.open(e,n,r,this.asymEncryptionKey.secretKey);return i?s?t.from(s):null:s?c.util.encodeUTF8(s):null}},{key:"symEncrypt",value:function(e,t){return g(e,this.symEncryptionKey,t)}},{key:"symDecrypt",value:function(e,t,r){return m(e,this.symEncryptionKey,t,r)}},{key:"getJWTSigner",value:function(){return u(this.signingKey.privateKey.slice(2))}},{key:"getDBSalt",value:function(){return h(this.signingKey.derivePath("0").privateKey.slice(2))}},{key:"getPublicKeys",value:function(t){var r=this.signingKey.publicKey.slice(2),n=this.ethereumKey.publicKey.slice(2);return t&&(r=e.uncompress(r),n=e.uncompress(n)),{signingKey:r,ethereumKey:n,asymEncryptionKey:c.util.encodeBase64(this.asymEncryptionKey.publicKey)}}},{key:"serialize",value:function(){return this._seed}}],[{key:"uncompress",value:function(e){return d.keyFromPublic(t.from(e,"hex")).getPublic(!1,"hex")}}]),e}();e.exports=w}).call(this,r("b639").Buffer)},"10d4":function(e,t,r){"use strict";const n=r("df7c"),i=r("3c43"),s=r("021d");t.filter=(e,t)=>async function*(){for await(const r of e){const e=await t(r);e&&(yield r)}}(),t.sortAll=(e,t)=>async function*(){let r=[];for await(const t of e)r.push(t);r=await t(r);for(const e of r)yield e}(),t.take=(e,t)=>async function*(){if(t<=0)return;let r=0;for await(const n of e)if(yield n,r++,r>=t)return}(),t.map=(e,t)=>async function*(){for await(const r of e)yield t(r)}(),t.replaceStartWith=function(e,t){const r=new RegExp("^"+t);return e.replace(r,"")},t.tmpdir=()=>n.join(i.tmpdir(),s())},"10d9":function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r("2835"),i=r("7ce5"),s=r("aaf3"),o=()=>{},a=new i.TimeoutError;class c extends n{constructor(e){if(super(),Object.defineProperty(this,"_carryoverConcurrencyCount",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_isIntervalIgnored",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_intervalCount",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"_intervalCap",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_interval",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_intervalEnd",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"_intervalId",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_timeoutId",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_queue",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_queueClass",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_pendingCount",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"_concurrency",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_isPaused",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_resolveEmpty",{enumerable:!0,configurable:!0,writable:!0,value:o}),Object.defineProperty(this,"_resolveIdle",{enumerable:!0,configurable:!0,writable:!0,value:o}),Object.defineProperty(this,"_timeout",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_throwOnTimeout",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),e=Object.assign({carryoverConcurrencyCount:!1,intervalCap:1/0,interval:0,concurrency:1/0,autoStart:!0,queueClass:s.default},e),!("number"===typeof e.intervalCap&&e.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${e.intervalCap}\` (${typeof e.intervalCap})`);if(void 0===e.interval||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${e.interval}\` (${typeof e.interval})`);this._carryoverConcurrencyCount=e.carryoverConcurrencyCount,this._isIntervalIgnored=e.intervalCap===1/0||0===e.interval,this._intervalCap=e.intervalCap,this._interval=e.interval,this._queue=new e.queueClass,this._queueClass=e.queueClass,this.concurrency=e.concurrency,this._timeout=e.timeout,this._throwOnTimeout=!0===e.throwOnTimeout,this._isPaused=!1===e.autoStart}get _doesIntervalAllowAnother(){return this._isIntervalIgnored||this._intervalCount{this._onResumeInterval()},t)),!0;this._intervalCount=this._carryoverConcurrencyCount?this._pendingCount:0}return!1}_tryToStartAnother(){if(0===this._queue.size)return this._intervalId&&clearInterval(this._intervalId),this._intervalId=void 0,this._resolvePromises(),!1;if(!this._isPaused){const e=!this._isIntervalPaused();if(this._doesIntervalAllowAnother&&this._doesConcurrentAllowAnother)return this.emit("active"),this._queue.dequeue()(),e&&this._initializeIntervalIfNeeded(),!0}return!1}_initializeIntervalIfNeeded(){this._isIntervalIgnored||void 0!==this._intervalId||(this._intervalId=setInterval(()=>{this._onInterval()},this._interval),this._intervalEnd=Date.now()+this._interval)}_onInterval(){0===this._intervalCount&&0===this._pendingCount&&this._intervalId&&(clearInterval(this._intervalId),this._intervalId=void 0),this._intervalCount=this._carryoverConcurrencyCount?this._pendingCount:0,this._processQueue()}_processQueue(){while(this._tryToStartAnother());}get concurrency(){return this._concurrency}set concurrency(e){if(!("number"===typeof e&&e>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${e}\` (${typeof e})`);this._concurrency=e,this._processQueue()}async add(e,t={}){return new Promise((r,n)=>{const s=async()=>{this._pendingCount++,this._intervalCount++;try{const s=void 0===this._timeout&&void 0===t.timeout?e():i.default(Promise.resolve(e()),void 0===t.timeout?this._timeout:t.timeout,()=>{(void 0===t.throwOnTimeout?this._throwOnTimeout:t.throwOnTimeout)&&n(a)});r(await s)}catch(s){n(s)}this._next()};this._queue.enqueue(s,t),this._tryToStartAnother()})}async addAll(e,t){return Promise.all(e.map(async e=>this.add(e,t)))}start(){return this._isPaused?(this._isPaused=!1,this._processQueue(),this):this}pause(){this._isPaused=!0}clear(){this._queue=new this._queueClass}async onEmpty(){if(0!==this._queue.size)return new Promise(e=>{const t=this._resolveEmpty;this._resolveEmpty=()=>{t(),e()}})}async onIdle(){if(0!==this._pendingCount||0!==this._queue.size)return new Promise(e=>{const t=this._resolveIdle;this._resolveIdle=()=>{t(),e()}})}get size(){return this._queue.size}get pending(){return this._pendingCount}get isPaused(){return this._isPaused}set timeout(e){this._timeout=e}get timeout(){return this._timeout}}t.default=c},11:function(e,t){},1100:function(e,t,r){"use strict";var n=r("1631");e.exports=function(e,t,r){r||(r=t,t=null);var i=n((function(r){t=e(t,r)}),(function(e){r(e,t)}));return 2===arguments.length?function(e){e(null,(function(n,s){if(n)return r(!0===n?null:n);t=s,i(e)}))}:i}},"111a":function(e,t,r){"use strict";(function(e){const n=r("aac2"),i=r("0dec"),s=r("463c"),o=r("7b6d").Key,a=new o("version");async function c(e){if(!await i.isRepoInitialized(e))throw new n.NotInitializedRepoError(`Repo in path ${e} is not initialized!`);const t=new s(e,{extension:"",createIfMissing:!1});await t.open();const r=parseInt(await t.get(a));return await t.close(),r}async function u(t,r){const n=new s(t,{extension:"",createIfMissing:!1});await n.open(),await n.put(a,e.from(String(r))),await n.close()}t.getVersion=c,t.setVersion=u}).call(this,r("b639").Buffer)},1148:function(e,t,r){"use strict";var n=r("a691"),i=r("1d80");e.exports="".repeat||function(e){var t=String(i(this)),r="",s=n(e);if(s<0||s==1/0)throw RangeError("Wrong number of repetitions");for(;s>0;(s>>>=1)&&(t+=t))1&s&&(r+=t);return r}},"114e":function(e,t){e.exports=function(e,t){var r=e&&(e.removeEventListener||e.removeListener);function n(){"function"==typeof r&&(r.call(e,"open",i),r.call(e,"error",s))}function i(e){n(),t()}function s(e){n(),t(e)}return e.readyState>=2?t(!0):1===e.readyState?t():(e.addEventListener("open",i),void e.addEventListener("error",s))}},"11b0":function(e,t,r){function n(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}r("a4d3"),r("e01a"),r("d28b"),r("a630"),r("e260"),r("d3b7"),r("25f0"),r("3ca3"),r("ddb0"),e.exports=n},"11b1":function(e,t,r){"use strict";const n=/^((\d+(\.\d+)*)(ns|ms|us|µs|m|s|h))+$/,i=/((\d+(\.\d+)*)(ns|ms|us|µs|m|s|h))/g,s=/(ns|ms|us|µs|m|s|h)/g,o={ns:1e-6,us:.001,"µs":.001,ms:1,s:1e3,m:6e4,h:36e5};function a(e){let t=e.match(s)[0];return e=e.substring(0,e.length-t.length),parseFloat(e)*o[t]}e.exports=function(e){if("string"!==typeof e)throw new Error("the first argument must be a string");if(!n.test(e))throw new Error("invalid time");return e.match(i).reduce((e,t)=>e+a(t),0)}},"11ca":function(e,t,r){"use strict";const n=r("1c7ef"),i=n.cloneLinks,s=n.cloneData,o=n.toDAGLink,a=r("334b"),c=r("02f2"),u=r("70cf"),l=async e=>a.isDAGLink(e)?e:c.isDAGNode(e)?o(e,{}):new a(e.Name||e.name,e.Tsize||e.size,e.Hash||e.multihash||e.hash||e.cid),h=async(e,t)=>{const r=i(e),n=s(e),o=await l(t);return r.push(o),u(n,r)};e.exports=h},"11ce":function(e,t,r){(function(t){var n,i=r("2655");n="function"===typeof setImediate?setImediate:"object"===typeof t&&t&&t.nextTick?t.nextTick:function(e){setTimeout(e,0)};var s=[];function o(e){if(!(this instanceof o))return"function"===typeof e?new o(e):a();var t,r=!1,c=!1,u=[],l=!1;function h(e){u.length?(l=!0,u.shift()(e||!1)):l=!1}function f(e,i){return new o((function(s){function o(r){var o=c?e:i;if("function"===typeof o){function a(){var e;try{e=o(t)}catch(r){return s.reject(r),h()}s.fulfill(e),h(!0)}r?a():n(a)}else c?(s.fulfill(t),h(r)):(s.reject(t),h(r))}u.push(o),r&&!l&&h()}))}this.then=f,function(){function n(e){r||(i(e)?e.then(n,o):(r=c=!0,t=e,h()))}function o(e){r||(r=!0,c=!1,t=e,h())}for(var a={fulfill:n,reject:o},u=0;u{let r=i.deserialize(e);const s=t.split("/").filter(Boolean);while(s.length){const e=s.shift();if(void 0===r[e]){for(const t of r.Links)if(t.Name===e)return{value:t.Hash,remainderPath:s.join("/")};throw new Error(`Object has no property '${e}'`)}if(r=r[e],n.isCID(r))return{value:r,remainderPath:s.join("/")}}return{value:r,remainderPath:""}},t.tree=function*(e){const t=i.deserialize(e);yield"Data",yield"Links";for(let r=0;r",edges:" -> "}},13:function(e,t){},1304:function(e,t,r){"use strict";const n=r("8724"),i=r("609c"),s=r("59c5"),o=r("e730");t.Key=n,t.MemoryDatastore=i,t.utils=s,t.Errors=o},"131a":function(e,t,r){var n=r("23e7"),i=r("d2bb");n({target:"Object",stat:!0},{setPrototypeOf:i})},"131d":function(e,t,r){"use strict";const n=r("83fd").Errors,i=r("34eb")("datastore:core:tiered");class s{constructor(e){this.stores=e.slice()}async open(){try{await this.stores.map(e=>e.open())}catch(e){throw n.dbOpenFailedError()}}async put(e,t){try{await Promise.all(this.stores.map(r=>r.put(e,t)))}catch(r){throw n.dbWriteFailedError()}}async get(e){for(const r of this.stores)try{const t=await r.get(e);if(t)return t}catch(t){i(t)}throw n.notFoundError()}has(e){return new Promise(async t=>{await Promise.all(this.stores.map(async r=>{const n=await r.has(e);n&&t(!0)})),t(!1)})}async delete(e){try{await Promise.all(this.stores.map(t=>t.delete(e)))}catch(t){throw n.dbDeleteFailedError()}}async close(){await Promise.all(this.stores.map(e=>e.close()))}batch(){const e=this.stores.map(e=>e.batch());return{put:(t,r)=>{e.forEach(e=>e.put(t,r))},delete:t=>{e.forEach(e=>e.delete(t))},commit:async()=>{for(const t of e)await t.commit()}}}query(e){return this.stores[this.stores.length-1].query(e)}}e.exports=s},"132c":function(e,t,r){var n=r("5995");r("31a0"),r("8f53"),r("1b43");var i=e.exports=n.pkcs1=n.pkcs1||{};function s(e,t,r){r||(r=n.md.sha1.create());for(var i="",s=Math.ceil(t/r.digestLength),o=0;o>24&255,o>>16&255,o>>8&255,255&o);r.start(),r.update(e+a),i+=r.digest().getBytes()}return i.substring(0,t)}i.encode_rsa_oaep=function(e,t,r){var i,o,a,c;"string"===typeof r?(i=r,o=arguments[3]||void 0,a=arguments[4]||void 0):r&&(i=r.label||void 0,o=r.seed||void 0,a=r.md||void 0,r.mgf1&&r.mgf1.md&&(c=r.mgf1.md)),a?a.start():a=n.md.sha1.create(),c||(c=a);var u=Math.ceil(e.n.bitLength()/8),l=u-2*a.digestLength-2;if(t.length>l){var h=new Error("RSAES-OAEP input message length is too long.");throw h.length=t.length,h.maxLength=l,h}i||(i=""),a.update(i,"raw");for(var f=a.digest(),d="",p=l-t.length,y=0;y{const o=new n("directory"),a=new s(o.marshal(),[]),c=await i(a,t,r),u=e.path;return{cid:c,path:u,unixfs:o,node:a}};e.exports=o},1364:function(e){e.exports=JSON.parse('{"sha1":{"securityStrength":128,"outlen":160,"seedlen":440},"sha224":{"securityStrength":192,"outlen":224,"seedlen":440},"sha256":{"securityStrength":256,"outlen":256,"seedlen":440},"sha384":{"securityStrength":256,"outlen":384,"seedlen":888},"sha512":{"securityStrength":256,"outlen":512,"seedlen":888}}')},"13b0":function(e,t,r){(function(t,n){var i=r("53a8"),s=r("3eed"),o=r("46be"),a=r("7804"),c=Object.prototype.hasOwnProperty,u="start end gt gte lt lte".split(" ");function l(e){this.status="new",this.supports=s(e,{status:!0})}function h(e,t){var r={};for(var n in t)if(c.call(t,n)){var i=t[n];f(n)&&(i=e._serializeKey(i)),r[n]=i}return r}function f(e){return-1!==u.indexOf(e)}l.prototype.open=function(e,t){var r=this,n=this.status;if("function"===typeof e&&(t=e),"function"!==typeof t)throw new Error("open() requires a callback argument");"object"===typeof e&&null!==e||(e={}),e.createIfMissing=!1!==e.createIfMissing,e.errorIfExists=!!e.errorIfExists,this.status="opening",this._open(e,(function(e){if(e)return r.status=n,t(e);r.status="open",t()}))},l.prototype._open=function(e,r){t.nextTick(r)},l.prototype.close=function(e){var t=this,r=this.status;if("function"!==typeof e)throw new Error("close() requires a callback argument");this.status="closing",this._close((function(n){if(n)return t.status=r,e(n);t.status="closed",e()}))},l.prototype._close=function(e){t.nextTick(e)},l.prototype.get=function(e,r,n){if("function"===typeof r&&(n=r),"function"!==typeof n)throw new Error("get() requires a callback argument");var i=this._checkKey(e);if(i)return t.nextTick(n,i);e=this._serializeKey(e),"object"===typeof r&&null!==r||(r={}),r.asBuffer=!1!==r.asBuffer,this._get(e,r,n)},l.prototype._get=function(e,r,n){t.nextTick((function(){n(new Error("NotFound"))}))},l.prototype.put=function(e,r,n,i){if("function"===typeof n&&(i=n),"function"!==typeof i)throw new Error("put() requires a callback argument");var s=this._checkKey(e)||this._checkValue(r);if(s)return t.nextTick(i,s);e=this._serializeKey(e),r=this._serializeValue(r),"object"===typeof n&&null!==n||(n={}),this._put(e,r,n,i)},l.prototype._put=function(e,r,n,i){t.nextTick(i)},l.prototype.del=function(e,r,n){if("function"===typeof r&&(n=r),"function"!==typeof n)throw new Error("del() requires a callback argument");var i=this._checkKey(e);if(i)return t.nextTick(n,i);e=this._serializeKey(e),"object"===typeof r&&null!==r||(r={}),this._del(e,r,n)},l.prototype._del=function(e,r,n){t.nextTick(n)},l.prototype.batch=function(e,r,n){if(!arguments.length)return this._chainedBatch();if("function"===typeof r&&(n=r),"function"===typeof e&&(n=e),"function"!==typeof n)throw new Error("batch(array) requires a callback argument");if(!Array.isArray(e))return t.nextTick(n,new Error("batch(array) requires an array argument"));if(0===e.length)return t.nextTick(n);"object"===typeof r&&null!==r||(r={});for(var s=new Array(e.length),o=0;o(n(`New MFS root will be ${t}`),await e.repo.datastore.put(i,t.buffer),t);e.exports=s},14:function(e,t){},1405:function(e,t,r){"use strict";var n=r("4ea4"),i=n(r("a34a")),s=n(r("c973")),o=n(r("dfb7")),a=n(r("427a"));function c(e){return a.default.encodeBase64(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function u(e){var t=a.default.decodeBase64(e);return(function(){var e=(0,s.default)(i.default.mark((function e(r){return i.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.abrupt("return",c(o.default.sign.detached(a.default.decodeUTF8(r),t)));case 1:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}())}e.exports=u},1421:function(e,t,r){"use strict";(function(t){const n=r("37c4"),i=r("1e83"),s=r("9efb"),o=r("e5af"),a=r("87dd"),c=a.proto((function(e){if(!(this instanceof c))return new c(e);if(null==e&&(e=""),e instanceof t)this.buffer=n.fromBuffer(e);else if("string"===typeof e||e instanceof String){if(e.length>0&&"/"!==e.charAt(0))throw new Error(`multiaddr "${e}" must start with a "/"`);this.buffer=n.fromString(e)}else{if(!(e.buffer&&e.protos&&e.protoCodes))throw new Error("addr must be a string, Buffer, or another Multiaddr");this.buffer=n.fromBuffer(e.buffer)}}),{className:"Multiaddr",symbolName:"@multiformats/js-multiaddr/multiaddr"});c.prototype.toString=function(){return n.bufferToString(this.buffer)},c.prototype.toJSON=c.prototype.toString,c.prototype.toOptions=function(){const e={},t=this.toString().split("/");return e.family="ip4"===t[1]?"ipv4":"ipv6",e.host=t[2],e.transport=t[3],e.port=t[4],e},c.prototype.inspect=function(){return""},c.prototype.protos=function(){return this.protoCodes().map(e=>Object.assign({},i(e)))},c.prototype.protoCodes=function(){const e=[],t=this.buffer;let r=0;while(re.name)},c.prototype.tuples=function(){return n.bufferToTuples(this.buffer)},c.prototype.stringTuples=function(){const e=n.bufferToTuples(this.buffer);return n.tuplesToStringTuples(e)},c.prototype.encapsulate=function(e){return e=c(e),c(this.toString()+e.toString())},c.prototype.decapsulate=function(e){e=e.toString();const t=this.toString(),r=t.lastIndexOf(e);if(r<0)throw new Error("Address "+this+" does not contain subaddress: "+e);return c(t.slice(0,r))},c.prototype.getPeerId=function(){let e=null;try{const t=this.stringTuples().filter(e=>{if(e[0]===i.names.ipfs.code)return!0});e=t.pop()[1],o.decode(e)}catch(t){e=null}return e},c.prototype.getPath=function(){let e=null;try{e=this.stringTuples().filter(e=>{const t=i(e[0]);if(t.path)return!0})[0][1]}catch(t){e=null}return e},c.prototype.equals=function(e){return this.buffer.equals(e.buffer)},c.prototype.nodeAddress=function(){const e=this.protoCodes(),t=this.protoNames(),r=this.toString().split("/").slice(1);if(r.length<4)throw new Error('multiaddr must have a valid format: "/{ip4, ip6, dns4, dns6}/{address}/{tcp, udp}/{port}".');if(4!==e[0]&&41!==e[0]&&54!==e[0]&&55!==e[0])throw new Error(`no protocol with name: "'${t[0]}'". Must have a valid family name: "{ip4, ip6, dns4, dns6}".`);if("tcp"!==r[2]&&"udp"!==r[2])throw new Error(`no protocol with name: "'${t[1]}'". Must have a valid transport protocol: "{tcp, udp}".`);return{family:41===e[0]||55===e[0]?6:4,address:r[1],port:r[3]}},c.fromNodeAddress=function(e,t){if(!e)throw new Error("requires node address object");if(!t)throw new Error("requires transport protocol");const r="IPv6"===e.family?"ip6":"ip4";return c("/"+[r,e.address,t,e.port].join("/"))},c.prototype.isThinWaistAddress=function(e){const t=(e||this).protos();return 2===t.length&&((4===t[0].code||41===t[0].code)&&(6===t[1].code||273===t[1].code))},c.protocols=i,c.isName=function(e){return!!c.isMultiaddr(e)&&e.protos().some(e=>e.resolvable)},c.resolve=function(e,t){return c.isMultiaddr(e)&&c.isName(e)?t(new Error("not implemented yet")):t(new Error("not a valid name"))},e.exports=c}).call(this,r("b639").Buffer)},1428:function(e,t,r){function n(e){var r,n=0;for(r in e)n=(n<<5)-n+e.charCodeAt(r),n|=0;return t.colors[Math.abs(n)%t.colors.length]}function i(e){var r;function i(){if(i.enabled){var e=i,n=+new Date,s=n-(r||n);e.diff=s,e.prev=r,e.curr=n,r=n;for(var o=new Array(arguments.length),a=0;a100)){var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(t){var c=parseFloat(t[1]),u=(t[2]||"ms").toLowerCase();switch(u){case"years":case"year":case"yrs":case"yr":case"y":return c*a;case"weeks":case"week":case"w":return c*o;case"days":case"day":case"d":return c*s;case"hours":case"hour":case"hrs":case"hr":case"h":return c*i;case"minutes":case"minute":case"mins":case"min":case"m":return c*n;case"seconds":case"second":case"secs":case"sec":case"s":return c*r;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return c;default:return}}}}function u(e){var t=Math.abs(e);return t>=s?Math.round(e/s)+"d":t>=i?Math.round(e/i)+"h":t>=n?Math.round(e/n)+"m":t>=r?Math.round(e/r)+"s":e+"ms"}function l(e){var t=Math.abs(e);return t>=s?h(e,t,s,"day"):t>=i?h(e,t,i,"hour"):t>=n?h(e,t,n,"minute"):t>=r?h(e,t,r,"second"):e+" ms"}function h(e,t,r,n){var i=t>=1.5*r;return Math.round(e/r)+" "+n+(i?"s":"")}e.exports=function(e,t){t=t||{};var r=typeof e;if("string"===r&&e.length>0)return c(e);if("number"===r&&isFinite(e))return t.long?l(e):u(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},"14ec":function(e,t,r){var n=r("8327");function i(e,t,r){var n=e[t]+e[r],i=e[t+1]+e[r+1];n>=4294967296&&i++,e[t]=n,e[t+1]=i}function s(e,t,r,n){var i=e[t]+r;r<0&&(i+=4294967296);var s=e[t+1]+n;i>=4294967296&&s++,e[t]=i,e[t+1]=s}function o(e,t){return e[t]^e[t+1]<<8^e[t+2]<<16^e[t+3]<<24}function a(e,t,r,n,o,a){var c=f[o],u=f[o+1],l=f[a],d=f[a+1];i(h,e,t),s(h,e,c,u);var p=h[n]^h[e],y=h[n+1]^h[e+1];h[n]=y,h[n+1]=p,i(h,r,n),p=h[t]^h[r],y=h[t+1]^h[r+1],h[t]=p>>>24^y<<8,h[t+1]=y>>>24^p<<8,i(h,e,t),s(h,e,l,d),p=h[n]^h[e],y=h[n+1]^h[e+1],h[n]=p>>>16^y<<16,h[n+1]=y>>>16^p<<16,i(h,r,n),p=h[t]^h[r],y=h[t+1]^h[r+1],h[t]=y>>>31^p<<1,h[t+1]=p>>>31^y<<1}var c=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),u=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3],l=new Uint8Array(u.map((function(e){return 2*e}))),h=new Uint32Array(32),f=new Uint32Array(32);function d(e,t){var r=0;for(r=0;r<16;r++)h[r]=e.h[r],h[r+16]=c[r];for(h[24]=h[24]^e.t,h[25]=h[25]^e.t/4294967296,t&&(h[28]=~h[28],h[29]=~h[29]),r=0;r<32;r++)f[r]=o(e.b,4*r);for(r=0;r<12;r++)a(0,8,16,24,l[16*r+0],l[16*r+1]),a(2,10,18,26,l[16*r+2],l[16*r+3]),a(4,12,20,28,l[16*r+4],l[16*r+5]),a(6,14,22,30,l[16*r+6],l[16*r+7]),a(0,10,20,30,l[16*r+8],l[16*r+9]),a(2,12,22,24,l[16*r+10],l[16*r+11]),a(4,14,16,26,l[16*r+12],l[16*r+13]),a(6,8,18,28,l[16*r+14],l[16*r+15]);for(r=0;r<16;r++)e.h[r]=e.h[r]^h[r]^h[r+16]}function p(e,t){if(0===e||e>64)throw new Error("Illegal output length, expected 0 < length <= 64");if(t&&t.length>64)throw new Error("Illegal key, expected Uint8Array with 0 < length <= 64");for(var r={b:new Uint8Array(128),h:new Uint32Array(16),t:0,c:0,outlen:e},n=0;n<16;n++)r.h[n]=c[n];var i=t?t.length:0;return r.h[0]^=16842752^i<<8^e,t&&(y(r,t),r.c=128),r}function y(e,t){for(var r=0;r>2]>>8*(3&r);return t}function m(e,t,r){r=r||64,e=n.normalizeInput(e);var i=p(r,t);return y(i,e),g(i)}function b(e,t,r){var i=m(e,t,r);return n.toHex(i)}e.exports={blake2b:m,blake2bHex:b,blake2bInit:p,blake2bUpdate:y,blake2bFinal:g}},15:function(e,t){},1514:function(e,t){e.exports=function(e,t,r){r=r||0;for(var n=0,i=-1,s=r;s-1&&e.length-i=32)return u(),e();var r=32-t.pools[0].messageLength<<5;t.seedFile(r,(function(r,n){if(r)return e(r);t.collect(n),u(),e()}))}function c(){if(t.pools[0].messageLength>=32)return u();var e=32-t.pools[0].messageLength<<5;t.collect(t.seedFileSync(e)),u()}function u(){t.reseeds=4294967295===t.reseeds?0:t.reseeds+1;var e=t.plugin.md.create();e.update(t.keyBytes);for(var r=1,n=0;n<32;++n)t.reseeds%r===0&&(e.update(t.pools[n].digest().getBytes()),t.pools[n].start()),r<<=1;t.keyBytes=e.digest().getBytes(),e.start(),e.update(t.keyBytes);var i=e.digest().getBytes();t.key=t.plugin.formatKey(t.keyBytes),t.seed=t.plugin.formatSeed(i),t.generated=0}function l(e){var t=null,r=n.util.globalScope,i=r.crypto||r.msCrypto;i&&i.getRandomValues&&(t=function(e){return i.getRandomValues(e)});var s=n.util.createBuffer();if(t)while(s.length()>16),l+=(32767&u)<<16,l+=u>>15,l=(2147483647&l)+(l>>31),f=4294967295&l;for(c=0;c<3;++c)h=f>>>(c<<3),h^=Math.floor(256*Math.random()),s.putByte(String.fromCharCode(255&h))}}return s.getBytes(e)}return t.pools=s,t.pool=0,t.generate=function(e,r){if(!r)return t.generateSync(e);var i=t.plugin.cipher,s=t.plugin.increment,o=t.plugin.formatKey,c=t.plugin.formatSeed,u=n.util.createBuffer();function l(h){if(h)return r(h);if(u.length()>=e)return r(null,u.getBytes(e));if(t.generated>1048575&&(t.key=null),null===t.key)return n.util.nextTick((function(){a(l)}));var f=i(t.key,t.seed);t.generated+=f.length,u.putBytes(f),t.key=o(i(t.key,s(t.seed))),t.seed=c(i(t.key,t.seed)),n.util.setImmediate(l)}t.key=null,l()},t.generateSync=function(e){var r=t.plugin.cipher,i=t.plugin.increment,s=t.plugin.formatKey,o=t.plugin.formatSeed;t.key=null;var a=n.util.createBuffer();while(a.length()1048575&&(t.key=null),null===t.key&&c();var u=r(t.key,t.seed);t.generated+=u.length,a.putBytes(u),t.key=s(r(t.key,i(t.seed))),t.seed=o(r(t.key,t.seed))}return a.getBytes(e)},i?(t.seedFile=function(e,t){i.randomBytes(e,(function(e,r){if(e)return t(e);t(null,r.toString())}))},t.seedFileSync=function(e){return i.randomBytes(e).toString()}):(t.seedFile=function(e,t){try{t(null,l(e))}catch(r){t(r)}},t.seedFileSync=l),t.collect=function(e){for(var r=e.length,n=0;n>i&255);t.collect(n)},t.registerWorker=function(e){if(e===self)t.seedFile=function(e,t){function r(e){var n=e.data;n.forge&&n.forge.prng&&(self.removeEventListener("message",r),t(n.forge.prng.err,n.forge.prng.bytes))}self.addEventListener("message",r),self.postMessage({forge:{prng:{needed:e}}})};else{var r=function(r){var n=r.data;n.forge&&n.forge.prng&&t.seedFile(n.forge.prng.needed,(function(t,r){e.postMessage({forge:{prng:{err:t,bytes:r}}})}))};e.addEventListener("message",r)}},t}}).call(this,r("4362"))},1547:function(e,t){function r(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}e.exports=r},"157d":function(e,t,r){"use strict";var n=r("8638"),i=r("5fbf"),s=r("7d44"),o=r("9e13")||0;function a(t){return n.seed(t),e.exports}function c(t){return o=t,e.exports}function u(e){return void 0!==e&&n.characters(e),n.shuffled()}function l(){return i(o)}e.exports=l,e.exports.generate=l,e.exports.seed=a,e.exports.worker=c,e.exports.characters=u,e.exports.isValid=s},1587:function(e,t,r){"use strict";const n=r("d3fa"),i=r("faa1");e.exports=e=>{const t=Object.assign(new i,{incoming:r("in"),outgoing:r("out")});return e.on("peer-mux-established",e=>{t.emit("peer:connected",e.id.toB58String())}),e.on("peer-mux-closed",e=>{t.emit("peer:closed",e.id.toB58String())}),t;function r(e){return(t,r,i)=>n(n=>(s(i,t,r,e,n.length),n))}function s(e,r,n,i,s){e.then(e=>{if(e){const o=e.id.toB58String();t.emit("message",o,r,n,i,s)}})}}},"159b":function(e,t,r){var n=r("da84"),i=r("fdbc"),s=r("17c2"),o=r("9112");for(var a in i){var c=n[a],u=c&&c.prototype;if(u&&u.forEach!==s)try{o(u,"forEach",s)}catch(l){u.forEach=s}}},"15f0":function(e,t,r){"use strict";const n=r("fdab");e.exports=(e,t)=>{const r=[];return n(e,(e,n,i)=>Promise.resolve(t(n,i)).then(e=>{r.push(e)})).then(()=>r)}},16:function(e,t){},1629:function(e,t,r){"use strict";function n(e){return e}var i=r("b6d6"),s=r("76c0");e.exports=function(e,t){e=i(e)||n;var r={};return s((function(n){var i=e(n);return r[i]?!!t:(r[i]=!0,!t)}))}},1631:function(e,t,r){"use strict";e.exports=function(e,t){var r,n;function i(s){if(r=s,n)return i.abort();(function i(){var s=!0,o=!1;while(s)if(o=!1,r(null,(function(a,c){if(o=!0,a=a||n){if(s=!1,t)t(!0===a?null:a);else if(a&&!0!==a)throw a}else e&&!1===e(c)||n?(s=!1,r(n||!0,t||function(){})):s||i()})),!o)return void(s=!1)})()}return i.abort=function(e,t){if("function"==typeof e&&(t=e,e=!0),n=e||!0,r)return r(n,t||function(){})},i}},1652:function(e,t,r){"use strict";const{filter:n,sortAll:i,take:s,map:o}=r("8281"),a=r("220c"),c=r("e5c1");class u{constructor(){this.data={}}async open(){}async put(e,t){this.data[e.toString()]=t}async get(e){const t=await this.has(e);if(!t)throw c.notFoundError();return this.data[e.toString()]}async has(e){return void 0!==this.data[e.toString()]}async delete(e){delete this.data[e.toString()]}batch(){let e=[],t=[];return{put(t,r){e.push([t,r])},delete(e){t.push(e)},commit:async()=>{e.forEach(e=>{this.data[e[0].toString()]=e[1]}),e=[],t.forEach(e=>{delete this.data[e.toString()]}),t=[]}}}query(e){let t=Object.entries(this.data);if(t=o(t,e=>({key:new a(e[0]),value:e[1]})),null!=e.prefix&&(t=n(t,t=>t.key.toString().startsWith(e.prefix))),Array.isArray(e.filters)&&(t=e.filters.reduce((e,t)=>n(e,t),t)),Array.isArray(e.orders)&&(t=e.orders.reduce((e,t)=>i(e,t),t)),null!=e.offset){let r=0;t=n(t,()=>r++>=e.offset)}return null!=e.limit&&(t=s(t,e.limit)),!0===e.keysOnly&&(t=o(t,e=>({key:e.key}))),t}async close(){}}e.exports=u},"169a":function(e,t,r){"use strict";(function(t,n){const i=r("7048"),s=r(17),o=r("4bc2")("ipfs:mfs:utils:to-async-iterator"),{MAX_CHUNK_SIZE:a}=r("a9f3"),c=e=>{if(!e)throw i(new Error("paths must start with a leading /"),"ERR_INVALID_PATH");if("string"===typeof e||e instanceof String)return o("Content was a path"),s.createReadStream(e);if(e.length)return o("Content was array-like"),{[Symbol.asyncIterator]:function*(){yield e}};if(e[Symbol.asyncIterator])return o("Content was an async iterator"),e;if(e[Symbol.iterator])return o("Content was an iterator"),e;if(t.Blob&&e instanceof t.Blob){o("Content was an HTML5 Blob");let r=0;const i={next:()=>r>e.size?{done:!0}:new Promise((i,s)=>{const o=e.slice(r,a);r+=a;const c=new t.FileReader,u=e=>{if(c.removeEventListener("loadend",u,!1),e.error)return s(e.error);i({done:!1,value:n.from(c.result)})};c.addEventListener("loadend",u),c.readAsArrayBuffer(o)})};return{[Symbol.asyncIterator]:()=>i}}throw i(new Error(`Don't know how to convert ${e} into an async iterator`),"ERR_INVALID_PARAMS")};e.exports=c}).call(this,r("c8ba"),r("b639").Buffer)},"16e2":function(e,t,r){"use strict";(function(t){const n=r("b13c"),i=r("e009"),s=r("91f6"),o=r("cdc1"),a=s.toCallback,c=s.toBuf,u=s.fromString,l=s.fromNumberTo32BitBuf,h=(e,r)=>{o.sha2256(e,(e,n)=>{e&&r(e),o.sha2256(t.from(n),r)})};e.exports={sha1:o.sha1,sha2256:o.sha2256,sha2512:o.sha2512,sha3512:a(c(n.sha3_512)),sha3384:a(c(n.sha3_384)),sha3256:a(c(n.sha3_256)),sha3224:a(c(n.sha3_224)),shake128:a(c(n.shake_128,128)),shake256:a(c(n.shake_256,256)),keccak224:a(c(n.keccak_224)),keccak256:a(c(n.keccak_256)),keccak384:a(c(n.keccak_384)),keccak512:a(c(n.keccak_512)),murmur3128:a(c(u(i.x64.hash128))),murmur332:a(l(u(i.x86.hash32))),addBlake:r("5754"),dblSha2256:h}}).call(this,r("b639").Buffer)},"16fe":function(e,t,r){"use strict";e.exports=function(){return function(e,t){t(!0)}}},17:function(e,t){},1711:function(e,t,r){var n=r("918b");function i(e,t){var r=function(){return new n.des.Algorithm(e,t)};n.cipher.registerAlgorithm(e,r)}r("083e"),r("70c8"),r("5ee0"),e.exports=n.des=n.des||{},n.des.startEncrypting=function(e,t,r,n){var i=y({key:e,output:r,decrypt:!1,mode:n||(null===t?"ECB":"CBC")});return i.start(t),i},n.des.createEncryptionCipher=function(e,t){return y({key:e,output:null,decrypt:!1,mode:t})},n.des.startDecrypting=function(e,t,r,n){var i=y({key:e,output:r,decrypt:!0,mode:n||(null===t?"ECB":"CBC")});return i.start(t),i},n.des.createDecryptionCipher=function(e,t){return y({key:e,output:null,decrypt:!0,mode:t})},n.des.Algorithm=function(e,t){var r=this;r.name=e,r.mode=new t({blockSize:8,cipher:{encrypt:function(e,t){return p(r._keys,e,t,!1)},decrypt:function(e,t){return p(r._keys,e,t,!0)}}}),r._init=!1},n.des.Algorithm.prototype.initialize=function(e){if(!this._init){var t=n.util.createBuffer(e.key);if(0===this.name.indexOf("3DES")&&24!==t.length())throw new Error("Invalid Triple-DES key size: "+8*t.length());this._keys=d(t),this._init=!0}},i("DES-ECB",n.cipher.modes.ecb),i("DES-CBC",n.cipher.modes.cbc),i("DES-CFB",n.cipher.modes.cfb),i("DES-OFB",n.cipher.modes.ofb),i("DES-CTR",n.cipher.modes.ctr),i("3DES-ECB",n.cipher.modes.ecb),i("3DES-CBC",n.cipher.modes.cbc),i("3DES-CFB",n.cipher.modes.cfb),i("3DES-OFB",n.cipher.modes.ofb),i("3DES-CTR",n.cipher.modes.ctr);var s=[16843776,0,65536,16843780,16842756,66564,4,65536,1024,16843776,16843780,1024,16778244,16842756,16777216,4,1028,16778240,16778240,66560,66560,16842752,16842752,16778244,65540,16777220,16777220,65540,0,1028,66564,16777216,65536,16843780,4,16842752,16843776,16777216,16777216,1024,16842756,65536,66560,16777220,1024,4,16778244,66564,16843780,65540,16842752,16778244,16777220,1028,66564,16843776,1028,16778240,16778240,0,65540,66560,0,16842756],o=[-2146402272,-2147450880,32768,1081376,1048576,32,-2146435040,-2147450848,-2147483616,-2146402272,-2146402304,-2147483648,-2147450880,1048576,32,-2146435040,1081344,1048608,-2147450848,0,-2147483648,32768,1081376,-2146435072,1048608,-2147483616,0,1081344,32800,-2146402304,-2146435072,32800,0,1081376,-2146435040,1048576,-2147450848,-2146435072,-2146402304,32768,-2146435072,-2147450880,32,-2146402272,1081376,32,32768,-2147483648,32800,-2146402304,1048576,-2147483616,1048608,-2147450848,-2147483616,1048608,1081344,0,-2147450880,32800,-2147483648,-2146435040,-2146402272,1081344],a=[520,134349312,0,134348808,134218240,0,131592,134218240,131080,134217736,134217736,131072,134349320,131080,134348800,520,134217728,8,134349312,512,131584,134348800,134348808,131592,134218248,131584,131072,134218248,8,134349320,512,134217728,134349312,134217728,131080,520,131072,134349312,134218240,0,512,131080,134349320,134218240,134217736,512,0,134348808,134218248,131072,134217728,134349320,8,131592,131584,134217736,134348800,134218248,520,134348800,131592,8,134348808,131584],c=[8396801,8321,8321,128,8396928,8388737,8388609,8193,0,8396800,8396800,8396929,129,0,8388736,8388609,1,8192,8388608,8396801,128,8388608,8193,8320,8388737,1,8320,8388736,8192,8396928,8396929,129,8388736,8388609,8396800,8396929,129,0,0,8396800,8320,8388736,8388737,1,8396801,8321,8321,128,8396929,129,1,8192,8388609,8193,8396928,8388737,8193,8320,8388608,8396801,128,8388608,8192,8396928],u=[256,34078976,34078720,1107296512,524288,256,1073741824,34078720,1074266368,524288,33554688,1074266368,1107296512,1107820544,524544,1073741824,33554432,1074266112,1074266112,0,1073742080,1107820800,1107820800,33554688,1107820544,1073742080,0,1107296256,34078976,33554432,1107296256,524544,524288,1107296512,256,33554432,1073741824,34078720,1107296512,1074266368,33554688,1073741824,1107820544,34078976,1074266368,256,33554432,1107820544,1107820800,524544,1107296256,1107820800,34078720,0,1074266112,1107296256,524544,33554688,1073742080,524288,0,1074266112,34078976,1073742080],l=[536870928,541065216,16384,541081616,541065216,16,541081616,4194304,536887296,4210704,4194304,536870928,4194320,536887296,536870912,16400,0,4194320,536887312,16384,4210688,536887312,16,541065232,541065232,0,4210704,541081600,16400,4210688,541081600,536870912,536887296,16,541065232,4210688,541081616,4194304,16400,536870928,4194304,536887296,536870912,16400,536870928,541081616,4210688,541065216,4210704,541081600,0,541065232,16,16384,541065216,4210704,16384,4194320,536887312,0,541081600,536870912,4194320,536887312],h=[2097152,69206018,67110914,0,2048,67110914,2099202,69208064,69208066,2097152,0,67108866,2,67108864,69206018,2050,67110912,2099202,2097154,67110912,67108866,69206016,69208064,2097154,69206016,2048,2050,69208066,2099200,2,67108864,2099200,67108864,2099200,2097152,67110914,67110914,69206018,69206018,2,2097154,67108864,67110912,2097152,69208064,2050,2099202,69208064,2050,67108866,69208066,69206016,2099200,0,2,69208066,0,2099202,69206016,2048,67108866,67110912,2048,2097154],f=[268439616,4096,262144,268701760,268435456,268439616,64,268435456,262208,268697600,268701760,266240,268701696,266304,4096,64,268697600,268435520,268439552,4160,266240,262208,268697664,268701696,4160,0,0,268697664,268435520,268439552,266304,262144,266304,262144,268701696,4096,64,268697664,4096,266304,268439552,64,268435520,268697600,268697664,268435456,262144,268439616,0,268701760,262208,268435520,268697600,268439552,268439616,0,268701760,266240,266240,4160,4160,262208,268435456,268701696];function d(e){for(var t,r=[0,4,536870912,536870916,65536,65540,536936448,536936452,512,516,536871424,536871428,66048,66052,536936960,536936964],n=[0,1,1048576,1048577,67108864,67108865,68157440,68157441,256,257,1048832,1048833,67109120,67109121,68157696,68157697],i=[0,8,2048,2056,16777216,16777224,16779264,16779272,0,8,2048,2056,16777216,16777224,16779264,16779272],s=[0,2097152,134217728,136314880,8192,2105344,134225920,136323072,131072,2228224,134348800,136445952,139264,2236416,134356992,136454144],o=[0,262144,16,262160,0,262144,16,262160,4096,266240,4112,266256,4096,266240,4112,266256],a=[0,1024,32,1056,0,1024,32,1056,33554432,33555456,33554464,33555488,33554432,33555456,33554464,33555488],c=[0,268435456,524288,268959744,2,268435458,524290,268959746,0,268435456,524288,268959744,2,268435458,524290,268959746],u=[0,65536,2048,67584,536870912,536936448,536872960,536938496,131072,196608,133120,198656,537001984,537067520,537004032,537069568],l=[0,262144,0,262144,2,262146,2,262146,33554432,33816576,33554432,33816576,33554434,33816578,33554434,33816578],h=[0,268435456,8,268435464,0,268435456,8,268435464,1024,268436480,1032,268436488,1024,268436480,1032,268436488],f=[0,32,0,32,1048576,1048608,1048576,1048608,8192,8224,8192,8224,1056768,1056800,1056768,1056800],d=[0,16777216,512,16777728,2097152,18874368,2097664,18874880,67108864,83886080,67109376,83886592,69206016,85983232,69206528,85983744],p=[0,4096,134217728,134221824,524288,528384,134742016,134746112,16,4112,134217744,134221840,524304,528400,134742032,134746128],y=[0,4,256,260,0,4,256,260,1,5,257,261,1,5,257,261],g=e.length()>8?3:1,m=[],b=[0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0],v=0,w=0;w>>4^E),E^=t,_^=t<<4,t=65535&(E>>>-16^_),_^=t,E^=t<<-16,t=858993459&(_>>>2^E),E^=t,_^=t<<2,t=65535&(E>>>-16^_),_^=t,E^=t<<-16,t=1431655765&(_>>>1^E),E^=t,_^=t<<1,t=16711935&(E>>>8^_),_^=t,E^=t<<8,t=1431655765&(_>>>1^E),E^=t,_^=t<<1,t=_<<8|E>>>20&240,_=E<<24|E<<8&16711680|E>>>8&65280|E>>>24&240,E=t;for(var S=0;S>>26,E=E<<2|E>>>26):(_=_<<1|_>>>27,E=E<<1|E>>>27),_&=-15,E&=-15;var k=r[_>>>28]|n[_>>>24&15]|i[_>>>20&15]|s[_>>>16&15]|o[_>>>12&15]|a[_>>>8&15]|c[_>>>4&15],C=u[E>>>28]|l[E>>>24&15]|h[E>>>20&15]|f[E>>>16&15]|d[E>>>12&15]|p[E>>>8&15]|y[E>>>4&15];t=65535&(C>>>16^k),m[v++]=k^t,m[v++]=C^t<<16}}return m}function p(e,t,r,n){var i,d,p=32===e.length?3:9;i=3===p?n?[30,-2,-2]:[0,32,2]:n?[94,62,-2,32,64,2,30,-2,-2]:[0,32,2,62,30,-2,64,96,2];var y=t[0],g=t[1];d=252645135&(y>>>4^g),g^=d,y^=d<<4,d=65535&(y>>>16^g),g^=d,y^=d<<16,d=858993459&(g>>>2^y),y^=d,g^=d<<2,d=16711935&(g>>>8^y),y^=d,g^=d<<8,d=1431655765&(y>>>1^g),g^=d,y^=d<<1,y=y<<1|y>>>31,g=g<<1|g>>>31;for(var m=0;m>>4|g<<28)^e[w+1];d=y,y=g,g=d^(o[_>>>24&63]|c[_>>>16&63]|l[_>>>8&63]|f[63&_]|s[E>>>24&63]|a[E>>>16&63]|u[E>>>8&63]|h[63&E])}d=y,y=g,g=d}y=y>>>1|y<<31,g=g>>>1|g<<31,d=1431655765&(y>>>1^g),g^=d,y^=d<<1,d=16711935&(g>>>8^y),y^=d,g^=d<<8,d=858993459&(g>>>2^y),y^=d,g^=d<<2,d=65535&(y>>>16^g),g^=d,y^=d<<16,d=252645135&(y>>>4^g),g^=d,y^=d<<4,r[0]=y,r[1]=g}function y(e){e=e||{};var t,r=(e.mode||"CBC").toUpperCase(),i="DES-"+r;t=e.decrypt?n.cipher.createDecipher(i,e.key):n.cipher.createCipher(i,e.key);var s=t.start;return t.start=function(e,r){var i=null;r instanceof n.util.ByteBuffer&&(i=r,r={}),r=r||{},r.output=i,r.iv=e,s.call(t,r)},t}},1727:function(e,t,r){"use strict";(function(e){var r=Object.prototype.toString;t.isArray=function(e,t){if(!Array.isArray(e))throw TypeError(t)},t.isBoolean=function(e,t){if("[object Boolean]"!==r.call(e))throw TypeError(t)},t.isBuffer=function(t,r){if(!e.isBuffer(t))throw TypeError(r)},t.isFunction=function(e,t){if("[object Function]"!==r.call(e))throw TypeError(t)},t.isNumber=function(e,t){if("[object Number]"!==r.call(e))throw TypeError(t)},t.isObject=function(e,t){if("[object Object]"!==r.call(e))throw TypeError(t)},t.isBufferLength=function(e,t,r){if(e.length!==t)throw RangeError(r)},t.isBufferLength2=function(e,t,r,n){if(e.length!==t&&e.length!==r)throw RangeError(n)},t.isLengthGTZero=function(e,t){if(0===e.length)throw RangeError(t)},t.isNumberInInterval=function(e,t,r,n){if(e<=t||e>=r)throw RangeError(n)}}).call(this,r("b639").Buffer)},"173c":function(e,t,r){"use strict";(function(t){const n=r("ac9f"),i=r("f106"),s=r("e5af"),o=r("5e57"),a=i(r("437b"));class c{constructor(e){this._key=y(e,o.publicKeyLength)}verify(e,t,r){p(r),o.hashAndVerify(this._key,t,e,r)}marshal(){return t.from(this._key)}get bytes(){return a.PublicKey.encode({Type:a.KeyType.Ed25519,Data:this.marshal()})}equals(e){return this.bytes.equals(e.bytes)}hash(e){p(e),n(this.bytes,"sha2-256",e)}}class u{constructor(e,t){this._key=y(e,o.privateKeyLength),this._publicKey=y(t,o.publicKeyLength)}sign(e,t){p(t),o.hashAndSign(this._key,e,t)}get public(){if(!this._publicKey)throw new Error("public key not provided");return new c(this._publicKey)}marshal(){return t.concat([t.from(this._key),t.from(this._publicKey)])}get bytes(){return a.PrivateKey.encode({Type:a.KeyType.Ed25519,Data:this.marshal()})}equals(e){return this.bytes.equals(e.bytes)}hash(e){p(e),n(this.bytes,"sha2-256",e)}id(e){this.public.hash((t,r)=>{if(t)return e(t);e(null,s.encode(r))})}}function l(e,t){try{e=y(e,o.privateKeyLength+o.publicKeyLength)}catch(i){return t(i)}const r=e.slice(0,o.privateKeyLength),n=e.slice(o.privateKeyLength,e.length);t(null,new u(r,n))}function h(e){return e=y(e,o.publicKeyLength),new c(e)}function f(e,t){void 0===t&&"function"===typeof e&&(t=e),o.generateKey((e,r)=>{if(e)return t(e);let n;try{n=new u(r.secretKey,r.publicKey)}catch(e){return void t(e)}t(null,n)})}function d(e,t,r){void 0===r&&"function"===typeof t&&(r=t),o.generateKeyFromSeed(e,(e,t)=>{if(e)return r(e);let n;try{n=new u(t.secretKey,t.publicKey)}catch(e){return void r(e)}r(null,n)})}function p(e){if("function"!==typeof e)throw new Error("callback is required")}function y(e,r){if(t.isBuffer(e)&&(e=new Uint8Array(e)),!(e instanceof Uint8Array)||e.length!==r)throw new Error("Key must be a Uint8Array or Buffer of length "+r);return e}e.exports={Ed25519PublicKey:c,Ed25519PrivateKey:u,unmarshalEd25519PrivateKey:l,unmarshalEd25519PublicKey:h,generateKeyPair:f,generateKeyPairFromSeed:d}}).call(this,r("b639").Buffer)},1789:function(e,t,r){(function(n){function i(){return!("undefined"===typeof window||!window.process||"renderer"!==window.process.type)||("undefined"===typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!==typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!==typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!==typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!==typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))}function s(e){var r=this.useColors;if(e[0]=(r?"%c":"")+this.namespace+(r?" %c":" ")+e[0]+(r?"%c ":" ")+"+"+t.humanize(this.diff),r){var n="color: "+this.color;e.splice(1,0,n,"color: inherit");var i=0,s=0;e[0].replace(/%[a-zA-Z%]/g,(function(e){"%%"!==e&&(i++,"%c"===e&&(s=i))})),e.splice(s,0,n)}}function o(){return"object"===typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function a(e){try{null==e?t.storage.removeItem("debug"):t.storage.debug=e}catch(r){}}function c(){var e;try{e=t.storage.debug}catch(r){}return!e&&"undefined"!==typeof n&&"env"in n&&(e=Object({NODE_ENV:"production",BASE_URL:"/"}).DEBUG),e}function u(){try{return window.localStorage}catch(e){}}t=e.exports=r("1428"),t.log=o,t.formatArgs=s,t.save=a,t.load=c,t.useColors=i,t.storage="undefined"!=typeof chrome&&"undefined"!=typeof chrome.storage?chrome.storage.local:u(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.formatters.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}},t.enable(c())}).call(this,r("4362"))},"17b2":function(e,t,r){"use strict";const n=r("cfab"),i={};for(const[s,o]of Object.entries(n))void 0===i[o]&&(i[o]=s);e.exports=Object.freeze(i)},"17c2":function(e,t,r){"use strict";var n=r("b727").forEach,i=r("a640"),s=r("ae40"),o=i("forEach"),a=s("forEach");e.exports=o&&a?[].forEach:function(e){return n(this,e,arguments.length>1?arguments[1]:void 0)}},"17e2":function(e,t,r){var n=r("f4d7"),i=r("4bc2")("socket.io-client:url");function s(e,t){var r=e;t=t||"undefined"!==typeof location&&location,null==e&&(e=t.protocol+"//"+t.host),"string"===typeof e&&("/"===e.charAt(0)&&(e="/"===e.charAt(1)?t.protocol+e:t.host+e),/^(https?|wss?):\/\//.test(e)||(i("protocol-less url %s",e),e="undefined"!==typeof t?t.protocol+"//"+e:"https://"+e),i("parse %s",e),r=n(e)),r.port||(/^(http|ws)$/.test(r.protocol)?r.port="80":/^(http|ws)s$/.test(r.protocol)&&(r.port="443")),r.path=r.path||"/";var s=-1!==r.host.indexOf(":"),o=s?"["+r.host+"]":r.host;return r.id=r.protocol+"://"+o+":"+r.port,r.href=r.protocol+"://"+o+(t&&t.port===r.port?"":":"+r.port),r}e.exports=s},"17e5":function(e,t,r){var n=r("4f94");function i(e){if(!(e instanceof Object))throw new TypeError('"obj" must be an object (or inherit from it)');return s(e)}function s(e,t){for(var r in t=new n(e,t),e){var i=e[r];if(i instanceof Object&&(t.contains(i)||s(i,t)))return!0}return!1}e.exports=i},18:function(e,t){},"180b":function(e,t,r){var n=r("5995");r("c882"),r("80f7"),r("84f3"),r("ce05"),r("71c7"),r("9050"),r("8f53"),r("31a0"),r("5609");var i=n.asn1,s=e.exports=n.pkcs7=n.pkcs7||{};function o(e){var t={},r=[];if(!i.validate(e,s.asn1.recipientInfoValidator,t,r)){var o=new Error("Cannot read PKCS#7 RecipientInfo. ASN.1 object is not an PKCS#7 RecipientInfo.");throw o.errors=r,o}return{version:t.version.charCodeAt(0),issuer:n.pki.RDNAttributesAsArray(t.issuer),serialNumber:n.util.createBuffer(t.serial).toHex(),encryptedContent:{algorithm:i.derToOid(t.encAlgorithm),parameter:t.encParameter.value,content:t.encKey}}}function a(e){return i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,i.integerToDer(e.version).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[n.pki.distinguishedNameToAsn1({attributes:e.issuer}),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,n.util.hexToBytes(e.serialNumber))]),i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(e.encryptedContent.algorithm).getBytes()),i.create(i.Class.UNIVERSAL,i.Type.NULL,!1,"")]),i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,e.encryptedContent.content)])}function c(e){for(var t=[],r=0;r0){for(var r=i.create(i.Class.CONTEXT_SPECIFIC,1,!0,[]),s=0;s=r&&o0&&o.value[0].value.push(i.create(i.Class.CONTEXT_SPECIFIC,0,!0,t)),s.length>0&&o.value[0].value.push(i.create(i.Class.CONTEXT_SPECIFIC,1,!0,s)),o.value[0].value.push(i.create(i.Class.UNIVERSAL,i.Type.SET,!0,e.signerInfos)),i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(e.type).getBytes()),o])},addSigner:function(t){var r=t.issuer,i=t.serialNumber;if(t.certificate){var s=t.certificate;"string"===typeof s&&(s=n.pki.certificateFromPem(s)),r=s.issuer.attributes,i=s.serialNumber}var o=t.key;if(!o)throw new Error("Could not add PKCS#7 signer; no private key specified.");"string"===typeof o&&(o=n.pki.privateKeyFromPem(o));var a=t.digestAlgorithm||n.pki.oids.sha1;switch(a){case n.pki.oids.sha1:case n.pki.oids.sha256:case n.pki.oids.sha384:case n.pki.oids.sha512:case n.pki.oids.md5:break;default:throw new Error("Could not add PKCS#7 signer; unknown message digest algorithm: "+a)}var c=t.authenticatedAttributes||[];if(c.length>0){for(var u=!1,l=!1,h=0;hn((t,r,n)=>{function i(e,t,r){if(t)return e(t);if(!r)return e(new Error("empty response"));if(0===r.length)return e(new Error("no value returned for key"));if(Array.isArray(r)&&(r=r[0]),5===r.Type)e(null,r.Extra);else{let t=new Error("key was not found (type 6)");e(t)}}"function"!==typeof r||n||(n=r,r={}),"function"===typeof r&&"function"===typeof n&&(n=r,r={}),e({path:"dht/get",args:t,qs:r},i.bind(null,n))})},"186e":function(e,t,r){"use strict";const n=r("720b"),i=r("792d"),s=r("e15f"),o=r("b838"),a=r("8e122"),c={"legacy-ipfs":s,ipfs:o,orbitdb:a},u=e=>{if(!l.isSupported(e))throw new Error(`AccessController type '${e}' is not supported`);return c[e]};class l{static get AccessController(){return n}static isSupported(e){return Object.keys(c).includes(e)}static addAccessController(e){if(!e.AccessController)throw new Error("AccessController class needs to be given as an option");if(!e.AccessController.type||"string"!==typeof e.AccessController.type)throw new Error("Given AccessController class needs to implement: static get type() { /* return a string */}.");c[e.AccessController.type]=e.AccessController}static addAccessControllers(e){const t=e.AccessControllers;if(!t)throw new Error("AccessController classes need to be given as an option");t.forEach(e=>{l.addAccessController({AccessController:e})})}static removeAccessController(e){delete c[e]}static async resolve(e,t,r={}){const{type:n,params:s}=await i.resolve(e._ipfs,t,r),o=u(n),a=await o.create(e,Object.assign({},r,s));return await a.load(s.address),a}static async create(e,t,r={}){const n=u(t),s=await n.create(e,r),o=await s.save(),a=await i.create(e._ipfs,t,o);return a}}e.exports=l},"18ac":function(e,t,r){"use strict";e.exports=i;var n=r("fab2");function i(e){if(!(this instanceof i))return new i(e);n.call(this,e)}r("c3bb")(i,n),i.prototype._transform=function(e,t,r){r(null,e)}},19:function(e,t){},1972:function(e,t,r){"use strict";var n=r("e0c5").Buffer,i=r("bce7"),s=r("c627");function o(e,t){null===e&&null===t?(this.x=this.y=null,this.inf=!0):(this.x=e,this.y=t,this.inf=!1)}o.fromPublicKey=function(e){var t,r,n=e[0];return 33!==e.length||2!==n&&3!==n?65!==e.length||4!==n&&6!==n&&7!==n?null:(t=i.fromBuffer(e.slice(1,33)),r=i.fromBuffer(e.slice(33,65)),t.ucmp(i.p)>=0||r.ucmp(i.p)>=0?null:6!==n&&7!==n||r.isOdd()===(7===n)?0!==t.redSqr().redMul(t).redIAdd7().ucmp(r.redSqr())?null:new o(t,r):null):(t=i.fromBuffer(e.slice(1,33)),t.ucmp(i.p)>=0?null:(r=t.redSqr().redMul(t).redIAdd7().redSqrt(),null===r?null:(3===n!==r.isOdd()&&(r=r.redNeg()),new o(t,r))))},o.prototype.toPublicKey=function(e){var t,r=this.x,i=this.y;return e?(t=n.alloc(33),t[0]=i.isOdd()?3:2,r.toBuffer().copy(t,1)):(t=n.alloc(65),t[0]=4,r.toBuffer().copy(t,1),i.toBuffer().copy(t,33)),t},o.fromECJPoint=function(e){if(e.inf)return new o(null,null);var t=e.z.redInvm(),r=t.redSqr(),n=e.x.redMul(r),i=e.y.redMul(r).redMul(t);return new o(n,i)},o.prototype.toECJPoint=function(){return this.inf?new s(null,null,null):new s(this.x,this.y,s.one)},o.prototype.neg=function(){return this.inf?this:new o(this.x,this.y.redNeg())},o.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(0===this.x.ucmp(e.x))return 0===this.y.ucmp(e.y)?this.dbl():new o(null,null);var t=this.y.redSub(e.y);t.isZero()||(t=t.redMul(this.x.redSub(e.x).redInvm()));var r=t.redSqr().redISub(this.x).redISub(e.x),n=t.redMul(this.x.redSub(r)).redISub(this.y);return new o(r,n)},o.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(e.isZero())return new o(null,null);var t=this.x.redSqr(),r=t.redAdd(t).redIAdd(t).redMul(e.redInvm()),n=r.redSqr().redISub(this.x.redAdd(this.x)),i=r.redMul(this.x.redSub(n)).redISub(this.y);return new o(n,i)},o.prototype.mul=function(e){for(var t=this._getNAFPoints(4),r=t.points,n=e.getNAF(t.wnd),i=new s(null,null,null),a=n.length-1;a>=0;a--){for(var c=0;a>=0&&0===n[a];a--,++c);if(a>=0&&(c+=1),i=i.dblp(c),a<0)break;var u=n[a];i=u>0?i.mixedAdd(r[u-1>>1]):i.mixedAdd(r[-u-1>>1].neg())}return o.fromECJPoint(i)},o.prototype._getNAFPoints1=function(){return{wnd:1,points:[this]}},o.prototype._getNAFPoints=function(e){var t=new Array((1<{const n=a.createHash(t),i=await n(e);return r?i.slice(0,r):i},a.createHash=function(e){if(!e)throw i("hash algorithm must be specified","ERR_HASH_ALGORITHM_NOT_SPECIFIED");if(e=s.coerceCode(e),!a.functions[e])throw i(`multihash function '${e}' not yet supported`,"ERR_HASH_ALGORITHM_NOT_SUPPORTED");return a.functions[e]},a.functions={17:o.sha1,18:o.sha2256,19:o.sha2512,20:o.sha3512,21:o.sha3384,22:o.sha3256,23:o.sha3224,24:o.shake128,25:o.shake256,26:o.keccak224,27:o.keccak256,28:o.keccak384,29:o.keccak512,34:o.murmur3128,35:o.murmur332,86:o.dblSha2256},o.addBlake(a.functions),a.validate=async(e,t)=>{const r=await a(e,s.decode(t).name);return 0===n.compare(t,r)},e.exports=a},"1a8c":function(e,t){function r(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}e.exports=r},"1aad":function(e,t,r){"use strict";const n=r("9f73"),i=Object.prototype.hasOwnProperty,s=Object.propertyIsEnumerable,o=(e,t,r)=>Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0}),a=this,c={concatArrays:!1},u=e=>{const t=[];for(const r in e)i.call(e,r)&&t.push(r);if(Object.getOwnPropertySymbols){const r=Object.getOwnPropertySymbols(e);for(let n=0;n{o(t,r,l(e[r]))}),t}function f(e){const t=null===Object.getPrototypeOf(e)?Object.create(null):{};return u(e).forEach(r=>{o(t,r,l(e[r]))}),t}const d=(e,t,r,n)=>(r.forEach(r=>{r in e&&e[r]!==Object.getPrototypeOf(e)?o(e,r,y(e[r],t[r],n)):o(e,r,l(t[r]))}),e),p=(e,t,r)=>{let n=e.slice(0,0),s=0;return[e,t].forEach(t=>{const a=[];for(let r=0;r-1===a.indexOf(e)),r)}),n};function y(e,t,r){return r.concatArrays&&Array.isArray(e)&&Array.isArray(t)?p(e,t,r):n(t)&&n(e)?d(e,t,u(t),r):l(t)}e.exports=function(){const e=y(l(c),this!==a&&this||{},c);let t={foobar:{}};for(let r=0;r{const t=new Array(4);for(let r=0;r<4;r++)t[r]=255&e,e>>=8;return n.from(t)};e.exports={fromNumberTo32BitBuf:i}},"1b2f":function(e,t,r){"use strict";e.exports='\n syntax = "proto2";\n\n package ipfs.pin;\n\n option go_package = "pb";\n\n message Set {\n optional uint32 version = 1;\n optional uint32 fanout = 2;\n optional fixed32 seed = 3;\n }\n'},"1b43":function(e,t,r){var n=r("5995");r("b3d5"),r("31a0");var i=e.exports=n.sha1=n.sha1||{};n.md.sha1=n.md.algorithms.sha1=i,i.create=function(){o||a();var e=null,t=n.util.createBuffer(),r=new Array(80),i={algorithm:"sha1",blockLength:64,digestLength:20,messageLength:0,fullMessageLength:null,messageLengthSize:8,start:function(){i.messageLength=0,i.fullMessageLength=i.messageLength64=[];for(var r=i.messageLengthSize/4,s=0;s>>0,a>>>0];for(var u=i.fullMessageLength.length-1;u>=0;--u)i.fullMessageLength[u]+=a[1],a[1]=a[0]+(i.fullMessageLength[u]/4294967296>>>0),i.fullMessageLength[u]=i.fullMessageLength[u]>>>0,a[0]=a[1]/4294967296>>>0;return t.putBytes(s),c(e,r,t),(t.read>2048||0===t.length())&&t.compact(),i},i.digest=function(){var o=n.util.createBuffer();o.putBytes(t.bytes());var a,u,l=i.fullMessageLength[i.fullMessageLength.length-1]+i.messageLengthSize,h=l&i.blockLength-1;o.putBytes(s.substr(0,i.blockLength-h));for(var f=8*i.fullMessageLength[0],d=0;d>>0,f+=u,o.putInt32(f>>>0),f=a>>>0;o.putInt32(f);var p={h0:e.h0,h1:e.h1,h2:e.h2,h3:e.h3,h4:e.h4};c(p,r,o);var y=n.util.createBuffer();return y.putInt32(p.h0),y.putInt32(p.h1),y.putInt32(p.h2),y.putInt32(p.h3),y.putInt32(p.h4),y},i};var s=null,o=!1;function a(){s=String.fromCharCode(128),s+=n.util.fillString(String.fromCharCode(0),64),o=!0}function c(e,t,r){var n,i,s,o,a,c,u,l,h=r.length();while(h>=64){for(i=e.h0,s=e.h1,o=e.h2,a=e.h3,c=e.h4,l=0;l<16;++l)n=r.getInt32(),t[l]=n,u=a^s&(o^a),n=(i<<5|i>>>27)+u+c+1518500249+n,c=a,a=o,o=(s<<30|s>>>2)>>>0,s=i,i=n;for(;l<20;++l)n=t[l-3]^t[l-8]^t[l-14]^t[l-16],n=n<<1|n>>>31,t[l]=n,u=a^s&(o^a),n=(i<<5|i>>>27)+u+c+1518500249+n,c=a,a=o,o=(s<<30|s>>>2)>>>0,s=i,i=n;for(;l<32;++l)n=t[l-3]^t[l-8]^t[l-14]^t[l-16],n=n<<1|n>>>31,t[l]=n,u=s^o^a,n=(i<<5|i>>>27)+u+c+1859775393+n,c=a,a=o,o=(s<<30|s>>>2)>>>0,s=i,i=n;for(;l<40;++l)n=t[l-6]^t[l-16]^t[l-28]^t[l-32],n=n<<2|n>>>30,t[l]=n,u=s^o^a,n=(i<<5|i>>>27)+u+c+1859775393+n,c=a,a=o,o=(s<<30|s>>>2)>>>0,s=i,i=n;for(;l<60;++l)n=t[l-6]^t[l-16]^t[l-28]^t[l-32],n=n<<2|n>>>30,t[l]=n,u=s&o|a&(s^o),n=(i<<5|i>>>27)+u+c+2400959708+n,c=a,a=o,o=(s<<30|s>>>2)>>>0,s=i,i=n;for(;l<80;++l)n=t[l-6]^t[l-16]^t[l-28]^t[l-32],n=n<<2|n>>>30,t[l]=n,u=s^o^a,n=(i<<5|i>>>27)+u+c+3395469782+n,c=a,a=o,o=(s<<30|s>>>2)>>>0,s=i,i=n;e.h0=e.h0+i|0,e.h1=e.h1+s|0,e.h2=e.h2+o|0,e.h3=e.h3+a|0,e.h4=e.h4+c|0,h-=64}}},"1b69":function(e,t,r){"use strict";const n=r("fa4d"),i=r("33fc");e.exports=function(e){return n((t,r,n)=>{"function"===typeof r&&(n=r,r={}),i(e.pingPullStream(t,r),i.collect(n))})}},"1bb3":function(e,t,r){"use strict";var n=r("8707").Buffer,i=r("98e6"),s=r("e28f"),o=r("f8c1"),a=r("0286"),c=r("eda6"),u=r("8bb0");t.privateKeyVerify=function(e){var t=a.fromBuffer(e);return!(t.isOverflow()||t.isZero())},t.privateKeyExport=function(e,t){var r=a.fromBuffer(e);if(r.isOverflow()||r.isZero())throw new Error(o.EC_PRIVATE_KEY_EXPORT_DER_FAIL);return u.mul(r).toPublicKey(t)},t.privateKeyNegate=function(e){var t=a.fromBuffer(e);return t.isZero()?n.alloc(32):(t.ucmp(a.n)>0&&t.isub(a.n),a.n.sub(t).toBuffer())},t.privateKeyModInverse=function(e){var t=a.fromBuffer(e);if(t.isOverflow()||t.isZero())throw new Error(o.EC_PRIVATE_KEY_RANGE_INVALID);return t.uinvm().toBuffer()},t.privateKeyTweakAdd=function(e,t){var r=a.fromBuffer(t);if(r.isOverflow())throw new Error(o.EC_PRIVATE_KEY_TWEAK_ADD_FAIL);if(r.iadd(a.fromBuffer(e)),r.isOverflow()&&r.isub(a.n),r.isZero())throw new Error(o.EC_PRIVATE_KEY_TWEAK_ADD_FAIL);return r.toBuffer()},t.privateKeyTweakMul=function(e,t){var r=a.fromBuffer(t);if(r.isOverflow()||r.isZero())throw new Error(o.EC_PRIVATE_KEY_TWEAK_MUL_FAIL);var n=a.fromBuffer(e);return r.umul(n).ureduce().toBuffer()},t.publicKeyCreate=function(e,t){var r=a.fromBuffer(e);if(r.isOverflow()||r.isZero())throw new Error(o.EC_PUBLIC_KEY_CREATE_FAIL);return u.mul(r).toPublicKey(t)},t.publicKeyConvert=function(e,t){var r=c.fromPublicKey(e);if(null===r)throw new Error(o.EC_PUBLIC_KEY_PARSE_FAIL);return r.toPublicKey(t)},t.publicKeyVerify=function(e){return null!==c.fromPublicKey(e)},t.publicKeyTweakAdd=function(e,t,r){var n=c.fromPublicKey(e);if(null===n)throw new Error(o.EC_PUBLIC_KEY_PARSE_FAIL);if(t=a.fromBuffer(t),t.isOverflow())throw new Error(o.EC_PUBLIC_KEY_TWEAK_ADD_FAIL);var i=u.mul(t).add(n);if(i.inf)throw new Error(o.EC_PUBLIC_KEY_TWEAK_ADD_FAIL);return i.toPublicKey(r)},t.publicKeyTweakMul=function(e,t,r){var n=c.fromPublicKey(e);if(null===n)throw new Error(o.EC_PUBLIC_KEY_PARSE_FAIL);if(t=a.fromBuffer(t),t.isOverflow()||t.isZero())throw new Error(o.EC_PUBLIC_KEY_TWEAK_MUL_FAIL);return n.mul(t).toPublicKey(r)},t.publicKeyCombine=function(e,t){for(var r=new Array(e.length),n=0;n=0)&&0===n.iadd(a.psn).redMul(p).ucmp(d.x)},t.recover=function(e,t,r,i){var s=a.fromBuffer(t.slice(0,32)),l=a.fromBuffer(t.slice(32,64));if(s.isOverflow()||l.isOverflow())throw new Error(o.ECDSA_SIGNATURE_PARSE_FAIL);do{if(s.isZero()||l.isZero())break;var h=s;if(r>>1){if(h.ucmp(a.psn)>=0)break;h=s.add(a.n)}var f=n.concat([n.from([2+(1&r)]),h.toBuffer()]),d=c.fromPublicKey(f);if(null===d)break;var p=s.uinvm(),y=a.n.sub(a.fromBuffer(e)).umul(p).ureduce(),g=l.umul(p).ureduce(),m=c.fromECJPoint(u.mulAdd(y,d,g));return m.toPublicKey(i)}while(0);throw new Error(o.ECDSA_RECOVER_FAIL)},t.ecdh=function(e,r){var n=t.ecdhUnsafe(e,r,!0);return i("sha256").update(n).digest()},t.ecdhUnsafe=function(e,t,r){var n=c.fromPublicKey(e);if(null===n)throw new Error(o.EC_PUBLIC_KEY_PARSE_FAIL);var i=a.fromBuffer(t);if(i.isOverflow()||i.isZero())throw new Error(o.ECDH_FAIL);return n.mul(i).toPublicKey(r)}},"1c13":function(e,t,r){"use strict";(function(t){const n=r("2612");function i(e){return parseInt(e.toString("hex"),16)}function s(e){let r=e.toString(16);return r.length%2===1&&(r="0"+r),t.from(r,"hex")}function o(e){return t.from(n.encode(i(e)))}function a(e){return s(n.decode(e))}function c(e){return t.from(n.encode(e))}e.exports={numberToBuffer:s,bufferToNumber:i,varintBufferEncode:o,varintBufferDecode:a,varintEncode:c}}).call(this,r("b639").Buffer)},"1c1d":function(e,t){e.exports=function(e,t,r){"use asm";var n=new e.Uint8Array(r);var i=t.pushInt;var s=t.pushInt32;var o=t.pushInt32Neg;var a=t.pushInt64;var c=t.pushInt64Neg;var u=t.pushFloat;var l=t.pushFloatSingle;var h=t.pushFloatDouble;var f=t.pushTrue;var d=t.pushFalse;var p=t.pushUndefined;var y=t.pushNull;var g=t.pushInfinity;var m=t.pushInfinityNeg;var b=t.pushNaN;var v=t.pushNaNNeg;var w=t.pushArrayStart;var _=t.pushArrayStartFixed;var E=t.pushArrayStartFixed32;var S=t.pushArrayStartFixed64;var k=t.pushObjectStart;var C=t.pushObjectStartFixed;var A=t.pushObjectStartFixed32;var I=t.pushObjectStartFixed64;var T=t.pushByteString;var x=t.pushByteStringStart;var B=t.pushUtf8String;var R=t.pushUtf8StringStart;var N=t.pushSimpleUnassigned;var O=t.pushTagStart;var P=t.pushTagStart4;var D=t.pushTagStart8;var L=t.pushTagUnassigned;var M=t.pushBreak;var U=e.Math.pow;var j=0;var K=0;var F=0;function V(e){e=e|0;j=0;K=e;while((j|0)<(K|0)){F=Qe[n[j]&255](n[j]|0)|0;if((F|0)>0){break}}return F|0}function q(e){e=e|0;if(((j|0)+(e|0)|0)<(K|0)){return 0}return 1}function z(e){e=e|0;return n[e|0]<<8|n[e+1|0]|0}function H(e){e=e|0;return n[e|0]<<24|n[e+1|0]<<16|n[e+2|0]<<8|n[e+3|0]|0}function G(e){e=e|0;i(e|0);j=j+1|0;return 0}function $(e){e=e|0;if(q(1)|0){return 1}i(n[j+1|0]|0);j=j+2|0;return 0}function W(e){e=e|0;if(q(2)|0){return 1}i(z(j+1|0)|0);j=j+3|0;return 0}function Y(e){e=e|0;if(q(4)|0){return 1}s(z(j+1|0)|0,z(j+3|0)|0);j=j+5|0;return 0}function Q(e){e=e|0;if(q(8)|0){return 1}a(z(j+1|0)|0,z(j+3|0)|0,z(j+5|0)|0,z(j+7|0)|0);j=j+9|0;return 0}function J(e){e=e|0;i(-1-(e-32|0)|0);j=j+1|0;return 0}function X(e){e=e|0;if(q(1)|0){return 1}i(-1-(n[j+1|0]|0)|0);j=j+2|0;return 0}function Z(e){e=e|0;var t=0;if(q(2)|0){return 1}t=z(j+1|0)|0;i(-1-(t|0)|0);j=j+3|0;return 0}function ee(e){e=e|0;if(q(4)|0){return 1}o(z(j+1|0)|0,z(j+3|0)|0);j=j+5|0;return 0}function te(e){e=e|0;if(q(8)|0){return 1}c(z(j+1|0)|0,z(j+3|0)|0,z(j+5|0)|0,z(j+7|0)|0);j=j+9|0;return 0}function re(e){e=e|0;var t=0;var r=0;var n=0;n=e-64|0;if(q(n|0)|0){return 1}t=j+1|0;r=(j+1|0)+(n|0)|0;T(t|0,r|0);j=r|0;return 0}function ne(e){e=e|0;var t=0;var r=0;var i=0;if(q(1)|0){return 1}i=n[j+1|0]|0;t=j+2|0;r=(j+2|0)+(i|0)|0;if(q(i+1|0)|0){return 1}T(t|0,r|0);j=r|0;return 0}function ie(e){e=e|0;var t=0;var r=0;var n=0;if(q(2)|0){return 1}n=z(j+1|0)|0;t=j+3|0;r=(j+3|0)+(n|0)|0;if(q(n+2|0)|0){return 1}T(t|0,r|0);j=r|0;return 0}function se(e){e=e|0;var t=0;var r=0;var n=0;if(q(4)|0){return 1}n=H(j+1|0)|0;t=j+5|0;r=(j+5|0)+(n|0)|0;if(q(n+4|0)|0){return 1}T(t|0,r|0);j=r|0;return 0}function oe(e){e=e|0;return 1}function ae(e){e=e|0;x();j=j+1|0;return 0}function ce(e){e=e|0;var t=0;var r=0;var n=0;n=e-96|0;if(q(n|0)|0){return 1}t=j+1|0;r=(j+1|0)+(n|0)|0;B(t|0,r|0);j=r|0;return 0}function ue(e){e=e|0;var t=0;var r=0;var i=0;if(q(1)|0){return 1}i=n[j+1|0]|0;t=j+2|0;r=(j+2|0)+(i|0)|0;if(q(i+1|0)|0){return 1}B(t|0,r|0);j=r|0;return 0}function le(e){e=e|0;var t=0;var r=0;var n=0;if(q(2)|0){return 1}n=z(j+1|0)|0;t=j+3|0;r=(j+3|0)+(n|0)|0;if(q(n+2|0)|0){return 1}B(t|0,r|0);j=r|0;return 0}function he(e){e=e|0;var t=0;var r=0;var n=0;if(q(4)|0){return 1}n=H(j+1|0)|0;t=j+5|0;r=(j+5|0)+(n|0)|0;if(q(n+4|0)|0){return 1}B(t|0,r|0);j=r|0;return 0}function fe(e){e=e|0;return 1}function de(e){e=e|0;R();j=j+1|0;return 0}function pe(e){e=e|0;_(e-128|0);j=j+1|0;return 0}function ye(e){e=e|0;if(q(1)|0){return 1}_(n[j+1|0]|0);j=j+2|0;return 0}function ge(e){e=e|0;if(q(2)|0){return 1}_(z(j+1|0)|0);j=j+3|0;return 0}function me(e){e=e|0;if(q(4)|0){return 1}E(z(j+1|0)|0,z(j+3|0)|0);j=j+5|0;return 0}function be(e){e=e|0;if(q(8)|0){return 1}S(z(j+1|0)|0,z(j+3|0)|0,z(j+5|0)|0,z(j+7|0)|0);j=j+9|0;return 0}function ve(e){e=e|0;w();j=j+1|0;return 0}function we(e){e=e|0;var t=0;t=e-160|0;if(q(t|0)|0){return 1}C(t|0);j=j+1|0;return 0}function _e(e){e=e|0;if(q(1)|0){return 1}C(n[j+1|0]|0);j=j+2|0;return 0}function Ee(e){e=e|0;if(q(2)|0){return 1}C(z(j+1|0)|0);j=j+3|0;return 0}function Se(e){e=e|0;if(q(4)|0){return 1}A(z(j+1|0)|0,z(j+3|0)|0);j=j+5|0;return 0}function ke(e){e=e|0;if(q(8)|0){return 1}I(z(j+1|0)|0,z(j+3|0)|0,z(j+5|0)|0,z(j+7|0)|0);j=j+9|0;return 0}function Ce(e){e=e|0;k();j=j+1|0;return 0}function Ae(e){e=e|0;O(e-192|0|0);j=j+1|0;return 0}function Ie(e){e|0;O(e|0);j=j+1|0;return 0}function Te(e){e|0;O(e|0);j=j+1|0;return 0}function xe(e){e|0;O(e|0);j=j+1|0;return 0}function Be(e){e|0;O(e|0);j=j+1|0;return 0}function Re(e){e=e|0;O(e-192|0|0);j=j+1|0;return 0}function Ne(e){e|0;O(e|0);j=j+1|0;return 0}function Oe(e){e|0;O(e|0);j=j+1|0;return 0}function Pe(e){e|0;O(e|0);j=j+1|0;return 0}function De(e){e=e|0;if(q(1)|0){return 1}O(n[j+1|0]|0);j=j+2|0;return 0}function Le(e){e=e|0;if(q(2)|0){return 1}O(z(j+1|0)|0);j=j+3|0;return 0}function Me(e){e=e|0;if(q(4)|0){return 1}P(z(j+1|0)|0,z(j+3|0)|0);j=j+5|0;return 0}function Ue(e){e=e|0;if(q(8)|0){return 1}D(z(j+1|0)|0,z(j+3|0)|0,z(j+5|0)|0,z(j+7|0)|0);j=j+9|0;return 0}function je(e){e=e|0;N((e|0)-224|0);j=j+1|0;return 0}function Ke(e){e=e|0;d();j=j+1|0;return 0}function Fe(e){e=e|0;f();j=j+1|0;return 0}function Ve(e){e=e|0;y();j=j+1|0;return 0}function qe(e){e=e|0;p();j=j+1|0;return 0}function ze(e){e=e|0;if(q(1)|0){return 1}N(n[j+1|0]|0);j=j+2|0;return 0}function He(e){e=e|0;var t=0;var r=0;var i=1.0;var s=0.0;var o=0.0;var a=0.0;if(q(2)|0){return 1}t=n[j+1|0]|0;r=n[j+2|0]|0;if((t|0)&0x80){i=-1.0}s=+(((t|0)&0x7C)>>2);o=+(((t|0)&0x03)<<8|r);if(+s==0.0){u(+(+i*+5.9604644775390625e-8*+o))}else if(+s==31.0){if(+i==1.0){if(+o>0.0){b()}else{g()}}else{if(+o>0.0){v()}else{m()}}}else{u(+(+i*U(+2,+(+s-25.0))*+(1024.0+o)))}j=j+3|0;return 0}function Ge(e){e=e|0;if(q(4)|0){return 1}l(n[j+1|0]|0,n[j+2|0]|0,n[j+3|0]|0,n[j+4|0]|0);j=j+5|0;return 0}function $e(e){e=e|0;if(q(8)|0){return 1}h(n[j+1|0]|0,n[j+2|0]|0,n[j+3|0]|0,n[j+4|0]|0,n[j+5|0]|0,n[j+6|0]|0,n[j+7|0]|0,n[j+8|0]|0);j=j+9|0;return 0}function We(e){e=e|0;return 1}function Ye(e){e=e|0;M();j=j+1|0;return 0}var Qe=[G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,G,$,W,Y,Q,We,We,We,We,J,J,J,J,J,J,J,J,J,J,J,J,J,J,J,J,J,J,J,J,J,J,J,J,X,Z,ee,te,We,We,We,We,re,re,re,re,re,re,re,re,re,re,re,re,re,re,re,re,re,re,re,re,re,re,re,re,ne,ie,se,oe,We,We,We,ae,ce,ce,ce,ce,ce,ce,ce,ce,ce,ce,ce,ce,ce,ce,ce,ce,ce,ce,ce,ce,ce,ce,ce,ce,ue,le,he,fe,We,We,We,de,pe,pe,pe,pe,pe,pe,pe,pe,pe,pe,pe,pe,pe,pe,pe,pe,pe,pe,pe,pe,pe,pe,pe,pe,ye,ge,me,be,We,We,We,ve,we,we,we,we,we,we,we,we,we,we,we,we,we,we,we,we,we,we,we,we,we,we,we,we,_e,Ee,Se,ke,We,We,We,Ce,Ae,Ae,Ae,Ae,Ae,Ae,Re,Re,Re,Re,Re,Re,Re,Re,Re,Re,Re,Re,Re,Re,Re,Re,Re,Re,De,Le,Me,Ue,We,We,We,We,je,je,je,je,je,je,je,je,je,je,je,je,je,je,je,je,je,je,je,je,Ke,Fe,Ve,qe,ze,He,Ge,$e,We,We,We,Ye];return{parse:V}}},"1c27":function(e,t,r){"use strict";const n=r("f294"),i=r("faa1").EventEmitter,s=r("4bc2"),o=s("libp2p");o.error=s("libp2p:error");const a=r("000a"),c=r("fa4d"),u=r("88ae"),l=r("0512"),h=r("4a0d"),f=r("9f2e"),d=r("7fa9"),p=r("8911"),y=r("c3f4"),g=r("b126"),m=r("2db6"),b=r("5c2f"),{emitFirst:v}=r("eaa4"),w=r("647f"),_=r("510a"),E=r("76d9"),S=r("9b20"),{getPeerInfoRemote:k}=r("e5e0"),C=r("7268").validate,{codes:A}=r("a41c"),I=(e,t)=>a(new Error(`libp2p cannot ${e} when not started; state is ${t}`),A.ERR_NODE_NOT_STARTED);class T extends i{constructor(e){if(super(),this._options=C(e),this.datastore=this._options.datastore,this.peerInfo=this._options.peerInfo,this.peerBook=this._options.peerBook||new d,this._modules=this._options.modules,this._config=this._options.config,this._transport=[],this._discovery=[],this._switch=new y(this.peerInfo,this.peerBook,this._options.switch),this._switch.on("error",(...e)=>this.emit("error",...e)),this.stats=this._switch.stats,this.connectionManager=new b(this,this._options.connectionManager),this._modules.streamMuxer){const e=this._modules.streamMuxer;e.forEach(e=>this._switch.connection.addStreamMuxer(e)),this._switch.connection.reuse(),this._switch.connection.enableCircuitRelay(this._config.relay),this._switch.on("peer-mux-established",e=>{this.emit("peer:connect",e)}),this._switch.on("peer-mux-closed",e=>{this.emit("peer:disconnect",e)})}if(this._switch.on("connection:start",e=>{this.emit("connection:start",e)}),this._switch.on("connection:end",e=>{this.emit("connection:end",e)}),this._modules.connEncryption){const e=this._modules.connEncryption;e.forEach(e=>{this._switch.connection.crypto(e.tag,e.encrypt)})}if(this._modules.connProtector)this._switch.protector=this._modules.connProtector;else if(Object({NODE_ENV:"production",BASE_URL:"/"}).LIBP2P_FORCE_PNET)throw new Error("Private network is enforced, but no protector was provided");if(this._config.dht.enabled){const e=this._modules.dht;this._dht=new e(this._switch,{datastore:this.datastore,...this._config.dht})}this._modules.pubsub&&!1!==this._config.pubsub.enabled&&(this.pubsub=S(this,this._modules.pubsub,this._config.pubsub)),this.peerRouting=w(this),this.contentRouting=_(this),this.dht=E(this),g.mount(this._switch),this.state=new n("STOPPED",{STOPPED:{start:"STARTING",stop:"STOPPED"},STARTING:{done:"STARTED",abort:"STOPPED",stop:"STOPPING"},STARTED:{stop:"STOPPING",start:"STARTED"},STOPPING:{stop:"STOPPING",done:"STOPPED"}}),this.state.on("STARTING",()=>{o("libp2p is starting"),this._onStarting()}),this.state.on("STOPPING",()=>{o("libp2p is stopping"),this._onStopping()}),this.state.on("STARTED",()=>{o("libp2p has started"),this.emit("start")}),this.state.on("STOPPED",()=>{o("libp2p has stopped"),this.emit("stop")}),this.state.on("error",e=>{o.error(e),this.emit("error",e)}),this.state.on("STARTED",()=>{this.peerBook.getAllArray().forEach(e=>{this.emit("peer:discovery",e),this._maybeConnect(e)})}),this._peerDiscovered=this._peerDiscovered.bind(this),["start","stop","dial","dialProtocol","dialFSM","hangUp","ping"].forEach(e=>{this[e]=c(this[e],{context:this})})}emit(e,...t){"error"!==e||this._events.error?super.emit(e,...t):o.error(...t)}start(e=(()=>{})){v(this,["error","start"],e),this.state("start")}stop(e=(()=>{})){v(this,["error","stop"],e),this.state("stop")}isStarted(){return!!this.state&&"STARTED"===this.state._state}dial(e,t){this.dialProtocol(e,null,t)}dialProtocol(e,t,r){if(!this.isStarted())return r(I("dial",this.state._state));"function"===typeof t&&(r=t,t=void 0),k(e,this).then(e=>{this._switch.dial(e,t,r)},r)}dialFSM(e,t,r){if(!this.isStarted())return r(I("dial",this.state._state));"function"===typeof t&&(r=t,t=void 0),k(e,this).then(e=>{this._switch.dialFSM(e,t,r)},r)}hangUp(e,t){k(e,this).then(e=>{this._switch.hangUp(e,t)},t)}ping(e,t){if(!this.isStarted())return t(I("ping",this.state._state));k(e,this).then(e=>{t(null,new g(this._switch,e))},t)}handle(e,t,r){this._switch.handle(e,t,r)}unhandle(e){this._switch.unhandle(e)}_onStarting(){if(!this._modules.transport)return this.emit("error",new Error("no transports were present")),this.state("abort");let e;const t=[],r=[];this.peerInfo.multiaddrs.toArray().forEach(e=>{e.getPeerId()||(t.push(e),r.push(e.encapsulate("/p2p/"+this.peerInfo.id.toB58String())))}),this.peerInfo.multiaddrs.replace(t,r);const n=this.peerInfo.multiaddrs.toArray();this._modules.transport.forEach(t=>{let r;r="function"===typeof t?new t({libp2p:this}):t,r.filter(n).length>0?this._switch.transport.add(r.tag||r[Symbol.toStringTag],r):m.isWebSockets(r)&&(e=r),this._transport.push(r)}),l([e=>{this.connectionManager.start(),this._switch.start(e)},t=>{e&&this._switch.transport.add(e.tag||e.constructor.name,e);const r=this.peerInfo.multiaddrs.toArray();r.forEach(e=>{e.toString().match(/\/p2p-circuit($|\/)/)||this._transport.find(t=>t.filter(e).length>0)||this.peerInfo.multiaddrs.delete(e)}),t()},e=>{this._dht?this._dht.start(()=>{this._dht.on("peer",this._peerDiscovered),e()}):e()},e=>{if(this.pubsub)return this.pubsub.start(e);e()},e=>{this._modules.peerDiscovery?this._setupPeerDiscovery(e):e()}],e=>{if(e)return o.error(e),this.emit("error",e),this.state("stop");this.state("done")})}_onStopping(){l([e=>{h(this._discovery.map(e=>(e.removeListener("peer",this._peerDiscovered),t=>e.stop(e=>{o.error("an error occurred stopping the discovery service",e),t()}))),e)},e=>{if(this.pubsub)return this.pubsub.stop(e);e()},e=>{if(this._dht)return this._dht.removeListener("peer",this._peerDiscovered),this._dht.stop(e);e()},e=>{this.connectionManager.stop(),this._switch.stop(e)},e=>{this._switch.transport.removeAll(()=>e())}],e=>{e&&(o.error(e),this.emit("error",e)),this.state("done")})}_peerDiscovered(e){e.id.toB58String()!==this.peerInfo.id.toB58String()?(e=this.peerBook.put(e),this.isStarted()&&(this.emit("peer:discovery",e),this._maybeConnect(e))):o.error(new Error(A.ERR_DISCOVERED_SELF))}_maybeConnect(e){if(!0===this._config.peerDiscovery.autoDial&&!e.isConnected()){const t=this._options.connectionManager.minPeers||0;t>Object.keys(this._switch.connection.connections).length&&(o("connecting to discovered peer"),this._switch.dialer.connect(e,e=>{e&&o.error("could not connect to discovered peer",e)}))}}_setupPeerDiscovery(e){for(const t of this._modules.peerDiscovery){let e={enabled:!0};if(t.tag&&this._config.peerDiscovery&&this._config.peerDiscovery[t.tag]&&(e={...e,...this._config.peerDiscovery[t.tag]}),e.enabled){let r;r="function"===typeof t?new t(Object.assign({},e,{peerInfo:this.peerInfo})):t,r.on("peer",this._peerDiscovered),this._discovery.push(r)}}u(this._discovery,(e,t)=>{e.start(t)},e)}}e.exports=T,e.exports.createLibp2p=c((e,t)=>{if(e.peerInfo)return f(t,null,new T(e));p.create((r,n)=>{if(r)return t(r);e.peerInfo=n,t(null,new T(e))})})},"1c7ef":function(e,t,r){"use strict";(function(n){const i=r("334b"),{cid:s,serialize:o}=r("bda9");function a(e){let t;return e.Data&&e.Data.length>0?(t=n.alloc(e.Data.length),e.Data.copy(t)):t=n.alloc(0),t}function c(e){return e.Links.slice()}function u(e,t){return n.compare(e.nameAsBuffer,t.nameAsBuffer)}t=e.exports;const l=async(e,t={})=>{const r=o(e),n=await s(r);return new i(t.name||"",r.length,n)};t.cloneData=a,t.cloneLinks=c,t.linkSort=u,t.toDAGLink=l}).call(this,r("b639").Buffer)},"1c9b":function(e,t,r){"use strict";(function(t){function r(e,r){var s=this,a=this._readableState&&this._readableState.destroyed,c=this._writableState&&this._writableState.destroyed;return a||c?(r?r(e):!e||this._writableState&&this._writableState.errorEmitted||t.nextTick(o,this,e),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,(function(e){!r&&e?(t.nextTick(n,s,e),s._writableState&&(s._writableState.errorEmitted=!0)):r?(t.nextTick(i,s),r(e)):t.nextTick(i,s)})),this)}function n(e,t){o(e,t),i(e)}function i(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit("close")}function s(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function o(e,t){e.emit("error",t)}e.exports={destroy:r,undestroy:s}}).call(this,r("4362"))},"1cd4":function(e,t,r){"use strict";const n=r("334b");function i(e){return new n(e.Name||e.name||"",e.Tsize||e.Size||e.size||0,e.Hash||e.hash||e.multihash||e.cid)}t=e.exports,t.createDagLinkFromB58EncodedHash=i},"1d74":function(e,t,r){"use strict";(function(t){const n=r("9efb");function i(e){return parseInt(e.toString("hex"),16)}function s(e){let r=e.toString(16);return r.length%2===1&&(r="0"+r),t.from(r,"hex")}function o(e){return t.from(n.encode(i(e)))}function a(e){return s(n.decode(e))}e.exports={numberToBuffer:s,bufferToNumber:i,varintBufferEncode:o,varintBufferDecode:a}}).call(this,r("b639").Buffer)},"1d81":function(e,t,r){"use strict";var n,i,s=r("4ea4"),o=s(r("a34a")),a=s(r("c973")),c=s(r("970b")),u=s(r("5bc3")),l=s(r("6b58")),h=s(r("36c6")),f=s(r("3c96")),d=s(r("ed6d")),p=r("8ded"),y=r("cde5"),g=r("972c"),m=r("84b5"),b=m.createLink,v=m.validateLink,w=r("9211"),_=r("b42c"),E=r("ebfe"),S=r("f87d"),k=r("b535"),C=r("8400"),A=r("aaed"),I=r("dd35"),T=r("b3ec"),x=r("bc13"),B=r("888a"),R=r("5eec"),N=r("a886"),O=T.pinning_node,P=T.address_server_url,D=T.ipfs_options,L=function(e){function t(e,r){var n,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return(0,c["default"])(this,t),n=(0,l["default"])(this,(0,h["default"])(t).call(this)),n._provider=e,n._ipfs=r,g(n._ipfs,{pin:!0}),n._serverUrl=i.addressServer||P,n["public"]=null,n["private"]=null,n.verified=new k((0,f["default"])(n)),n.spaces={},n.syncDone=null,n.hasPublishedLink={},n}return(0,d["default"])(t,e),(0,u["default"])(t,[{key:"_init",value:function(){var e=(0,a["default"])(o["default"].mark((function e(t){return o["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,_.create(this._ipfs,t);case 2:this.replicator=e.sent;case 3:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"_load",value:function(){var e=(0,a["default"])(o["default"].mark((function e(){var t,r,n,i,s,a,c,u,l=this,h=arguments;return o["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:return t=h.length>0&&void 0!==h[0]?h[0]:{},e.next=3,this._3id.getAddress();case 3:if(r=e.sent,!r){e.next=10;break}return e.next=7,this._getLinkedData(r);case 7:e.t0=e.sent,e.next=11;break;case 10:e.t0={};case 11:if(n=e.t0,i=n.rootStoreAddress,s=n.did,!i){e.next=26;break}return e.next=17,this.replicator.start(i,s,{profile:!0});case 17:return e.next=19,this.replicator.rootstoreSyncDone;case 19:return e.next=21,this.replicator.getAuthData();case 21:return a=e.sent,e.next=24,this._3id.authenticate(t.spaces,{authData:a});case 24:e.next=35;break;case 26:return e.next=28,this._3id.authenticate(t.spaces);case 28:return c=this._3id.muportFingerprint+".root",e.next=31,this._3id.getPublicKeys(null,!0);case 31:return u=e.sent.signingKey,e.next=34,this.replicator["new"](c,u,this._3id.DID);case 34:this._publishRootStore(this.replicator.rootstore.address.toString());case 35:return e.t1=this.replicator.rootstore,e.next=38,this._3id.getOdbId();case 38:return e.t2=e.sent,e.t1.setIdentity.call(e.t1,e.t2),this.syncDone=this.replicator.syncDone,this._3id.events.on("new-auth-method",(function(e){l._writeRootstoreEntry(_.entryTypes.AUTH_DATA,e)})),this._3id.events.on("new-link-proof",(function(e){l._writeAddressLink(e)})),this._3id.startUpdatePolling(),this["public"]=new E(this._3id.muportFingerprint+".public",this._linkProfile.bind(this),this.replicator,this._3id),this["private"]=new S(this._3id.muportFingerprint+".private",this.replicator,this._3id),e.next=48,this["public"]._load();case 48:return e.next=50,this["private"]._load();case 50:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"auth",value:function(){var e=(0,a["default"])(o["default"].mark((function e(){var t,r,n=this,i=arguments;return o["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(t=i.length>0&&void 0!==i[0]?i[0]:[],r=i.length>1&&void 0!==i[1]?i[1]:{},this._3id){e.next=12;break}if(this._provider.is3idProvider||r.address){e.next=5;break}throw new Error("auth: address needed when 3ID provider is not used");case 5:return e.next=7,w.getIdFromEthAddress(r.address,this._provider,this._ipfs,this.replicator._orbitdb.keystore,r);case 7:return this._3id=e.sent,e.next=10,this._load(Object.assign(r,{spaces:t}));case 10:e.next=14;break;case 12:return e.next=14,this._3id.authenticate(t);case 14:return e.next=16,Promise.all(t.map(function(){var e=(0,a["default"])(o["default"].mark((function e(t){return o["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(!n.spaces[t]){e.next=3;break}return e.next=3,n.spaces[t]._authThreads(n._3id);case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 16:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"openSpace",value:function(){var e=(0,a["default"])(o["default"].mark((function e(t){var r,n=arguments;return o["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(r=n.length>1&&void 0!==n[1]?n[1]:{},!t.includes(".")){e.next=3;break}throw new Error('Invalid name: character "." not allowed');case 3:if(this._3id){e.next=5;break}throw new Error("openSpace: auth required");case 5:if(this.spaces[t]||(this.spaces[t]=new C(t,this.replicator)),this.spaces[t].isOpen){e.next=26;break}return e.prev=7,e.next=10,this.spaces[t].open(this._3id,r);case 10:return e.next=12,this.isAddressLinked();case 12:if(e.sent){e.next=14;break}this.linkAddress();case 14:e.next=24;break;case 16:if(e.prev=16,e.t0=e["catch"](7),delete this.spaces[t],!e.t0.message.includes("User denied message signature.")){e.next=23;break}throw new Error("User denied space consent.");case 23:throw new Error("An error occured while opening space: ",e.t0.message);case 24:e.next=27;break;case 26:r.onSyncDone&&r.onSyncDone();case 27:return e.abrupt("return",this.spaces[t]);case 28:case"end":return e.stop()}}),e,this,[[7,16]])})));function t(t){return e.apply(this,arguments)}return t}()},{key:"openThread",value:function(){var e=(0,a["default"])(o["default"].mark((function e(t,r,n){return o["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:return this.spaces[t]||(this.spaces[t]=new C(t,this.replicator)),e.abrupt("return",this.spaces[t].joinThread(r,n));case 2:case"end":return e.stop()}}),e,this)})));function t(t,r,n){return e.apply(this,arguments)}return t}()},{key:"onSyncDone",value:function(){var e=(0,a["default"])(o["default"].mark((function e(t){return o["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.syncDone;case 2:t();case 3:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"_publishRootStore",value:function(){var e=(0,a["default"])(o["default"].mark((function e(t){var r,n,i=this;return o["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this._3id.signJWT({rootStoreAddress:t});case 2:return r=e.sent,n=function(){var e=(0,a["default"])(o["default"].mark((function e(t){return o["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,A.fetchJson(i._serverUrl+"/odbAddress",{address_token:t});case 3:e.next=14;break;case 5:if(e.prev=5,e.t0=e["catch"](0),"Invalid JWT"!==e.t0.message){e.next=12;break}return e.next=10,new Promise((function(e){return setTimeout(e,300)}));case 10:return e.next=12,n(t);case 12:if(e.t0.statusCode){e.next=14;break}throw new Error(e.t0);case 14:case"end":return e.stop()}}),e,null,[[0,5]])})));return function(t){return e.apply(this,arguments)}}(),e.next=6,n(r);case 6:return e.abrupt("return",!0);case 7:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"_getLinkedData",value:function(){var e=(0,a["default"])(o["default"].mark((function e(t){var r,n,i;return o["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,A.fetchJson("".concat(this._serverUrl,"/odbAddress/").concat(t));case 3:return r=e.sent.data,n=r.rootStoreAddress,i=r.did,e.abrupt("return",{rootStoreAddress:n,did:i});case 9:if(e.prev=9,e.t0=e["catch"](0),404!==e.t0.statusCode){e.next=13;break}return e.abrupt("return",{});case 13:throw new Error("Error while getting rootstore",e.t0);case 14:case"end":return e.stop()}}),e,this,[[0,9]])})));function t(t){return e.apply(this,arguments)}return t}()},{key:"linkAddress",value:function(){var e=(0,a["default"])(o["default"].mark((function e(){var t,r=arguments;return o["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(t=r.length>0&&void 0!==r[0]?r[0]:{},this._3id){e.next=3;break}throw new Error("linkAddress: auth required");case 3:if(!t.proof){e.next=8;break}return e.next=6,this._writeAddressLink(t.proof);case 6:e.next=10;break;case 8:return e.next=10,this._linkProfile();case 10:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"removeAddressLink",value:function(){var e=(0,a["default"])(o["default"].mark((function e(t){var r,n,i,s;return o["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(this._3id){e.next=2;break}throw new Error("removeAddressLink: auth required");case 2:return t=t.toLowerCase(),e.next=5,this.isAddressLinked({address:t});case 5:if(r=e.sent,r){e.next=8;break}throw new Error("removeAddressLink: link for given address does not exist");case 8:return n={address:t,type:"delete-address-link"},i=3600,e.next=12,this._3id.signJWT(n,{expiresIn:i});case 12:return s=e.sent,e.prev=13,e.next=16,A.fetchJson(this._serverUrl+"/linkdelete",{delete_token:s});case 16:e.next=22;break;case 18:if(e.prev=18,e.t0=e["catch"](13),e.t0.statusCode){e.next=22;break}throw new Error(e.t0);case 22:return e.next=24,this._deleteAddressLink(t);case 24:return e.abrupt("return",!0);case 25:case"end":return e.stop()}}),e,this,[[13,18]])})));function t(t){return e.apply(this,arguments)}return t}()},{key:"isAddressLinked",value:function(){var e=(0,a["default"])(o["default"].mark((function e(){var t,r,n,i=arguments;return o["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(t=i.length>0&&void 0!==i[0]?i[0]:{},this._3id){e.next=3;break}throw new Error("isAddressLinked: auth required");case 3:return t.address&&(t.address=t.address.toLowerCase()),e.next=6,this._readAddressLinks();case 6:return r=e.sent,n=r.find((function(e){var r=!t.address||e.address.toLowerCase()===t.address;return t.type?r&&e.type===t.type:r})),e.abrupt("return",Boolean(n));case 9:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"listAddressLinks",value:function(){var e=(0,a["default"])(o["default"].mark((function e(){var t;return o["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(this._3id){e.next=2;break}throw new Error("listAddressLinks: auth required");case 2:return e.next=4,this._readAddressLinks();case 4:return t=e.sent,e.abrupt("return",t.reduce((function(e,t){var r=Object.assign({},t);return r.linkId=r.entry.hash,delete r.entry,e.push(r),e}),[]));case 6:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"_writeAddressLink",value:function(){var e=(0,a["default"])(o["default"].mark((function e(t){var r;return o["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,v(t);case 2:if(r=e.sent,r){e.next=5;break}throw new Error("tried to write invalid link proof",t);case 5:return e.next=7,this.isAddressLinked({address:r.address});case 7:if(!e.sent){e.next=9;break}return e.abrupt("return",!0);case 9:return e.next=11,this._writeRootstoreEntry(_.entryTypes.ADDRESS_LINK,t);case 11:return e.next=13,A.fetchJson(this._serverUrl+"/link",t);case 13:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"_linkProfile",value:function(){var e=(0,a["default"])(o["default"].mark((function e(){var t,r,n,i,s;return o["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this._3id.getAddress();case 2:return t=e.sent,e.next=5,this._readAddressLink(t);case 5:if(r=e.sent,r){e.next=27;break}if(this._provider.is3idProvider){e.next=25;break}return e.prev=8,e.next=11,b(this._3id.DID,t,this._provider);case 11:r=e.sent,e.next=17;break;case 14:throw e.prev=14,e.t0=e["catch"](8),new Error("Link consent message must be signed before adding data, to link address to store",e.t0);case 17:return e.prev=17,e.next=20,this._writeAddressLink(r);case 20:e.next=25;break;case 22:throw e.prev=22,e.t1=e["catch"](17),new Error("An error occured while publishing link:",e.t1);case 25:e.next=37;break;case 27:if(this.hasPublishedLink[r.signature]){e.next=37;break}return this.hasPublishedLink[r.signature]=!0,e.prev=29,e.next=32,A.fetchJson(this._serverUrl+"/link",r);case 32:e.next=37;break;case 34:throw e.prev=34,e.t2=e["catch"](29),new Error("An error occured while publishing link:",e.t2);case 37:return e.next=39,this["public"].get("proof_did");case 39:if(n=e.sent,!n){e.next=53;break}if(i=N.decodeJWT(n).payload.iss,!i.includes("muport")){e.next=51;break}return s={muport:n},e.t3=this["public"],e.next=47,this._3id.signJWT(s);case 47:return e.t4=e.sent,e.t5={noLink:!0},e.next=51,e.t3.set.call(e.t3,"proof_did",e.t4,e.t5);case 51:e.next=60;break;case 53:return e.t6=this["public"],e.next=56,this._3id.signJWT();case 56:return e.t7=e.sent,e.t8={noLink:!0},e.next=60,e.t6.set.call(e.t6,"proof_did",e.t7,e.t8);case 60:case"end":return e.stop()}}),e,this,[[8,14],[17,22],[29,34]])})));function t(){return e.apply(this,arguments)}return t}()},{key:"_writeRootstoreEntry",value:function(){var e=(0,a["default"])(o["default"].mark((function e(t,r){var n,i,s,c,u=this;return o["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this._ipfs.dag.put(r);case 2:return n=e.sent.toBaseEncodedString(),e.next=5,this._ipfs.pin.add(n);case 5:return e.next=7,this._typeCIDExists(t,n);case 7:if(i=e.sent,!i){e.next=10;break}return e.abrupt("return");case 10:s={type:t,data:n},c=this._rootstoreQueue,this._rootstoreQueue=(0,a["default"])(o["default"].mark((function e(){return o["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(!c){e.next=3;break}return e.next=3,c;case 3:return e.next=5,u.replicator.rootstore.add(s);case 5:case"end":return e.stop()}}),e)})))();case 13:case"end":return e.stop()}}),e,this)})));function t(t,r){return e.apply(this,arguments)}return t}()},{key:"_typeCIDExists",value:function(){var e=(0,a["default"])(o["default"].mark((function e(t,r){var n,i;return o["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.replicator.rootstore.iterator({limit:-1}).collect();case 2:return n=e.sent,i=n.filter((function(e){return e.payload.value.type===t})),e.abrupt("return",Boolean(i.find((function(e){return e.data===r}))));case 5:case"end":return e.stop()}}),e,this)})));function t(t,r){return e.apply(this,arguments)}return t}()},{key:"_deleteAddressLink",value:function(){var e=(0,a["default"])(o["default"].mark((function e(t){var r;return o["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:return t=t.toLowerCase(),e.next=3,this._readAddressLink(t);case 3:if(r=e.sent,r){e.next=6;break}throw new Error("_deleteAddressLink: link for given address does not exist");case 6:return e.abrupt("return",this.replicator.rootstore.remove(r.entry.hash));case 7:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"_readAddressLinks",value:function(){var e=(0,a["default"])(o["default"].mark((function e(){var t,r;return o["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.replicator.getAddressLinks();case 2:return t=e.sent,e.next=5,Promise.all(t.map(v));case 5:return r=e.sent,e.abrupt("return",r.filter(Boolean));case 7:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"_readAddressLink",value:function(){var e=(0,a["default"])(o["default"].mark((function e(t){var r;return o["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:return t=t.toLowerCase(),e.next=3,this._readAddressLinks();case 3:return r=e.sent,e.abrupt("return",r.find((function(e){return e.address.toLowerCase()===t})));case 5:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"close",value:function(){var e=(0,a["default"])(o["default"].mark((function e(){return o["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(this._3id){e.next=2;break}throw new Error("close: auth required");case 2:return e.next=4,this.replicator.stop();case 4:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"logout",value:function(){var e=(0,a["default"])(o["default"].mark((function e(){var t;return o["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(this._3id){e.next=2;break}throw new Error("logout: auth required");case 2:return e.next=4,this.close();case 4:return this._3id.logout(),e.next=7,this._3id.getAddress();case 7:t=e.sent,p.remove("linkConsent_"+t);case 9:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"DID",get:function(){if(!this._3id)throw new Error("DID: auth required");return this._3id.DID}}],[{key:"create",value:function(){var e=(0,a["default"])(o["default"].mark((function e(r){var n,i,s,a=arguments;return o["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:return n=a.length>1&&void 0!==a[1]?a[1]:{},e.next=3,t.getIPFS(n);case 3:return i=e.sent,s=new t(r,i,n),e.next=7,s._init(n);case 7:return e.abrupt("return",s);case 8:case"end":return e.stop()}}),e)})));function r(t){return e.apply(this,arguments)}return r}()},{key:"openBox",value:function(){var e=(0,a["default"])(o["default"].mark((function e(r,n){var i,s,a=arguments;return o["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:return i=a.length>2&&void 0!==a[2]?a[2]:{},i=Object.assign(i,{address:r}),e.next=4,t.create(n,i);case 4:return s=e.sent,e.next=7,s.auth([],i);case 7:return e.abrupt("return",s);case 8:case"end":return e.stop()}}),e)})));function r(t,r){return e.apply(this,arguments)}return r}()},{key:"isLoggedIn",value:function(e){return w.isLoggedIn(e)}},{key:"getIPFS",value:function(){var e=(0,a["default"])(o["default"].mark((function e(){var t,r,s,a=arguments;return o["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(t=a.length>0&&void 0!==a[0]?a[0]:{},"undefined"!==typeof window&&(n=window.globalIPFS,i=window.globalIPFSPromise),n||i||(i=U(t.ipfs,t.iframeStore,t.ipfsOptions)),"undefined"!==typeof window&&(window.globalIPFSPromise=i),n){e.next=8;break}return e.next=7,i;case 7:n=e.sent;case 8:return"undefined"!==typeof window&&(window.globalIPFS=n),r=n,s=t.pinningNode||O,r.swarm.connect(s,(function(){})),e.abrupt("return",r);case 13:case"end":return e.stop()}}),e)})));function t(){return e.apply(this,arguments)}return t}()}]),t}(x);function M(){var e,t={};if("undefined"!==typeof window&&window.indexedDB){var r=A.randInt(1e4);e="ipfs/root/"+r;var n=new R(e);t={storageBackends:{root:function(){return n}}}}var i=new B("ipfs",t);return{repo:i,rootPath:e}}function U(e,t,r){return j.apply(this,arguments)}function j(){return j=(0,a["default"])(o["default"].mark((function e(t,r,n){var i;return o["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(t&&r&&console.warn("Warning: iframeStore true, orbit db cache in iframe, but the given ipfs object is being used, and may not be running in same iframe."),!t){e.next=5;break}return e.abrupt("return",t);case 5:return n||(i=M(),n=Object.assign(D,{repo:i.repo})),e.next=8,y.create(n);case 8:return t=e.sent,i&&"undefined"!==typeof window&&window.indexedDB&&window.indexedDB.deleteDatabase(i.rootPath),e.abrupt("return",t);case 11:case"end":return e.stop()}}),e)}))),j.apply(this,arguments)}L.idUtils=I,e.exports=L},"1d86":function(e,t,r){(function(n){r("33fc");var i=r("a761");function s(e){e.destroy?e.destroy():console.error("warning, stream-to-pull-stream: \nthe wrapped node-stream does not implement `destroy`, \nthis may cause resource leaks.")}function o(e,t,r){var o,a,c=!1;function u(){a||(a=!0,r&&r(!0===o?null:o))}function l(){c||(c=!0,f(),o?u():e(o=!0,u))}function h(t){f(),o||e(o=t,u)}function f(){t.on("finish",l),t.removeListener("close",l),t.removeListener("error",h)}t.on("close",l),t.on("finish",l),t.on("error",h),n.nextTick((function(){i((function(r){e(null,(function(e,n){if(o=o||e,!0===e)return t._isStdio?u():t.end();if(o=o||e)return s(t),u(o);if(t._isStdio)t.write(n,(function(){r()}));else{var i=t.write(n);!1===i?t.once("drain",r):r()}}))}))}))}function a(e){var t,r=!1,n=!1;function i(){var r=e.read();if(null!==r&&t){var n=t;t=null,n(null,r)}}return e.on("readable",(function(){n=!0,t&&i()})).on("end",(function(){r=!0,t&&t(r)})).on("error",(function(e){r=e,t&&t(r)})),function(e,s){t=s,r?s(r):n&&i()}}function c(e){var t,r=[],n=[],i=!1;function o(){while((r.length||t)&&n.length)n.shift()(r.length?null:t,r.shift());!r.length&&i&&(i=!1,e.resume())}return e.on("data",(function(t){r.push(t),o(),r.length&&e.pause&&(i=!0,e.pause())})),e.on("end",(function(){t=!0,o()})),e.on("close",(function(){t=!0,o()})),e.on("error",(function(e){t=e,o()})),function(r,i){if(!i)throw new Error("*must* provide cb");if(r){function a(){while(n.length)n.shift()(r);i(r)}if(t)return a();e.once("close",a),s(e)}else n.push(i),o()}}var u=c,l=function(e,t){return function(r){return o(r,e,t)}},h=function(e){return c(e)};t=e.exports=function(e,t){return e.writable&&e.write?e.readable?function(r){return o(r,e,t),c(e)}:l(e,t):h(e)},t.sink=l,t.source=h,t.read=u,t.read1=c,t.read2=a,t.duplex=function(e,t){return{source:h(e),sink:l(e,t)}},t.transform=function(e){return function(t){var r=h(e);return l(e)(t),r}}}).call(this,r("4362"))},"1dc7":function(e,t,r){"use strict";function n(e,t,r){var n,i=e instanceof Error?e:new Error(e);if("object"===typeof t?r=t:null!=t&&(i.code=t),r)for(n in r)i[n]=r[n];return i}e.exports=n},"1dde":function(e,t,r){var n=r("d039"),i=r("b622"),s=r("2d00"),o=i("species");e.exports=function(e){return s>=51||!n((function(){var t=[],r=t.constructor={};return r[o]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},"1df2":function(e,t,r){"use strict";const n=r("6e64"),i=n.ShardingDatastore,s=r("1a18"),o=r("e3d5"),a=r("5345"),{cidToKey:c}=r("aee5");function u(e,t){if(t.sharding){const t=new n.shard.NextToLast(2);return i.createOrOpen(e,t)}return e}function l(e){return{async*query(t){for await(const r of e.query(t))yield r},async get(t){if(!o.isCID(t))throw a(new Error("Not a valid cid"),"ERR_INVALID_CID");const r=c(t);let n;try{return n=await e.get(r),new s(n,t)}catch(i){if("ERR_NOT_FOUND"===i.code){const n=h(t);if(!n)throw i;const o=c(n),a=await e.get(o);return await e.put(r,a),new s(a,t)}throw i}},async put(t){if(!s.isBlock(t))throw new Error("invalid block");const r=c(t.cid),n=await e.has(r);if(!n)return e.put(r,t.data)},async putMany(t){const r=e.batch();for await(const n of t){const t=c(n.cid);await e.has(t)||r.put(t,n.data)}return r.commit()},async has(t){if(!o.isCID(t))throw a(new Error("Not a valid cid"),"ERR_INVALID_CID");const r=await e.has(c(t));if(r)return r;const n=h(t);return!!n&&e.has(c(n))},async delete(t){if(!o.isCID(t))throw a(new Error("Not a valid cid"),"ERR_INVALID_CID");return e.delete(c(t))},async close(){return e.close()}}}function h(e){try{return 0===e.version?e.toV1():e.toV0()}catch(t){return null}}e.exports=async(e,t)=>{const r=await u(e,t);return l(r)}},"1e35":function(e,t,r){"use strict";e.exports=function(){return Date.now()}},"1e6d":function(e,t,r){var n=r("9efb");t.encode=function e(t,r,i){t=t>=0?2*t:-2*t-1;var s=n.encode(t,r,i);return e.bytes=n.encode.bytes,s},t.decode=function e(t,r){var i=n.decode(t,r);return e.bytes=n.decode.bytes,1&i?(i+1)/-2:i/2},t.encodingLength=function(e){return n.encodingLength(e>=0?2*e:-2*e-1)}},"1e83":function(e,t,r){"use strict";function n(e){if("number"===typeof e){if(n.codes[e])return n.codes[e];throw new Error("no protocol with code: "+e)}if("string"===typeof e||e instanceof String){if(n.names[e])return n.names[e];throw new Error("no protocol with name: "+e)}throw new Error("invalid protocol id type: "+e)}const i=-1;function s(e,t,r,n,i){return{code:e,size:t,name:r,resolvable:Boolean(n),path:Boolean(i)}}n.lengthPrefixedVarSize=i,n.V=i,n.table=[[4,32,"ip4"],[6,16,"tcp"],[33,16,"dccp"],[41,128,"ip6"],[42,i,"ip6zone"],[53,i,"dns","resolvable"],[54,i,"dns4","resolvable"],[55,i,"dns6","resolvable"],[56,i,"dnsaddr","resolvable"],[132,16,"sctp"],[273,16,"udp"],[275,0,"p2p-webrtc-star"],[276,0,"p2p-webrtc-direct"],[277,0,"p2p-stardust"],[290,0,"p2p-circuit"],[301,0,"udt"],[302,0,"utp"],[400,i,"unix",!1,"path"],[421,i,"p2p"],[421,i,"ipfs"],[443,0,"https"],[444,96,"onion"],[445,296,"onion3"],[446,i,"garlic64"],[460,0,"quic"],[477,0,"ws"],[478,0,"wss"],[479,0,"p2p-websocket-star"],[480,0,"http"]],n.names={},n.codes={},n.table.map(e=>{const t=s.apply(null,e);n.codes[t.code]=t,n.names[t.name]=t}),n.object=s,e.exports=n},"1ea5":function(e,t,r){"use strict";(function(t){const n=r("24f8"),i=r("b383"),s=r("f032"),o=r("0398"),a=r("82bd"); +/** + * @class CoinGecko + * @author Mark Miscavage + * @description A Node.js wrapper for the CoinGecko API with no dependencies. For more information, visit: https://www.coingecko.com/api/docs/v3 + * @example + * const CoinGecko = require('coingecko-api'); + * const CoinGeckoClient = new CoinGecko(); + * @public + * @version 1.0.10 + * @license MIT + * @kind class + */ +class c{ping(){const e="/ping";return this._request(e)}global(){const e="/global";return this._request(e)}get coins(){const e="coins";return{all:(t={})=>{const r=`/${e}`;return this._request(r,t)},list:()=>{const t=`/${e}/list`;return this._request(t)},markets:(t={})=>{const r=`/${e}/markets`;return s.isObject(t)||s._WARN_("Invalid parameter","params must be of type: Object"),s.isString(t["vs_currency"])&&!s.isStringEmpty(t["vs_currency"])||(t.vs_currency="usd"),s.isArray(t["ids"])&&(t.ids=t.ids.join(",")),this._request(r,t)},fetch:(t,r={})=>{s.isString(t)&&!s.isStringEmpty(t)||s._WARN_("Invalid parameter","coinId must be of type: String and greater than 0 characters.");const n=`/${e}/${t}`;return this._request(n,r)},fetchTickers:(t,r={})=>{s.isString(t)&&!s.isStringEmpty(t)||s._WARN_("Invalid parameter","coinId must be of type: String and greater than 0 characters."),s.isArray(r["exchange_ids"])&&(r.exchange_ids=r.exchange_ids.join(","));const n=`/${e}/${t}/tickers`;return this._request(n,r)},fetchHistory:(t,r={})=>{s.isString(t)&&!s.isStringEmpty(t)||s._WARN_("Invalid parameter","coinId must be of type: String and greater than 0 characters."),s.isObject(r)||s._WARN_("Invalid parameter","params must be of type: Object"),s.isString(r["date"])&&!s.isStringEmpty(r["date"])||s._WARN_("Missing parameter","params must include `date` and be a string in format: `dd-mm-yyyy`");const n=`/${e}/${t}/history`;return this._request(n,r)},fetchMarketChart:(t,r={})=>{s.isString(t)&&!s.isStringEmpty(t)||s._WARN_("Invalid parameter","coinId must be of type: String and greater than 0 characters."),s.isObject(r)||s._WARN_("Invalid parameter","params must be of type: Object"),s.isString(r["vs_currency"])&&!s.isStringEmpty(r["vs_currency"])||(r.vs_currency="usd"),void 0==r["days"]&&(r.days=1);const n=`/${e}/${t}/market_chart`;return this._request(n,r)},fetchMarketChartRange:(t,r={})=>{s.isString(t)&&!s.isStringEmpty(t)||s._WARN_("Invalid parameter","coinId must be of type: String and greater than 0 characters."),s.isObject(r)||s._WARN_("Invalid parameter","params must be of type: Object"),s.isString(r["vs_currency"])&&!s.isStringEmpty(r["vs_currency"])||(r.vs_currency="usd"),s.isNumber(r["from"])||s._WARN_("Missing parameter","params must include `from` and be a UNIX timestamp."),s.isNumber(r["to"])||s._WARN_("Missing parameter","params must include `to` and be a UNIX timestamp.");const n=`/${e}/${t}/market_chart/range`;return this._request(n,r)},fetchStatusUpdates:(t,r={})=>{s.isString(t)&&!s.isStringEmpty(t)||s._WARN_("Invalid parameter","coinId must be of type: String and greater than 0 characters.");const n=`/${e}/${t}/status_updates`;return this._request(n,r)},fetchCoinContractInfo:(t,r="ethereum")=>{s.isString(t)&&!s.isStringEmpty(t)||s._WARN_("Invalid parameter","contractAddress must be of type: String and greater than 0 characters."),s.isString(r)&&!s.isStringEmpty(r)||s._WARN_("Invalid parameter","assetPlatform must be of type: String and greater than 0 characters.");const n=`/${e}/${r}/contract/${t}`;return this._request(n)},fetchCoinContractMarketChart:(t,r="ethereum",n={})=>{s.isString(t)&&!s.isStringEmpty(t)||s._WARN_("Invalid parameter","contractAddress must be of type: String and greater than 0 characters."),s.isString(r)&&!s.isStringEmpty(r)||s._WARN_("Invalid parameter","assetPlatform must be of type: String and greater than 0 characters."),s.isObject(n)||s._WARN_("Invalid parameter","params must be of type: Object"),s.isString(n["vs_currency"])&&!s.isStringEmpty(n["vs_currency"])||(n.vs_currency="usd"),void 0==n["days"]&&(n.days=1);const i=`/${e}/${r}/contract/${t}/market_chart`;return this._request(i,n)},fetchCoinContractMarketChartRange:(t,r="ethereum",n={})=>{s.isString(t)&&!s.isStringEmpty(t)||s._WARN_("Invalid parameter","contractAddress must be of type: String and greater than 0 characters."),s.isString(r)&&!s.isStringEmpty(r)||s._WARN_("Invalid parameter","assetPlatform must be of type: String and greater than 0 characters."),s.isObject(n)||s._WARN_("Invalid parameter","params must be of type: Object"),s.isString(n["vs_currency"])&&!s.isStringEmpty(n["vs_currency"])||(n.vs_currency="usd"),void 0==n["days"]&&(n.days=1);const i=`/${e}/${r}/contract/${t}/market_chart/range`;return this._request(i,n)}}}get exchanges(){const e="exchanges";return{all:()=>{const t=`/${e}`;return this._request(t)},list:()=>{const t=`/${e}/list`;return this._request(t)},fetch:t=>{s.isString(t)&&!s.isStringEmpty(t)||s._WARN_("Invalid parameter","exchangeId must be of type: String and greater than 0 characters.");const r=`/${e}/${t}`;return this._request(r)},fetchTickers:(t,r={})=>{s.isString(t)&&!s.isStringEmpty(t)||s._WARN_("Invalid parameter","exchangeId must be of type: String and greater than 0 characters."),s.isArray(r["coin_ids"])&&(r.coin_ids=r.coin_ids.join(","));const n=`/${e}/${t}/tickers`;return this._request(n,r)},fetchStatusUpdates:(t,r={})=>{s.isString(t)&&!s.isStringEmpty(t)||s._WARN_("Invalid parameter","exchangeId must be of type: String and greater than 0 characters.");const n=`/${e}/${t}/status_updates`;return this._request(n,r)},fetchVolumeChart:(t,r={})=>{s.isString(t)&&!s.isStringEmpty(t)||s._WARN_("Invalid parameter","exchangeId must be of type: String and greater than 0 characters.");const n=`/${e}/${t}/volume_chart`;return this._request(n,r)}}}get statusUpdates(){return{all:(e={})=>{const t="/status_updates";return this._request(t,e)}}}get events(){const e="events";return{all:(t={})=>{const r=`/${e}`;return this._request(r,t)},fetchCountries:()=>{const t=`/${e}/countries`;return this._request(t)},fetchTypes:()=>{const t=`/${e}/types`;return this._request(t)}}}get exchangeRates(){return{all:()=>{const e="/exchange_rates";return this._request(e)}}}get simple(){return{price:(e={})=>{s.isObject(e)||s._WARN_("Invalid parameter","params must be of type: Object"),s.isArray(e["vs_currencies"])&&(e.vs_currencies=e.vs_currencies.join(",")),s.isString(e["vs_currencies"])&&!s.isStringEmpty(e["vs_currencies"])||(e.vs_currencies="usd"),s.isArray(e["ids"])&&(e.ids=e.ids.join(",")),s.isString(e["ids"])&&!s.isStringEmpty(e["ids"])||s._WARN_("Invalid parameter","params.ids must be of type: String or Array and greater than 0 characters.");const t="/simple/price";return this._request(t,e)},supportedVsCurrencies:()=>{const e="/simple/supported_vs_currencies";return this._request(e)},fetchTokenPrice:(e={},t="ethereum")=>{s.isObject(e)||s._WARN_("Invalid parameter","params must be of type: Object"),s.isString(t)&&!s.isStringEmpty(t)||s._WARN_("Invalid parameter","assetPlatform must be of type: String and greater than 0 characters."),e["contract_addresses"]||s._WARN_("Missing parameter","params must include `contract_addresses` and be a of type: String or Object"),e["vs_currencies"]||s._WARN_("Missing parameter","params must include `vs_currencies` and be a of type: String or Object"),s.isArray(e["contract_addresses"])&&(e.contract_addresses=e.contract_addresses.join(",")),s.isArray(e["vs_currencies"])&&(e.vs_currencies=e.vs_currencies.join(","));const r=`/simple/token_price/${t}`;return this._request(r,e)}}}get finance(){return{fetchPlatforms:(e={})=>{const t="/finance_platforms";return this._request(t,e)},fetchProducts:(e={})=>{const t="/finance_products";return this._request(t,e)}}}get indexes(){const e="indexes";return{all:(t={})=>{const r=`/${e}`;return this._request(r,t)},fetch:t=>{s.isString(t)&&!s.isStringEmpty(t)||s._WARN_("Invalid parameter","indexId must be of type: String and greater than 0 characters.");const r=`/${e}/${t}`;return this._request(r)},list:()=>{const t=`/${e}/list`;return this._request(t)}}}get derivatives(){const e="derivatives";return{fetchTickers:()=>{const t=`/${e}`;return this._request(t)},allExchanges:(t={})=>{const r=`/${e}/exchanges`;return this._request(r,t)},fetchExchange:(t,r={})=>{s.isString(t)&&!s.isStringEmpty(t)||s._WARN_("Invalid parameter","exchangeId must be of type: String and greater than 0 characters.");const n=`/${e}/exchanges/${t}`;return this._request(n,r)},listExchanges:()=>{const t=`/${e}/exchanges/list`;return this._request(t)}}}_buildRequestOptions(e,t){return t=s.isObject(t)?i.stringify(t):void 0,e=void 0==t?`/api/v${o.API_VERSION}${e}`:`/api/v${o.API_VERSION}${e}?${t}`,{path:e,method:"GET",host:o.HOST,port:443,timeout:c.TIMEOUT}}_request(e,r){let i=this._buildRequestOptions(e,r);return new Promise((e,r)=>{let o=n.request(i,n=>{let i=[];n.on("data",e=>{i.push(e)}),n.on("end",()=>{try{i=t.concat(i),i=i.toString(),i.startsWith("")?s._WARN_("Invalid request","There was a problem with your request. The parameter(s) you gave are missing or incorrect."):i.startsWith("Throttled")&&s._WARN_("Throttled request","There was a problem with request limit."),i=JSON.parse(i)}catch(o){r(o)}e(a(!(n.statusCode<200||n.statusCode>=300),n.statusMessage,n.statusCode,i))})});o.on("error",e=>r(e)),o.on("timeout",()=>{o.abort(),r(new Error(`CoinGecko API request timed out. Current timeout is: ${c.TIMEOUT} milliseconds`))}),o.end()})}}c.API_VERSION=o.API_VERSION,c.REQUESTS_PER_SECOND=o.REQUESTS_PER_SECOND,c.ORDER=o.ORDER,c.STATUS_UPDATE_CATEGORY=o.STATUS_UPDATE_CATEGORY,c.STATUS_UPDATE_PROJECT_TYPE=o.STATUS_UPDATE_PROJECT_TYPE,c.EVENT_TYPE=o.EVENT_TYPE,c.TIMEOUT=o.TIMEOUT,e.exports=c}).call(this,r("b639").Buffer)},"1eca":function(e,t,r){"use strict";(function(t){const n=r("e3d5"),i=(e,r)=>{if("string"===typeof r)e._links=e._links.filter(e=>e.Name!==r);else{if(!t.isBuffer(r)&&!n.isCID(r))throw new Error("second arg needs to be a name or CID");e._links=e._links.filter(e=>!e.Hash.equals(r))}};e.exports=i}).call(this,r("b639").Buffer)},"1ef8":function(e,t,r){"use strict";const n=r("d3c3"),i=r("a796"),s=r("8f0a"),{default:o}=r("10d9"),a=r("4bc2"),c=a("libp2p-delegated-content-routing");c.error=a("libp2p-delegated-content-routing:error");const u=3e4,l={protocol:"https",port:443,host:"node0.delegate.ipfs.io"},h=4;class f{constructor(e,t){if(null==e)throw new Error("missing self peerId");this.api=Object.assign({},s(),l,t),this.dht=n(this.api),this.refs=i(this.api),this.peerId=e;const r={concurrency:h};this._httpQueue=new o(r),this._httpQueueRefs=new o(Object.assign({},r,{concurrency:2})),c(`enabled DelegatedContentRouting via ${this.api.protocol}://${this.api.host}:${this.api.port}`)}async*findProviders(e,t={}){const r=e.toBaseEncodedString();c("findProviders starts: "+r),t.maxTimeout=t.maxTimeout||u;const n=await this._httpQueue.add(()=>this.dht.findProvs(e,{timeout:`${t.maxTimeout}ms`}));for(let i=0;ithis.refs(t,{recursive:!1})),c("provide finished: "+t)}}e.exports=f},"1f17":function(e,t,r){"use strict";const n=r("7048"),i=r("8f3a"),s=r("5ffd"),o=e=>function*(t={}){const{offset:r,length:n}=s(e.length,t.offset,t.length);yield i(e,0,r,r+n)},a=async(e,t,r,i,s,a,c)=>{if(i.length)throw n(new Error(`No link named ${r} found in raw node ${e.toBaseEncodedString()}`),"ERR_NOT_FOUND");const u=await c.get(e);return{entry:{name:t,path:r,cid:e,node:u,content:o(u),depth:a}}};e.exports=a},"1f1d":function(e,t,r){"use strict";(function(t){const n=r("1a18"),i=r("e3d5"),s=r("4bb2"),o=r("8671"),a=r("c75d"),c=r("2773"),u=r("0c9a"),l=r("07a0"),{extendIterator:h}=r("8c82");class f{constructor(e){const t=s(f.defaultOptions,e);if(!t.blockService)throw new Error("Missing blockservice");this.bs=t.blockService,this.resolvers={},"function"!==typeof t.loadFormat?this.loadFormat=e=>{const t=u.print[e];throw new Error(`No resolver found for codec "${t}"`)}:this.loadFormat=t.loadFormat;for(const r of t.formats)this.addFormat(r)}addFormat(e){const t=e.codec;if(this.resolvers[e.format]){const e=u.print[t];throw new Error(`Resolver already exists for codec "${e}"`)}return this.resolvers[t]=e,this}removeFormat(e){return this.resolvers[e]&&delete this.resolvers[e],this}resolve(e,t){if(!i.isCID(e))throw new Error("`cid` argument must be a CID");if("string"!==typeof t)throw new Error("`path` argument must be a string");const r=async function*(){while(null!==e){const n=await this._getFormat(e.codec),s=await this.bs.get(e),o=n.resolver.resolve(s.data,t);t=o.remainderPath;let a=o.value;if(1===Object.keys(a).length&&"/"in a)try{a=new i(a["/"])}catch(r){a=null}e=i.isCID(a)?a:null,yield{remainderPath:t,value:a}}}.bind(this);return h(r())}async get(e){const t=await this.bs.get(e),r=await this._getFormat(t.cid.codec),n=r.util.deserialize(t.data);return n}getMany(e){if(!l.isIterable(e)||"string"===typeof e||t.isBuffer(e))throw new Error("`cids` must be an iterable of CIDs");const r=async function*(){for await(const t of e)yield this.get(t)}.bind(this);return h(r())}async put(e,t,r){if(void 0===t)throw new Error("`put` requires a format");if("number"!==typeof t)throw new Error("`format` parameter must be number (multicodec)");const i=await this._getFormat(t),o={hashAlg:i.defaultHashAlg,cidVersion:1,onlyHash:!1},a=s(o,r),c={cidVersion:a.cidVersion,hashAlg:a.hashAlg,onlyHash:a.onlyHash},u=i.util.serialize(e),l=await i.util.cid(u,c);if(!a.onlyHash){const e=new n(u,l);await this.bs.put(e)}return l}putMany(e,r,n){if(!l.isIterable(e)||"string"===typeof e||t.isBuffer(e))throw new Error("`nodes` must be an iterable");if(void 0===r)throw new Error("`put` requires a format");if("number"!==typeof r)throw new Error("`format` parameter must be number (multicodec)");let i,o;const a=async function*(){for await(const t of e){if(void 0===i){o=await this._getFormat(r);const e={hashAlg:o.defaultHashAlg,cidVersion:1,onlyHash:!1};i=s(e,n)}yield this.put(t,r,i)}}.bind(this);return h(a())}async remove(e){return this.bs.delete(e)}removeMany(e){if(!l.isIterable(e)||"string"===typeof e||t.isBuffer(e))throw new Error("`cids` must be an iterable of CIDs");const r=async function*(){for await(const t of e)yield this.remove(t)}.bind(this);return h(r())}tree(e,t,r){"object"===typeof t&&(r=t,t=void 0),t=t||"";const n={recursive:!1},o=s(n,r),a=async(e,t)=>{const r=await this._getFormat(e.cid.codec),n=r.resolver.resolve(e.data,t);return i.isCID(n.value)?n.value:null},c=async function*(){const r=[];let n;const i=[{cid:e,basePath:""}];let s;while(r.length>0||i.length>0){if(0===r.length&&i.length>0){({cid:e,basePath:s}=i.shift());const t=await this._getFormat(e.codec);n=await this.bs.get(e);const o=t.resolver.tree(n.data);r.push(...o)}const c=r.shift();let u=s+c;o.recursive&&(e=await a(n,c),null!==e&&i.push({cid:e,basePath:u+"/"})),u.startsWith(t)&&u.length>t.length&&(t.length>0&&(u=u.slice(t.length+1)),yield u)}}.bind(this);return h(c())}async _getFormat(e){if("string"===typeof e){const t=e.toUpperCase().replace(/-/g,"_");e=u[t]}if(this.resolvers[e])return this.resolvers[e];const t=await this.loadFormat(e);return this.addFormat(t),t}}f.defaultOptions={formats:[o,a,c]},e.exports=f}).call(this,r("b639").Buffer)},"1f39":function(e,t,r){"use strict";const n=r("faa1"),i=r("26a6"),s=r("d720");class o extends n{constructor(e,t){super(),this._options=t,this._queue=[],this._stats={},this._frequencyLastTime=Date.now(),this._frequencyAccumulators={},this._movingAverages={},this._update=this._update.bind(this),e.forEach(e=>{this._stats[e]=i(0),this._movingAverages[e]={},this._options.movingAverageIntervals.forEach(t=>{const r=this._movingAverages[e][t]=s(t);r.push(this._frequencyLastTime,0)})}),this._enabled=this._options.enabled}enable(){this._enabled=!0}disable(){this._disabled=!0}stop(){this._timeout&&clearTimeout(this._timeout)}get snapshot(){return Object.assign({},this._stats)}get movingAverages(){return Object.assign({},this._movingAverages)}push(e,t){this._enabled&&(this._queue.push([e,t,Date.now()]),this._resetComputeTimeout())}_resetComputeTimeout(){this._timeout&&clearTimeout(this._timeout),this._timeout=setTimeout(this._update,this._nextTimeout())}_nextTimeout(){const e=this._queue.length/this._options.computeThrottleMaxQueueSize;return Math.max(this._options.computeThrottleTimeout*(1-e),0)}_update(){if(this._timeout=null,this._queue.length){let e;while(this._queue.length){const t=e=this._queue.shift();this._applyOp(t)}this._updateFrequency(e[2]),this.emit("update",this._stats)}}_updateFrequency(e){const t=e-this._frequencyLastTime;Object.keys(this._stats).forEach(r=>{this._updateFrequencyFor(r,t,e)}),this._frequencyLastTime=e}_updateFrequencyFor(e,t,r){const n=this._frequencyAccumulators[e]||0;this._frequencyAccumulators[e]=0;const i=n/t*1e3;let o=this._movingAverages[e];o||(o=this._movingAverages[e]={}),this._options.movingAverageIntervals.forEach(e=>{let t=o[e];t||(t=o[e]=s(e)),t.push(r,i)})}_applyOp(e){const t=e[0],r=e[1];if("number"!==typeof r)throw new Error("invalid increment number:",r);let n;n=Object.prototype.hasOwnProperty.call(this._stats,t)?this._stats[t]:this._stats[t]=i(0),this._stats[t]=n.plus(r),this._frequencyAccumulators[t]||(this._frequencyAccumulators[t]=0),this._frequencyAccumulators[t]+=r}}e.exports=o},"1f47":function(e,t,r){"use strict";var n=Object.prototype.hasOwnProperty,i=Array.isArray,s=function(){for(var e=[],t=0;t<256;++t)e.push("%"+((t<16?"0":"")+t.toString(16)).toUpperCase());return e}(),o=function(e){while(e.length>1){var t=e.pop(),r=t.obj[t.prop];if(i(r)){for(var n=[],s=0;s=48&&a<=57||a>=65&&a<=90||a>=97&&a<=122?i+=n.charAt(o):a<128?i+=s[a]:a<2048?i+=s[192|a>>6]+s[128|63&a]:a<55296||a>=57344?i+=s[224|a>>12]+s[128|a>>6&63]+s[128|63&a]:(o+=1,a=65536+((1023&a)<<10|1023&n.charCodeAt(o)),i+=s[240|a>>18]+s[128|a>>12&63]+s[128|a>>6&63]+s[128|63&a])}return i},f=function(e){for(var t=[{obj:{o:e},prop:"o"}],r=[],n=0;n0;return l(e,o,a,(function(e){n||(n=e),e&&s.forEach(h),o||(s.forEach(h),i(n))}))}));return t.reduce(f)}e.exports=p},20:function(e,t){},2007:function(e,t,r){var n=r("9070"),i=r("7a7a"),s=r("e39a"),o=r("464c"),a=r("eb5c");function c(e){var t=-1,r=null==e?0:e.length;this.clear();while(++tnew n.Entry(e,s.kMaxPriority-r,t));i.forEach(e=>{e.cancel?r?this.wantlist.removeForce(e.cid):this.wantlist.remove(e.cid):(this._log("adding to wl"),this.wantlist.add(e.cid,e.priority))});for(const n of this.peers.values())n.addEntries(i)}_startPeerHandler(e){let t=this.peers.get(e.toB58String());if(t)return void t.refcnt++;t=new o(this._peerId,e,this.network);const r=new n(!0);for(const n of this.wantlist.entries())r.addEntry(n[1].cid,n[1].priority);return t.addMessage(r),this.peers.set(e.toB58String(),t),t}_stopPeerHandler(e){const t=this.peers.get(e.toB58String());t&&(t.refcnt--,t.refcnt>0||this.peers.delete(e.toB58String()))}wantBlocks(e){this._addEntries(e,!1)}unwantBlocks(e){this._log("unwant blocks: %s",e.length),this._addEntries(e,!0,!0)}cancelWants(e){this._log("cancel wants: %s",e.length),this._addEntries(e,!0)}connectedPeers(){return Array.from(this.peers.keys())}connected(e){this._startPeerHandler(e)}disconnected(e){this._stopPeerHandler(e)}start(){this.timer=setInterval(()=>{this._log("resend full-wantlist");const e=new n(!0);this.wantlist.forEach(t=>{e.addEntry(t.cid,t.priority)}),this.peers.forEach(t=>t.addMessage(e))},6e4)}stop(){this.peers.forEach(e=>this.disconnected(e.peerId)),clearInterval(this.timer)}}},2046:function(e,t){e.exports={WORKER_REQUEST_READ_LOCK:"lock:worker:request-read",WORKER_RELEASE_READ_LOCK:"lock:worker:release-read",MASTER_GRANT_READ_LOCK:"lock:master:grant-read",WORKER_REQUEST_WRITE_LOCK:"lock:worker:request-write",WORKER_RELEASE_WRITE_LOCK:"lock:worker:release-write",MASTER_GRANT_WRITE_LOCK:"lock:master:grant-write"}},2054:function(e,t,r){"use strict";(function(t){const n=r("ba1f"),i=r("956c"),s=r("2612"),o=r("0774"),a=r("c449"),c=r("ec12"),u=Symbol.for("nodejs.util.inspect.custom"),l=c.proto((function(e){if(!(this instanceof l))return new l(e);if(null==e&&(e=""),e instanceof t)this.buffer=n.fromBuffer(e);else if("string"===typeof e||e instanceof String){if(e.length>0&&"/"!==e.charAt(0))throw new Error(`multiaddr "${e}" must start with a "/"`);this.buffer=n.fromString(e)}else{if(!(e.buffer&&e.protos&&e.protoCodes))throw new Error("addr must be a string, Buffer, or another Multiaddr");this.buffer=n.fromBuffer(e.buffer)}}),{className:"Multiaddr",symbolName:"@multiformats/js-multiaddr/multiaddr"});l.prototype.toString=function(){return n.bufferToString(this.buffer)},l.prototype.toJSON=l.prototype.toString,l.prototype.toOptions=function(){const e={},t=this.toString().split("/");return e.family="ip4"===t[1]?"ipv4":"ipv6",e.host=t[2],e.transport=t[3],e.port=parseInt(t[4]),e},l.prototype[u]=function(){return""},l.prototype.inspect=function(){return""},l.prototype.protos=function(){return this.protoCodes().map(e=>Object.assign({},i(e)))},l.prototype.protoCodes=function(){const e=[],t=this.buffer;let r=0;while(re.name)},l.prototype.tuples=function(){return n.bufferToTuples(this.buffer)},l.prototype.stringTuples=function(){const e=n.bufferToTuples(this.buffer);return n.tuplesToStringTuples(e)},l.prototype.encapsulate=function(e){return e=l(e),l(this.toString()+e.toString())},l.prototype.decapsulate=function(e){e=e.toString();const t=this.toString(),r=t.lastIndexOf(e);if(r<0)throw new Error("Address "+this+" does not contain subaddress: "+e);return l(t.slice(0,r))},l.prototype.decapsulateCode=function(e){const t=this.tuples();for(let r=t.length-1;r>=0;r--)if(t[r][0]===e)return l(n.tuplesToBuffer(t.slice(0,r)));return this},l.prototype.getPeerId=function(){let e=null;try{const t=this.stringTuples().filter(e=>{if(e[0]===i.names.ipfs.code)return!0});e=t.pop()[1],e=o.encode(new a(e).multihash)}catch(t){e=null}return e},l.prototype.getPath=function(){let e=null;try{e=this.stringTuples().filter(e=>{const t=i(e[0]);if(t.path)return!0})[0][1]}catch(t){e=null}return e},l.prototype.equals=function(e){return this.buffer.equals(e.buffer)},l.prototype.nodeAddress=function(){const e=this.protoCodes(),t=this.protoNames(),r=this.toString().split("/").slice(1);if(r.length<4)throw new Error('multiaddr must have a valid format: "/{ip4, ip6, dns4, dns6}/{address}/{tcp, udp}/{port}".');if(4!==e[0]&&41!==e[0]&&54!==e[0]&&55!==e[0])throw new Error(`no protocol with name: "'${t[0]}'". Must have a valid family name: "{ip4, ip6, dns4, dns6}".`);if("tcp"!==r[2]&&"udp"!==r[2])throw new Error(`no protocol with name: "'${t[1]}'". Must have a valid transport protocol: "{tcp, udp}".`);return{family:41===e[0]||55===e[0]?6:4,address:r[1],port:parseInt(r[3])}},l.fromNodeAddress=function(e,t){if(!e)throw new Error("requires node address object");if(!t)throw new Error("requires transport protocol");const r="IPv6"===e.family?"ip6":"ip4";return l("/"+[r,e.address,t,e.port].join("/"))},l.prototype.isThinWaistAddress=function(e){const t=(e||this).protos();return 2===t.length&&((4===t[0].code||41===t[0].code)&&(6===t[1].code||273===t[1].code))},l.protocols=i,l.isName=function(e){return!!l.isMultiaddr(e)&&e.protos().some(e=>e.resolvable)},l.resolve=function(e){return l.isMultiaddr(e)&&l.isName(e)?Promise.reject(new Error("not implemented yet")):Promise.reject(Error("not a valid name"))},e.exports=l}).call(this,r("b639").Buffer)},2072:function(e,t,r){const n=r("f0e0"),i=r("0d07"),s=r("f269"),o=r("6ecd");e.exports={OdbIdentityProvider:n,ModeratorAccessController:i,ThreadAccessController:s,LegacyIPFS3BoxAccessController:o}},"2091e":function(e,t,r){"use strict";const n=r("f106"),i=n(r("c545")),s=i.Data,o=["raw","directory","file","metadata","symlink","hamt-sharded-directory"],a=["directory","hamt-sharded-directory"];function c(e,t){if(!(this instanceof c))return new c(e,t);if(-1===o.indexOf(e))throw new Error("Type: "+e+" is not valid");this.type=e,this.data=t,this.blockSizes=[],this.addBlockSize=e=>{this.blockSizes.push(e)},this.removeBlockSize=e=>{this.blockSizes.splice(e,1)},this.fileSize=()=>{if(a.indexOf(this.type)>=0)return;let e=0;return this.blockSizes.forEach(t=>{e+=t}),t&&(e+=t.length),e},this.marshal=()=>{let e;switch(this.type){case"raw":e=s.DataType.Raw;break;case"directory":e=s.DataType.Directory;break;case"file":e=s.DataType.File;break;case"metadata":e=s.DataType.Metadata;break;case"symlink":e=s.DataType.Symlink;break;case"hamt-sharded-directory":e=s.DataType.HAMTShard;break;default:throw new Error(`Unkown type: "${this.type}"`)}let t=this.fileSize(),r=this.data;this.data&&this.data.length||(r=void 0);let n=this.blockSizes;return this.blockSizes&&this.blockSizes.length||(n=void 0),s.encode({Type:e,Data:r,filesize:t,blocksizes:n,hashType:this.hashType,fanout:this.fanout})}}c.unmarshal=e=>{const t=s.decode(e);t.Data||(t.Data=void 0);const r=new c(o[t.Type],t.Data);return r.blockSizes=t.blocksizes,r},e.exports=c},"20b8":function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if(t=(0,c.default)(t||o.default),!(0,i.default)(e))return t(new Error("First argument to waterfall must be an array of functions"));if(!e.length)return t();var r=0;function n(t){var n=(0,p.default)(e[r++]);t.push((0,f.default)(s)),n.apply(null,t)}function s(i){if(i||r===e.length)return t.apply(null,arguments);n((0,l.default)(arguments,1))}n([])};var n=r("cdca"),i=y(n),s=r("c1cd"),o=y(s),a=r("0924"),c=y(a),u=r("6307"),l=y(u),h=r("ba12"),f=y(h),d=r("76bf"),p=y(d);function y(e){return e&&e.__esModule?e:{default:e}}e.exports=t["default"]},"20ba":function(e,t,r){"use strict";(function(t){const{Key:n}=r("7b6d"),{Record:i}=r("7943"),{encodeBase32:s}=r("7397"),o=r("7048"),a=r("4bc2"),c=a("ipfs:ipns:offline-datastore");c.error=a("ipfs:ipns:offline-datastore:error");class u{constructor(e){this._repo=e}async put(e,r){if(!t.isBuffer(e))throw o(new Error("Offline datastore key must be a buffer"),"ERR_INVALID_KEY");if(!t.isBuffer(r))throw o(new Error("Offline datastore value must be a buffer"),"ERR_INVALID_VALUE");let n;try{n=this._routingKey(e)}catch(a){throw c.error(a),o(new Error("Not possible to generate the routing key"),"ERR_GENERATING_ROUTING_KEY")}const s=new i(e,r);return this._repo.datastore.put(n,s.serialize())}async get(e){if(!t.isBuffer(e))throw o(new Error("Offline datastore key must be a buffer"),"ERR_INVALID_KEY");let r;try{r=this._routingKey(e)}catch(a){throw c.error(a),o(new Error("Not possible to generate the routing key"),"ERR_GENERATING_ROUTING_KEY")}const n=await this._repo.datastore.get(r);let s;try{s=i.deserialize(n)}catch(a){throw c.error(a),a}return s.value}_routingKey(e){return new n("/"+s(e),!1)}}e.exports=u}).call(this,r("b639").Buffer)},"20bc":function(e,t,r){var n=r("e0c5").Buffer;function i(e,t,r){var n,i,o,a=-1,c=8,u=0;while(++a>a%8,e._prev=s(e._prev,r?i:o);return u}function s(e,t){var r=e.length,i=-1,s=n.allocUnsafe(e.length);e=n.concat([e,n.from([t])]);while(++i>7;return s}t.encrypt=function(e,t,r){var s=t.length,o=n.allocUnsafe(s),a=-1;while(++a{let t;for await(const r of e)t=r;return t};e.exports=n},"20d6":function(e,t,r){var n=r("9a16"),i=r("0937"),s=n(i,"Map");e.exports=s},"20d8":function(e,t,r){"use strict";(function(t){const n=r("670b"),i=r("c14d");class s extends n{createTag(e,t){return`${e}(${t})`}createInt(e){return super.createInt(e).toString()}createInt32(e,t){return super.createInt32(e,t).toString()}createInt64(e,t,r,n){return super.createInt64(e,t,r,n).toString()}createInt32Neg(e,t){return super.createInt32Neg(e,t).toString()}createInt64Neg(e,t,r,n){return super.createInt64Neg(e,t,r,n).toString()}createTrue(){return"true"}createFalse(){return"false"}createFloat(e){const t=super.createFloat(e);return i.isNegativeZero(e)?"-0_1":`${t}_1`}createFloatSingle(e,t,r,n){const i=super.createFloatSingle(e,t,r,n);return`${i}_2`}createFloatDouble(e,t,r,n,i,s,o,a){const c=super.createFloatDouble(e,t,r,n,i,s,o,a);return`${c}_3`}createByteString(e,t){const r=e.join(", ");return-1===t?`(_ ${r})`:`h'${r}`}createByteStringFromHeap(e,r){const n=t.from(super.createByteStringFromHeap(e,r)).toString("hex");return`h'${n}'`}createInfinity(){return"Infinity_1"}createInfinityNeg(){return"-Infinity_1"}createNaN(){return"NaN_1"}createNaNNeg(){return"-NaN_1"}createNull(){return"null"}createUndefined(){return"undefined"}createSimpleUnassigned(e){return`simple(${e})`}createArray(e,t){const r=super.createArray(e,t);return-1===t?`[_ ${r.join(", ")}]`:`[${r.join(", ")}]`}createMap(e,t){const r=super.createMap(e),n=Array.from(r.keys()).reduce(o(r),"");return-1===t?`{_ ${n}}`:`{${n}}`}createObject(e,t){const r=super.createObject(e),n=Object.keys(r).reduce(o(r),"");return-1===t?`{_ ${n}}`:`{${n}}`}createUtf8String(e,t){const r=e.join(", ");return-1===t?`(_ ${r})`:`"${r}"`}createUtf8StringFromHeap(e,r){const n=t.from(super.createUtf8StringFromHeap(e,r)).toString("utf8");return`"${n}"`}static diagnose(e,r){"string"===typeof e&&(e=t.from(e,r||"hex"));const n=new s;return n.decodeFirst(e)}}function o(e){return(t,r)=>t?`${t}, ${r}: ${e[r]}`:`${r}: ${e[r]}`}e.exports=s}).call(this,r("b639").Buffer)},"20df":function(e,t,r){"use strict";(function(t){e.exports=function(e){return{encode(e){return"string"===typeof e?t.from(e).toString("hex"):e.toString("hex")},decode(r){for(let t of r)if(e.indexOf(t)<0)throw new Error("invalid base16 character");return t.from(r,"hex")}}}}).call(this,r("b639").Buffer)},"20e2":function(e,t,r){"use strict";var n=r("1727"),i=r("b93e"),s=r("5380");function o(e,t){return void 0===e?t:(n.isBoolean(e,s.COMPRESSED_TYPE_INVALID),e)}e.exports=function(e){return{privateKeyVerify:function(t){return n.isBuffer(t,s.EC_PRIVATE_KEY_TYPE_INVALID),32===t.length&&e.privateKeyVerify(t)},privateKeyExport:function(t,r){n.isBuffer(t,s.EC_PRIVATE_KEY_TYPE_INVALID),n.isBufferLength(t,32,s.EC_PRIVATE_KEY_LENGTH_INVALID),r=o(r,!0);var a=e.privateKeyExport(t,r);return i.privateKeyExport(t,a,r)},privateKeyImport:function(t){if(n.isBuffer(t,s.EC_PRIVATE_KEY_TYPE_INVALID),t=i.privateKeyImport(t),t&&32===t.length&&e.privateKeyVerify(t))return t;throw new Error(s.EC_PRIVATE_KEY_IMPORT_DER_FAIL)},privateKeyNegate:function(t){return n.isBuffer(t,s.EC_PRIVATE_KEY_TYPE_INVALID),n.isBufferLength(t,32,s.EC_PRIVATE_KEY_LENGTH_INVALID),e.privateKeyNegate(t)},privateKeyModInverse:function(t){return n.isBuffer(t,s.EC_PRIVATE_KEY_TYPE_INVALID),n.isBufferLength(t,32,s.EC_PRIVATE_KEY_LENGTH_INVALID),e.privateKeyModInverse(t)},privateKeyTweakAdd:function(t,r){return n.isBuffer(t,s.EC_PRIVATE_KEY_TYPE_INVALID),n.isBufferLength(t,32,s.EC_PRIVATE_KEY_LENGTH_INVALID),n.isBuffer(r,s.TWEAK_TYPE_INVALID),n.isBufferLength(r,32,s.TWEAK_LENGTH_INVALID),e.privateKeyTweakAdd(t,r)},privateKeyTweakMul:function(t,r){return n.isBuffer(t,s.EC_PRIVATE_KEY_TYPE_INVALID),n.isBufferLength(t,32,s.EC_PRIVATE_KEY_LENGTH_INVALID),n.isBuffer(r,s.TWEAK_TYPE_INVALID),n.isBufferLength(r,32,s.TWEAK_LENGTH_INVALID),e.privateKeyTweakMul(t,r)},publicKeyCreate:function(t,r){return n.isBuffer(t,s.EC_PRIVATE_KEY_TYPE_INVALID),n.isBufferLength(t,32,s.EC_PRIVATE_KEY_LENGTH_INVALID),r=o(r,!0),e.publicKeyCreate(t,r)},publicKeyConvert:function(t,r){return n.isBuffer(t,s.EC_PUBLIC_KEY_TYPE_INVALID),n.isBufferLength2(t,33,65,s.EC_PUBLIC_KEY_LENGTH_INVALID),r=o(r,!0),e.publicKeyConvert(t,r)},publicKeyVerify:function(t){return n.isBuffer(t,s.EC_PUBLIC_KEY_TYPE_INVALID),e.publicKeyVerify(t)},publicKeyTweakAdd:function(t,r,i){return n.isBuffer(t,s.EC_PUBLIC_KEY_TYPE_INVALID),n.isBufferLength2(t,33,65,s.EC_PUBLIC_KEY_LENGTH_INVALID),n.isBuffer(r,s.TWEAK_TYPE_INVALID),n.isBufferLength(r,32,s.TWEAK_LENGTH_INVALID),i=o(i,!0),e.publicKeyTweakAdd(t,r,i)},publicKeyTweakMul:function(t,r,i){return n.isBuffer(t,s.EC_PUBLIC_KEY_TYPE_INVALID),n.isBufferLength2(t,33,65,s.EC_PUBLIC_KEY_LENGTH_INVALID),n.isBuffer(r,s.TWEAK_TYPE_INVALID),n.isBufferLength(r,32,s.TWEAK_LENGTH_INVALID),i=o(i,!0),e.publicKeyTweakMul(t,r,i)},publicKeyCombine:function(t,r){n.isArray(t,s.EC_PUBLIC_KEYS_TYPE_INVALID),n.isLengthGTZero(t,s.EC_PUBLIC_KEYS_LENGTH_INVALID);for(var i=0;i{if(t){if(e.return)try{await e.return()}catch(i){return r(i)}return r(t)}let n;try{n=await e.next()}catch(i){return r(i)}if(n.done)return r(!0);r(null,n.value)}}s.source=s,s.transform=s.through=e=>t=>s(e(i(t))),s.duplex=e=>({sink:s.sink(e.sink),source:s(e.source)}),s.sink=e=>t=>{e({[Symbol.asyncIterator](){return this},next:()=>new Promise((e,r)=>{t(null,(t,n)=>!0===t?e({done:!0,value:n}):t?r(t):void e({done:!1,value:n}))}),return:()=>new Promise((e,r)=>{t(!0,(t,n)=>{if(t&&!0!==t)return r(t);e({done:!0,value:n})})}),throw:e=>new Promise((r,n)=>{t(e,(e,t)=>{if(e&&!0!==e)return n(e);r({done:!0,value:t})})})})},e.exports=s},"21b4":function(e,t,r){"use strict";const n=r("c8d3"),{DIAL_ABORTED:i,ERR_DENIED:s}=r("a10a"),o=r("9f2e"),a=r("c59f"),c=r("4bc2"),u=c("libp2p:switch:dial");function l({protocol:e,connection:t,callback:r}){if(!e)return r();t.shake(e,(e,n)=>{if(!n)return r(e);n.setPeerInfo(t.theirPeerInfo),r(null,n)})}u.error=c("libp2p:switch:dial:error");class h{constructor(e,t,r){this.id=e,this.switch=t,this._queue=[],this.denylisted=null,this.denylistCount=0,this.isRunning=!1,this.onStopped=r}get length(){return this._queue.length}add(e,t,r){if(!this.isDialAllowed())return o(r,s());this._queue.push({protocol:e,useFSM:t,callback:r})}isDialAllowed(){return!this.denylisted||Date.now()>this.denylisted&&(this.denylisted=null,!0)}start(){return!this.isRunning&&(u("starting dial queue to %s",this.id),this.isRunning=!0,this._run(),!0)}stop(){this.isRunning&&(u("stopping dial queue to %s",this.id),this.isRunning=!1,this.onStopped(this.id))}abort(){while(this.length>0){const e=this._queue.shift();e.callback(i())}this.stop()}denylist(){if(this.denylistCount++,this.denylistCount>=this.switch.dialer.DENY_ATTEMPTS)return void(this.denylisted=1/0);let e=this.switch.dialer.DENY_TTL*Math.pow(this.denylistCount,3);const t=.9*e,r=1.1*e;e=Math.floor(Math.random()*(r-t)+t),this.denylisted=Date.now()+e,this.abort()}_getOrCreateConnection(e){let t=this.switch.connection.getOne(this.id),r=!1;return t||(t=new n({_switch:this.switch,peerInfo:e,muxer:null,conn:null}),this.switch.connection.add(t),t.once("connected",()=>t.protect()),t.once("private",()=>t.encrypt()),t.once("encrypted",()=>t.upgrade()),r=!0),{connectionFSM:t,didCreate:r}}_run(){if(this.length<1||!this.isRunning)return u("stopping the queue for %s",this.id),this.stop();const e=a(()=>{u("starting next dial to %s",this.id),this._run()}),t=this.switch._peerBook.get(this.id),r=this._queue.shift(),{connectionFSM:n,didCreate:i}=this._getOrCreateConnection(t);if(r.useFSM&&o(r.callback,null,n),["MUXED","CONNECTED"].includes(n.getState()))return r.connection=n,l(r),void e();n.once("error",e=>{r.callback(e),t.protocols.size>0&&t.isConnected()||this.denylist()}),n.once("close",()=>{e()}),n.once("muxed",()=>{this.denylistCount=0,r.connection=n,l(r),e()}),n.once("unmuxed",()=>{this.denylistCount=0,r.connection=n,l(r),e()}),i&&n.dial()}}e.exports=h},"21d6":function(e,t,r){var n=r("6b4f"),i=Object.prototype,s=i.hasOwnProperty,o=i.toString,a=n?n.toStringTag:void 0;function c(e){var t=s.call(e,a),r=e[a];try{e[a]=void 0;var n=!0}catch(c){}var i=o.call(e);return n&&(t?e[a]=r:delete e[a]),i}e.exports=c},22:function(e,t){},2204:function(e,t,r){"use strict";function n(e){return e}var i=r("b6d6"),s=r("1631");e.exports=function(e,t){var r=!1;return t?e=i(e)||n:(t=e,e=n),s((function(n){if(e(n))return r=!0,t(null,n),!1}),(function(e){r||t(!0===e?null:e,null)}))}},"220c":function(e,t,r){"use strict";(function(t){const n=r("c64e"),i=r("ec12"),s="/",o=t.from(s),a=o[0];class c{constructor(e,r){if("string"===typeof e?this._buf=t.from(e):t.isBuffer(e)&&(this._buf=e),null==r&&(r=!0),r&&this.clean(),0===this._buf.length||this._buf[0]!==a)throw new Error(`Invalid key: ${this.toString()}`)}toString(e){return this._buf.toString(e||"utf8")}toBuffer(){return this._buf}get[Symbol.toStringTag](){return`[Key ${this.toString()}]`}static withNamespaces(e){return new h(e.join(s))}static random(){return new h(n().replace(/-/g,""))}clean(){this._buf&&0!==this._buf.length||(this._buf=t.from(s)),this._buf[0]!==a&&(this._buf=t.concat([o,this._buf]));while(this._buf.length>1&&this._buf[this._buf.length-1]===a)this._buf=this._buf.slice(0,-1)}less(e){const t=this.list(),r=e.list();for(let n=0;ni)return!1}return t.length + * https://github.com/rvagg/prr + * License: MIT + */ +(function(t,r,n){e.exports?e.exports=n():r[t]=n()})("prr",this,(function(){var e="function"==typeof Object.defineProperty?function(e,t,r){return Object.defineProperty(e,t,r),e}:function(e,t,r){return e[t]=r.value,e},t=function(e,t){var r="object"==typeof t,n=!r&&"string"==typeof t,i=function(e){return r?!!t[e]:!!n&&t.indexOf(e[0])>-1};return{enumerable:i("enumerable"),configurable:i("configurable"),writable:i("writable"),value:e}},r=function(r,n,i,s){var o;if(s=t(i,s),"object"==typeof n){for(o in n)Object.hasOwnProperty.call(n,o)&&(s.value=n[o],e(r,o,s));return r}return e(r,n,s)};return r}))},2236:function(e,t){function r(e){if(Array.isArray(e)){for(var t=0,r=new Array(e.length);t{})}){s.isCID(e)||(e=new s(e));const n=e=>async()=>{const{value:s}=await this.dag.get(e,{preload:t});if(r(e),"dag-pb"===e.codec)i.addAll(s.Links.map(e=>n(e.Hash)));else if("dag-cbor"===e.codec)for(const[e,t]of l(s))i.add(n(t))},i=new o({concurrency:g});i.add(n(e)),await i.onIdle()}directKeys(){return Array.from(this.directPins,e=>new s(e).buffer)}recursiveKeys(){return Array.from(this.recursivePins,e=>new s(e).buffer)}async getIndirectKeys({preload:e}){const t=new Set;for(const r of this.recursiveKeys())await this._walkDag({cid:new s(r),preload:e||!1,onCid:e=>{e=e.toString(),this.recursivePins.has(e)||t.add(e)}});return Array.from(t)}async flushPins(){const[e,r]=await Promise.all([this.pinset.storeSet(this.directKeys()).then(e=>new i(w.direct,e.node.size,e.cid)),this.pinset.storeSet(this.recursiveKeys()).then(e=>new i(w.recursive,e.node.size,e.cid)),this.dag.put(new n(t.alloc(0)),{version:0,format:u.DAG_PB,hashAlg:u.SHA2_256,preload:!1})]),s=new n(t.alloc(0),[e,r]),o=await this.dag.put(s,{version:0,format:u.DAG_PB,hashAlg:u.SHA2_256,preload:!1});await this.repo.datastore.put(b,o.buffer),this.log(`Flushed pins with root: ${o}`)}async load(){const e=await this.repo.datastore.has(b);if(!e)return;const t=await this.repo.datastore.get(b),r=await this.dag.get(new s(t),"",{preload:!1}),[n,i]=await Promise.all([this.pinset.loadSet(r.value,w.recursive),this.pinset.loadSet(r.value,w.direct)]);this.directPins=new Set(i.map(e=>f(e))),this.recursivePins=new Set(n.map(e=>f(e))),this.log("Loaded pins from the datastore")}async isPinnedWithType(e,t){const r=f(e),{recursive:n,direct:i,all:a}=w;if((t===n||t===a)&&this.recursivePins.has(r))return{key:r,pinned:!0,reason:n};if(t===n)return{key:r,pinned:!1};if((t===i||t===a)&&this.directPins.has(r))return{key:r,pinned:!0,reason:i};if(t===i)return{key:r,pinned:!1};const c=new o({concurrency:m});let u;return c.addAll(this.recursiveKeys().map(e=>(e=new s(e),async()=>{const t=await this.pinset.hasDescendant(e,r);t&&(u=e,c.clear())}))),await c.onIdle(),{key:r,pinned:Boolean(u),reason:u}}async getInternalBlocks(){let e;try{e=await this.repo.datastore.get(b)}catch(i){if(i.code===y)return this.log("No pinned blocks"),[];throw new Error(`Could not get pin sets root from datastore: ${i.message}`)}const t=new s(e),r=await this.dag.get(t,"",{preload:!1}),n=await this.pinset.getInternalCids(r.value);return n.concat(t)}async fetchCompleteDag(e,t){await this._walkDag({cid:e,preload:t.preload})}static checkPinType(e){if("string"!==typeof e||!Object.keys(w).includes(e))return v(e)}}_.PinTypes=w,e.exports=_}).call(this,r("b639").Buffer)},23:function(e,t){},2304:function(e,t,r){e.exports=r("27a7")},"230c":function(e,t,r){"use strict";var n=r("c3bb"),i=r("f522").AbstractIterator,s=r("2f06"),o=r("d13e"),a=r("a6a3"),c=function(){};function u(e,t,r){if(i.call(this,e),this._limit=r.limit,this._count=0,this._callback=null,this._cache=[],this._completed=!1,this._aborted=!1,this._error=null,this._transaction=null,this._keyAsBuffer=r.keyAsBuffer,this._valueAsBuffer=r.valueAsBuffer,0!==this._limit){try{var n=this.createKeyRange(r)}catch(s){return void(this._completed=!0)}this.createIterator(t,n,r.reverse)}else this._completed=!0}e.exports=u,n(u,i),u.prototype.createKeyRange=function(e){var t=s.lowerBound(e),r=s.upperBound(e),n=s.lowerBoundExclusive(e),i=s.upperBoundExclusive(e);return void 0!==t&&void 0!==r?IDBKeyRange.bound(t,r,n,i):void 0!==t?IDBKeyRange.lowerBound(t,n):void 0!==r?IDBKeyRange.upperBound(r,i):null},u.prototype.createIterator=function(e,t,r){var n=this,i=this.db.db.transaction([e],"readonly"),s=i.objectStore(e),o=s.openCursor(t,r?"prev":"next");o.onsuccess=function(e){var t=e.target.result;t&&n.onItem(t)},this._transaction=i,i.onabort=function(){n.onAbort(n._transaction.error||new Error("aborted by user"))},i.oncomplete=function(){n.onComplete()}},u.prototype.onItem=function(e){this._cache.push(e.key,e.value),(this._limit<=0||++this._count0){var r=this._cache.shift(),n=this._cache.shift();this._keyAsBuffer&&(r=o(r)),this._valueAsBuffer&&(n=o(n)),a((function(){e(null,r,n)}))}else this._completed?a(e):this._callback=e},u.prototype._end=function(e){if(this._aborted||this._completed){var t=this._error;a((function(){e(t)}))}else this.onItem=c,this.onAbort=e,this.onComplete=e}},"231e":function(e,t,r){"use strict";const n=r("70e3");e.exports={createCipheriv:n.createCipheriv,createDecipheriv:n.createDecipheriv}},2366:function(e,t){for(var r=[],n=0;n<256;++n)r[n]=(n+256).toString(16).substr(1);function i(e,t){var n=t||0,i=r;return[i[e[n++]],i[e[n++]],i[e[n++]],i[e[n++]],"-",i[e[n++]],i[e[n++]],"-",i[e[n++]],i[e[n++]],"-",i[e[n++]],i[e[n++]],"-",i[e[n++]],i[e[n++]],i[e[n++]],i[e[n++]],i[e[n++]],i[e[n++]]].join("")}e.exports=i},2377:function(e,t,r){(function(t,n){var i; +/* + * [hi-base32]{@link https://github.com/emn178/hi-base32} + * + * @version 0.5.0 + * @author Chen, Yi-Cyuan [emn178@gmail.com] + * @copyright Chen, Yi-Cyuan 2015-2018 + * @license MIT + */(function(){"use strict";var s="object"===typeof window?window:{},o=!s.HI_BASE32_NO_NODE_JS&&"object"===typeof t&&t.versions&&t.versions.node;o&&(s=n);var a=!s.HI_BASE32_NO_COMMON_JS&&"object"===typeof e&&e.exports,c=r("3c35"),u="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567".split(""),l={A:0,B:1,C:2,D:3,E:4,F:5,G:6,H:7,I:8,J:9,K:10,L:11,M:12,N:13,O:14,P:15,Q:16,R:17,S:18,T:19,U:20,V:21,W:22,X:23,Y:24,Z:25,2:26,3:27,4:28,5:29,6:30,7:31},h=[0,0,0,0,0,0,0,0],f=function(e,t){t.length>10&&(t="..."+t.substr(-10));var r=new Error("Decoded data is not valid UTF-8. Maybe try base32.decode.asBytes()? Partial data after reading "+e+" bytes: "+t+" <-");throw r.position=e,r},d=function(e){var t,r,n="",i=e.length,s=0,o=0;while(s191&&t<=223?(r=31&t,o=1):t<=239?(r=15&t,o=2):t<=247?(r=7&t,o=3):f(s,n);for(var a=0;a191)&&f(s,n),r<<=6,r+=63&t;r>=55296&&r<=57343&&f(s,n),r>1114111&&f(s,n),r<=65535?n+=String.fromCharCode(r):(r-=65536,n+=String.fromCharCode(55296+(r>>10)),n+=String.fromCharCode(56320+(1023&r)))}return n},p=function(e){if(!/^[A-Z2-7=]+$/.test(e))throw new Error("Invalid base32 characters");e=e.replace(/=/g,"");for(var t,r,n,i,s,o,a,c,u=[],h=0,f=e.length,d=0,p=f>>3<<3;d>>2),u[h++]=255&(r<<6|n<<1|i>>>4),u[h++]=255&(i<<4|s>>>1),u[h++]=255&(s<<7|o<<2|a>>>3),u[h++]=255&(a<<5|c);var y=f-p;return 2===y?(t=l[e.charAt(d++)],r=l[e.charAt(d++)],u[h++]=255&(t<<3|r>>>2)):4===y?(t=l[e.charAt(d++)],r=l[e.charAt(d++)],n=l[e.charAt(d++)],i=l[e.charAt(d++)],u[h++]=255&(t<<3|r>>>2),u[h++]=255&(r<<6|n<<1|i>>>4)):5===y?(t=l[e.charAt(d++)],r=l[e.charAt(d++)],n=l[e.charAt(d++)],i=l[e.charAt(d++)],s=l[e.charAt(d++)],u[h++]=255&(t<<3|r>>>2),u[h++]=255&(r<<6|n<<1|i>>>4),u[h++]=255&(i<<4|s>>>1)):7===y&&(t=l[e.charAt(d++)],r=l[e.charAt(d++)],n=l[e.charAt(d++)],i=l[e.charAt(d++)],s=l[e.charAt(d++)],o=l[e.charAt(d++)],a=l[e.charAt(d++)],u[h++]=255&(t<<3|r>>>2),u[h++]=255&(r<<6|n<<1|i>>>4),u[h++]=255&(i<<4|s>>>1),u[h++]=255&(s<<7|o<<2|a>>>3)),u},y=function(e){for(var t,r,n,i,s,o="",a=e.length,c=0,l=5*parseInt(a/5);c>>3]+u[31&(t<<2|r>>>6)]+u[r>>>1&31]+u[31&(r<<4|n>>>4)]+u[31&(n<<1|i>>>7)]+u[i>>>2&31]+u[31&(i<<3|s>>>5)]+u[31&s];var h=a-l;return 1===h?(t=e.charCodeAt(c),o+=u[t>>>3]+u[t<<2&31]+"======"):2===h?(t=e.charCodeAt(c++),r=e.charCodeAt(c),o+=u[t>>>3]+u[31&(t<<2|r>>>6)]+u[r>>>1&31]+u[r<<4&31]+"===="):3===h?(t=e.charCodeAt(c++),r=e.charCodeAt(c++),n=e.charCodeAt(c),o+=u[t>>>3]+u[31&(t<<2|r>>>6)]+u[r>>>1&31]+u[31&(r<<4|n>>>4)]+u[n<<1&31]+"==="):4===h&&(t=e.charCodeAt(c++),r=e.charCodeAt(c++),n=e.charCodeAt(c++),i=e.charCodeAt(c),o+=u[t>>>3]+u[31&(t<<2|r>>>6)]+u[r>>>1&31]+u[31&(r<<4|n>>>4)]+u[31&(n<<1|i>>>7)]+u[i>>>2&31]+u[i<<3&31]+"="),o},g=function(e){var t,r,n,i,s,o,a,c=!1,l="",f=0,d=0,p=e.length;do{for(h[0]=h[5],h[1]=h[6],h[2]=h[7],a=d;f>6,h[a++]=128|63&o):o<55296||o>=57344?(h[a++]=224|o>>12,h[a++]=128|o>>6&63,h[a++]=128|63&o):(o=65536+((1023&o)<<10|1023&e.charCodeAt(++f)),h[a++]=240|o>>18,h[a++]=128|o>>12&63,h[a++]=128|o>>6&63,h[a++]=128|63&o);a-d,d=a-5,f===p&&++f,f>p&&a<6&&(c=!0),t=h[0],a>4?(r=h[1],n=h[2],i=h[3],s=h[4],l+=u[t>>>3]+u[31&(t<<2|r>>>6)]+u[r>>>1&31]+u[31&(r<<4|n>>>4)]+u[31&(n<<1|i>>>7)]+u[i>>>2&31]+u[31&(i<<3|s>>>5)]+u[31&s]):1===a?l+=u[t>>>3]+u[t<<2&31]+"======":2===a?(r=h[1],l+=u[t>>>3]+u[31&(t<<2|r>>>6)]+u[r>>>1&31]+u[r<<4&31]+"===="):3===a?(r=h[1],n=h[2],l+=u[t>>>3]+u[31&(t<<2|r>>>6)]+u[r>>>1&31]+u[31&(r<<4|n>>>4)]+u[n<<1&31]+"==="):(r=h[1],n=h[2],i=h[3],l+=u[t>>>3]+u[31&(t<<2|r>>>6)]+u[r>>>1&31]+u[31&(r<<4|n>>>4)]+u[31&(n<<1|i>>>7)]+u[i>>>2&31]+u[i<<3&31]+"=")}while(!c);return l},m=function(e){for(var t,r,n,i,s,o="",a=e.length,c=0,l=5*parseInt(a/5);c>>3]+u[31&(t<<2|r>>>6)]+u[r>>>1&31]+u[31&(r<<4|n>>>4)]+u[31&(n<<1|i>>>7)]+u[i>>>2&31]+u[31&(i<<3|s>>>5)]+u[31&s];var h=a-l;return 1===h?(t=e[c],o+=u[t>>>3]+u[t<<2&31]+"======"):2===h?(t=e[c++],r=e[c],o+=u[t>>>3]+u[31&(t<<2|r>>>6)]+u[r>>>1&31]+u[r<<4&31]+"===="):3===h?(t=e[c++],r=e[c++],n=e[c],o+=u[t>>>3]+u[31&(t<<2|r>>>6)]+u[r>>>1&31]+u[31&(r<<4|n>>>4)]+u[n<<1&31]+"==="):4===h&&(t=e[c++],r=e[c++],n=e[c++],i=e[c],o+=u[t>>>3]+u[31&(t<<2|r>>>6)]+u[r>>>1&31]+u[31&(r<<4|n>>>4)]+u[31&(n<<1|i>>>7)]+u[i>>>2&31]+u[i<<3&31]+"="),o},b=function(e,t){var r="string"!==typeof e;return r&&e.constructor===ArrayBuffer&&(e=new Uint8Array(e)),r?m(e):t?y(e):g(e)},v=function(e,t){if(!t)return d(p(e));if(!/^[A-Z2-7=]+$/.test(e))throw new Error("Invalid base32 characters");var r,n,i,s,o,a,c,u,h="",f=e.indexOf("=");-1===f&&(f=e.length);for(var y=0,g=f>>3<<3;y>>2))+String.fromCharCode(255&(n<<6|i<<1|s>>>4))+String.fromCharCode(255&(s<<4|o>>>1))+String.fromCharCode(255&(o<<7|a<<2|c>>>3))+String.fromCharCode(255&(c<<5|u));var m=f-g;return 2===m?(r=l[e.charAt(y++)],n=l[e.charAt(y++)],h+=String.fromCharCode(255&(r<<3|n>>>2))):4===m?(r=l[e.charAt(y++)],n=l[e.charAt(y++)],i=l[e.charAt(y++)],s=l[e.charAt(y++)],h+=String.fromCharCode(255&(r<<3|n>>>2))+String.fromCharCode(255&(n<<6|i<<1|s>>>4))):5===m?(r=l[e.charAt(y++)],n=l[e.charAt(y++)],i=l[e.charAt(y++)],s=l[e.charAt(y++)],o=l[e.charAt(y++)],h+=String.fromCharCode(255&(r<<3|n>>>2))+String.fromCharCode(255&(n<<6|i<<1|s>>>4))+String.fromCharCode(255&(s<<4|o>>>1))):7===m&&(r=l[e.charAt(y++)],n=l[e.charAt(y++)],i=l[e.charAt(y++)],s=l[e.charAt(y++)],o=l[e.charAt(y++)],a=l[e.charAt(y++)],c=l[e.charAt(y++)],h+=String.fromCharCode(255&(r<<3|n>>>2))+String.fromCharCode(255&(n<<6|i<<1|s>>>4))+String.fromCharCode(255&(s<<4|o>>>1))+String.fromCharCode(255&(o<<7|a<<2|c>>>3))),h},w={encode:b,decode:v};v.asBytes=p,a?e.exports=w:(s.base32=w,c&&(i=function(){return w}.call(w,r,w,e),void 0===i||(e.exports=i)))})()}).call(this,r("4362"),r("c8ba"))},2388:function(e,t,r){"use strict";function n(e,t,r){e.emit("stream",t,r)}function i(e,t){e.emit("error",t)}e.exports.emitError=i,e.exports.emitStream=n},"2388f":function(e,t){function r(e,t){return e===t||e!==e&&t!==t}e.exports=r},"239c":function(e,t,r){e.exports=r("5cb7")},"23bc":function(e,t,r){"use strict";(function(t){const n=r("7e03"),i=(e,r)=>t.compare(e.nameAsBuffer,r.nameAsBuffer),s=e=>n(e,i);e.exports=s}).call(this,r("b639").Buffer)},24:function(e,t){},2411:function(e,t,r){"use strict";(function(e){const n=r("748a"),i=r("ea91");t.publicKeyLength=n.sign.publicKeyLength,t.privateKeyLength=n.sign.secretKeyLength,t.generateKey=function(e){i(()=>{let t;try{t=n.sign.keyPair()}catch(r){return e(r)}e(null,t)})},t.generateKeyFromSeed=function(e,t){i(()=>{let r;try{r=n.sign.keyPair.fromSeed(e)}catch(i){return t(i)}t(null,r)})},t.hashAndSign=function(t,r,s){i(()=>{s(null,e.from(n.sign.detached(r,t)))})},t.hashAndVerify=function(e,t,r,s){i(()=>{let i;try{i=n.sign.detached.verify(r,t,e)}catch(o){return s(o)}s(null,i)})}}).call(this,r("b639").Buffer)},2424:function(e,t,r){"use strict";r.r(t);var n=r("28a7");r.d(t,"default",(function(){return n["c"]})),r.d(t,"HTTPError",(function(){return n["a"]})),r.d(t,"TimeoutError",(function(){return n["b"]}))},"245c":function(e,t,r){"use strict";const n=r("09a4"),i=r("e62b").version;e.exports=function(e){return n(async()=>({id:e._peerInfo.id.toB58String(),publicKey:e._peerInfo.id.pubKey.bytes.toString("base64"),addresses:e._peerInfo.multiaddrs.toArray().map(e=>e.toString()).filter(e=>e.indexOf("ipfs")>=0).sort(),agentVersion:`js-ipfs/${i}`,protocolVersion:"9000"}))}},2462:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var r=(0,o.default)(e);return(0,i.default)((function(e,t){r(e[0],t)}),t,1)};var n=r("9d97"),i=a(n),s=r("76bf"),o=a(s);function a(e){return e&&e.__esModule?e:{default:e}}e.exports=t["default"]},"247b":function(e,t,r){"use strict";(function(e){const n=r("a261"),i=r("f982"),s=r("a0e5").bignum,o=r("5cdc"),a=o.toBase64,c=o.toBn,u={"P-256":256,"P-384":384,"P-521":521};t.generateEphmeralKeyPair=function(t,r){i(n.subtle.generateKey({name:"ECDH",namedCurve:t},!0,["deriveBits"]).then(r=>{const s=(s,o,a)=>{let c;"function"===typeof o&&(a=o,o=void 0),c=o?n.subtle.importKey("jwk",d(t,o),{name:"ECDH",namedCurve:t},!1,["deriveBits"]):Promise.resolve(r.privateKey);const l=Promise.all([n.subtle.importKey("jwk",f(t,s),{name:"ECDH",namedCurve:t},!1,[]),c]);i(l.then(e=>n.subtle.deriveBits({name:"ECDH",namedCurve:t,public:e[0]},e[1],u[t])).then(t=>e.from(t)),a)};return n.subtle.exportKey("jwk",r.publicKey).then(e=>({key:h(e),genSharedKey:s}))}),r)};const l={"P-256":32,"P-384":48,"P-521":66};function h(t){const r=l[t.crv];return e.concat([e.from([4]),c(t.x).toArrayLike(e,"be",r),c(t.y).toArrayLike(e,"be",r)],1+2*r)}function f(t,r){const n=l[t];if(!r.slice(0,1).equals(e.from([4])))throw new Error("Invalid key format");const i=new s(r.slice(1,n+1)),o=new s(r.slice(1+n));return{kty:"EC",crv:t,x:a(i,n),y:a(o,n),ext:!0}}function d(e,t){const r=f(e,t.public);return r.d=a(new s(t.private)),r}}).call(this,r("b639").Buffer)},2498:function(e,t,r){var n=r("918b");r("91bb"),r("5ee0");var i=n.asn1,s=e.exports=n.pkcs7asn1=n.pkcs7asn1||{};n.pkcs7=n.pkcs7||{},n.pkcs7.asn1=s;var o={name:"ContentInfo",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,value:[{name:"ContentInfo.ContentType",tagClass:i.Class.UNIVERSAL,type:i.Type.OID,constructed:!1,capture:"contentType"},{name:"ContentInfo.content",tagClass:i.Class.CONTEXT_SPECIFIC,type:0,constructed:!0,optional:!0,captureAsn1:"content"}]};s.contentInfoValidator=o;var a={name:"EncryptedContentInfo",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,value:[{name:"EncryptedContentInfo.contentType",tagClass:i.Class.UNIVERSAL,type:i.Type.OID,constructed:!1,capture:"contentType"},{name:"EncryptedContentInfo.contentEncryptionAlgorithm",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,value:[{name:"EncryptedContentInfo.contentEncryptionAlgorithm.algorithm",tagClass:i.Class.UNIVERSAL,type:i.Type.OID,constructed:!1,capture:"encAlgorithm"},{name:"EncryptedContentInfo.contentEncryptionAlgorithm.parameter",tagClass:i.Class.UNIVERSAL,captureAsn1:"encParameter"}]},{name:"EncryptedContentInfo.encryptedContent",tagClass:i.Class.CONTEXT_SPECIFIC,type:0,capture:"encryptedContent",captureAsn1:"encryptedContentAsn1"}]};s.envelopedDataValidator={name:"EnvelopedData",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,value:[{name:"EnvelopedData.Version",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"version"},{name:"EnvelopedData.RecipientInfos",tagClass:i.Class.UNIVERSAL,type:i.Type.SET,constructed:!0,captureAsn1:"recipientInfos"}].concat(a)},s.encryptedDataValidator={name:"EncryptedData",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,value:[{name:"EncryptedData.Version",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"version"}].concat(a)};var c={name:"SignerInfo",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,value:[{name:"SignerInfo.version",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1},{name:"SignerInfo.issuerAndSerialNumber",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,value:[{name:"SignerInfo.issuerAndSerialNumber.issuer",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,captureAsn1:"issuer"},{name:"SignerInfo.issuerAndSerialNumber.serialNumber",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"serial"}]},{name:"SignerInfo.digestAlgorithm",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,value:[{name:"SignerInfo.digestAlgorithm.algorithm",tagClass:i.Class.UNIVERSAL,type:i.Type.OID,constructed:!1,capture:"digestAlgorithm"},{name:"SignerInfo.digestAlgorithm.parameter",tagClass:i.Class.UNIVERSAL,constructed:!1,captureAsn1:"digestParameter",optional:!0}]},{name:"SignerInfo.authenticatedAttributes",tagClass:i.Class.CONTEXT_SPECIFIC,type:0,constructed:!0,optional:!0,capture:"authenticatedAttributes"},{name:"SignerInfo.digestEncryptionAlgorithm",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,capture:"signatureAlgorithm"},{name:"SignerInfo.encryptedDigest",tagClass:i.Class.UNIVERSAL,type:i.Type.OCTETSTRING,constructed:!1,capture:"signature"},{name:"SignerInfo.unauthenticatedAttributes",tagClass:i.Class.CONTEXT_SPECIFIC,type:1,constructed:!0,optional:!0,capture:"unauthenticatedAttributes"}]};s.signedDataValidator={name:"SignedData",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,value:[{name:"SignedData.Version",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"version"},{name:"SignedData.DigestAlgorithms",tagClass:i.Class.UNIVERSAL,type:i.Type.SET,constructed:!0,captureAsn1:"digestAlgorithms"},o,{name:"SignedData.Certificates",tagClass:i.Class.CONTEXT_SPECIFIC,type:0,optional:!0,captureAsn1:"certificates"},{name:"SignedData.CertificateRevocationLists",tagClass:i.Class.CONTEXT_SPECIFIC,type:1,optional:!0,captureAsn1:"crls"},{name:"SignedData.SignerInfos",tagClass:i.Class.UNIVERSAL,type:i.Type.SET,capture:"signerInfos",optional:!0,value:[c]}]},s.recipientInfoValidator={name:"RecipientInfo",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,value:[{name:"RecipientInfo.version",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"version"},{name:"RecipientInfo.issuerAndSerial",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,value:[{name:"RecipientInfo.issuerAndSerial.issuer",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,captureAsn1:"issuer"},{name:"RecipientInfo.issuerAndSerial.serialNumber",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"serial"}]},{name:"RecipientInfo.keyEncryptionAlgorithm",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,value:[{name:"RecipientInfo.keyEncryptionAlgorithm.algorithm",tagClass:i.Class.UNIVERSAL,type:i.Type.OID,constructed:!1,capture:"encAlgorithm"},{name:"RecipientInfo.keyEncryptionAlgorithm.parameter",tagClass:i.Class.UNIVERSAL,constructed:!1,captureAsn1:"encParameter"}]},{name:"RecipientInfo.encryptedKey",tagClass:i.Class.UNIVERSAL,type:i.Type.OCTETSTRING,constructed:!1,capture:"encKey"}]}},"24d2":function(e,t,r){(function(r,n){"use strict";var i={version:"3.0.0",x86:{},x64:{},inputValidation:!0};function s(e){if(!Array.isArray(e)&&!ArrayBuffer.isView(e))return!1;for(var t=0;t255)return!1;return!0}function o(e,t){return(65535&e)*t+(((e>>>16)*t&65535)<<16)}function a(e,t){return e<>>32-t}function c(e){return e^=e>>>16,e=o(e,2246822507),e^=e>>>13,e=o(e,3266489909),e^=e>>>16,e}function u(e,t){e=[e[0]>>>16,65535&e[0],e[1]>>>16,65535&e[1]],t=[t[0]>>>16,65535&t[0],t[1]>>>16,65535&t[1]];var r=[0,0,0,0];return r[3]+=e[3]+t[3],r[2]+=r[3]>>>16,r[3]&=65535,r[2]+=e[2]+t[2],r[1]+=r[2]>>>16,r[2]&=65535,r[1]+=e[1]+t[1],r[0]+=r[1]>>>16,r[1]&=65535,r[0]+=e[0]+t[0],r[0]&=65535,[r[0]<<16|r[1],r[2]<<16|r[3]]}function l(e,t){e=[e[0]>>>16,65535&e[0],e[1]>>>16,65535&e[1]],t=[t[0]>>>16,65535&t[0],t[1]>>>16,65535&t[1]];var r=[0,0,0,0];return r[3]+=e[3]*t[3],r[2]+=r[3]>>>16,r[3]&=65535,r[2]+=e[2]*t[3],r[1]+=r[2]>>>16,r[2]&=65535,r[2]+=e[3]*t[2],r[1]+=r[2]>>>16,r[2]&=65535,r[1]+=e[1]*t[3],r[0]+=r[1]>>>16,r[1]&=65535,r[1]+=e[2]*t[2],r[0]+=r[1]>>>16,r[1]&=65535,r[1]+=e[3]*t[1],r[0]+=r[1]>>>16,r[1]&=65535,r[0]+=e[0]*t[3]+e[1]*t[2]+e[2]*t[1]+e[3]*t[0],r[0]&=65535,[r[0]<<16|r[1],r[2]<<16|r[3]]}function h(e,t){return t%=64,32===t?[e[1],e[0]]:t<32?[e[0]<>>32-t,e[1]<>>32-t]:(t-=32,[e[1]<>>32-t,e[0]<>>32-t])}function f(e,t){return t%=64,0===t?e:t<32?[e[0]<>>32-t,e[1]<>>1]),e=l(e,[4283543511,3981806797]),e=d(e,[0,e[0]>>>1]),e=l(e,[3301882366,444984403]),e=d(e,[0,e[0]>>>1]),e}i.x86.hash32=function(e,t){if(i.inputValidation&&!s(e))return n;t=t||0;for(var r=e.length%4,u=e.length-r,l=t,h=0,f=3432918353,d=461845907,p=0;p>>0},i.x86.hash128=function(e,t){if(i.inputValidation&&!s(e))return n;t=t||0;for(var r=e.length%16,u=e.length-r,l=t,h=t,f=t,d=t,p=0,y=0,g=0,m=0,b=597399067,v=2869860233,w=951274213,_=2716044179,E=0;E>>0).toString(16)).slice(-8)+("00000000"+(h>>>0).toString(16)).slice(-8)+("00000000"+(f>>>0).toString(16)).slice(-8)+("00000000"+(d>>>0).toString(16)).slice(-8)},i.x64.hash128=function(e,t){if(i.inputValidation&&!s(e))return n;t=t||0;for(var r=e.length%16,o=e.length-r,a=[0,t],c=[0,t],y=[0,0],g=[0,0],m=[2277735313,289559509],b=[1291169091,658871167],v=0;v>>0).toString(16)).slice(-8)+("00000000"+(a[1]>>>0).toString(16)).slice(-8)+("00000000"+(c[0]>>>0).toString(16)).slice(-8)+("00000000"+(c[1]>>>0).toString(16)).slice(-8)},e.exports&&(t=e.exports=i),t.murmurHash3=i})()},"24d5":function(e,t,r){"use strict";const n=r("0bda"),i=r("4bc2"),s=r("e3d5"),o=r("4503"),a=r("8d9e"),c=r("ca60"),u=i("ipfs:preload");u.error=i("ipfs:preload:error"),e.exports=e=>{const t=e._options.preload||{};if(t.enabled=Boolean(t.enabled),t.addresses=t.addresses||[],!t.enabled||!t.addresses.length){u("preload disabled");const e=()=>{};return e.start=()=>{},e.stop=()=>{},e}let r=!0,i=[];const l=t.addresses.map(n),h=async e=>{try{if(r)throw new Error(`preload ${e} but preloader is not started`);"string"!==typeof e&&(e=new s(e).toString());const n=o(l);let h=!1;const f=Date.now();for(const s of n){if(r)throw new Error(`preload aborted for ${e}`);let n;try{n=new a,i=i.concat(n),await c(`${s}/api/v0/refs?r=true&arg=${encodeURIComponent(e)}`,{signal:n.signal}),h=!0}catch(t){"aborted"!==t.type&&u.error(t)}finally{i=i.filter(e=>e!==n)}if(h)break}u(`${h?"":"un"}successfully preloaded ${e} in ${Date.now()-f}ms`)}catch(t){u.error(t)}};return h.start=()=>{r=!1},h.stop=()=>{r=!0,u(`aborting ${i.length} pending preload request(s)`),i.forEach(e=>e.abort()),i=[]},h}},"24e6":function(e,t,r){"use strict";const n=r("7048"),i={"dag-pb":r("5051"),raw:r("1f17"),"dag-cbor":r("521b")},s=(e,t,r,o,a,c)=>{const u=i[e.codec];if(!u)throw n(new Error(`No resolver for codec ${e.codec}`),"ERR_NO_RESOLVER");return u(e,t,r,o,s,a,c)};e.exports=s},25:function(e,t){},"252b":function(e,t,r){(function(t){var r="Expected a function",n="__lodash_hash_undefined__",i=1/0,s=9007199254740991,o="[object Arguments]",a="[object Function]",c="[object GeneratorFunction]",u="[object Symbol]",l=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,h=/^\w*$/,f=/^\./,d=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,p=/[\\^$.*+?()[\]{}|]/g,y=/\\(\\)?/g,g=/^\[object .+?Constructor\]$/,m=/^(?:0|[1-9]\d*)$/,b="object"==typeof t&&t&&t.Object===Object&&t,v="object"==typeof self&&self&&self.Object===Object&&self,w=b||v||Function("return this")();function _(e,t){return null==e?void 0:e[t]}function E(e){var t=!1;if(null!=e&&"function"!=typeof e.toString)try{t=!!(e+"")}catch(r){}return t}var S=Array.prototype,k=Function.prototype,C=Object.prototype,A=w["__core-js_shared__"],I=function(){var e=/[^.]+$/.exec(A&&A.keys&&A.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),T=k.toString,x=C.hasOwnProperty,B=C.toString,R=RegExp("^"+T.call(x).replace(p,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),N=w.Symbol,O=C.propertyIsEnumerable,P=S.splice,D=ue(w,"Map"),L=ue(Object,"create"),M=N?N.prototype:void 0,U=M?M.toString:void 0;function j(e){var t=-1,r=e?e.length:0;this.clear();while(++t-1}function Q(e,t){var r=this.__data__,n=ne(r,e);return n<0?r.push([e,t]):r[n][1]=t,this}function J(e){var t=-1,r=e?e.length:0;this.clear();while(++t-1&&e%1==0&&e-1&&e%1==0&&e<=s}function Ae(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function Ie(e){return!!e&&"object"==typeof e}function Te(e){return"symbol"==typeof e||Ie(e)&&B.call(e)==u}function xe(e){return null==e?"":oe(e)}function Be(e,t){return null!=e&&le(e,t,ie)}e.exports=Be}).call(this,r("c8ba"))},2579:function(e,t,r){"use strict";var n=r("b80a"),i=r("fd47");e.exports=function(e){if(!n(e.then))throw new TypeError("Expected a promise");return function(t){e.then((function(e){i(t,null,e)}),(function(e){i(t,e)}))}}},"25d9":function(e,t){e.exports=o;var r=128,n=127,i=~n,s=Math.pow(2,31);function o(e,t,n){t=t||[],n=n||0;var a=n;while(e>=s)t[n++]=255&e|r,e/=128;while(e&i)t[n++]=255&e|r,e>>>=7;return t[n]=0|e,o.bytes=n-a+1,t}},"25e6":function(e,t,r){var n=r("dae2"),i=r("021d"),s=i;s.v1=n,s.v4=i,e.exports=s},"25ee":function(e,t,r){(function(t){var r="Input must be an string, Buffer or Uint8Array";function n(e){var n;if(e instanceof Uint8Array)n=e;else if(e instanceof t)n=new Uint8Array(e);else{if("string"!==typeof e)throw new Error(r);n=new Uint8Array(t.from(e,"utf8"))}return n}function i(e){return Array.prototype.map.call(e,(function(e){return(e<16?"0":"")+e.toString(16)})).join("")}function s(e){return(4294967296+e).toString(16).substring(1)}function o(e,t,r){for(var n="\n"+e+" = ",i=0;i{Object(c["defineReadOnly"])(this,e,t[e])})}_startPending(){l.warn("WARNING: API provider does not support pending filters")}getSigner(e){return l.throwError("API provider does not support signing",o["Logger"].errors.UNSUPPORTED_OPERATION,{operation:"getSigner"})}listAccounts(){return Promise.resolve([])}static getApiKey(e){return e}static getUrl(e,t){return l.throwError("not implemented; sub-classes must override getUrl",o["Logger"].errors.NOT_IMPLEMENTED,{operation:"getUrl"})}}const f=new o["Logger"](a["a"]),d="_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC";class p extends h{static getApiKey(e){return null==e?d:(e&&"string"!==typeof e&&f.throwArgumentError("invalid apiKey","apiKey",e),e)}static getUrl(e,t){let r=null;switch(e.name){case"homestead":r="eth-mainnet.alchemyapi.io/jsonrpc/";break;case"ropsten":r="eth-ropsten.alchemyapi.io/jsonrpc/";break;case"rinkeby":r="eth-rinkeby.alchemyapi.io/jsonrpc/";break;case"kovan":r="eth-kovan.alchemyapi.io/jsonrpc/";break;default:f.throwArgumentError("unsupported network","network",arguments[0])}return"https://"+r+t}}const y=new o["Logger"](a["a"]);class g extends h{static getApiKey(e){return null!=e&&y.throwArgumentError("apiKey not supported for cloudflare","apiKey",e),null}static getUrl(e,t){let r=null;switch(e.name){case"homestead":r="https://cloudflare-eth.com/";break;default:y.throwArgumentError("unsupported network","network",arguments[0])}return r}}var m=r("549e"),b=r("baf7"),v=function(e,t,r,n){function i(e){return e instanceof r?e:new r((function(t){t(e)}))}return new(r||(r=Promise))((function(r,s){function o(e){try{c(n.next(e))}catch(t){s(t)}}function a(e){try{c(n["throw"](e))}catch(t){s(t)}}function c(e){e.done?r(e.value):i(e.value).then(o,a)}c((n=n.apply(e,t||[])).next())}))};const w=new o["Logger"](a["a"]);function _(e){const t=[];for(let r in e){if(null==e[r])continue;let n=Object(m["hexlify"])(e[r]);({gasLimit:!0,gasPrice:!0,nonce:!0,value:!0})[r]&&(n=Object(m["hexValue"])(n)),t.push(r+"="+n)}return t.join("&")}function E(e){if(0==e.status&&("No records found"===e.message||"No transactions found"===e.message))return e.result;if(1!=e.status||"OK"!=e.message){const t=new Error("invalid response");throw t.result=JSON.stringify(e),t}return e.result}function S(e){if("2.0"!=e.jsonrpc){const t=new Error("invalid response");throw t.result=JSON.stringify(e),t}if(e.error){const t=new Error(e.error.message||"unknown error");throw e.error.code&&(t.code=e.error.code),e.error.data&&(t.data=e.error.data),t}return e.result}function k(e){if("pending"===e)throw new Error("pending not supported");return"latest"===e?e:parseInt(e.substring(2),16)}class C extends s["a"]{constructor(e,t){w.checkNew(new.target,C),super(e);let r="invalid";this.network&&(r=this.network.name);let n=null;switch(r){case"homestead":n="https://api.etherscan.io";break;case"ropsten":n="https://api-ropsten.etherscan.io";break;case"rinkeby":n="https://api-rinkeby.etherscan.io";break;case"kovan":n="https://api-kovan.etherscan.io";break;case"goerli":n="https://api-goerli.etherscan.io";break;default:throw new Error("unsupported network")}Object(c["defineReadOnly"])(this,"baseUrl",n),Object(c["defineReadOnly"])(this,"apiKey",t)}perform(e,t){const r=Object.create(null,{perform:{get:()=>super.perform}});return v(this,void 0,void 0,(function*(){let n=this.baseUrl,i="";this.apiKey&&(i+="&apikey="+this.apiKey);const s=(e,t)=>v(this,void 0,void 0,(function*(){this.emit("debug",{action:"request",request:e,provider:this});const r=yield Object(b["a"])(e,null,t||S);return this.emit("debug",{action:"response",request:e,response:Object(c["deepCopy"])(r),provider:this}),r}));switch(e){case"getBlockNumber":return n+="/api?module=proxy&action=eth_blockNumber"+i,s(n);case"getGasPrice":return n+="/api?module=proxy&action=eth_gasPrice"+i,s(n);case"getBalance":return n+="/api?module=account&action=balance&address="+t.address,n+="&tag="+t.blockTag+i,s(n,E);case"getTransactionCount":return n+="/api?module=proxy&action=eth_getTransactionCount&address="+t.address,n+="&tag="+t.blockTag+i,s(n);case"getCode":return n+="/api?module=proxy&action=eth_getCode&address="+t.address,n+="&tag="+t.blockTag+i,s(n,S);case"getStorageAt":return n+="/api?module=proxy&action=eth_getStorageAt&address="+t.address,n+="&position="+t.position,n+="&tag="+t.blockTag+i,s(n,S);case"sendTransaction":return n+="/api?module=proxy&action=eth_sendRawTransaction&hex="+t.signedTransaction,n+=i,s(n).catch(e=>{throw e.responseText&&(e.responseText.toLowerCase().indexOf("insufficient funds")>=0&&w.throwError("insufficient funds",o["Logger"].errors.INSUFFICIENT_FUNDS,{}),e.responseText.indexOf("same hash was already imported")>=0&&w.throwError("nonce has already been used",o["Logger"].errors.NONCE_EXPIRED,{}),e.responseText.indexOf("another transaction with same nonce")>=0&&w.throwError("replacement fee too low",o["Logger"].errors.REPLACEMENT_UNDERPRICED,{})),e});case"getBlock":if(t.blockTag)return n+="/api?module=proxy&action=eth_getBlockByNumber&tag="+t.blockTag,t.includeTransactions?n+="&boolean=true":n+="&boolean=false",n+=i,s(n);throw new Error("getBlock by blockHash not implmeneted");case"getTransaction":return n+="/api?module=proxy&action=eth_getTransactionByHash&txhash="+t.transactionHash,n+=i,s(n);case"getTransactionReceipt":return n+="/api?module=proxy&action=eth_getTransactionReceipt&txhash="+t.transactionHash,n+=i,s(n);case"call":{let e=_(t.transaction);if(e&&(e="&"+e),n+="/api?module=proxy&action=eth_call"+e,"latest"!==t.blockTag)throw new Error("EtherscanProvider does not support blockTag for call");return n+=i,s(n)}case"estimateGas":{let e=_(t.transaction);return e&&(e="&"+e),n+="/api?module=proxy&action=eth_estimateGas&"+e,n+=i,s(n)}case"getLogs":{if(n+="/api?module=logs&action=getLogs",t.filter.fromBlock&&(n+="&fromBlock="+k(t.filter.fromBlock)),t.filter.toBlock&&(n+="&toBlock="+k(t.filter.toBlock)),t.filter.address&&(n+="&address="+t.filter.address),t.filter.topics&&t.filter.topics.length>0&&(t.filter.topics.length>1&&w.throwError("unsupported topic count",o["Logger"].errors.UNSUPPORTED_OPERATION,{topics:t.filter.topics}),1===t.filter.topics.length)){const e=t.filter.topics[0];"string"===typeof e&&66===e.length||w.throwError("unsupported topic format",o["Logger"].errors.UNSUPPORTED_OPERATION,{topic0:e}),n+="&topic0="+e}n+=i;const e=yield s(n,E);let r={};for(let t=0;t(n+="/api?module=account&action=txlist&address="+e,n+="&startblock="+t,n+="&endblock="+r,n+="&sort=asc"+i,this.emit("debug",{action:"request",request:n,provider:this}),Object(b["a"])(n,null,E).then(e=>{this.emit("debug",{action:"response",request:n,response:Object(c["deepCopy"])(e),provider:this});let t=[];return e.forEach(e=>{["contractAddress","to"].forEach((function(t){""==e[t]&&delete e[t]})),null==e.creates&&null!=e.contractAddress&&(e.creates=e.contractAddress);let r=this.formatter.transactionResponse(e);e.timeStamp&&(r.timestamp=parseInt(e.timeStamp)),t.push(r)}),t})))}}var A=r("d4c7"),I=r("3a17"),T=function(e,t,r,n){function i(e){return e instanceof r?e:new r((function(t){t(e)}))}return new(r||(r=Promise))((function(r,s){function o(e){try{c(n.next(e))}catch(t){s(t)}}function a(e){try{c(n["throw"](e))}catch(t){s(t)}}function c(e){e.done?r(e.value):i(e.value).then(o,a)}c((n=n.apply(e,t||[])).next())}))};const x=new o["Logger"](a["a"]);function B(){return(new Date).getTime()}function R(e){let t=null;for(let r=0;rO(e)));if("object"===typeof e){const t=Object.keys(e);return t.sort(),"{"+t.map(t=>{let r=e[t];return r="function"===typeof r?"[function]":O(r),JSON.stringify(t)+":"+r}).join(",")+"}"}throw new Error("unknown value type: "+typeof e)}let P=1;function D(e){return new Promise(t=>{const r=setTimeout(t,e);r.unref&&r.unref()})}function L(e,t){const r={provider:e.provider,weight:e.weight};return e.start&&(r.start=e.start),t&&(r.duration=t-e.start),e.done&&(e.error?r.error=e.error:r.result=e.result||null),r}function M(e,t){return function(r){const n={};r.forEach(t=>{const r=e(t.result);n[r]||(n[r]={count:0,result:t.result}),n[r].count++});const i=Object.keys(n);for(let e=0;e=t)return r.result}}}function U(e,t,r){let n=O;switch(t){case"getBlockNumber":return function(t){const r=t.map(e=>e.result);let n=Math.ceil(N(t.map(e=>e.result)));return r.indexOf(n+1)>=0&&n++,n>=e._highestBlockNumber&&(e._highestBlockNumber=n),e._highestBlockNumber};case"getGasPrice":return function(e){const t=e.map(e=>e.result);return t.sort(),t[Math.floor(t.length/2)]};case"getEtherPrice":return function(e){return N(e.map(e=>e.result))};case"getBalance":case"getTransactionCount":case"getCode":case"getStorageAt":case"call":case"estimateGas":case"getLogs":break;case"getTransaction":case"getTransactionReceipt":n=function(e){return null==e?null:(e=Object(c["shallowCopy"])(e),e.confirmations=-1,O(e))};break;case"getBlock":n=r.includeTransactions?function(e){return null==e?null:(e=Object(c["shallowCopy"])(e),e.transactions=e.transactions.map(e=>(e=Object(c["shallowCopy"])(e),e.confirmations=-1,e)),O(e))}:function(e){return null==e?null:O(e)};break;default:throw new Error("unknown method: "+t)}return M(n,e.quorum)}function j(e,t,r){switch(t){case"getBlockNumber":case"getGasPrice":return e[t]();case"getEtherPrice":if(e.getEtherPrice)return e.getEtherPrice();break;case"getBalance":case"getTransactionCount":case"getCode":return e[t](r.address,r.blockTag||"latest");case"getStorageAt":return e.getStorageAt(r.address,r.position,r.blockTag||"latest");case"getBlock":return e[r.includeTransactions?"getBlockWithTransactions":"getBlock"](r.blockTag||r.blockHash);case"call":case"estimateGas":return e[t](r.transaction);case"getTransaction":case"getTransactionReceipt":return e[t](r.transactionHash);case"getLogs":return e.getLogs(r.filter)}return x.throwError("unknown method error",o["Logger"].errors.UNKNOWN_ERROR,{method:t,params:r})}class K extends s["a"]{constructor(e,t){x.checkNew(new.target,K),0===e.length&&x.throwArgumentError("missing providers","providers",e);const r=e.map((e,t)=>{if(n["b"].isProvider(e))return Object.freeze({provider:e,weight:1,stallTimeout:750,priority:1});const r=Object(c["shallowCopy"])(e);null==r.priority&&(r.priority=1),null==r.stallTimeout&&(r.stallTimeout=750),null==r.weight&&(r.weight=1);const i=r.weight;return(i%1||i>512||i<1)&&x.throwArgumentError("invalid weight; must be integer in [1, 512]",`providers[${t}].weight`,i),Object.freeze(r)}),i=r.reduce((e,t)=>e+t.weight,0);null==t?t=i/2:t>i&&x.throwArgumentError("quorum will always fail; larger than total weight","quorum",t);const s=R(r.map(e=>e.provider.network));if(s)super(s);else{const e=Promise.all(r.map(e=>e.provider.getNetwork())).then(e=>R(e));super(e)}Object(c["defineReadOnly"])(this,"providerConfigs",Object.freeze(r)),Object(c["defineReadOnly"])(this,"quorum",t),this._highestBlockNumber=-1}perform(e,t){return T(this,void 0,void 0,(function*(){if("sendTransaction"===e)return Promise.all(this.providerConfigs.map(e=>e.provider.sendTransaction(t.signedTransaction).then(e=>e.hash,e=>e))).then(e=>{for(let t=0;tObject(c["shallowCopy"])(e)));n.sort((e,t)=>e.priority-t.priority);let i=0;while(1){const s=B();let o=n.filter(e=>e.runner&&s-e.starte+t.weight,0);while(o{r.staller=null}),r.runner=j(r.provider,e,t).then(n=>{r.done=!0,r.result=n,this.listenerCount("debug")&&this.emit("debug",{action:"request",rid:s,backend:L(r,B()),request:{method:e,params:Object(c["deepCopy"])(t)},provider:this})},n=>{r.done=!0,r.error=n,this.listenerCount("debug")&&this.emit("debug",{action:"request",rid:s,backend:L(r,B()),request:{method:e,params:Object(c["deepCopy"])(t)},provider:this})}),this.listenerCount("debug")&&this.emit("debug",{action:"request",rid:s,backend:L(r,null),request:{method:e,params:Object(c["deepCopy"])(t)},provider:this}),o+=r.weight}const a=[];n.forEach(e=>{!e.done&&e.runner&&(a.push(e.runner),e.staller&&a.push(e.staller))}),a.length&&(yield Promise.race(a));const u=n.filter(e=>e.done&&null==e.error);if(u.length>=this.quorum){const e=r(u);if(void 0!==e)return e}if(0===n.filter(e=>!e.done).length)break}return x.throwError("failed to meet quorum",o["Logger"].errors.SERVER_ERROR,{method:e,params:t,results:n.map(e=>L(e)),provider:this})}))}}var F=r("3d68");const V=new o["Logger"](a["a"]),q="84842078b09946638c03157f83405213";class z extends h{static getApiKey(e){const t={apiKey:q,projectId:q,projectSecret:null};return null==e?t:("string"===typeof e?t.projectId=e:null!=e.projectSecret?("string"!==typeof e.projectId&&V.throwArgumentError("projectSecret requires a projectId","projectId",e.projectId),"string"!==typeof e.projectSecret&&V.throwArgumentError("invalid projectSecret","projectSecret","[REDACTED]"),t.projectId=e.projectId,t.projectSecret=e.projectSecret):e.projectId&&(t.projectId=e.projectId),t.apiKey=t.projectId,t)}static getUrl(e,t){let r=null;switch(e.name){case"homestead":r="mainnet.infura.io";break;case"ropsten":r="ropsten.infura.io";break;case"rinkeby":r="rinkeby.infura.io";break;case"kovan":r="kovan.infura.io";break;case"goerli":r="goerli.infura.io";break;default:V.throwError("unsupported network",o["Logger"].errors.INVALID_ARGUMENT,{argument:"network",value:e})}const n={url:"https://"+r+"/v3/"+t.projectId};return null!=t.projectSecret&&(n.user="",n.password=t.projectSecret),n}}const H=new o["Logger"](a["a"]),G="ETHERS_JS_SHARED";class $ extends h{static getApiKey(e){return e&&"string"!==typeof e&&H.throwArgumentError("invalid apiKey","apiKey",e),e||G}static getUrl(e,t){H.warn("NodeSmith will be discontinued on 2019-12-20; please migrate to another platform.");let r=null;switch(e.name){case"homestead":r="https://ethereum.api.nodesmith.io/v1/mainnet/jsonrpc";break;case"ropsten":r="https://ethereum.api.nodesmith.io/v1/ropsten/jsonrpc";break;case"rinkeby":r="https://ethereum.api.nodesmith.io/v1/rinkeby/jsonrpc";break;case"goerli":r="https://ethereum.api.nodesmith.io/v1/goerli/jsonrpc";break;case"kovan":r="https://ethereum.api.nodesmith.io/v1/kovan/jsonrpc";break;default:H.throwArgumentError("unsupported network","network",arguments[0])}return r+"?apiKey="+t}}const W=new o["Logger"](a["a"]);class Y extends u["a"]{constructor(e,t){W.checkNew(new.target,Y),super(e.host||e.path||"",t),e&&(e.sendAsync?this._sendAsync=e.sendAsync.bind(e):e.send&&(this._sendAsync=e.send.bind(e))),this._sendAsync||W.throwArgumentError("invalid web3Provider","web3Provider",e),Object(c["defineReadOnly"])(this,"provider",e)}send(e,t){return"eth_sign"==e&&this.provider.isMetaMask&&(e="personal_sign",t=[t[1],t[0]]),new Promise((r,n)=>{const i={method:e,params:t,id:this._nextId++,jsonrpc:"2.0"};this._sendAsync(i,(function(e,t){if(e)n(e);else{if(t.error){const e=new Error(t.error.message);return e.code=t.error.code,e.data=t.error.data,void n(e)}r(t.result)}}))})}}var Q=r("7f06");r.d(t,"getDefaultProvider",(function(){return X})),r.d(t,"Provider",(function(){return n["b"]})),r.d(t,"BaseProvider",(function(){return s["a"]})),r.d(t,"FallbackProvider",(function(){return K})),r.d(t,"AlchemyProvider",(function(){return p})),r.d(t,"CloudflareProvider",(function(){return g})),r.d(t,"EtherscanProvider",(function(){return C})),r.d(t,"InfuraProvider",(function(){return z})),r.d(t,"JsonRpcProvider",(function(){return u["a"]})),r.d(t,"NodesmithProvider",(function(){return $})),r.d(t,"Web3Provider",(function(){return Y})),r.d(t,"IpcProvider",(function(){return F["a"]})),r.d(t,"JsonRpcSigner",(function(){return u["b"]})),r.d(t,"getNetwork",(function(){return i["a"]})),r.d(t,"Formatter",(function(){return Q["a"]}));const J=new o["Logger"](a["a"]);function X(e,t){null==e&&(e="homestead");const r=Object(i["a"])(e);return r&&r._defaultProvider||J.throwError("unsupported getDefaultProvider network",o["Logger"].errors.NETWORK_ERROR,{operation:"getDefaultProvider",network:e}),r._defaultProvider({FallbackProvider:K,AlchemyProvider:p,CloudflareProvider:g,EtherscanProvider:C,InfuraProvider:z,JsonRpcProvider:u["a"],NodesmithProvider:$,Web3Provider:Y,IpcProvider:F["a"]},t)}},2612:function(e,t,r){e.exports={encode:r("af3a"),decode:r("fa45"),encodingLength:r("61f1")}},26137:function(e,t,r){"use strict";const{Buffer:n}=r("b639"),i=self.crypto||self.msCrypto;e.exports=e=>{if("undefined"===typeof self||!self.crypto&&!self.msCrypto)throw new Error("Please use a browser with webcrypto support and ensure the code has been delivered securely via HTTPS/TLS and run within a Secure Context");return async t=>{switch(e){case"sha1":return n.from(await i.subtle.digest({name:"SHA-1"},t));case"sha2-256":return n.from(await i.subtle.digest({name:"SHA-256"},t));case"sha2-512":return n.from(await i.subtle.digest({name:"SHA-512"},t));case"dbl-sha2-256":{const e=await i.subtle.digest({name:"SHA-256"},t);return n.from(await i.subtle.digest({name:"SHA-256"},e))}default:throw new Error(`${e} is not a supported algorithm`)}}}},2632:function(e,t,r){"use strict";(function(t){const n=r("09a4"),i=r("6f12");e.exports=function(e){return n.variadic((async function(r,n){return t.concat(await i(e._catAsyncIterator(r,n)))}))}}).call(this,r("b639").Buffer)},2644:function(e,t,r){"use strict";const n=r("81f3");function i(e,t,r){"function"===typeof e.pipe?n(e,(e,n)=>{if(e)return r(e);t(n,r)}):t(e,r)}e.exports=i},2655:function(e,t){function r(e){return e&&"function"===typeof e.then}e.exports=r},"268b":function(e,t,r){"use strict";const n=r("cff5"),i=r("8b60"),s=r("9941"),o="sha2-256";e.exports=e=>{const t=32;function r(t){const r=(e,r)=>s(()=>t(e,r));let i;do{i=e(32)}while(!n.privateKeyVerify(i));r(null,i)}function a(e,t,r){const a=(e,t)=>s(()=>r(e,t));i.digest(t,o,(t,r)=>{if(t)return a(t);try{const t=n.sign(r,e),i=n.signatureExport(t.signature);return a(null,i)}catch(t){a(t)}})}function c(e,t,r,a){const c=(e,t)=>s(()=>a(e,t));i.digest(r,o,(r,i)=>{if(r)return c(r);try{t=n.signatureImport(t);const r=n.verify(i,t,e);return c(null,r)}catch(r){c(r)}})}function u(e){if(!n.publicKeyVerify(e))throw new Error("Invalid public key");return n.publicKeyConvert(e,!0)}function l(e){return n.publicKeyConvert(e,!1)}function h(e){if(!n.privateKeyVerify(e))throw new Error("Invalid private key")}function f(e){if(!n.publicKeyVerify(e))throw new Error("Invalid public key")}function d(e){return h(e),n.publicKeyCreate(e)}return{generateKey:r,privateKeyLength:t,hashAndSign:a,hashAndVerify:c,compressPublicKey:u,decompressPublicKey:l,validatePrivateKey:h,validatePublicKey:f,computePublicKey:d}}},"26a6":function(e,t,r){var n;(function(i){"use strict";var s,o=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,a=Math.ceil,c=Math.floor,u="[BigNumber Error] ",l=u+"Number primitive has more than 15 significant digits: ",h=1e14,f=14,d=9007199254740991,p=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],y=1e7,g=1e9;function m(e){var t,r,n,i=L.prototype={constructor:L,toString:null,valueOf:null},s=new L(1),C=20,A=4,I=-7,T=21,x=-1e7,B=1e7,R=!1,N=1,O=0,P={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:" ",suffix:""},D="0123456789abcdefghijklmnopqrstuvwxyz";function L(e,t){var i,s,a,u,h,p,y,g,m=this;if(!(m instanceof L))return new L(e,t);if(null==t){if(e&&!0===e._isBigNumber)return m.s=e.s,void(!e.c||e.e>B?m.c=m.e=null:e.e=10;h/=10,u++);return void(u>B?m.c=m.e=null:(m.e=u,m.c=[e]))}g=String(e)}else{if(!o.test(g=String(e)))return n(m,g,p);m.s=45==g.charCodeAt(0)?(g=g.slice(1),-1):1}(u=g.indexOf("."))>-1&&(g=g.replace(".","")),(h=g.search(/e/i))>0?(u<0&&(u=h),u+=+g.slice(h+1),g=g.substring(0,h)):u<0&&(u=g.length)}else{if(_(t,2,D.length,"Base"),10==t)return m=new L(e),K(m,C+m.e+1,A);if(g=String(e),p="number"==typeof e){if(0*e!=0)return n(m,g,p,t);if(m.s=1/e<0?(g=g.slice(1),-1):1,L.DEBUG&&g.replace(/^0\.0*|\./,"").length>15)throw Error(l+e)}else m.s=45===g.charCodeAt(0)?(g=g.slice(1),-1):1;for(i=D.slice(0,t),u=h=0,y=g.length;hu){u=y;continue}}else if(!a&&(g==g.toUpperCase()&&(g=g.toLowerCase())||g==g.toLowerCase()&&(g=g.toUpperCase()))){a=!0,h=-1,u=0;continue}return n(m,String(e),p,t)}p=!1,g=r(g,t,10,m.s),(u=g.indexOf("."))>-1?g=g.replace(".",""):u=g.length}for(h=0;48===g.charCodeAt(h);h++);for(y=g.length;48===g.charCodeAt(--y););if(g=g.slice(h,++y)){if(y-=h,p&&L.DEBUG&&y>15&&(e>d||e!==c(e)))throw Error(l+m.s*e);if((u=u-h-1)>B)m.c=m.e=null;else if(u=T)?S(c,o):k(c,o,"0");else if(e=K(new L(e),t,r),s=e.e,c=v(e.c),a=c.length,1==n||2==n&&(t<=s||s<=I)){for(;aa){if(--t>0)for(c+=".";t--;c+="0");}else if(t+=s-a,t>0)for(s+1==a&&(c+=".");t--;c+="0");return e.s<0&&i?"-"+c:c}function U(e,t){for(var r,n=1,i=new L(e[0]);n=10;i/=10,n++);return(r=n+r*f-1)>B?e.c=e.e=null:r=10;u/=10,i++);if(s=t-i,s<0)s+=f,o=t,l=g[d=0],y=l/m[i-o-1]%10|0;else if(d=a((s+1)/f),d>=g.length){if(!n)break e;for(;g.length<=d;g.push(0));l=y=0,i=1,s%=f,o=s-f+1}else{for(l=u=g[d],i=1;u>=10;u/=10,i++);s%=f,o=s-f+i,y=o<0?0:l/m[i-o-1]%10|0}if(n=n||t<0||null!=g[d+1]||(o<0?l:l%m[i-o-1]),n=r<4?(y||n)&&(0==r||r==(e.s<0?3:2)):y>5||5==y&&(4==r||n||6==r&&(s>0?o>0?l/m[i-o]:0:g[d-1])%10&1||r==(e.s<0?8:7)),t<1||!g[0])return g.length=0,n?(t-=e.e+1,g[0]=m[(f-t%f)%f],e.e=-t||0):g[0]=e.e=0,e;if(0==s?(g.length=d,u=1,d--):(g.length=d+1,u=m[f-s],g[d]=o>0?c(l/m[i-o]%m[o])*u:0),n)for(;;){if(0==d){for(s=1,o=g[0];o>=10;o/=10,s++);for(o=g[0]+=u,u=1;o>=10;o/=10,u++);s!=u&&(e.e++,g[0]==h&&(g[0]=1));break}if(g[d]+=u,g[d]!=h)break;g[d--]=0,u=1}for(s=g.length;0===g[--s];g.pop());}e.e>B?e.c=e.e=null:e.e=T?S(t,r):k(t,r,"0"),e.s<0?"-"+t:t)}return L.clone=m,L.ROUND_UP=0,L.ROUND_DOWN=1,L.ROUND_CEIL=2,L.ROUND_FLOOR=3,L.ROUND_HALF_UP=4,L.ROUND_HALF_DOWN=5,L.ROUND_HALF_EVEN=6,L.ROUND_HALF_CEIL=7,L.ROUND_HALF_FLOOR=8,L.EUCLID=9,L.config=L.set=function(e){var t,r;if(null!=e){if("object"!=typeof e)throw Error(u+"Object expected: "+e);if(e.hasOwnProperty(t="DECIMAL_PLACES")&&(r=e[t],_(r,0,g,t),C=r),e.hasOwnProperty(t="ROUNDING_MODE")&&(r=e[t],_(r,0,8,t),A=r),e.hasOwnProperty(t="EXPONENTIAL_AT")&&(r=e[t],r&&r.pop?(_(r[0],-g,0,t),_(r[1],0,g,t),I=r[0],T=r[1]):(_(r,-g,g,t),I=-(T=r<0?-r:r))),e.hasOwnProperty(t="RANGE"))if(r=e[t],r&&r.pop)_(r[0],-g,-1,t),_(r[1],1,g,t),x=r[0],B=r[1];else{if(_(r,-g,g,t),!r)throw Error(u+t+" cannot be zero: "+r);x=-(B=r<0?-r:r)}if(e.hasOwnProperty(t="CRYPTO")){if(r=e[t],r!==!!r)throw Error(u+t+" not true or false: "+r);if(r){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw R=!r,Error(u+"crypto unavailable");R=r}else R=r}if(e.hasOwnProperty(t="MODULO_MODE")&&(r=e[t],_(r,0,9,t),N=r),e.hasOwnProperty(t="POW_PRECISION")&&(r=e[t],_(r,0,g,t),O=r),e.hasOwnProperty(t="FORMAT")){if(r=e[t],"object"!=typeof r)throw Error(u+t+" not an object: "+r);P=r}if(e.hasOwnProperty(t="ALPHABET")){if(r=e[t],"string"!=typeof r||/^.$|[+-.\s]|(.).*\1/.test(r))throw Error(u+t+" invalid: "+r);D=r}}return{DECIMAL_PLACES:C,ROUNDING_MODE:A,EXPONENTIAL_AT:[I,T],RANGE:[x,B],CRYPTO:R,MODULO_MODE:N,POW_PRECISION:O,FORMAT:P,ALPHABET:D}},L.isBigNumber=function(e){if(!e||!0!==e._isBigNumber)return!1;if(!L.DEBUG)return!0;var t,r,n=e.c,i=e.e,s=e.s;e:if("[object Array]"=={}.toString.call(n)){if((1===s||-1===s)&&i>=-g&&i<=g&&i===c(i)){if(0===n[0]){if(0===i&&1===n.length)return!0;break e}if(t=(i+1)%f,t<1&&(t+=f),String(n[0]).length==t){for(t=0;t=h||r!==c(r))break e;if(0!==r)return!0}}}else if(null===n&&null===i&&(null===s||1===s||-1===s))return!0;throw Error(u+"Invalid BigNumber: "+e)},L.maximum=L.max=function(){return U(arguments,i.lt)},L.minimum=L.min=function(){return U(arguments,i.gt)},L.random=function(){var e=9007199254740992,t=Math.random()*e&2097151?function(){return c(Math.random()*e)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)};return function(e){var r,n,i,o,l,h=0,d=[],y=new L(s);if(null==e?e=C:_(e,0,g),o=a(e/f),R)if(crypto.getRandomValues){for(r=crypto.getRandomValues(new Uint32Array(o*=2));h>>11),l>=9e15?(n=crypto.getRandomValues(new Uint32Array(2)),r[h]=n[0],r[h+1]=n[1]):(d.push(l%1e14),h+=2);h=o/2}else{if(!crypto.randomBytes)throw R=!1,Error(u+"crypto unavailable");for(r=crypto.randomBytes(o*=7);h=9e15?crypto.randomBytes(7).copy(r,h):(d.push(l%1e14),h+=7);h=o/7}if(!R)for(;h=10;l/=10,h++);hr-1&&(null==o[i+1]&&(o[i+1]=0),o[i+1]+=o[i]/r|0,o[i]%=r)}return o.reverse()}return function(n,i,s,o,a){var c,u,l,h,f,d,p,y,g=n.indexOf("."),m=C,b=A;for(g>=0&&(h=O,O=0,n=n.replace(".",""),y=new L(i),d=y.pow(n.length-g),O=h,y.c=r(k(v(d.c),d.e,"0"),10,s,e),y.e=y.c.length),p=r(n,i,s,a?(c=D,e):(c=e,D)),l=h=p.length;0==p[--h];p.pop());if(!p[0])return c.charAt(0);if(g<0?--l:(d.c=p,d.e=l,d.s=o,d=t(d,y,m,b,s),p=d.c,f=d.r,l=d.e),u=l+m+1,g=p[u],h=s/2,f=f||u<0||null!=p[u+1],f=b<4?(null!=g||f)&&(0==b||b==(d.s<0?3:2)):g>h||g==h&&(4==b||f||6==b&&1&p[u-1]||b==(d.s<0?8:7)),u<1||!p[0])n=f?k(c.charAt(1),-m,c.charAt(0)):c.charAt(0);else{if(p.length=u,f)for(--s;++p[--u]>s;)p[u]=0,u||(++l,p=[1].concat(p));for(h=p.length;!p[--h];);for(g=0,n="";g<=h;n+=c.charAt(p[g++]));n=k(n,l,c.charAt(0))}return n}}(),t=function(){function e(e,t,r){var n,i,s,o,a=0,c=e.length,u=t%y,l=t/y|0;for(e=e.slice();c--;)s=e[c]%y,o=e[c]/y|0,n=l*s+o*u,i=u*s+n%y*y+a,a=(i/r|0)+(n/y|0)+l*o,e[c]=i%r;return a&&(e=[a].concat(e)),e}function t(e,t,r,n){var i,s;if(r!=n)s=r>n?1:-1;else for(i=s=0;it[i]?1:-1;break}return s}function r(e,t,r,n){for(var i=0;r--;)e[r]-=i,i=e[r]1;e.splice(0,1));}return function(n,i,s,o,a){var u,l,d,p,y,g,m,v,w,_,E,S,k,C,A,I,T,x=n.s==i.s?1:-1,B=n.c,R=i.c;if(!B||!B[0]||!R||!R[0])return new L(n.s&&i.s&&(B?!R||B[0]!=R[0]:R)?B&&0==B[0]||!R?0*x:x/0:NaN);for(v=new L(x),w=v.c=[],l=n.e-i.e,x=s+l+1,a||(a=h,l=b(n.e/f)-b(i.e/f),x=x/f|0),d=0;R[d]==(B[d]||0);d++);if(R[d]>(B[d]||0)&&l--,x<0)w.push(1),p=!0;else{for(C=B.length,I=R.length,d=0,x+=2,y=c(a/(R[0]+1)),y>1&&(R=e(R,y,a),B=e(B,y,a),I=R.length,C=B.length),k=I,_=B.slice(0,I),E=_.length;E=a/2&&A++;do{if(y=0,u=t(R,_,I,E),u<0){if(S=_[0],I!=E&&(S=S*a+(_[1]||0)),y=c(S/A),y>1){y>=a&&(y=a-1),g=e(R,y,a),m=g.length,E=_.length;while(1==t(g,_,m,E))y--,r(g,I=10;x/=10,d++);K(v,s+(v.e=d+l*f-1)+1,o,p)}else v.e=l,v.r=+p;return v}}(),n=function(){var e=/^(-?)0([xbo])(?=\w[\w.]*$)/i,t=/^([^.]+)\.$/,r=/^\.([^.]+)$/,n=/^-?(Infinity|NaN)$/,i=/^\s*\+(?=[\w.])|^\s+|\s+$/g;return function(s,o,a,c){var l,h=a?o:o.replace(i,"");if(n.test(h))s.s=isNaN(h)?null:h<0?-1:1;else{if(!a&&(h=h.replace(e,(function(e,t,r){return l="x"==(r=r.toLowerCase())?16:"b"==r?2:8,c&&c!=l?e:t})),c&&(l=c,h=h.replace(t,"$1").replace(r,"0.$1")),o!=h))return new L(h,l);if(L.DEBUG)throw Error(u+"Not a"+(c?" base "+c:"")+" number: "+o);s.s=null}s.c=s.e=null}}(),i.absoluteValue=i.abs=function(){var e=new L(this);return e.s<0&&(e.s=1),e},i.comparedTo=function(e,t){return w(this,new L(e,t))},i.decimalPlaces=i.dp=function(e,t){var r,n,i,s=this;if(null!=e)return _(e,0,g),null==t?t=A:_(t,0,8),K(new L(s),e+s.e+1,t);if(!(r=s.c))return null;if(n=((i=r.length-1)-b(this.e/f))*f,i=r[i])for(;i%10==0;i/=10,n--);return n<0&&(n=0),n},i.dividedBy=i.div=function(e,r){return t(this,new L(e,r),C,A)},i.dividedToIntegerBy=i.idiv=function(e,r){return t(this,new L(e,r),0,1)},i.exponentiatedBy=i.pow=function(e,t){var r,n,i,o,l,h,d,p,y,g=this;if(e=new L(e),e.c&&!e.isInteger())throw Error(u+"Exponent not an integer: "+F(e));if(null!=t&&(t=new L(t)),h=e.e>14,!g.c||!g.c[0]||1==g.c[0]&&!g.e&&1==g.c.length||!e.c||!e.c[0])return y=new L(Math.pow(+F(g),h?2-E(e):+F(e))),t?y.mod(t):y;if(d=e.s<0,t){if(t.c?!t.c[0]:!t.s)return new L(NaN);n=!d&&g.isInteger()&&t.isInteger(),n&&(g=g.mod(t))}else{if(e.e>9&&(g.e>0||g.e<-1||(0==g.e?g.c[0]>1||h&&g.c[1]>=24e7:g.c[0]<8e13||h&&g.c[0]<=9999975e7)))return o=g.s<0&&E(e)?-0:0,g.e>-1&&(o=1/o),new L(d?1/o:o);O&&(o=a(O/f+2))}for(h?(r=new L(.5),d&&(e.s=1),p=E(e)):(i=Math.abs(+F(e)),p=i%2),y=new L(s);;){if(p){if(y=y.times(g),!y.c)break;o?y.c.length>o&&(y.c.length=o):n&&(y=y.mod(t))}if(i){if(i=c(i/2),0===i)break;p=i%2}else if(e=e.times(r),K(e,e.e+1,1),e.e>14)p=E(e);else{if(i=+F(e),0===i)break;p=i%2}g=g.times(g),o?g.c&&g.c.length>o&&(g.c.length=o):n&&(g=g.mod(t))}return n?y:(d&&(y=s.div(y)),t?y.mod(t):o?K(y,O,A,l):y)},i.integerValue=function(e){var t=new L(this);return null==e?e=A:_(e,0,8),K(t,t.e+1,e)},i.isEqualTo=i.eq=function(e,t){return 0===w(this,new L(e,t))},i.isFinite=function(){return!!this.c},i.isGreaterThan=i.gt=function(e,t){return w(this,new L(e,t))>0},i.isGreaterThanOrEqualTo=i.gte=function(e,t){return 1===(t=w(this,new L(e,t)))||0===t},i.isInteger=function(){return!!this.c&&b(this.e/f)>this.c.length-2},i.isLessThan=i.lt=function(e,t){return w(this,new L(e,t))<0},i.isLessThanOrEqualTo=i.lte=function(e,t){return-1===(t=w(this,new L(e,t)))||0===t},i.isNaN=function(){return!this.s},i.isNegative=function(){return this.s<0},i.isPositive=function(){return this.s>0},i.isZero=function(){return!!this.c&&0==this.c[0]},i.minus=function(e,t){var r,n,i,s,o=this,a=o.s;if(e=new L(e,t),t=e.s,!a||!t)return new L(NaN);if(a!=t)return e.s=-t,o.plus(e);var c=o.e/f,u=e.e/f,l=o.c,d=e.c;if(!c||!u){if(!l||!d)return l?(e.s=-t,e):new L(d?o:NaN);if(!l[0]||!d[0])return d[0]?(e.s=-t,e):new L(l[0]?o:3==A?-0:0)}if(c=b(c),u=b(u),l=l.slice(),a=c-u){for((s=a<0)?(a=-a,i=l):(u=c,i=d),i.reverse(),t=a;t--;i.push(0));i.reverse()}else for(n=(s=(a=l.length)<(t=d.length))?a:t,a=t=0;t0)for(;t--;l[r++]=0);for(t=h-1;n>a;){if(l[--n]=0;){for(r=0,p=S[i]%w,g=S[i]/w|0,o=c,s=i+o;s>i;)u=E[--o]%w,l=E[o]/w|0,a=g*u+l*p,u=p*u+a%w*w+m[s]+r,r=(u/v|0)+(a/w|0)+g*l,m[s--]=u%v;m[s]=r}return r?++n:m.splice(0,1),j(e,m,n)},i.negated=function(){var e=new L(this);return e.s=-e.s||null,e},i.plus=function(e,t){var r,n=this,i=n.s;if(e=new L(e,t),t=e.s,!i||!t)return new L(NaN);if(i!=t)return e.s=-t,n.minus(e);var s=n.e/f,o=e.e/f,a=n.c,c=e.c;if(!s||!o){if(!a||!c)return new L(i/0);if(!a[0]||!c[0])return c[0]?e:new L(a[0]?n:0*i)}if(s=b(s),o=b(o),a=a.slice(),i=s-o){for(i>0?(o=s,r=c):(i=-i,r=a),r.reverse();i--;r.push(0));r.reverse()}for(i=a.length,t=c.length,i-t<0&&(r=c,c=a,a=r,t=i),i=0;t;)i=(a[--t]=a[t]+c[t]+i)/h|0,a[t]=h===a[t]?0:a[t]%h;return i&&(a=[i].concat(a),++o),j(e,a,o)},i.precision=i.sd=function(e,t){var r,n,i,s=this;if(null!=e&&e!==!!e)return _(e,1,g),null==t?t=A:_(t,0,8),K(new L(s),e,t);if(!(r=s.c))return null;if(i=r.length-1,n=i*f+1,i=r[i]){for(;i%10==0;i/=10,n--);for(i=r[0];i>=10;i/=10,n++);}return e&&s.e+1>n&&(n=s.e+1),n},i.shiftedBy=function(e){return _(e,-d,d),this.times("1e"+e)},i.squareRoot=i.sqrt=function(){var e,r,n,i,s,o=this,a=o.c,c=o.s,u=o.e,l=C+4,h=new L("0.5");if(1!==c||!a||!a[0])return new L(!c||c<0&&(!a||a[0])?NaN:a?o:1/0);if(c=Math.sqrt(+F(o)),0==c||c==1/0?(r=v(a),(r.length+u)%2==0&&(r+="0"),c=Math.sqrt(+r),u=b((u+1)/2)-(u<0||u%2),c==1/0?r="1e"+u:(r=c.toExponential(),r=r.slice(0,r.indexOf("e")+1)+u),n=new L(r)):n=new L(c+""),n.c[0])for(u=n.e,c=u+l,c<3&&(c=0);;)if(s=n,n=h.times(s.plus(t(o,s,l,1))),v(s.c).slice(0,c)===(r=v(n.c)).slice(0,c)){if(n.e0&&y>0){for(s=y%a||a,h=p.substr(0,s);s0&&(h+=l+p.slice(s)),d&&(h="-"+h)}n=f?h+(r.decimalSeparator||"")+((c=+r.fractionGroupSize)?f.replace(new RegExp("\\d{"+c+"}\\B","g"),"$&"+(r.fractionGroupSeparator||"")):f):h}return(r.prefix||"")+n+(r.suffix||"")},i.toFraction=function(e){var r,n,i,o,a,c,l,h,d,y,g,m,b=this,w=b.c;if(null!=e&&(l=new L(e),!l.isInteger()&&(l.c||1!==l.s)||l.lt(s)))throw Error(u+"Argument "+(l.isInteger()?"out of range: ":"not an integer: ")+F(l));if(!w)return new L(b);for(r=new L(s),d=n=new L(s),i=h=new L(s),m=v(w),a=r.e=m.length-b.e-1,r.c[0]=p[(c=a%f)<0?f+c:c],e=!e||l.comparedTo(r)>0?a>0?r:d:l,c=B,B=1/0,l=new L(m),h.c[0]=0;;){if(y=t(l,r,0,1),o=n.plus(y.times(i)),1==o.comparedTo(e))break;n=i,i=o,d=h.plus(y.times(o=d)),h=o,r=l.minus(y.times(o=r)),l=o}return o=t(e.minus(n),i,0,1),h=h.plus(o.times(d)),n=n.plus(o.times(i)),h.s=d.s=b.s,a*=2,g=t(d,i,a,A).minus(b).abs().comparedTo(t(h,n,a,A).minus(b).abs())<1?[d,i]:[h,n],B=c,g},i.toNumber=function(){return+F(this)},i.toPrecision=function(e,t){return null!=e&&_(e,1,g),M(this,e,t,2)},i.toString=function(e){var t,n=this,i=n.s,s=n.e;return null===s?i?(t="Infinity",i<0&&(t="-"+t)):t="NaN":(null==e?t=s<=I||s>=T?S(v(n.c),s):k(v(n.c),s,"0"):10===e?(n=K(new L(n),C+s+1,A),t=k(v(n.c),n.e,"0")):(_(e,2,D.length,"Base"),t=r(k(v(n.c),s,"0"),10,e,i,!0)),i<0&&n.c[0]&&(t="-"+t)),t},i.valueOf=i.toJSON=function(){return F(this)},i._isBigNumber=!0,null!=e&&L.set(e),L}function b(e){var t=0|e;return e>0||e===t?t:t-1}function v(e){for(var t,r,n=1,i=e.length,s=e[0]+"";nu^r?1:-1;for(a=(c=i.length)<(u=s.length)?c:u,o=0;os[o]^r?1:-1;return c==u?0:c>u^r?1:-1}function _(e,t,r,n){if(er||e!==c(e))throw Error(u+(n||"Argument")+("number"==typeof e?er?" out of range: ":" not an integer: ":" not a primitive number: ")+String(e))}function E(e){var t=e.c.length-1;return b(e.e/f)==t&&e.c[t]%2!=0}function S(e,t){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(t<0?"e":"e+")+t}function k(e,t,r){var n,i;if(t<0){for(i=r+".";++t;i+=r);e=i+e}else if(n=e.length,++t>n){for(i=r,t-=n;--t;i+=r);e+=i}else t>>t^e<<32-t}var a=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),c=new Uint8Array([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0]),u=new Uint32Array(16),l=new Uint32Array(16);function h(e,t){var r=0;for(r=0;r<8;r++)u[r]=e.h[r],u[r+8]=a[r];for(u[12]^=e.t,u[13]^=e.t/4294967296,t&&(u[14]=~u[14]),r=0;r<16;r++)l[r]=i(e.b,4*r);for(r=0;r<10;r++)s(0,4,8,12,l[c[16*r+0]],l[c[16*r+1]]),s(1,5,9,13,l[c[16*r+2]],l[c[16*r+3]]),s(2,6,10,14,l[c[16*r+4]],l[c[16*r+5]]),s(3,7,11,15,l[c[16*r+6]],l[c[16*r+7]]),s(0,5,10,15,l[c[16*r+8]],l[c[16*r+9]]),s(1,6,11,12,l[c[16*r+10]],l[c[16*r+11]]),s(2,7,8,13,l[c[16*r+12]],l[c[16*r+13]]),s(3,4,9,14,l[c[16*r+14]],l[c[16*r+15]]);for(r=0;r<8;r++)e.h[r]^=u[r]^u[r+8]}function f(e,t){if(!(e>0&&e<=32))throw new Error("Incorrect output length, should be in [1, 32]");var r=t?t.length:0;if(t&&!(r>0&&r<=32))throw new Error("Incorrect key length, should be in [1, 32]");var n={h:new Uint32Array(a),b:new Uint32Array(64),c:0,t:0,outlen:e};return n.h[0]^=16842752^r<<8^e,r>0&&(d(n,t),n.c=64),n}function d(e,t){for(var r=0;r>2]>>8*(3&r)&255;return t}function y(e,t,r){r=r||32,e=n.normalizeInput(e);var i=f(r,t);return d(i,e),p(i)}function g(e,t,r){var i=y(e,t,r);return n.toHex(i)}e.exports={blake2s:y,blake2sHex:g,blake2sInit:f,blake2sUpdate:d,blake2sFinal:p}},"26d5":function(e,t,r){"use strict";const{Buffer:n}=r("b639"),i=self.crypto||self.msCrypto;e.exports=e=>{if("undefined"===typeof self||!self.crypto&&!self.msCrypto)throw new Error("Please use a browser with webcrypto support and ensure the code has been delivered securely via HTTPS/TLS and run within a Secure Context");return async t=>{switch(e){case"sha1":return n.from(await i.subtle.digest({name:"SHA-1"},t));case"sha2-256":return n.from(await i.subtle.digest({name:"SHA-256"},t));case"sha2-512":return n.from(await i.subtle.digest({name:"SHA-512"},t));case"dbl-sha2-256":{const e=await i.subtle.digest({name:"SHA-256"},t);return n.from(await i.subtle.digest({name:"SHA-256"},e))}default:throw new Error(`${e} is not a supported algorithm`)}}}},27:function(e,t){},"276e":function(e,t,r){"use strict";(function(t){const n=r("c64e"),i=r("ec12"),s="/",o=t.from(s),a=o[0];class c{constructor(e,r){if("string"===typeof e?this._buf=t.from(e):t.isBuffer(e)&&(this._buf=e),null==r&&(r=!0),r&&this.clean(),0===this._buf.length||this._buf[0]!==a)throw new Error(`Invalid key: ${this.toString()}`)}toString(e){return this._buf.toString(e||"utf8")}toBuffer(){return this._buf}get[Symbol.toStringTag](){return`[Key ${this.toString()}]`}static withNamespaces(e){return new h(e.join(s))}static random(){return new h(n().replace(/-/g,""))}clean(){this._buf&&0!==this._buf.length||(this._buf=t.from(s)),this._buf[0]!==a&&(this._buf=t.concat([o,this._buf]));while(this._buf.length>1&&this._buf[this._buf.length-1]===a)this._buf=this._buf.slice(0,-1)}less(e){const t=this.list(),r=e.list();for(let n=0;ni)return!1}return t.length65536)throw new Error("Port number is not in range(1, 65536)");const s=f(i);return t.concat([n,s])}function v(e){const r=e.split(":");if(2!==r.length)throw new Error("failed to parse onion addr: "+r+" does not contain a port number");if(56!==r[0].length)throw new Error("failed to parse onion addr: "+r[0]+" not a Tor onion3 address.");const n=t.from(a.decode.asBytes(r[0].toUpperCase())),i=parseInt(r[1],10);if(i<1||i>65536)throw new Error("Port number is not in range(1, 65536)");const s=f(i);return t.concat([n,s])}function w(e){const t=e.slice(0,e.length-2),r=e.slice(e.length-2),n=a.encode(t).toString("ascii").toLowerCase(),i=d(r);return n+":"+i}e.exports=u,u.toString=function(e,t){switch(e=s(e),e.code){case 4:case 41:return h(t);case 6:case 273:case 33:case 132:return d(t);case 53:case 54:case 55:case 56:case 400:return y(t);case 421:return m(t);case 444:return w(t);case 445:return w(t);default:return t.toString("hex")}},u.toBuffer=function(e,r){switch(e=s(e),e.code){case 4:return l(r);case 41:return l(r);case 6:case 273:case 33:case 132:return f(parseInt(r,10));case 53:case 54:case 55:case 56:case 400:return p(r);case 421:return g(r);case 444:return b(r);case 445:return v(r);default:return t.from(r,"hex")}}}).call(this,r("b639").Buffer)},2773:function(e,t,r){"use strict";const n=r("e3d5"),i=r("1a76"),s=r("0c9a");e.exports={codec:s.RAW,defaultHashAlg:s.SHA2_256,resolver:{resolve:(e,t)=>({value:e,remainderPath:""}),tree:e=>({done:!0})},util:{deserialize:e=>e,serialize:e=>e,cid:async(t,r)=>{const o={cidVersion:1,hashAlg:e.exports.defaultHashAlg},a=Object.assign(o,r),c=await i(t,a.hashAlg),u=s.print[e.exports.codec],l=new n(a.cidVersion,u,c);return l}}}},2776:function(e,t,r){(function(t,n){var i=r("0bac"),s=r("7ec1"),o=r("f7ae"),a=r("d7a8"),c=Object.prototype.hasOwnProperty,u="start end gt gte lt lte".split(" ");function l(e){this.status="new",this.supports=s(e,{status:!0})}function h(e,t){var r={};for(var n in t)if(c.call(t,n)){var i=t[n];f(n)&&(i=e._serializeKey(i)),r[n]=i}return r}function f(e){return-1!==u.indexOf(e)}l.prototype.open=function(e,t){var r=this,n=this.status;if("function"===typeof e&&(t=e),"function"!==typeof t)throw new Error("open() requires a callback argument");"object"===typeof e&&null!==e||(e={}),e.createIfMissing=!1!==e.createIfMissing,e.errorIfExists=!!e.errorIfExists,this.status="opening",this._open(e,(function(e){if(e)return r.status=n,t(e);r.status="open",t()}))},l.prototype._open=function(e,r){t.nextTick(r)},l.prototype.close=function(e){var t=this,r=this.status;if("function"!==typeof e)throw new Error("close() requires a callback argument");this.status="closing",this._close((function(n){if(n)return t.status=r,e(n);t.status="closed",e()}))},l.prototype._close=function(e){t.nextTick(e)},l.prototype.get=function(e,r,n){if("function"===typeof r&&(n=r),"function"!==typeof n)throw new Error("get() requires a callback argument");var i=this._checkKey(e);if(i)return t.nextTick(n,i);e=this._serializeKey(e),"object"===typeof r&&null!==r||(r={}),r.asBuffer=!1!==r.asBuffer,this._get(e,r,n)},l.prototype._get=function(e,r,n){t.nextTick((function(){n(new Error("NotFound"))}))},l.prototype.put=function(e,r,n,i){if("function"===typeof n&&(i=n),"function"!==typeof i)throw new Error("put() requires a callback argument");var s=this._checkKey(e)||this._checkValue(r);if(s)return t.nextTick(i,s);e=this._serializeKey(e),r=this._serializeValue(r),"object"===typeof n&&null!==n||(n={}),this._put(e,r,n,i)},l.prototype._put=function(e,r,n,i){t.nextTick(i)},l.prototype.del=function(e,r,n){if("function"===typeof r&&(n=r),"function"!==typeof n)throw new Error("del() requires a callback argument");var i=this._checkKey(e);if(i)return t.nextTick(n,i);e=this._serializeKey(e),"object"===typeof r&&null!==r||(r={}),this._del(e,r,n)},l.prototype._del=function(e,r,n){t.nextTick(n)},l.prototype.batch=function(e,r,n){if(!arguments.length)return this._chainedBatch();if("function"===typeof r&&(n=r),"function"===typeof e&&(n=e),"function"!==typeof n)throw new Error("batch(array) requires a callback argument");if(!Array.isArray(e))return t.nextTick(n,new Error("batch(array) requires an array argument"));if(0===e.length)return t.nextTick(n);"object"===typeof r&&null!==r||(r={});for(var s=new Array(e.length),o=0;o{let t=0,r=e.node.size||e.node.length;return e.unixfs&&(r=e.unixfs.fileSize(),t=a[e.unixfs.type]),{cid:e.cid,name:e.name,type:t,size:r}};e.exports=e=>async function*(t=o,r={}){"object"!==typeof t||t instanceof String||(r=t,t=o),r=i(r,c);const a=await s(e,t),l=await n(a.mfsPath,e.ipld);if(l.unixfs&&l.unixfs.type.includes("directory"))for await(const e of l.content(r))yield u(e);else yield u(l)}},"27a7":function(e,t,r){(function(r,n){"use strict";var i={version:"3.0.1",x86:{},x64:{}};function s(e,t){return(65535&e)*t+(((e>>>16)*t&65535)<<16)}function o(e,t){return e<>>32-t}function a(e){return e^=e>>>16,e=s(e,2246822507),e^=e>>>13,e=s(e,3266489909),e^=e>>>16,e}function c(e,t){e=[e[0]>>>16,65535&e[0],e[1]>>>16,65535&e[1]],t=[t[0]>>>16,65535&t[0],t[1]>>>16,65535&t[1]];var r=[0,0,0,0];return r[3]+=e[3]+t[3],r[2]+=r[3]>>>16,r[3]&=65535,r[2]+=e[2]+t[2],r[1]+=r[2]>>>16,r[2]&=65535,r[1]+=e[1]+t[1],r[0]+=r[1]>>>16,r[1]&=65535,r[0]+=e[0]+t[0],r[0]&=65535,[r[0]<<16|r[1],r[2]<<16|r[3]]}function u(e,t){e=[e[0]>>>16,65535&e[0],e[1]>>>16,65535&e[1]],t=[t[0]>>>16,65535&t[0],t[1]>>>16,65535&t[1]];var r=[0,0,0,0];return r[3]+=e[3]*t[3],r[2]+=r[3]>>>16,r[3]&=65535,r[2]+=e[2]*t[3],r[1]+=r[2]>>>16,r[2]&=65535,r[2]+=e[3]*t[2],r[1]+=r[2]>>>16,r[2]&=65535,r[1]+=e[1]*t[3],r[0]+=r[1]>>>16,r[1]&=65535,r[1]+=e[2]*t[2],r[0]+=r[1]>>>16,r[1]&=65535,r[1]+=e[3]*t[1],r[0]+=r[1]>>>16,r[1]&=65535,r[0]+=e[0]*t[3]+e[1]*t[2]+e[2]*t[1]+e[3]*t[0],r[0]&=65535,[r[0]<<16|r[1],r[2]<<16|r[3]]}function l(e,t){return t%=64,32===t?[e[1],e[0]]:t<32?[e[0]<>>32-t,e[1]<>>32-t]:(t-=32,[e[1]<>>32-t,e[0]<>>32-t])}function h(e,t){return t%=64,0===t?e:t<32?[e[0]<>>32-t,e[1]<>>1]),e=u(e,[4283543511,3981806797]),e=f(e,[0,e[0]>>>1]),e=u(e,[3301882366,444984403]),e=f(e,[0,e[0]>>>1]),e}i.x86.hash32=function(e,t){e=e||"",t=t||0;for(var r=e.length%4,n=e.length-r,i=t,c=0,u=3432918353,l=461845907,h=0;h>>0},i.x86.hash128=function(e,t){e=e||"",t=t||0;for(var r=e.length%16,n=e.length-r,i=t,c=t,u=t,l=t,h=0,f=0,d=0,p=0,y=597399067,g=2869860233,m=951274213,b=2716044179,v=0;v>>0).toString(16)).slice(-8)+("00000000"+(c>>>0).toString(16)).slice(-8)+("00000000"+(u>>>0).toString(16)).slice(-8)+("00000000"+(l>>>0).toString(16)).slice(-8)},i.x64.hash128=function(e,t){e=e||"",t=t||0;for(var r=e.length%16,n=e.length-r,i=[0,t],s=[0,t],o=[0,0],a=[0,0],p=[2277735313,289559509],y=[1291169091,658871167],g=0;g>>0).toString(16)).slice(-8)+("00000000"+(i[1]>>>0).toString(16)).slice(-8)+("00000000"+(s[0]>>>0).toString(16)).slice(-8)+("00000000"+(s[1]>>>0).toString(16)).slice(-8)},e.exports&&(t=e.exports=i),t.murmurHash3=i})()},"27cd":function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=g;var n=r("9868"),i=d(n),s=r("532e"),o=d(s),a=r("2cf9"),c=d(a),u=r("c1cd"),l=d(u),h=r("76bf"),f=d(h);function d(e){return e&&e.__esModule?e:{default:e}}function p(e,t,r,n){var i=new Array(t.length);e(t,(function(e,t,n){r(e,(function(e,r){i[t]=!!r,n(e)}))}),(function(e){if(e)return n(e);for(var r=[],s=0;s{for(const n of r.topics)if(n===e){t.push(r.msgID);break}});return t}shift(){const e=this.history[this.history.length-1];e.forEach(e=>{this.msgs.delete(e.msgID)}),this.history.pop(),this.history.unshift([])}}e.exports={CacheEntry:i,MessageCache:s}},"282f":function(e,t,r){var n=r("5995");r("31a0"),e.exports=n.cipher=n.cipher||{},n.cipher.algorithms=n.cipher.algorithms||{},n.cipher.createCipher=function(e,t){var r=e;if("string"===typeof r&&(r=n.cipher.getAlgorithm(r),r&&(r=r())),!r)throw new Error("Unsupported algorithm: "+e);return new n.cipher.BlockCipher({algorithm:r,key:t,decrypt:!1})},n.cipher.createDecipher=function(e,t){var r=e;if("string"===typeof r&&(r=n.cipher.getAlgorithm(r),r&&(r=r())),!r)throw new Error("Unsupported algorithm: "+e);return new n.cipher.BlockCipher({algorithm:r,key:t,decrypt:!0})},n.cipher.registerAlgorithm=function(e,t){e=e.toUpperCase(),n.cipher.algorithms[e]=t},n.cipher.getAlgorithm=function(e){return e=e.toUpperCase(),e in n.cipher.algorithms?n.cipher.algorithms[e]:null};var i=n.cipher.BlockCipher=function(e){this.algorithm=e.algorithm,this.mode=this.algorithm.mode,this.blockSize=this.mode.blockSize,this._finish=!1,this._input=null,this.output=null,this._op=e.decrypt?this.mode.decrypt:this.mode.encrypt,this._decrypt=e.decrypt,this.algorithm.initialize(e)};i.prototype.start=function(e){e=e||{};var t={};for(var r in e)t[r]=e[r];t.decrypt=this._decrypt,this._finish=!1,this._input=n.util.createBuffer(),this.output=e.output||n.util.createBuffer(),this.mode.start(t)},i.prototype.update=function(e){e&&this._input.putBuffer(e);while(!this._op.call(this.mode,this._input,this.output,this._finish)&&!this._finish);this._input.compact()},i.prototype.finish=function(e){!e||"ECB"!==this.mode.name&&"CBC"!==this.mode.name||(this.mode.pad=function(t){return e(this.blockSize,t,!1)},this.mode.unpad=function(t){return e(this.blockSize,t,!0)});var t={};return t.decrypt=this._decrypt,t.overflow=this._input.length()%this.blockSize,!(!this._decrypt&&this.mode.pad&&!this.mode.pad(this._input,t))&&(this._finish=!0,this.update(),!(this._decrypt&&this.mode.unpad&&!this.mode.unpad(this.output,t))&&!(this.mode.afterFinish&&!this.mode.afterFinish(this.output,t)))}},2835:function(e,t,r){"use strict";var n=Object.prototype.hasOwnProperty,i="~";function s(){}function o(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function a(e,t,r,n,s){if("function"!==typeof r)throw new TypeError("The listener must be a function");var a=new o(r,n||e,s),c=i?i+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],a]:e._events[c].push(a):(e._events[c]=a,e._eventsCount++),e}function c(e,t){0===--e._eventsCount?e._events=new s:delete e._events[t]}function u(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(i=!1)),u.prototype.eventNames=function(){var e,t,r=[];if(0===this._eventsCount)return r;for(t in e=this._events)n.call(e,t)&&r.push(i?t.slice(1):t);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(e)):r},u.prototype.listeners=function(e){var t=i?i+e:e,r=this._events[t];if(!r)return[];if(r.fn)return[r.fn];for(var n=0,s=r.length,o=new Array(s);n{t=Object(o["arrayify"])(t);const r=t.slice(0,16),n=t.slice(16,32),i=t.slice(32,64),a=new p.a.Counter(m),c=new p.a.ModeOfOperation.ctr(r,a),_=Object(o["arrayify"])(c.encrypt(s)),k=Object(u["a"])(Object(o["concat"])([n,_])),C={address:e.address.substring(2).toLowerCase(),id:B.a.v4({random:b}),version:3,Crypto:{cipher:"aes-128-ctr",cipherparams:{iv:Object(o["hexlify"])(m).substring(2)},ciphertext:Object(o["hexlify"])(_).substring(2),kdf:"scrypt",kdfparams:{salt:Object(o["hexlify"])(g).substring(2),n:v,dklen:32,p:S,r:E},mac:k.substring(2)}};if(l){const e=Object(h["randomBytes"])(16),t=new p.a.Counter(e),r=new p.a.ModeOfOperation.ctr(i,t),n=Object(o["arrayify"])(r.encrypt(l)),s=new Date,a=s.getUTCFullYear()+"-"+w(s.getUTCMonth()+1,2)+"-"+w(s.getUTCDate(),2)+"T"+w(s.getUTCHours(),2)+"-"+w(s.getUTCMinutes(),2)+"-"+w(s.getUTCSeconds(),2)+".0Z";C["x-ethers"]={client:y,gethFilename:"UTC--"+a+"--"+C.address,mnemonicCounter:Object(o["hexlify"])(e).substring(2),mnemonicCiphertext:Object(o["hexlify"])(n).substring(2),path:f,locale:d,version:"0.1"}}return JSON.stringify(C)})}function U(e,t,r){if(A(e)){r&&r(0);const n=C(e,t);return r&&r(1),Promise.resolve(n)}return I(e)?L(e,t,r):Promise.reject(new Error("invalid JSON wallet"))}const j="wallet/5.0.0-beta.137";r.d(t,"Wallet",(function(){return q})),r.d(t,"verifyMessage",(function(){return z}));const K=new m["Logger"](j);function F(e){return null!=e&&Object(o["isHexString"])(e.privateKey,32)&&null!=e.address}function V(e){const t=e.mnemonic;return t&&t.phrase}class q extends s["a"]{constructor(e,t){if(K.checkNew(new.target,q),super(),F(e)){const t=new f["a"](e.privateKey);if(Object(l["defineReadOnly"])(this,"_signingKey",()=>t),Object(l["defineReadOnly"])(this,"address",Object(R["a"])(this.publicKey)),this.address!==Object(n["a"])(e.address)&&K.throwArgumentError("privateKey/address mismatch","privateKey","[REDCACTED]"),V(e)){const t=e.mnemonic;Object(l["defineReadOnly"])(this,"_mnemonic",()=>({phrase:t.phrase,path:t.path||c["defaultPath"],locale:t.locale||"en"}));const r=this.mnemonic,n=c["HDNode"].fromMnemonic(r.phrase,null,r.locale).derivePath(r.path);Object(R["a"])(n.privateKey)!==this.address&&K.throwArgumentError("mnemonic/address mismatch","privateKey","[REDCACTED]")}else Object(l["defineReadOnly"])(this,"_mnemonic",()=>null)}else{if(f["a"].isSigningKey(e))"secp256k1"!==e.curve&&K.throwArgumentError("unsupported curve; must be secp256k1","privateKey","[REDACTED]"),Object(l["defineReadOnly"])(this,"_signingKey",()=>e);else{const t=new f["a"](e);Object(l["defineReadOnly"])(this,"_signingKey",()=>t)}Object(l["defineReadOnly"])(this,"_mnemonic",()=>null),Object(l["defineReadOnly"])(this,"address",Object(R["a"])(this.publicKey))}t&&!i["b"].isProvider(t)&&K.throwArgumentError("invalid provider","provider",t),Object(l["defineReadOnly"])(this,"provider",t||null)}get mnemonic(){return this._mnemonic()}get privateKey(){return this._signingKey().privateKey}get publicKey(){return this._signingKey().publicKey}getAddress(){return Promise.resolve(this.address)}connect(e){return new q(this,e)}signTransaction(e){return Object(l["resolveProperties"])(e).then(e=>{if(null!=e.from){if(Object(n["a"])(e.from)!==this.address)throw new Error("transaction from address mismatch");delete e.from}const t=this._signingKey().signDigest(Object(u["a"])(Object(R["d"])(e)));return Object(R["d"])(e,t)})}signMessage(e){return Promise.resolve(Object(o["joinSignature"])(this._signingKey().signDigest(Object(a["hashMessage"])(e))))}encrypt(e,t,r){if("function"!==typeof t||r||(r=t,t={}),r&&"function"!==typeof r)throw new Error("invalid callback");return t||(t={}),M(this,e,t,r)}static createRandom(e){let t=Object(h["randomBytes"])(16);e||(e={}),e.extraEntropy&&(t=Object(o["arrayify"])(Object(o["hexDataSlice"])(Object(u["a"])(Object(o["concat"])([t,e.extraEntropy])),0,16)));const r=Object(c["entropyToMnemonic"])(t,e.locale);return q.fromMnemonic(r,e.path,e.locale)}static fromEncryptedJson(e,t,r){return U(e,t,r).then(e=>new q(e))}static fromMnemonic(e,t,r){return t||(t=c["defaultPath"]),new q(c["HDNode"].fromMnemonic(e,null,r).derivePath(t))}}function z(e,t){return Object(R["c"])(Object(a["hashMessage"])(e),t)}},"289f":function(e,t,r){"use strict";(function(t){const n=r("021d"),i=r("87dd"),s="/",o=t.from(s),a=o[0];class c{constructor(e,r){if("string"===typeof e?this._buf=t.from(e):t.isBuffer(e)&&(this._buf=e),null==r&&(r=!0),r&&this.clean(),0===this._buf.length||this._buf[0]!==a)throw new Error(`Invalid key: ${this.toString()}`)}toString(e){return this._buf.toString(e||"utf8")}toBuffer(){return this._buf}get[Symbol.toStringTag](){return`[Key ${this.toString()}]`}static withNamespaces(e){return new f(e.join(s))}static random(){return new f(n().replace(/-/g,""))}clean(){this._buf&&0!==this._buf.length||(this._buf=t.from(s)),this._buf[0]!==a&&(this._buf=t.concat([o,this._buf]));while(this._buf.length>1&&this._buf[this._buf.length-1]===a)this._buf=this._buf.slice(0,-1)}less(e){const t=this.list(),r=e.list();for(let n=0;ni)return!1}return t.lengthe.namespaces()))])}}function u(e){const t=e.split(":");return t.length<2?"":t.slice(0,-1).join(":")}function l(e){const t=e.split(":");return t[t.length-1]}function h(e){return[].concat(...e)}const f=i(c,{className:"Key",symbolName:"@ipfs/interface-datastore/key"});e.exports=f}).call(this,r("b639").Buffer)},"28a7":function(e,t,r){"use strict";(function(e){r.d(t,"a",(function(){return p})),r.d(t,"b",(function(){return y})); +/*! MIT License © Sindre Sorhus */ +const n={};{const t=t=>{let r;if("undefined"!==typeof self&&self&&t in self&&(r=self),"undefined"!==typeof window&&window&&t in window&&(r=window),"undefined"!==typeof e&&e&&t in e&&(r=e),"undefined"!==typeof globalThis&&globalThis&&(r=globalThis),"undefined"===typeof r)return;const n=r[t];return"function"===typeof n?n.bind(r):n},r=["document","Headers","Request","Response","ReadableStream","fetch","AbortController","FormData"],i={};for(const e of r)i[e]={get(){return t(e)}};Object.defineProperties(n,i)}const i=e=>null!==e&&"object"===typeof e,s="function"===typeof n.AbortController,o="function"===typeof n.ReadableStream,a="function"===typeof n.FormData,c=(...e)=>{let t={};for(const r of e)if(Array.isArray(r))Array.isArray(t)||(t=[]),t=[...t,...r];else if(i(r))for(let[e,n]of Object.entries(r))i(n)&&Reflect.has(t,e)&&(n=c(t[e],n)),t={...t,[e]:n};return t},u=["get","post","put","patch","head","delete"],l={json:"application/json",text:"text/*",formData:"multipart/form-data",arrayBuffer:"*/*",blob:"*/*"},h=new Set(["get","put","head","delete","options","trace"]),f=new Set([408,413,429,500,502,503,504]),d=new Set([413,429,503]);class p extends Error{constructor(e){super(e.statusText),this.name="HTTPError",this.response=e}}class y extends Error{constructor(){super("Request timed out"),this.name="TimeoutError"}}const g=(e,t,r)=>(r>2147483647&&t(new RangeError("The `timeout` option cannot be greater than 2147483647")),setTimeout(e,r)),m=e=>new Promise((t,r)=>g(t,r,e)),b=(e,t,r)=>new Promise((n,i)=>{const o=g(()=>{s&&r.abort(),i(new y)},i,t);e.then(n).catch(i).then(()=>{clearTimeout(o)})}),v=e=>u.includes(e)?e.toUpperCase():e,w={limit:2,methods:h,statusCodes:f,afterStatusCodes:d},_=e=>{if("number"===typeof e)return{...w,limit:e};if(e.methods&&!Array.isArray(e.methods))throw new Error("retry.methods must be an array");if(e.statusCodes&&!Array.isArray(e.statusCodes))throw new Error("retry.statusCodes must be an array");return{...w,...e,methods:e.methods?new Set(e.methods):w.methods,statusCodes:e.statusCodes?new Set(e.statusCodes):w.statusCodes,afterStatusCodes:d}};class E{constructor(e,{timeout:t=1e4,hooks:r,throwHttpErrors:i=!0,searchParams:u,json:h,retry:f={},...d}){if(this._retryCount=0,this._options={method:"get",credentials:"same-origin",retry:_(f),...d},e instanceof n.Request)this._input=e,this._options={...this._options,method:d.method||e.method,headers:d.headers||e.headers,body:d.body||e.body,credentials:d.credentials||e.credentials};else{if(!(e instanceof URL||"string"===typeof e))throw new TypeError("`input` must be a string, URL, or Request");if(this._input=String(e||""),this._options.prefixUrl=String(this._options.prefixUrl||""),this._options.prefixUrl&&this._input.startsWith("/"))throw new Error("`input` must not begin with a slash when using `prefixUrl`");if(this._options.prefixUrl&&!this._options.prefixUrl.endsWith("/")&&(this._options.prefixUrl+="/"),this._input=this._options.prefixUrl+this._input,u){const e=new URL(this._input,n.document&&n.document.baseURI);if("string"===typeof u||URLSearchParams&&u instanceof URLSearchParams)e.search=u;else{if(!Object.values(u).every(e=>"number"===typeof e||"string"===typeof e))throw new Error("The `searchParams` option must be either a string, `URLSearchParams` instance or an object with string and number values");e.search=new URLSearchParams(u).toString()}this._input=e.toString()}}s&&(this.abortController=new n.AbortController,this._options.signal&&this._options.signal.addEventListener("abort",()=>{this.abortController.abort()}),this._options.signal=this.abortController.signal),this._options.method=v(this._options.method),this._timeout=t,this._hooks=c({beforeRequest:[],beforeRetry:[],afterResponse:[]},r),this._throwHttpErrors=i;const y=new n.Headers(this._options.headers||{});if((a&&this._options.body instanceof n.FormData||this._options.body instanceof URLSearchParams)&&y.has("content-type"))throw new Error(`The \`content-type\` header cannot be used with a ${this._options.body.constructor.name} body. It will be set automatically.`);if(h){if(this._options.body)throw new Error("The `json` option cannot be used with the `body` option");y.set("content-type","application/json"),this._options.body=JSON.stringify(h)}this._options.headers=y;const g=async()=>{await m(1);let e=await this._fetch();for(const t of this._hooks.afterResponse){const r=await t(this._input,this._options,e.clone());r instanceof n.Response&&(e=r)}if(!e.ok&&this._throwHttpErrors)throw new p(e);if(this._options.onDownloadProgress){if("function"!==typeof this._options.onDownloadProgress)throw new TypeError("The `onDownloadProgress` option must be a function");if(!o)throw new Error("Streams are not supported in your environment. `ReadableStream` is missing.");return this._stream(e.clone(),this._options.onDownloadProgress)}return e},b=this._options.retry.methods.has(this._options.method.toLowerCase()),w=b?this._retry(g):g();for(const[n,s]of Object.entries(l))w[n]=async()=>(y.set("accept",s),(await w).clone()[n]());return w}_calculateRetryDelay(e){if(this._retryCount++,this._retryCountthis._options.retry.maxRetryAfter?0:e}if(413===e.response.status)return 0}const t=.3;return t*2**(this._retryCount-1)*1e3}return 0}async _retry(e){try{return await e()}catch(t){const r=this._calculateRetryDelay(t);if(0!==r&&this._retryCount>0){await m(r);for(const e of this._hooks.beforeRetry)await e(this._input,this._options,t,this._retryCount);return this._retry(e)}if(this._throwHttpErrors)throw t}}async _fetch(){for(const e of this._hooks.beforeRequest){const t=await e(this._input,this._options);if(t instanceof Response)return t}return!1===this._timeout?n.fetch(this._input,this._options):b(n.fetch(this._input,this._options),this._timeout,this.abortController)}_stream(e,t){const r=Number(e.headers.get("content-length"))||0;let i=0;return new n.Response(new n.ReadableStream({start(n){const s=e.body.getReader();async function o(){const{done:e,value:a}=await s.read();if(e)n.close();else{if(t){i+=a.byteLength;const e=0===r?0:i/r;t({percent:e,transferredBytes:i,totalBytes:r},a)}n.enqueue(a),o()}}t&&t({percent:0,transferredBytes:0,totalBytes:r},new Uint8Array),o()}}))}}const S=(...e)=>{for(const t of e)if((!i(t)||Array.isArray(t))&&"undefined"!==typeof t)throw new TypeError("The `options` argument must be an object");return c({},...e)},k=e=>{const t=(t,r)=>new E(t,S(e,r));for(const r of u)t[r]=(t,n)=>new E(t,S(e,n,{method:r}));return t.create=e=>k(S(e)),t.extend=t=>k(S(e,t)),t};t["c"]=k()}).call(this,r("c8ba"))},"28d3":function(e,t,r){"use strict";(function(t){function r(e,r){var s=this,a=this._readableState&&this._readableState.destroyed,c=this._writableState&&this._writableState.destroyed;return a||c?(r?r(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,t.nextTick(o,this,e)):t.nextTick(o,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,(function(e){!r&&e?s._writableState?s._writableState.errorEmitted?t.nextTick(i,s):(s._writableState.errorEmitted=!0,t.nextTick(n,s,e)):t.nextTick(n,s,e):r?(t.nextTick(i,s),r(e)):t.nextTick(i,s)})),this)}function n(e,t){o(e,t),i(e)}function i(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit("close")}function s(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function o(e,t){e.emit("error",t)}function a(e,t){var r=e._readableState,n=e._writableState;r&&r.autoDestroy||n&&n.autoDestroy?e.destroy(t):e.emit("error",t)}e.exports={destroy:r,undestroy:s,errorOrDestroy:a}}).call(this,r("4362"))},"28d37":function(e,t,r){var n=r("9bc4"),i=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,s=/\\(\\)?/g,o=n((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(i,(function(e,r,n,i){t.push(n?i.replace(s,"$1"):r||e)})),t}));e.exports=o},"28e5":function(e,t,r){"use strict";const n=r("c59f"),i=r("21b4"),{DIAL_ABORTED:s}=r("a10a"),o=r("9f2e"),a=r("65b6"),{QUARTER_HOUR:c,PRIORITY_HIGH:u}=r("0d8d"),l=r("4bc2"),h=l("libp2p:switch:dial:manager"),f=()=>{};class d{constructor(e){this._queue=new Set,this._coldCallQueue=new Set,this._dialingQueues=new Set,this._queues={},this.switch=e,this._cleanInterval=a(this._clean.bind(this),c),this.start()}_clean(){const e=Object.values(this._queues);e.forEach(e=>{if(e.denylisted===1/0)return e.abort(),void delete this._queues[e.id];if(!e.denylisted&&!e.isRunning&&e.length<1){let r=!1;try{const t=this.switch._peerBook.get(e.id);r=Boolean(t.isConnected())}catch(t){}r||(e.abort(),delete this._queues[e.id])}}),this._cleanInterval.reschedule(c)}start(){this.isRunning=!0}stop(){this.isRunning=!1,this._queue.clear(),this._coldCallQueue.clear(),this._cleanInterval.clear();const e=Object.values(this._queues);e.forEach(e=>{e.abort(),delete this._queues[e.id]})}add({peerInfo:e,protocol:t,options:r,callback:i}){i=i?n(i):f;const a=this.getQueue(e);if(r.priority>u){if(this._coldCallQueue.size>=this.switch.dialer.MAX_COLD_CALLS)return o(i,s());if(this._queue.has(a.id))return o(i,s())}a.add(t,r.useFSM,i),e.isConnected()?a.start():a.isDialAllowed()&&(a.isRunning||(r.priority<=u?(this._queue.add(a.id),this._coldCallQueue.delete(a.id)):this._coldCallQueue.add(a.id)),this.run())}run(){if(this.isRunning&&this._dialingQueues.size0?(e=this._queue.values().next(),this._queue.delete(e.value)):this._coldCallQueue.size>0&&(e=this._coldCallQueue.values().next(),this._coldCallQueue.delete(e.value)),e.done)return;const t=this._queues[e.value];if(!t)return void h("missing queue %s, maybe it was aborted?",e.value);this._dialingQueues.add(t.id),t.start()}}clearDenylist(e){const t=this.getQueue(e);t.denylisted=null,t.denylistCount=0}_onQueueStopped(e){this._dialingQueues.delete(e),this.run()}getQueue(e){const t=e.id.toB58String();return this._queues[t]=this._queues[t]||new i(t,this.switch,this._onQueueStopped.bind(this)),this._queues[t]}}e.exports=d},2957:function(e,t,r){e.exports=r.p+"media/Kaytranada10.6fd40029.mp3"},"297e":function(e,t){function r(e,t,r,n){var i=e.length,s=r+(n?1:-1);while(n?s--:++si(n=>{const i=r.init(e,null);return r.update(i,n),t.from(r.digest(i))});e.exports=e=>{for(let t=0;t<64;t++)e[s+t]=u(t+1,a);for(let t=0;t<32;t++)e[o+t]=u(t+1,c)}}).call(this,r("b639").Buffer)},"29c7":function(e,t,r){"use strict";function n(e,t,r){const n=e===t;r(null,n)}e.exports=n},"29e1":function(e,t,r){"use strict";(function(t){e.exports=l;var n=r("f522").AbstractLevelDOWN,i=r("c3bb"),s=r("230c"),o=r("d13e"),a=r("a6a3"),c=r("f689"),u="level-js-";function l(e,t){if(!(this instanceof l))return new l(e,t);if(n.call(this),t=t||{},"string"!==typeof e)throw new Error("constructor requires a location string argument");this.location=e,this.prefix=null==t.prefix?u:t.prefix,this.version=parseInt(t.version||1,10)}i(l,n),l.binaryKeys=c.binaryKeys(indexedDB),l.arrayKeys=c.arrayKeys(indexedDB),l.prototype._open=function(e,t){var r=indexedDB.open(this.prefix+this.location,this.version),n=this;r.onerror=function(){t(r.error||new Error("unknown error"))},r.onsuccess=function(){n.db=r.result,t()},r.onupgradeneeded=function(e){var t=e.target.result;t.objectStoreNames.contains(n.location)||t.createObjectStore(n.location)}},l.prototype.store=function(e){var t=this.db.transaction([this.location],e);return t.objectStore(this.location)},l.prototype.await=function(e,t){var r=e.transaction;r.onabort=function(){t(r.error||new Error("aborted by user"))},r.oncomplete=function(){t(null,e.result)}},l.prototype._get=function(e,t,r){var n=this.store("readonly");try{var i=n.get(e)}catch(s){return a((function(){r(s)}))}this.await(i,(function(e,n){return e?r(e):void 0===n?r(new Error("NotFound")):(t.asBuffer&&(n=o(n)),void r(null,n))}))},l.prototype._del=function(e,t,r){var n=this.store("readwrite");try{var i=n.delete(e)}catch(s){return a((function(){r(s)}))}this.await(i,r)},l.prototype._put=function(e,t,r,n){var i=this.store("readwrite");try{var s=i.put(t,e)}catch(o){return a((function(){n(o)}))}this.await(s,n)},l.prototype._serializeKey=function(e){return t.isBuffer(e)?l.binaryKeys?e:e.toString():Array.isArray(e)?l.arrayKeys?e.map(this._serializeKey,this):String(e):e},l.prototype._serializeValue=function(e){return e},l.prototype._iterator=function(e){return new s(this,this.location,e)},l.prototype._batch=function(e,t,r){if(0===e.length)return a(r);var n,i=this.store("readwrite"),s=i.transaction,o=0;function c(){var t=e[o++],r=t.key;try{var a="del"===t.type?i.delete(r):i.put(t.value,r)}catch(u){return n=u,void s.abort()}o0&&void 0!==arguments[0]&&arguments[0];function t(t){var r=t.r,n=t.s,i=t.recoveryParam,s=a.Buffer.alloc(e?65:64);if(a.Buffer.from(r,"hex").copy(s,0),a.Buffer.from(n,"hex").copy(s,32),e){if(void 0===i)throw new Error("Signer did not return a recoveryParam");s[64]=i}return o.default.encode(s)}return(function(){var e=(0,s.default)(i.default.mark((function e(r,n){var s;return i.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,n(r);case 2:return s=e.sent,e.abrupt("return",t(s));case 4:case"end":return e.stop()}}),e,this)})));function r(t,r){return e.apply(this,arguments)}return r}())}function u(){return function(){var e=(0,s.default)(i.default.mark((function e(t,r){return i.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.abrupt("return",r(t));case 1:case"end":return e.stop()}}),e,this)})));function t(t,r){return e.apply(this,arguments)}return t}()}var l={ES256K:c(),"ES256K-R":c(!0),Ed25519:u()};function h(e){var t=l[e];if(!t)throw new Error("Unsupported algorithm ".concat(e));return t}e.exports=h},"2a68":function(e,t,r){"use strict";e.exports=function(){return function(e,t){t(!0)}}},"2abf":function(e,t,r){var n=r("7b77"),i=r("7be9");e.exports=function(){var e=n(),t=i();return{source:e,sink:t,resolve:function(r){e.resolve(r.source),t.resolve(r.sink)}}}},"2abf3":function(e,t,r){"use strict";e.exports="\nmessage RPC {\n repeated SubOpts subscriptions = 1;\n repeated Message msgs = 2;\n\n message SubOpts {\n optional bool subscribe = 1; // subscribe or unsubcribe\n optional string topicID = 2;\n }\n\n message Message {\n optional bytes from = 1;\n optional bytes data = 2;\n optional bytes seqno = 3;\n repeated string topicIDs = 4;\n optional bytes signature = 5;\n optional bytes key = 6;\n }\n}"},"2b3e":function(e,t,r){var n=r("d0b2"),i=r("98c9"),s=Object.prototype,o=s.hasOwnProperty,a=s.propertyIsEnumerable,c=n(function(){return arguments}())?n:function(e){return i(e)&&o.call(e,"callee")&&!a.call(e,"callee")};e.exports=c},"2b65":function(e,t){e.exports=function(e){if(e){if("function"===typeof e[Symbol.iterator])return e[Symbol.iterator]();if("function"===typeof e[Symbol.asyncIterator])return e[Symbol.asyncIterator]();if("function"===typeof e.next)return e}throw new Error("argument is not an iterator or iterable")}},"2bbd":function(e,t,r){"use strict";const{filter:n,sortAll:i,take:s,map:o}=r("917c"),a=r("276e"),c=r("8859");class u{constructor(){this.data={}}async open(){}async put(e,t){this.data[e.toString()]=t}async get(e){const t=await this.has(e);if(!t)throw c.notFoundError();return this.data[e.toString()]}async has(e){return void 0!==this.data[e.toString()]}async delete(e){delete this.data[e.toString()]}batch(){let e=[],t=[];return{put(t,r){e.push([t,r])},delete(e){t.push(e)},commit:async()=>{e.forEach(e=>{this.data[e[0].toString()]=e[1]}),e=[],t.forEach(e=>{delete this.data[e.toString()]}),t=[]}}}query(e){let t=Object.entries(this.data);if(t=o(t,e=>({key:new a(e[0]),value:e[1]})),null!=e.prefix&&(t=n(t,t=>t.key.toString().startsWith(e.prefix))),Array.isArray(e.filters)&&(t=e.filters.reduce((e,t)=>n(e,t),t)),Array.isArray(e.orders)&&(t=e.orders.reduce((e,t)=>i(e,t),t)),null!=e.offset){let r=0;t=n(t,()=>r++>=e.offset)}return null!=e.limit&&(t=s(t,e.limit)),!0===e.keysOnly&&(t=o(t,e=>({key:e.key}))),t}async close(){}}e.exports=u},"2bbf":function(e,t,r){"use strict";const n="[a-fA-F\\d:]",i=e=>e&&e.includeBoundaries?`(?:(?<=\\s|^)(?=${n})|(?<=${n})(?=\\s|$))`:"",s="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",o="[a-fA-F\\d]{1,4}",a=`\n(\n(?:${o}:){7}(?:${o}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\n(?:${o}:){6}(?:${s}|:${o}|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\n(?:${o}:){5}(?::${s}|(:${o}){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\n(?:${o}:){4}(?:(:${o}){0,1}:${s}|(:${o}){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\n(?:${o}:){3}(?:(:${o}){0,2}:${s}|(:${o}){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\n(?:${o}:){2}(?:(:${o}){0,3}:${s}|(:${o}){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\n(?:${o}:){1}(?:(:${o}){0,4}:${s}|(:${o}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\n(?::((?::${o}){0,5}:${s}|(?::${o}){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\n)(%[0-9a-zA-Z]{1,})? // %eth0 %1\n`.replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),c=e=>e&&e.exact?new RegExp(`(?:^${s}$)|(?:^${a}$)`):new RegExp(`(?:${i(e)}${s}${i(e)})|(?:${i(e)}${a}${i(e)})`,"g");c.v4=e=>e&&e.exact?new RegExp(`^${s}$`):new RegExp(`${i(e)}${s}${i(e)}`,"g"),c.v6=e=>e&&e.exact?new RegExp(`^${a}$`):new RegExp(`${i(e)}${a}${i(e)}`,"g"),e.exports=c},"2bdd":function(e,t,r){"use strict";const n=r("f654"),i=r("770a"),s={stat:r("5f7e")},o={cp:r("6da9"),flush:r("d2f9"),mkdir:r("c9b5"),mv:r("3faa9"),rm:r("be69")},a={write:r("8904"),read:r("40ee"),ls:r("2794")},c=({options:e,mfs:t,operations:r,lock:n})=>{Object.keys(r).forEach(i=>{t[i]=n(r[i](e))})},u={repoOwner:!0,ipld:null,repo:null};e.exports=e=>{const{repoOwner:t}=Object.assign({},u||{},e);n(e.ipld,"MFS requires an IPLD instance"),n(e.blocks,"MFS requires an BlockStore instance"),n(e.datastore,"MFS requires a DataStore instance"),e.repo={blocks:e.blocks,datastore:e.datastore};const r=i(t),l=e=>r.readLock(e),h=e=>r.writeLock(e),f={};return c({options:e,mfs:f,operations:s,lock:l}),c({options:e,mfs:f,operations:o,lock:h}),Object.keys(a).forEach(t=>{f[t]=a[t](e)}),f}},"2bff":function(e,t,r){"use strict";(function(t,n){var i;e.exports=x,x.ReadableState=T;r("faa1").EventEmitter;var s=function(e,t){return e.listeners(t).length},o=r("5329"),a=r("b639").Buffer,c=t.Uint8Array||function(){};function u(e){return a.from(e)}function l(e){return a.isBuffer(e)||e instanceof c}var h,f=r(10);h=f&&f.debuglog?f.debuglog("stream"):function(){};var d,p,y=r("821b"),g=r("1c9b"),m=r("6a87"),b=m.getHighWaterMark,v=r("93bc").codes,w=v.ERR_INVALID_ARG_TYPE,_=v.ERR_STREAM_PUSH_AFTER_EOF,E=v.ERR_METHOD_NOT_IMPLEMENTED,S=v.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,k=r("7f9c"),C=k.emitExperimentalWarning;r("c3bb")(x,o);var A=["error","close","destroy","pause","resume"];function I(e,t,r){if("function"===typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}function T(e,t,n){i=i||r("53b2"),e=e||{},"boolean"!==typeof n&&(n=t instanceof i),this.objectMode=!!e.objectMode,n&&(this.objectMode=this.objectMode||!!e.readableObjectMode),this.highWaterMark=b(this,e,"readableHighWaterMark",n),this.buffer=new y,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=!1!==e.emitClose,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(d||(d=r("7d72").StringDecoder),this.decoder=new d(e.encoding),this.encoding=e.encoding)}function x(e){if(i=i||r("53b2"),!(this instanceof x))return new x(e);var t=this instanceof i;this._readableState=new T(e,this,t),this.readable=!0,e&&("function"===typeof e.read&&(this._read=e.read),"function"===typeof e.destroy&&(this._destroy=e.destroy)),o.call(this)}function B(e,t,r,n,i){h("readableAddChunk",t);var s,o=e._readableState;if(null===t)o.reading=!1,L(e,o);else if(i||(s=N(o,t)),s)e.emit("error",s);else if(o.objectMode||t&&t.length>0)if("string"===typeof t||o.objectMode||Object.getPrototypeOf(t)===a.prototype||(t=u(t)),n)o.endEmitted?e.emit("error",new S):R(e,o,t,!0);else if(o.ended)e.emit("error",new _);else{if(o.destroyed)return!1;o.reading=!1,o.decoder&&!r?(t=o.decoder.write(t),o.objectMode||0!==t.length?R(e,o,t,!1):j(e,o)):R(e,o,t,!1)}else n||(o.reading=!1,j(e,o));return!o.ended&&(o.length=O?e=O:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}function D(e,t){return e<=0||0===t.length&&t.ended?0:t.objectMode?1:e!==e?t.flowing&&t.length?t.buffer.head.data.length:t.length:(e>t.highWaterMark&&(t.highWaterMark=P(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function L(e,t){if(!t.ended){if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,t.sync?M(e):(t.needReadable=!1,t.emittedReadable||(t.emittedReadable=!0,U(e)))}}function M(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(h("emitReadable",t.flowing),t.emittedReadable=!0,n.nextTick(U,e))}function U(e){var t=e._readableState;h("emitReadable_",t.destroyed,t.length,t.ended),t.destroyed||!t.length&&!t.ended||e.emit("readable"),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,G(e)}function j(e,t){t.readingMore||(t.readingMore=!0,n.nextTick(K,e,t))}function K(e,t){while(!t.reading&&!t.ended&&(t.length0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount("data")>0&&e.resume()}function q(e){h("readable nexttick read 0"),e.read(0)}function z(e,t){t.resumeScheduled||(t.resumeScheduled=!0,n.nextTick(H,e,t))}function H(e,t){h("resume",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit("resume"),G(e),t.flowing&&!t.reading&&e.read(0)}function G(e){var t=e._readableState;h("flow",t.flowing);while(t.flowing&&null!==e.read());}function $(e,t){return 0===t.length?null:(t.objectMode?r=t.buffer.shift():!e||e>=t.length?(r=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.first():t.buffer.concat(t.length),t.buffer.clear()):r=t.buffer.consume(e,t.decoder),r);var r}function W(e){var t=e._readableState;h("endReadable",t.endEmitted),t.endEmitted||(t.ended=!0,n.nextTick(Y,t,e))}function Y(e,t){h("endReadableNT",e.endEmitted,e.length),e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function Q(e,t){for(var r=0,n=e.length;r=t.highWaterMark:t.length>0)||t.ended))return h("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?W(this):M(this),null;if(e=D(e,t),0===e&&t.ended)return 0===t.length&&W(this),null;var n,i=t.needReadable;return h("need readable",i),(0===t.length||t.length-e0?$(e,t):null,null===n?(t.needReadable=!0,e=0):(t.length-=e,t.awaitDrain=0),0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&W(this)),null!==n&&this.emit("data",n),n},x.prototype._read=function(e){this.emit("error",new E("_read()"))},x.prototype.pipe=function(e,t){var r=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=e;break;case 1:i.pipes=[i.pipes,e];break;default:i.pipes.push(e);break}i.pipesCount+=1,h("pipe count=%d opts=%j",i.pipesCount,t);var o=(!t||!1!==t.end)&&e!==n.stdout&&e!==n.stderr,a=o?u:b;function c(e,t){h("onunpipe"),e===r&&t&&!1===t.hasUnpiped&&(t.hasUnpiped=!0,d())}function u(){h("onend"),e.end()}i.endEmitted?n.nextTick(a):r.once("end",a),e.on("unpipe",c);var l=F(r);e.on("drain",l);var f=!1;function d(){h("cleanup"),e.removeListener("close",g),e.removeListener("finish",m),e.removeListener("drain",l),e.removeListener("error",y),e.removeListener("unpipe",c),r.removeListener("end",u),r.removeListener("end",b),r.removeListener("data",p),f=!0,!i.awaitDrain||e._writableState&&!e._writableState.needDrain||l()}function p(t){h("ondata");var n=e.write(t);h("dest.write",n),!1===n&&((1===i.pipesCount&&i.pipes===e||i.pipesCount>1&&-1!==Q(i.pipes,e))&&!f&&(h("false write response, pause",i.awaitDrain),i.awaitDrain++),r.pause())}function y(t){h("onerror",t),b(),e.removeListener("error",y),0===s(e,"error")&&e.emit("error",t)}function g(){e.removeListener("finish",m),b()}function m(){h("onfinish"),e.removeListener("close",g),b()}function b(){h("unpipe"),r.unpipe(e)}return r.on("data",p),I(e,"error",y),e.once("close",g),e.once("finish",m),e.emit("pipe",r),i.flowing||(h("pipe resume"),r.resume()),e},x.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,r),this);if(!e){var n=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var s=0;s0,!1!==i.flowing&&this.resume()):"readable"===e&&(i.endEmitted||i.readableListening||(i.readableListening=i.needReadable=!0,i.flowing=!1,i.emittedReadable=!1,h("on readable",i.length,i.reading),i.length?M(this):i.reading||n.nextTick(q,this))),r},x.prototype.addListener=x.prototype.on,x.prototype.removeListener=function(e,t){var r=o.prototype.removeListener.call(this,e,t);return"readable"===e&&n.nextTick(V,this),r},x.prototype.removeAllListeners=function(e){var t=o.prototype.removeAllListeners.apply(this,arguments);return"readable"!==e&&void 0!==e||n.nextTick(V,this),t},x.prototype.resume=function(){var e=this._readableState;return e.flowing||(h("resume"),e.flowing=!e.readableListening,z(this,e)),e.paused=!1,this},x.prototype.pause=function(){return h("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(h("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},x.prototype.wrap=function(e){var t=this,r=this._readableState,n=!1;for(var i in e.on("end",(function(){if(h("wrapped end"),r.decoder&&!r.ended){var e=r.decoder.end();e&&e.length&&t.push(e)}t.push(null)})),e.on("data",(function(i){if(h("wrapped data"),r.decoder&&(i=r.decoder.write(i)),(!r.objectMode||null!==i&&void 0!==i)&&(r.objectMode||i&&i.length)){var s=t.push(i);s||(n=!0,e.pause())}})),e)void 0===this[i]&&"function"===typeof e[i]&&(this[i]=function(t){return function(){return e[t].apply(e,arguments)}}(i));for(var s=0;s0?n(null,o.shift()):r=n}return e.addEventListener("message",(function(e){var t=e.data;if(i(t)&&(t=n.from(t)),r)return r(null,t);o.push(t)})),e.addEventListener("close",(function(e){s||r&&r(s=!0)})),e.addEventListener("error",(function(e){s||(s=e,a||(a=!0,t&&t(e)),r&&r(s))})),e.addEventListener("open",(function(e){a||s||(a=!0)})),c}},"2c49":function(e,t){const r=window.XMLHttpRequest;e.exports=r},"2c93":function(e,t,r){(function(t){const n=r("faa1").EventEmitter,i=r("e063"),{WORKER_REQUEST_READ_LOCK:s,WORKER_RELEASE_READ_LOCK:o,MASTER_GRANT_READ_LOCK:a,WORKER_REQUEST_WRITE_LOCK:c,WORKER_RELEASE_WRITE_LOCK:u,MASTER_GRANT_WRITE_LOCK:l}=r("2046");let h;const f=(e,t,r,n,i)=>(s,o)=>{o&&o.type===r&&e.emit(t,o.name,()=>(s.send({type:i,name:o.name,identifier:o.identifier}),new Promise(e=>{const t=r=>{r&&r.type===n&&r.identifier===o.identifier&&(s.removeListener("message",t),e())};s.on("message",t)})))},d=(e,r,n,s)=>()=>{const o=i.generate();return t.send({type:r,identifier:o,name:e}),new Promise(r=>{const i=a=>{a&&a.type===n&&a.identifier===o&&(t.removeListener("message",i),r(()=>{t.send({type:s,identifier:o,name:e})}))};t.on("message",i)})};e.exports=e=>{try{if(h=r(16),!Object.keys(h).length)return}catch(t){return}if(h.isMaster||e.singleProcess){const e=new n;return h.on("message",f(e,"requestReadLock",s,o,a)),h.on("message",f(e,"requestWriteLock",c,u,l)),e}return{isWorker:!0,readLock:e=>d(e,s,a,o),writeLock:e=>d(e,c,l,u)}}}).call(this,r("4362"))},"2cdb":function(e,t,r){"use strict";const n=r("c449"),i=r("85b8");t.resolve=(e,t)=>{let r=i.deserialize(e);const s=t.split("/").filter(Boolean);while(s.length){const e=s.shift();if(void 0===r[e]){for(const t of r.Links)if(t.Name===e)return{value:t.Hash,remainderPath:s.join("/")};throw new Error(`Object has no property '${e}'`)}if(r=r[e],n.isCID(r))return{value:r,remainderPath:s.join("/")}}return{value:r,remainderPath:""}},t.tree=function*(e){const t=i.deserialize(e);yield"Data",yield"Links";for(let r=0;r{const t=c.logger(e.peerInfo.id,"rpc:get-providers");async function r(r,s){let u;try{u=new n(s.key)}catch(g){throw o(new Error(`Invalid CID: ${g.message}`),"ERR_INVALID_CID")}t("%s",u.toBaseEncodedString());const l=c.bufferToKey(u.buffer),[h,f,d]=await Promise.all([e.datastore.has(l),e.providers.getProviders(u),e._betterPeersToQueryAsync(s,r)]),p=f.map(t=>e.peerBook.has(t)?e.peerBook.get(t):e.peerBook.put(new i(t)));h&&p.push(e.peerInfo);const y=new a(s.type,s.key,s.clusterLevel);return p.length>0&&(y.providerPeers=p),d.length>0&&(y.closerPeers=d),t("got %s providers %s closerPeers",p.length,d.length),y}return function(e,t,n){s(r(e,t))(n)}}},"2d6f":function(e,t,r){"use strict"; +/*! + * bytes + * Copyright(c) 2012-2014 TJ Holowaychuk + * Copyright(c) 2015 Jed Watson + * MIT Licensed + */e.exports=a,e.exports.format=c,e.exports.parse=u;var n=/\B(?=(\d{3})+(?!\d))/g,i=/(?:\.0*|(\.[^0]+)0+)$/,s={b:1,kb:1024,mb:1<<20,gb:1<<30,tb:Math.pow(1024,4),pb:Math.pow(1024,5)},o=/^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb|pb)$/i;function a(e,t){return"string"===typeof e?u(e):"number"===typeof e?c(e,t):null}function c(e,t){if(!Number.isFinite(e))return null;var r=Math.abs(e),o=t&&t.thousandsSeparator||"",a=t&&t.unitSeparator||"",c=t&&void 0!==t.decimalPlaces?t.decimalPlaces:2,u=Boolean(t&&t.fixedDecimals),l=t&&t.unit||"";l&&s[l.toLowerCase()]||(l=r>=s.pb?"PB":r>=s.tb?"TB":r>=s.gb?"GB":r>=s.mb?"MB":r>=s.kb?"KB":"B");var h=e/s[l.toLowerCase()],f=h.toFixed(c);return u||(f=f.replace(i,"$1")),o&&(f=f.replace(n,o)),f+a+l}function u(e){if("number"===typeof e&&!isNaN(e))return e;if("string"!==typeof e)return null;var t,r=o.exec(e),n="b";return r?(t=parseFloat(r[1]),n=r[4].toLowerCase()):(t=parseInt(e,10),n="b"),Math.floor(s[n]*t)}},"2db6":function(e,t,r){"use strict";const n=r("eeb3"),i=r("cf8f"),s=r("87dd"),o=r("e24c").Connection,a=r("0bda"),c=r("4bc2"),u=c("libp2p:websockets:dialer"),l=r("063e");class h{dial(e,t,r){"function"===typeof t&&(r=t,t={}),r=r||function(){};const i=a(e);u("dialing %s",i);const s=n(i,{binary:!0,onConnect:e=>{r(e)}}),c=new o(s);return c.getObservedAddrs=t=>t(null,[e]),c.close=e=>s.close(e),c}createListener(e,t){return"function"===typeof e&&(t=e,e={}),l(e,t)}filter(e){return Array.isArray(e)||(e=[e]),e.filter(e=>!e.protoNames().includes("p2p-circuit")&&("function"===typeof e.decapsulateCode?e=e.decapsulateCode(421):e.protoNames().includes("ipfs")&&(e=e.decapsulate("ipfs")),i.WebSockets.matches(e)||i.WebSocketsSecure.matches(e)))}}e.exports=s(h,{className:"WebSockets",symbolName:"@libp2p/js-libp2p-websockets/websockets"})},"2dce":function(e,t,r){"use strict";function n(e){return e>=55296&&e<=56319}function i(e){return e>=56320&&e<=57343}e.exports=function(e,t,r){if("string"!==typeof t)throw new Error("Input must be string");for(var s,o,a=t.length,c=0,u=0;ur)return t.slice(0,u-o.length+1)}return t}},"2dee":function(e,t,r){"use strict";(function(t){const n=r("e782"),i=r("7a79");function s(e,t,r,i){if("function"===typeof r&&(i=r,r=void 0),!i)throw new Error("Missing callback");s.digest(e,t,r,(e,s)=>{if(e)return i(e);i(null,n.encode(s,t,r))})}e.exports=s,s.Buffer=t,s.multihash=n,s.digest=function(e,t,r,n){if("function"===typeof r&&(n=r,r=void 0),!n)throw new Error("Missing callback");let i,o=n;r&&(o=(e,t)=>{if(e)return n(e);n(null,t.slice(0,r))});try{i=s.createHash(t)}catch(a){return o(a)}i(e,o)},s.createHash=function(e){if(e=n.coerceCode(e),!s.functions[e])throw new Error("multihash function "+e+" not yet supported");return s.functions[e]},s.functions={17:i.sha1,18:i.sha2256,19:i.sha2512,20:i.sha3512,21:i.sha3384,22:i.sha3256,23:i.sha3224,24:i.shake128,25:i.shake256,26:i.keccak224,27:i.keccak256,28:i.keccak384,29:i.keccak512,34:i.murmur3128,35:i.murmur332,86:i.dblSha2256},i.addBlake(s.functions)}).call(this,r("b639").Buffer)},"2e00":function(e,t,r){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0}),t.hasNextTick=t.hasSetImmediate=void 0,t.fallback=u,t.wrap=l;var n=r("dea4"),i=s(n);function s(e){return e&&e.__esModule?e:{default:e}}var o,a=t.hasSetImmediate="function"===typeof setImmediate&&setImmediate,c=t.hasNextTick="object"===typeof e&&"function"===typeof e.nextTick;function u(e){setTimeout(e,0)}function l(e){return function(t){var r=(0,i.default)(arguments,1);e((function(){t.apply(null,r)}))}}o=a?setImmediate:c?e.nextTick:u,t.default=l(o)}).call(this,r("4362"))},"2e15":function(e,t,r){"use strict";class n extends Error{constructor(e){super(e),this.name="LockExistsError",this.code=n.code}}n.code="ERR_LOCK_EXISTS",t.LockExistsError=n;class i extends Error{constructor(e){super(e),this.name="NotFoundError",this.code=i.code}}i.code="ERR_NOT_FOUND",t.NotFoundError=i;class s extends Error{constructor(e){super(e),this.name="InvalidRepoVersionError",this.code=s.code}}s.code="ERR_INVALID_REPO_VERSION",t.InvalidRepoVersionError=s,t.ERR_REPO_NOT_INITIALIZED="ERR_REPO_NOT_INITIALIZED",t.ERR_REPO_ALREADY_OPEN="ERR_REPO_ALREADY_OPEN",t.ERR_REPO_ALREADY_CLOSED="ERR_REPO_ALREADY_CLOSED"},"2e53":function(e,t,r){"use strict";(function(t){const n=r("e2e5"),i=r("7c2b"),{Key:s}=r("9a94"),o=r("f929"),a=r("b1aa"),c=r("e782"),u=r("7048"),l=r("fa4d"),h=r("4bc2"),f=h("jsipns");f.error=h("jsipns:error");const d=r("3958"),{parseRFC3339:p}=r("a816"),y=r("c1a6"),g=c.names.id,m="/ipns/",b=(e,t,r,n)=>{const s=new i(Date.now()+Number(n)).toString(),o=d.ValidityType.EOL;return w(e,t,r,s,o)},v=(e,t,r,n)=>{const i=d.ValidityType.EOL;return w(e,t,r,n,i)},w=async(e,t,r,n,i)=>{const s=await I(e,t,i,n),o={value:t,signature:s,validityType:i,validity:n,sequence:r};return f(`ipns entry for ${t} created`),o},_=async(e,t)=>{const{value:r,validityType:n,validity:i}=t,s=x(r,n,i);let o;try{o=await l(e.verify,{context:e})(s,t.signature)}catch(a){o=!1}if(!o)throw f.error("record signature verification failed"),u(new Error("record signature verification failed"),y.ERR_SIGNATURE_VERIFICATION);if(n===d.ValidityType.EOL){let e;try{e=p(i.toString())}catch(c){throw f.error("unrecognized validity format (not an rfc3339 format)"),u(new Error("unrecognized validity format (not an rfc3339 format)"),y.ERR_UNRECOGNIZED_FORMAT)}if(e{if(!e||!e.bytes||!t){const e=new Error("one or more of the provided parameters are not defined");throw f.error(e),u(e,y.ERR_UNDEFINED_PARAMETER)}let r,n;try{r=await l(a.createFromPubKey)(e.bytes)}catch(i){throw u(i,y.ERR_PEER_ID_FROM_PUBLIC_KEY)}try{n=B(r)}catch(i){throw f.error(i),u(i,y.ERR_PUBLIC_KEY_FROM_ID)}if(n)return null;try{t.pubKey=o.keys.marshalPublicKey(e)}catch(i){throw f.error(i),i}return t},S=(e,t)=>{if(!t||!e){const e=new Error("one or more of the provided parameters are not defined");throw f.error(e),u(e,y.ERR_UNDEFINED_PARAMETER)}if(t.pubKey){let e;try{e=o.keys.unmarshalPublicKey(t.pubKey)}catch(r){throw f.error(r),r}return e}if(e.pubKey)return e.pubKey;throw Object.assign(new Error("no public key is available"),{code:y.ERR_UNDEFINED_PARAMETER})},k=e=>n(e,"RFC4648",{padding:!1}),C=e=>new s(`/ipns/${k(e)}`),A=e=>{const r=t.from("/pk/"),n=t.from("/ipns/");return{routingPubKey:new s(t.concat([r,e])),pkKey:new s(k(t.concat([r,e]))),routingKey:new s(t.concat([n,e])),ipnsKey:new s(k(t.concat([n,e])))}},I=(e,t,r,n)=>{try{const i=x(t,r,n);return l(e.sign,{context:e})(i)}catch(i){throw f.error("record signature creation failed"),u(new Error("record signature creation failed: "+i.message),y.ERR_SIGNATURE_CREATION)}},T=e=>{if("0"===e.toString())return"EOL";const t=new Error(`unrecognized validity type ${e.toString()}`);throw f.error(t),u(t,y.ERR_UNRECOGNIZED_VALIDITY)},x=(e,r,n)=>{const i=t.from(e),s=t.from(T(r)),o=t.from(n);return t.concat([i,o,s])},B=e=>{const t=c.decode(e.id);return t.code!==g?null:o.keys.unmarshalPublicKey(t.digest)},R=d.encode,N=d.decode,O={validate:async(e,t)=>{const r=N(e),n=t.slice("/ipns/".length),i=a.createFromBytes(n),s=S(i,r);return await _(s,r),!0},select:(e,t)=>{const r=N(e),n=N(t);return r.sequence>n.sequence?0:1}};e.exports={create:b,createWithExpiration:v,validate:_,embedPublicKey:E,extractPublicKey:S,getLocalKey:C,getIdKeys:A,marshal:R,unmarshal:N,validator:O,namespace:m,namespaceLength:m.length}}).call(this,r("b639").Buffer)},"2e81":function(e,t,r){"use strict";const{filter:n,sortAll:i,take:s,map:o}=r("5e27"),a=r("c368"),c=r("4547");class u{constructor(){this.data={}}async open(){}async put(e,t){this.data[e.toString()]=t}async get(e){const t=await this.has(e);if(!t)throw c.notFoundError();return this.data[e.toString()]}async has(e){return void 0!==this.data[e.toString()]}async delete(e){delete this.data[e.toString()]}batch(){let e=[],t=[];return{put(t,r){e.push([t,r])},delete(e){t.push(e)},commit:async()=>{e.forEach(e=>{this.data[e[0].toString()]=e[1]}),e=[],t.forEach(e=>{delete this.data[e.toString()]}),t=[]}}}query(e){let t=Object.entries(this.data);if(t=o(t,e=>({key:new a(e[0]),value:e[1]})),null!=e.prefix&&(t=n(t,t=>t.key.toString().startsWith(e.prefix))),Array.isArray(e.filters)&&(t=e.filters.reduce((e,t)=>n(e,t),t)),Array.isArray(e.orders)&&(t=e.orders.reduce((e,t)=>i(e,t),t)),null!=e.offset){let r=0;t=n(t,()=>r++>=e.offset)}return null!=e.limit&&(t=s(t,e.limit)),!0===e.keysOnly&&(t=o(t,e=>({key:e.key}))),t}async close(){}}e.exports=u},"2e97":function(e,t,r){"use strict";const n=r("efb7");async function*i(e,t,r){yield await s(e,t,r)}async function s(e,t,r){const i=[];for await(const s of n(e,r.maxChildrenPerNode))i.push(await t(s));return i.length>1?s(i,t,r):i[0]}e.exports=i},"2ea6":function(e,t,r){"use strict";(function(e){const n=r("682d"),i=r("e31f"),s=r("ffc2"),o={SHA1:"SHA-1",SHA256:"SHA-256",SHA512:"SHA-512"},a=(t,r,s)=>{n(i.subtle.sign({name:"HMAC"},t,r).then(t=>e.from(t)),s)};t.create=function(e,t,r){const c=o[e];n(i.subtle.importKey("raw",t,{name:"HMAC",hash:{name:c}},!1,["sign"]).then(t=>({digest(e,r){a(t,e,r)},length:s[e]})),r)}}).call(this,r("b639").Buffer)},"2edf":function(e,t,r){e.exports=r("1ea5")},"2f06":function(e,t,r){(function(e){function r(e){return void 0!==e&&""!==e}function n(e,t){return Object.hasOwnProperty.call(e,t)}function i(e,t){return Object.hasOwnProperty.call(e,t)&&t}t.compare=function(t,r){if(e.isBuffer(t)){for(var n=Math.min(t.length,r.length),i=0;ir?1:0};var s=t.lowerBoundKey=function(e){return i(e,"gt")||i(e,"gte")||i(e,"min")||(e.reverse?i(e,"end"):i(e,"start"))||void 0},o=t.lowerBound=function(e,t){var r=s(e);return r?e[r]:t},a=t.lowerBoundInclusive=function(e){return!n(e,"gt")},c=t.upperBoundInclusive=function(e){return!n(e,"lt")},u=t.lowerBoundExclusive=function(e){return!a(e)},l=t.upperBoundExclusive=function(e){return!c(e)},h=t.upperBoundKey=function(e){return i(e,"lt")||i(e,"lte")||i(e,"max")||(e.reverse?i(e,"start"):i(e,"end"))||void 0},f=t.upperBound=function(e,t){var r=h(e);return r?e[r]:t};function d(e){return e}t.start=function(e,t){return e.reverse?f(e,t):o(e,t)},t.end=function(e,t){return e.reverse?o(e,t):f(e,t)},t.startInclusive=function(e){return e.reverse?c(e):a(e)},t.endInclusive=function(e){return e.reverse?a(e):c(e)},t.toLtgt=function(e,r,i,s,o){r=r||{},i=i||d;var a=arguments.length>3,c=t.lowerBoundKey(e),u=t.upperBoundKey(e);return c?"gt"===c?r.gt=i(e.gt,!1):r.gte=i(e[c],!1):a&&(r.gte=i(s,!1)),u?"lt"===u?r.lt=i(e.lt,!0):r.lte=i(e[u],!0):a&&(r.lte=i(o,!0)),null!=e.reverse&&(r.reverse=!!e.reverse),n(r,"max")&&delete r.max,n(r,"min")&&delete r.min,n(r,"start")&&delete r.start,n(r,"end")&&delete r.end,r},t.contains=function(e,n,i){i=i||t.compare;var s=o(e);if(r(s)){var a=i(n,s);if(a<0||0===a&&u(e))return!1}var c=f(e);if(r(c)){a=i(n,c);if(a>0||0===a&&l(e))return!1}return!0},t.filter=function(e,r){return function(n){return t.contains(e,n,r)}}}).call(this,r("b639").Buffer)},"2f07":function(e,t,r){var n=r("5887"),i=r("0c4e"),s=r("e0c5").Buffer,o=r("715d"),a=r("5190"),c=r("d7d8"),u=r("4eef"),l=r("c3bb");function h(e,t,r){a.call(this),this._cache=new d,this._cipher=new c.AES(t),this._prev=s.from(r),this._mode=e,this._autopadding=!0}l(h,a),h.prototype._update=function(e){var t,r;this._cache.add(e);var n=[];while(t=this._cache.get())r=this._mode.encrypt(this,t),n.push(r);return s.concat(n)};var f=s.alloc(16,16);function d(){this.cache=s.allocUnsafe(0)}function p(e,t,r){var a=n[e.toLowerCase()];if(!a)throw new TypeError("invalid suite type");if("string"===typeof t&&(t=s.from(t)),t.length!==a.key/8)throw new TypeError("invalid key length "+t.length);if("string"===typeof r&&(r=s.from(r)),"GCM"!==a.mode&&r.length!==a.iv)throw new TypeError("invalid iv length "+r.length);return"stream"===a.type?new o(a.module,t,r):"auth"===a.type?new i(a.module,t,r):new h(a.module,t,r)}function y(e,t){var r=n[e.toLowerCase()];if(!r)throw new TypeError("invalid suite type");var i=u(t,!1,r.key,r.iv);return p(e,i.key,i.iv)}h.prototype._final=function(){var e=this._cache.flush();if(this._autopadding)return e=this._mode.encrypt(this,e),this._cipher.scrub(),e;if(!e.equals(f))throw this._cipher.scrub(),new Error("data not multiple of block length")},h.prototype.setAutoPadding=function(e){return this._autopadding=!!e,this},d.prototype.add=function(e){this.cache=s.concat([this.cache,e])},d.prototype.get=function(){if(this.cache.length>15){var e=this.cache.slice(0,16);return this.cache=this.cache.slice(16),e}return null},d.prototype.flush=function(){var e=16-this.cache.length,t=s.allocUnsafe(e),r=-1;while(++r{const o=i.digest({name:e},r);if("function"!==typeof o.then)return o.onerror=()=>{s(new Error(`hashing data using ${e}`))},void(o.oncomplete=e=>{s(null,e.target.result)});n(o.then(e=>t.from(new Uint8Array(e))),s)}}function a(e,t){o("SHA-1")(e,t)}function c(e,t){o("SHA-256")(e,t)}function u(e,t){o("SHA-512")(e,t)}e.exports={sha1:a,sha2256:c,sha2512:u}}).call(this,r("b639").Buffer)},"2f79":function(e,t,r){"use strict";const n=r("55cd"),i=r("8049"),s=i.toBase64,o=i.toBn,a=n.define("RSAPrivateKey",(function(){this.seq().obj(this.key("version").int(),this.key("modulus").int(),this.key("publicExponent").int(),this.key("privateExponent").int(),this.key("prime1").int(),this.key("prime2").int(),this.key("exponent1").int(),this.key("exponent2").int(),this.key("coefficient").int())})),c=n.define("AlgorithmIdentifier",(function(){this.seq().obj(this.key("algorithm").objid({"1.2.840.113549.1.1.1":"rsa"}),this.key("none").optional().null_(),this.key("curve").optional().objid(),this.key("params").optional().seq().obj(this.key("p").int(),this.key("q").int(),this.key("g").int()))})),u=n.define("RSAPublicKey",(function(){this.seq().obj(this.key("algorithm").use(c),this.key("subjectPublicKey").bitstr())})),l=n.define("RSAPublicKey",(function(){this.seq().obj(this.key("modulus").int(),this.key("publicExponent").int())}));t.pkcs1ToJwk=function(e){const t=a.decode(e,"der");return{kty:"RSA",n:s(t.modulus),e:s(t.publicExponent),d:s(t.privateExponent),p:s(t.prime1),q:s(t.prime2),dp:s(t.exponent1),dq:s(t.exponent2),qi:s(t.coefficient),alg:"RS256",kid:"2011-04-29"}},t.jwkToPkcs1=function(e){return a.encode({version:0,modulus:o(e.n),publicExponent:o(e.e),privateExponent:o(e.d),prime1:o(e.p),prime2:o(e.q),exponent1:o(e.dp),exponent2:o(e.dq),coefficient:o(e.qi)},"der")},t.pkixToJwk=function(e){const t=u.decode(e,"der"),r=l.decode(t.subjectPublicKey.data,"der");return{kty:"RSA",n:s(r.modulus),e:s(r.publicExponent),alg:"RS256",kid:"2011-04-29"}},t.jwkToPkix=function(e){return u.encode({algorithm:{algorithm:"rsa",none:null},subjectPublicKey:{data:l.encode({modulus:o(e.n),publicExponent:o(e.e)},"der")}},"der")}},"2fd8":function(e,t,r){"use strict";const n=r("1005"),i=r("eb33"),s=r("45d0"),o=r("b116");t.Key=n,t.MemoryDatastore=i,t.utils=s,t.Errors=o},"2fe8":function(e,t,r){(function(t){const n=r("d733"),i=r("e3d5"),s=r("1a18"),o=r("17e5"),a=r("63e1"),c=r("3022").promisify,u=c(a),l=42;function h(e){return"string"===typeof e?e=new i(e).buffer:i.isCID(e)&&(e=e.buffer),new n.Tagged(l,t.concat([t.from("00","hex"),e]))}function f(e){let r;try{r=o(e)}catch(s){r=!1}if(r)throw new Error("The object passed has circular references");function n(e){if(!e||t.isBuffer(e)||"string"===typeof e)return e;if(Array.isArray(e))return e.map(n);if(i.isCID(e))return h(e);const r=Object.keys(e);if(1===r.length&&"/"===r[0])return h(e["/"]);if(r.length>0){const t={};return r.forEach(r=>{"object"===typeof e[r]?t[r]=n(e[r]):t[r]=e[r]}),t}return e}return n(e)}e.exports=e=>{let t=new n.Decoder({tags:{[l]:e=>(e=e.slice(1),new i(e))},size:e});const r=e=>t.decodeFirst(e),o=e=>{let t=f(e);return n.encode(t)},a=async(e,t="sha2-256")=>{let r=o(e),n=await u(r,t),a=new i(1,"dag-cbor",n);return new s(r,a)};return{serialize:o,deserialize:r,mkblock:a}}}).call(this,r("b639").Buffer)},"2ff2":function(e,t,r){"use strict";const n=r("af8e"),i=r("96a8"),s=r("0774"),o=r("ea91"),a=r("e7ba"),c=i(r("eee0"));r("508d"),r("b6fe");const u=r("f0a0");class l{constructor(e){this._key=e}verify(e,t,r){m(r),a.hashAndVerify(this._key,t,e,r)}marshal(){return a.utils.jwkToPkix(this._key)}get bytes(){return c.PublicKey.encode({Type:c.KeyType.RSA,Data:this.marshal()})}encrypt(e,t){return h(()=>a.encrypt(this._key,e),t)}equals(e){return this.bytes.equals(e.bytes)}hash(e){m(e),n(this.bytes,"sha2-256",e)}}function h(e,t){let r;try{r=e()}catch(n){t(n)}return t(null,r)}class f{constructor(e,t){this._key=e,this._publicKey=t}genSecret(){return a.getRandomValues(16)}sign(e,t){m(t),a.hashAndSign(this._key,e,t)}get public(){if(!this._publicKey)throw new Error("public key not provided");return new l(this._publicKey)}decrypt(e,t){h(()=>a.decrypt(this._key,e),t)}marshal(){return a.utils.jwkToPkcs1(this._key)}get bytes(){return c.PrivateKey.encode({Type:c.KeyType.RSA,Data:this.marshal()})}equals(e){return this.bytes.equals(e.bytes)}hash(e){m(e),n(this.bytes,"sha2-256",e)}id(e){this.public.hash((t,r)=>{if(t)return e(t);e(null,s.encode(r))})}export(e,t,r){"function"===typeof t&&(r=t,t=e,e="pkcs-8"),m(r),o(()=>{let n=null,i=null;try{const r=new u.util.ByteBuffer(this.marshal()),s=u.asn1.fromDer(r),o=u.pki.privateKeyFromAsn1(s);if("pkcs-8"===e){const e={algorithm:"aes256",count:1e4,saltSize:16,prfAlgorithm:"sha512"};i=u.pki.encryptRsaPrivateKey(o,t,e)}else n=new Error(`Unknown export format '${e}'`)}catch(s){n=s}r(n,i)})}}function d(e,t){const r=a.utils.pkcs1ToJwk(e);a.unmarshalPrivateKey(r,(e,r)=>{if(e)return t(e);t(null,new f(r.privateKey,r.publicKey))})}function p(e){const t=a.utils.pkixToJwk(e);return new l(t)}function y(e,t){a.unmarshalPrivateKey(e,(e,r)=>{if(e)return t(e);t(null,new f(r.privateKey,r.publicKey))})}function g(e,t){a.generateKey(e,(e,r)=>{if(e)return t(e);t(null,new f(r.privateKey,r.publicKey))})}function m(e){if("function"!==typeof e)throw new Error("callback is required")}e.exports={RsaPublicKey:l,RsaPrivateKey:f,unmarshalRsaPublicKey:p,unmarshalRsaPrivateKey:d,generateKeyPair:g,fromJwk:y}},"300a":function(e,t,r){"use strict";(function(t){const n=r("e3d5");e.exports=function(e){if(t.isBuffer(e))return new n(e).toString();if(n.isCID(e))return e.toString();if("string"!==typeof e)throw new Error("unexpected cid type: "+typeof e);return new n(e.split("/")[0]),e}}).call(this,r("b639").Buffer)},3053:function(e,t,r){(function(t){var r=o(),n=a(),i=c(),s="undefined"!==typeof window?window:t;function o(){return Object.assign?Object.assign:function(e,t,r,n){for(var i=1;i{const n=a.createHash(t),i=await n(e);return r?i.slice(0,r):i},a.createHash=function(e){if(!e)throw i("hash algorithm must be specified","ERR_HASH_ALGORITHM_NOT_SPECIFIED");if(e=s.coerceCode(e),!a.functions[e])throw i(`multihash function '${e}' not yet supported`,"ERR_HASH_ALGORITHM_NOT_SUPPORTED");return a.functions[e]},a.functions={17:o.sha1,18:o.sha2256,19:o.sha2512,20:o.sha3512,21:o.sha3384,22:o.sha3256,23:o.sha3224,24:o.shake128,25:o.shake256,26:o.keccak224,27:o.keccak256,28:o.keccak384,29:o.keccak512,34:o.murmur3128,35:o.murmur332,86:o.dblSha2256},o.addBlake(a.functions),a.validate=async(e,t)=>{const r=await a(e,s.decode(t).name);return 0===n.compare(t,r)},e.exports=a},"309b":function(e,t,r){"use strict";t.defined=function(e){return null!==e&&void 0!==e&&("number"!==typeof e||!isNaN(e))}},"30ae":function(e,t,r){(function(t){var n=r("d485");e.exports=s,e.exports.source=function(e){return s(null,e)},e.exports.sink=function(e){return s(e,null)};var i="undefined"===typeof setImmediate?t.nextTick:setImmediate;function s(e,t){e&&"object"===typeof e&&(t=e.source,e=e.sink);var r,s,o,a=[],c=[],u=new n;u.writable=u.readable=!0,u.write=function(e){return a.length?a.shift()(null,e):c.push(e),a.length||(s=!0),!!a.length},u.end=function(){t?c.length?y():t(r=!0,a.length?a.shift():function(){}):a.length&&a.shift()(!0)},u.source=function(e,t){c.length?(t(null,c.shift()),c.length||u.emit("drain")):((r=r||e)?t(r):a.push(t),s&&(s=!1,u.emit("drain")))},e&&(o=e(u.source)),o&&!t&&(t=o);var l=[],h=!1,f=!1;if(u.sink=function(e){t=e,i(y)},t){u.sink(t),u.paused=!0;var d=u.on.bind(u);u.on=(e,t)=>{var r=d(e,t);return"data"===e&&u.paused&&i(u.resume.bind(u)),r};var p=u.pipe.bind(u);u.pipe=function(e,t){var r=p(e,t);return u.paused&&u.resume(),r}}function y(){if(!1,t&&!f){while(l.length&&!u.paused)u.emit("data",l.shift());if(!u.paused){if(h)return u.emit("end");f=!0,t(null,(function e(n,i){f=!1,u.paused?(!0===n?h=n:n?u.emit("error",n):l.push(i),!0):n&&!0!==(r=n)?u.emit("error",n):(r=r||n)?u.emit("end"):(u.emit("data",i),f=!0,t(null,e))}))}}}return u.pause=function(){return u.paused=!0,u},u.resume=function(){return u.paused=!1,y(),u},u.destroy=function(){!r&&t&&t(r=!0,(function(){})),r=!0,a.length&&a.shift()(!0),u.emit("close")},u}}).call(this,r("4362"))},3136:function(e,t,r){"use strict";const{Buffer:n}=r("b639"),i=r("670f"),s=r("354e"),o=r("d183");async function a(e,t,r){const n=await a.digest(e,t,r);return s.encode(n,t,r)}a.Buffer=n,a.multihash=s,a.digest=async(e,t,r)=>{const n=a.createHash(t),i=await n(e);return r?i.slice(0,r):i},a.createHash=function(e){if(!e)throw i(new Error("hash algorithm must be specified"),"ERR_HASH_ALGORITHM_NOT_SPECIFIED");if(e=s.coerceCode(e),!a.functions[e])throw i(new Error(`multihash function '${e}' not yet supported`),"ERR_HASH_ALGORITHM_NOT_SUPPORTED");return a.functions[e]},a.functions={0:o.identity,17:o.sha1,18:o.sha2256,19:o.sha2512,20:o.sha3512,21:o.sha3384,22:o.sha3256,23:o.sha3224,24:o.shake128,25:o.shake256,26:o.keccak224,27:o.keccak256,28:o.keccak384,29:o.keccak512,34:o.murmur3128,35:o.murmur332,86:o.dblSha2256},o.addBlake(a.functions),a.validate=async(e,t)=>{const r=await a(e,s.decode(t).name);return 0===n.compare(t,r)},e.exports=a},3156:function(e,t,r){r("a4d3"),r("99af"),r("4de4"),r("4160"),r("e439"),r("b64b"),r("159b");var n=r("9523");function i(e){for(var t=1;t>>t^e<<32-t}var a=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),c=new Uint8Array([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0]),u=new Uint32Array(16),l=new Uint32Array(16);function h(e,t){var r=0;for(r=0;r<8;r++)u[r]=e.h[r],u[r+8]=a[r];for(u[12]^=e.t,u[13]^=e.t/4294967296,t&&(u[14]=~u[14]),r=0;r<16;r++)l[r]=i(e.b,4*r);for(r=0;r<10;r++)s(0,4,8,12,l[c[16*r+0]],l[c[16*r+1]]),s(1,5,9,13,l[c[16*r+2]],l[c[16*r+3]]),s(2,6,10,14,l[c[16*r+4]],l[c[16*r+5]]),s(3,7,11,15,l[c[16*r+6]],l[c[16*r+7]]),s(0,5,10,15,l[c[16*r+8]],l[c[16*r+9]]),s(1,6,11,12,l[c[16*r+10]],l[c[16*r+11]]),s(2,7,8,13,l[c[16*r+12]],l[c[16*r+13]]),s(3,4,9,14,l[c[16*r+14]],l[c[16*r+15]]);for(r=0;r<8;r++)e.h[r]^=u[r]^u[r+8]}function f(e,t){if(!(e>0&&e<=32))throw new Error("Incorrect output length, should be in [1, 32]");var r=t?t.length:0;if(t&&!(r>0&&r<=32))throw new Error("Incorrect key length, should be in [1, 32]");var n={h:new Uint32Array(a),b:new Uint32Array(64),c:0,t:0,outlen:e};return n.h[0]^=16842752^r<<8^e,r>0&&(d(n,t),n.c=64),n}function d(e,t){for(var r=0;r>2]>>8*(3&r)&255;return t}function y(e,t,r){r=r||32,e=n.normalizeInput(e);var i=f(r,t);return d(i,e),p(i)}function g(e,t,r){var i=y(e,t,r);return n.toHex(i)}e.exports={blake2s:y,blake2sHex:g,blake2sInit:f,blake2sUpdate:d,blake2sFinal:p}},"31a0":function(e,t,r){(function(t,n,i){var s=r("5995"),o=r("3bdc"),a=e.exports=s.util=s.util||{};function c(e){if(8!==e&&16!==e&&24!==e&&32!==e)throw new Error("Only 8, 16, 24, or 32 bits supported: "+e)}function u(e){if(this.data="",this.read=0,"string"===typeof e)this.data=e;else if(a.isArrayBuffer(e)||a.isArrayBufferView(e))if("undefined"!==typeof i&&e instanceof i)this.data=e.toString("binary");else{var t=new Uint8Array(e);try{this.data=String.fromCharCode.apply(null,t)}catch(n){for(var r=0;r15?(i=Date.now(),c(e)):(r.push(e),1===r.length&&o.setAttribute("a",s=!s))}}a.nextTick=a.setImmediate})(),a.isNodejs="undefined"!==typeof t&&t.versions&&t.versions.node,a.globalScope=function(){return a.isNodejs?n:"undefined"===typeof self?window:self}(),a.isArray=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},a.isArrayBuffer=function(e){return"undefined"!==typeof ArrayBuffer&&e instanceof ArrayBuffer},a.isArrayBufferView=function(e){return e&&a.isArrayBuffer(e.buffer)&&void 0!==e.byteLength},a.ByteBuffer=u,a.ByteStringBuffer=u;var l=4096;function h(e,t){t=t||{},this.read=t.readOffset||0,this.growSize=t.growSize||1024;var r=a.isArrayBuffer(e),n=a.isArrayBufferView(e);if(r||n)return this.data=r?new DataView(e):new DataView(e.buffer,e.byteOffset,e.byteLength),void(this.write="writeOffset"in t?t.writeOffset:this.data.byteLength);this.data=new DataView(new ArrayBuffer(0)),this.write=0,null!==e&&void 0!==e&&this.putBytes(e),"writeOffset"in t&&(this.write=t.writeOffset)}a.ByteStringBuffer.prototype._optimizeConstructedString=function(e){this._constructedStringLength+=e,this._constructedStringLength>l&&(this.data.substr(0,1),this._constructedStringLength=0)},a.ByteStringBuffer.prototype.length=function(){return this.data.length-this.read},a.ByteStringBuffer.prototype.isEmpty=function(){return this.length()<=0},a.ByteStringBuffer.prototype.putByte=function(e){return this.putBytes(String.fromCharCode(e))},a.ByteStringBuffer.prototype.fillWithByte=function(e,t){e=String.fromCharCode(e);var r=this.data;while(t>0)1&t&&(r+=e),t>>>=1,t>0&&(e+=e);return this.data=r,this._optimizeConstructedString(t),this},a.ByteStringBuffer.prototype.putBytes=function(e){return this.data+=e,this._optimizeConstructedString(e.length),this},a.ByteStringBuffer.prototype.putString=function(e){return this.putBytes(a.encodeUtf8(e))},a.ByteStringBuffer.prototype.putInt16=function(e){return this.putBytes(String.fromCharCode(e>>8&255)+String.fromCharCode(255&e))},a.ByteStringBuffer.prototype.putInt24=function(e){return this.putBytes(String.fromCharCode(e>>16&255)+String.fromCharCode(e>>8&255)+String.fromCharCode(255&e))},a.ByteStringBuffer.prototype.putInt32=function(e){return this.putBytes(String.fromCharCode(e>>24&255)+String.fromCharCode(e>>16&255)+String.fromCharCode(e>>8&255)+String.fromCharCode(255&e))},a.ByteStringBuffer.prototype.putInt16Le=function(e){return this.putBytes(String.fromCharCode(255&e)+String.fromCharCode(e>>8&255))},a.ByteStringBuffer.prototype.putInt24Le=function(e){return this.putBytes(String.fromCharCode(255&e)+String.fromCharCode(e>>8&255)+String.fromCharCode(e>>16&255))},a.ByteStringBuffer.prototype.putInt32Le=function(e){return this.putBytes(String.fromCharCode(255&e)+String.fromCharCode(e>>8&255)+String.fromCharCode(e>>16&255)+String.fromCharCode(e>>24&255))},a.ByteStringBuffer.prototype.putInt=function(e,t){c(t);var r="";do{t-=8,r+=String.fromCharCode(e>>t&255)}while(t>0);return this.putBytes(r)},a.ByteStringBuffer.prototype.putSignedInt=function(e,t){return e<0&&(e+=2<0);return t},a.ByteStringBuffer.prototype.getSignedInt=function(e){var t=this.getInt(e),r=2<=r&&(t-=r<<1),t},a.ByteStringBuffer.prototype.getBytes=function(e){var t;return e?(e=Math.min(this.length(),e),t=this.data.slice(this.read,this.read+e),this.read+=e):0===e?t="":(t=0===this.read?this.data:this.data.slice(this.read),this.clear()),t},a.ByteStringBuffer.prototype.bytes=function(e){return"undefined"===typeof e?this.data.slice(this.read):this.data.slice(this.read,this.read+e)},a.ByteStringBuffer.prototype.at=function(e){return this.data.charCodeAt(this.read+e)},a.ByteStringBuffer.prototype.setAt=function(e,t){return this.data=this.data.substr(0,this.read+e)+String.fromCharCode(t)+this.data.substr(this.read+e+1),this},a.ByteStringBuffer.prototype.last=function(){return this.data.charCodeAt(this.data.length-1)},a.ByteStringBuffer.prototype.copy=function(){var e=a.createBuffer(this.data);return e.read=this.read,e},a.ByteStringBuffer.prototype.compact=function(){return this.read>0&&(this.data=this.data.slice(this.read),this.read=0),this},a.ByteStringBuffer.prototype.clear=function(){return this.data="",this.read=0,this},a.ByteStringBuffer.prototype.truncate=function(e){var t=Math.max(0,this.length()-e);return this.data=this.data.substr(this.read,t),this.read=0,this},a.ByteStringBuffer.prototype.toHex=function(){for(var e="",t=this.read;t=e)return this;t=Math.max(t||this.growSize,e);var r=new Uint8Array(this.data.buffer,this.data.byteOffset,this.data.byteLength),n=new Uint8Array(this.length()+t);return n.set(r),this.data=new DataView(n.buffer),this},a.DataBuffer.prototype.putByte=function(e){return this.accommodate(1),this.data.setUint8(this.write++,e),this},a.DataBuffer.prototype.fillWithByte=function(e,t){this.accommodate(t);for(var r=0;r>8&65535),this.data.setInt8(this.write,e>>16&255),this.write+=3,this},a.DataBuffer.prototype.putInt32=function(e){return this.accommodate(4),this.data.setInt32(this.write,e),this.write+=4,this},a.DataBuffer.prototype.putInt16Le=function(e){return this.accommodate(2),this.data.setInt16(this.write,e,!0),this.write+=2,this},a.DataBuffer.prototype.putInt24Le=function(e){return this.accommodate(3),this.data.setInt8(this.write,e>>16&255),this.data.setInt16(this.write,e>>8&65535,!0),this.write+=3,this},a.DataBuffer.prototype.putInt32Le=function(e){return this.accommodate(4),this.data.setInt32(this.write,e,!0),this.write+=4,this},a.DataBuffer.prototype.putInt=function(e,t){c(t),this.accommodate(t/8);do{t-=8,this.data.setInt8(this.write++,e>>t&255)}while(t>0);return this},a.DataBuffer.prototype.putSignedInt=function(e,t){return c(t),this.accommodate(t/8),e<0&&(e+=2<0);return t},a.DataBuffer.prototype.getSignedInt=function(e){var t=this.getInt(e),r=2<=r&&(t-=r<<1),t},a.DataBuffer.prototype.getBytes=function(e){var t;return e?(e=Math.min(this.length(),e),t=this.data.slice(this.read,this.read+e),this.read+=e):0===e?t="":(t=0===this.read?this.data:this.data.slice(this.read),this.clear()),t},a.DataBuffer.prototype.bytes=function(e){return"undefined"===typeof e?this.data.slice(this.read):this.data.slice(this.read,this.read+e)},a.DataBuffer.prototype.at=function(e){return this.data.getUint8(this.read+e)},a.DataBuffer.prototype.setAt=function(e,t){return this.data.setUint8(e,t),this},a.DataBuffer.prototype.last=function(){return this.data.getUint8(this.write-1)},a.DataBuffer.prototype.copy=function(){return new a.DataBuffer(this)},a.DataBuffer.prototype.compact=function(){if(this.read>0){var e=new Uint8Array(this.data.buffer,this.read),t=new Uint8Array(e.byteLength);t.set(e),this.data=new DataView(t),this.write-=this.read,this.read=0}return this},a.DataBuffer.prototype.clear=function(){return this.data=new DataView(new ArrayBuffer(0)),this.read=this.write=0,this},a.DataBuffer.prototype.truncate=function(e){return this.write=Math.max(0,this.length()-e),this.read=Math.min(this.read,this.write),this},a.DataBuffer.prototype.toHex=function(){for(var e="",t=this.read;t0)1&t&&(r+=e),t>>>=1,t>0&&(e+=e);return r},a.xorBytes=function(e,t,r){for(var n="",i="",s="",o=0,a=0;r>0;--r,++o)i=e.charCodeAt(o)^t.charCodeAt(o),a>=10&&(n+=s,s="",a=0),s+=String.fromCharCode(i),++a;return n+=s,n},a.hexToBytes=function(e){var t="",r=0;for(!0&e.length&&(r=1,t+=String.fromCharCode(parseInt(e[0],16)));r>24&255)+String.fromCharCode(e>>16&255)+String.fromCharCode(e>>8&255)+String.fromCharCode(255&e)};var f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",d=[62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,64,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],p="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";a.encode64=function(e,t){var r,n,i,s="",o="",a=0;while(a>2),s+=f.charAt((3&r)<<4|n>>4),isNaN(n)?s+="==":(s+=f.charAt((15&n)<<2|i>>6),s+=isNaN(i)?"=":f.charAt(63&i)),t&&s.length>t&&(o+=s.substr(0,t)+"\r\n",s=s.substr(t));return o+=s,o},a.decode64=function(e){e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");var t,r,n,i,s="",o=0;while(o>4),64!==n&&(s+=String.fromCharCode((15&r)<<4|n>>2),64!==i&&(s+=String.fromCharCode((3&n)<<6|i)));return s},a.encodeUtf8=function(e){return unescape(encodeURIComponent(e))},a.decodeUtf8=function(e){return decodeURIComponent(escape(e))},a.binary={raw:{},hex:{},base64:{},base58:{},baseN:{encode:o.encode,decode:o.decode}},a.binary.raw.encode=function(e){return String.fromCharCode.apply(null,e)},a.binary.raw.decode=function(e,t,r){var n=t;n||(n=new Uint8Array(e.length)),r=r||0;for(var i=r,s=0;s>2),s+=f.charAt((3&r)<<4|n>>4),isNaN(n)?s+="==":(s+=f.charAt((15&n)<<2|i>>6),s+=isNaN(i)?"=":f.charAt(63&i)),t&&s.length>t&&(o+=s.substr(0,t)+"\r\n",s=s.substr(t));return o+=s,o},a.binary.base64.decode=function(e,t,r){var n,i,s,o,a=t;a||(a=new Uint8Array(3*Math.ceil(e.length/4))),e=e.replace(/[^A-Za-z0-9\+\/\=]/g,""),r=r||0;var c=0,u=r;while(c>4,64!==s&&(a[u++]=(15&i)<<4|s>>2,64!==o&&(a[u++]=(3&s)<<6|o));return t?u-r:a.subarray(0,u)},a.binary.base58.encode=function(e,t){return a.binary.baseN.encode(e,p,t)},a.binary.base58.decode=function(e,t){return a.binary.baseN.decode(e,p,t)},a.text={utf8:{},utf16:{}},a.text.utf8.encode=function(e,t,r){e=a.encodeUtf8(e);var n=t;n||(n=new Uint8Array(e.length)),r=r||0;for(var i=r,s=0;s0?(i=r[n].substring(0,o),s=r[n].substring(o+1)):(i=r[n],s=null),i in t||(t[i]=[]),i in Object.prototype||null===s||t[i].push(unescape(s))}return t};return"undefined"===typeof e?(null===E&&(E="undefined"!==typeof window&&window.location&&window.location.search?r(window.location.search.substring(1)):{}),t=E):t=r(e),t},a.parseFragment=function(e){var t=e,r="",n=e.indexOf("?");n>0&&(t=e.substring(0,n),r=e.substring(n+1));var i=t.split("/");i.length>0&&""===i[0]&&i.shift();var s=""===r?{}:a.getQueryVariables(r);return{pathString:t,queryString:r,path:i,query:s}},a.makeRequest=function(e){var t=a.parseFragment(e),r={path:t.pathString,query:t.queryString,getPath:function(e){return"undefined"===typeof e?t.path:t.path[e]},getQuery:function(e,r){var n;return"undefined"===typeof e?n=t.query:(n=t.query[e],n&&"undefined"!==typeof r&&(n=n[r])),n},getQueryLast:function(e,t){var n,i=r.getQuery(e);return n=i?i[i.length-1]:t,n}};return r},a.makeLink=function(e,t,r){e=jQuery.isArray(e)?e.join("/"):e;var n=jQuery.param(t||{});return r=r||"",e+(n.length>0?"?"+n:"")+(r.length>0?"#"+r:"")},a.setPath=function(e,t,r){if("object"===typeof e&&null!==e){var n=0,i=t.length;while(n0&&s.push(r),o=n.lastIndex;var a=t[0][1];switch(a){case"s":case"o":i");break;case"%":s.push("%");break;default:s.push("<%"+a+"?>")}}return s.push(e.substring(o)),s.join("")},a.formatNumber=function(e,t,r,n){var i=e,s=isNaN(t=Math.abs(t))?2:t,o=void 0===r?",":r,a=void 0===n?".":n,c=i<0?"-":"",u=parseInt(i=Math.abs(+i||0).toFixed(s),10)+"",l=u.length>3?u.length%3:0;return c+(l?u.substr(0,l)+a:"")+u.substr(l).replace(/(\d{3})(?=\d)/g,"$1"+a)+(s?o+Math.abs(i-u).toFixed(s).slice(2):"")},a.formatSize=function(e){return e=e>=1073741824?a.formatNumber(e/1073741824,2,".","")+" GiB":e>=1048576?a.formatNumber(e/1048576,2,".","")+" MiB":e>=1024?a.formatNumber(e/1024,0)+" KiB":a.formatNumber(e,0)+" bytes",e},a.bytesFromIP=function(e){return-1!==e.indexOf(".")?a.bytesFromIPv4(e):-1!==e.indexOf(":")?a.bytesFromIPv6(e):null},a.bytesFromIPv4=function(e){if(e=e.split("."),4!==e.length)return null;for(var t=a.createBuffer(),r=0;rr[n].end-r[n].start&&(n=r.length-1)):r.push({start:c,end:c})}t.push(s)}if(r.length>0){var u=r[n];u.end-u.start>0&&(t.splice(u.start,u.end-u.start+1,""),0===u.start&&t.unshift(""),7===u.end&&t.push(""))}return t.join(":")},a.estimateCores=function(e,t){if("function"===typeof e&&(t=e,e={}),e=e||{},"cores"in a&&!e.update)return t(null,a.cores);if("undefined"!==typeof navigator&&"hardwareConcurrency"in navigator&&navigator.hardwareConcurrency>0)return a.cores=navigator.hardwareConcurrency,t(null,a.cores);if("undefined"===typeof Worker)return a.cores=1,t(null,a.cores);if("undefined"===typeof Blob)return a.cores=2,t(null,a.cores);var r=URL.createObjectURL(new Blob(["(",function(){self.addEventListener("message",(function(e){var t=Date.now(),r=t+4;while(Date.now()a.st&&i.sti.st&&a.st(e=e||new Error("Cannot open database"),n(e,"ERR_DB_OPEN_FAILED")),e.exports.dbDeleteFailedError=e=>(e=e||new Error("Delete failed"),n(e,"ERR_DB_DELETE_FAILED")),e.exports.dbWriteFailedError=e=>(e=e||new Error("Write failed"),n(e,"ERR_DB_WRITE_FAILED")),e.exports.notFoundError=e=>(e=e||new Error("Not Found"),n(e,"ERR_NOT_FOUND"))},3267:function(e,t,r){"use strict";const n=r("fa4d"),i=r("2644"),s=r("1421"),o=r("b1aa"),a=r("8911");e.exports=e=>n((t,r,n)=>{"function"!==typeof r||n||(n=r,r={}),"function"===typeof r&&"function"===typeof n&&(n=r,r={});const c=(e,t)=>{Array.isArray(e)||(e=[e]);let r=[];e.forEach(e=>{4===e.Type&&e.Responses.forEach(e=>{const t=new a(o.createFromB58String(e.ID));e.Addrs&&e.Addrs.forEach(e=>{const r=s(e);t.multiaddrs.add(r)}),r.push(t)})}),t(null,r)};e({path:"dht/findprovs",args:t.toString(),qs:r},(e,t)=>{if(e)return n(e);i(t,c,n)})})},"326a":function(e,t,r){"use strict";const n=r("4bc2"),i=r("7048"),s=r("09a4"),o=r("6158"),a=n("ipfs:name-pubsub");a.error=n("ipfs:name-pubsub:error");const c=e=>{try{return Boolean(u(e))}catch(t){return!1}},u=e=>{if(!e._ipns||!e._options.EXPERIMENTAL.ipnsPubsub)throw i(new Error("IPNS pubsub subsystem is not enabled"),"ERR_IPNS_PUBSUB_NOT_ENABLED");if(o.isIpnsPubsubDatastore(e._ipns.routing))return e._ipns.routing;const t=(e._ipns.routing.stores||[]).find(e=>o.isIpnsPubsubDatastore(e));if(!t)throw i(new Error("IPNS pubsub datastore not found"),"ERR_PUBSUB_DATASTORE_NOT_FOUND");return t};e.exports=function(e){return{state:s(async()=>({enabled:c(e)})),cancel:s(async t=>{const r=u(e);return r.cancel(t)}),subs:s(async()=>{const t=u(e);return t.getSubscriptions()})}}},3276:function(e,t,r){"use strict";e.exports="\n// topicCID = cid(merkledag_protobuf(topicDescriptor)); (not the topic.name)\nmessage TopicDescriptor {\n optional string name = 1;\n optional AuthOpts auth = 2;\n optional EncOpts enc = 2;\n\n message AuthOpts {\n optional AuthMode mode = 1;\n repeated bytes keys = 2; // root keys to trust\n\n enum AuthMode {\n NONE = 0; // no authentication, anyone can publish\n KEY = 1; // only messages signed by keys in the topic descriptor are accepted\n WOT = 2; // web of trust, certificates can allow publisher set to grow\n }\n }\n\n message EncOpts {\n optional EncMode mode = 1;\n repeated bytes keyHashes = 2; // the hashes of the shared keys used (salted)\n\n enum EncMode {\n NONE = 0; // no encryption, anyone can read\n SHAREDKEY = 1; // messages are encrypted with shared key\n WOT = 2; // web of trust, certificates can allow publisher set to grow\n }\n }\n}"},"32c0":function(e,t){function r(){var e,t=new Promise((function(t,r){e=function(e,n){e?r(e):t(n)}}));return e.promise=t,e}e.exports=r},"334b":function(e,t,r){"use strict";(function(n){const i=r("c449"),s=r("f654"),o=r("ec12"),a=r("41fe");class c{constructor(e,t,r){s(r,"A link requires a cid to point to"),this._name=e||"",this._nameBuf=null,this._size=t,this._cid=new i(r),a.hidePrivateFields(this),a.addEnumerableGetters(this,["Hash","Name","Tsize"])}toString(){return`DAGLink <${this._cid.toBaseEncodedString()} - name: "${this.Name}", size: ${this.Tsize}>`}toJSON(){return this._json||(this._json=Object.freeze({name:this.Name,size:this.Tsize,cid:this.Hash.toBaseEncodedString()})),Object.assign({},this._json)}get Name(){return this._name}get nameAsBuffer(){return null!==this._nameBuf?this._nameBuf:(this._nameBuf=n.from(this._name),this._nameBuf)}set Name(e){throw new Error("Can't set property: 'name' is immutable")}get Tsize(){return this._size}set Tsize(e){throw new Error("Can't set property: 'size' is immutable")}get Hash(){return this._cid}set Hash(e){throw new Error("Can't set property: 'cid' is immutable")}}t=e.exports=o(c,{className:"DAGLink",symbolName:"@ipld/js-ipld-dag-pb/daglink"}),t.util=r("1cd4")}).call(this,r("b639").Buffer)},3387:function(e,t,r){var n=r("7a03"),i="__lodash_hash_undefined__",s=Object.prototype,o=s.hasOwnProperty;function a(e){var t=this.__data__;if(n){var r=t[e];return r===i?void 0:r}return o.call(t,e)?t[e]:void 0}e.exports=a},"33ae":function(e,t,r){"use strict";const n=r("73b5"),i=r("c591"),s=r("4bc2"),o=r("0b0f"),a=r("449a"),c=r("50b0"),u=s("pull-plex");function l(e,t){const r=new a(!t),s=n();i(e,r,s,e);const o=new c(e,r);return o.once("error",e=>{u.err("got error",e),s.abort(e)}),o.on("close",()=>{u("closing muxer"),s.abort()}),o}u.err=s("pull-plex:err"),t=e.exports=l,t.pullMplex=a,t.multicodec=o,t.dialer=e=>l(e,!1),t.listener=e=>l(e,!0)},"33b3":function(e,t,r){"use strict";function n(e){return e}var i=r("64f1"),s=r("90de");e.exports=function(e,t){var r=!1;return t?e=i(e)||n:(t=e,e=n),s((function(n){if(e(n))return r=!0,t(null,n),!1}),(function(e){r||t(!0===e?null:e,null)}))}},"33d8":function(e,t,r){"use strict";e.exports={}},"33fc":function(e,t,r){"use strict";e.exports=function e(t){var r=arguments.length;if("function"===typeof t&&1===t.length){for(var n=new Array(r),i=0;ii[r?e[r]:e]=!0;e.forEach(s);var o=(e,t)=>{var s=void 0!==i[r?t[r]:t],o=void 0!==n[r?t[r]:t];return s||o||(e.push(t),n[r?t[r]:t]=!0),e};return t.reduce(o,[])}e.exports=n},"34c0":function(e,t,r){var n=r("1514");e.exports=function(e,t,r){var i=-1,s=[],o=r?t.length:0;while((i=n(e,t))>-1)s.push(e.slice(0,i+o)),e=e.slice(i+t.length,e.length);return s.push(e),s}},"34eb":function(e,t,r){(function(n){function i(){return!("undefined"===typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"===typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!==typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!==typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!==typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!==typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))}function s(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const r="color: "+this.color;t.splice(1,0,r,"color: inherit");let n=0,i=0;t[0].replace(/%[a-zA-Z%]/g,e=>{"%%"!==e&&(n++,"%c"===e&&(i=n))}),t.splice(i,0,r)}function o(...e){return"object"===typeof console&&console.log&&console.log(...e)}function a(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(r){}}function c(){let e;try{e=t.storage.getItem("debug")}catch(r){}return!e&&"undefined"!==typeof n&&"env"in n&&(e=Object({NODE_ENV:"production",BASE_URL:"/"}).DEBUG),e}function u(){try{return localStorage}catch(e){}}t.log=o,t.formatArgs=s,t.save=a,t.load=c,t.useColors=i,t.storage=u(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],e.exports=r("dc90")(t);const{formatters:l}=e.exports;l.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}}).call(this,r("4362"))},3524:function(e,t,r){var{relative:n}=r("e2a8"),i={http:"ws",https:"wss"},s="ws";e.exports=function(e,t){return n(e,t,i,s)}},"354e":function(e,t,r){"use strict";(function(e){const n=r("0774"),i=r("479a");t.names=i.names,t.codes=i.codes,t.defaultLengths=i.defaultLengths;const s=r("2612");function o(e){t.decode(e)}t.toHexString=function(t){if(!e.isBuffer(t))throw new Error("must be passed a buffer");return t.toString("hex")},t.fromHexString=function(t){return e.from(t,"hex")},t.toB58String=function(t){if(!e.isBuffer(t))throw new Error("must be passed a buffer");return n.encode(t)},t.fromB58String=function(t){let r=t;return e.isBuffer(t)&&(r=t.toString()),e.from(n.decode(r))},t.decode=function(r){if(!e.isBuffer(r))throw new Error("multihash must be a Buffer");if(r.length<3)throw new Error("multihash too short. must be > 3 bytes.");const n=s.decode(r);if(!t.isValidCode(n))throw new Error(`multihash unknown function code: 0x${n.toString(16)}`);r=r.slice(s.decode.bytes);const o=s.decode(r);if(o<1)throw new Error(`multihash invalid length: 0x${o.toString(16)}`);if(r=r.slice(s.decode.bytes),r.length!==o)throw new Error(`multihash length inconsistent: 0x${r.toString("hex")}`);return{code:n,name:i.codes[n],length:o,digest:r}},t.encode=function(r,n,i){if(!r||void 0===n)throw new Error("multihash encode requires at least two args: digest, code");const o=t.coerceCode(n);if(!e.isBuffer(r))throw new Error("digest should be a Buffer");if(null==i&&(i=r.length),i&&r.length!==i)throw new Error("digest length should be equal to specified length.");return e.concat([e.from(s.encode(o)),e.from(s.encode(i)),r])},t.coerceCode=function(e){let r=e;if("string"===typeof e){if(void 0===i.names[e])throw new Error(`Unrecognized hash function named: ${e}`);r=i.names[e]}if("number"!==typeof r)throw new Error(`Hash function code should be a number. Got: ${r}`);if(void 0===i.codes[r]&&!t.isAppCode(r))throw new Error(`Unrecognized function code: ${r}`);return r},t.isAppCode=function(e){return e>0&&e<16},t.isValidCode=function(e){return!!t.isAppCode(e)||!!i.codes[e]},t.validate=o,t.prefix=function(e){return o(e),e.slice(0,2)}}).call(this,r("b639").Buffer)},3554:function(e,t,r){"use strict";e.exports=e=>{if("[object Object]"!==Object.prototype.toString.call(e))return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.getPrototypeOf({})}},3580:function(e,t,r){"use strict";const n=r("fb92").Key,i=r("fb92").Errors,s=r("fb92").utils,o=s.filter,a=s.take,c=s.sortAll,u=s.replaceStartWith,l=r("6429");class h{constructor(e){this.mounts=e.slice()}open(){return Promise.all(this.mounts.map(e=>e.datastore.open()))}_lookup(e){for(let t of this.mounts)if(t.prefix.toString()===e.toString()||t.prefix.isAncestorOf(e)){const r=u(e.toString(),t.prefix.toString());return{datastore:t.datastore,mountpoint:t.prefix,rest:new n(r)}}}put(e,t){const r=this._lookup(e);if(null==r)throw i.dbWriteFailedError(new Error("No datastore mounted for this key"));return r.datastore.put(r.rest,t)}get(e){const t=this._lookup(e);if(null==t)throw i.notFoundError(new Error("No datastore mounted for this key"));return t.datastore.get(t.rest)}has(e){const t=this._lookup(e);return null!=t&&t.datastore.has(t.rest)}delete(e){const t=this._lookup(e);if(null==t)throw i.dbDeleteFailedError(new Error("No datastore mounted for this key"));return t.datastore.delete(t.rest)}close(){return Promise.all(this.mounts.map(e=>e.datastore.close()))}batch(){const e={},t=t=>{const r=this._lookup(t);if(null==r)throw new Error("No datastore mounted for this key");const n=r.mountpoint.toString();return null==e[n]&&(e[n]=r.datastore.batch()),{batch:e[n],rest:r.rest}};return{put:(e,r)=>{const n=t(e);n.batch.put(n.rest,r)},delete:e=>{const r=t(e);r.batch.delete(r.rest)},commit:()=>Promise.all(Object.keys(e).map(t=>e[t].commit()))}}query(e){const t=this.mounts.map(t=>{const r=new l(t.datastore,{convert:e=>{throw new Error("should never be called")},invert:e=>t.prefix.child(e)});let n;return null!=e.prefix&&(n=u(e.prefix,t.prefix.toString())),r.query({prefix:n,filters:e.filters,keysOnly:e.keysOnly})});let r=f(t);if(e.filters&&e.filters.forEach(e=>{r=o(r,e)}),e.orders&&e.orders.forEach(e=>{r=c(r,e)}),null!=e.offset){let t=0;r=o(r,()=>t++>=e.offset)}return null!=e.limit&&(r=a(r,e.limit)),r}}function f(e){return async function*(){let t=e.map(()=>!1);while(!t.every(Boolean))for(const[r,n]of e.entries()){const e=await n.next();e.done?t[r]=!0:yield e.value}}()}e.exports=h},"363c":function(e,t,r){"use strict";const n=r("80f8");e.exports=function(e){return function(t,r){return n.readable(async function*(){for await(const i of e._getAsyncIterator(t,r))i.content&&(i.content=n.readable(i.content())),yield i}(),{objectMode:!0})}}},3676:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=c;var n=r("c1cd"),i=a(n),s=r("76bf"),o=a(s);function a(e){return e&&e.__esModule?e:{default:e}}function c(e,t,r,n){n=n||i.default,t=t||[];var s=[],a=0,c=(0,o.default)(r);e(t,(function(e,t,r){var n=a++;c(e,(function(e,t){s[n]=t,r(e)}))}),(function(e){n(e,s)}))}e.exports=t["default"]},"36a2":function(e,t,r){"use strict";(function(t){const n=r("b1aa"),i=r("4bb2"),s=r("09a4"),o=r("fa4d"),a=r("708c"),c=r("a818"),{DAGNode:u}=r("c75d"),l=r("2091e"),h=r("0c9a"),f=r("467e"),d=r("20ba"),p=r(15),{profiles:y}=r("94f7");function g(e,r){return r.privateKey?(e.log("using user-supplied private-key"),"object"===typeof r.privateKey?r.privateKey:o(n.createFromPrivKey)(t.from(r.privateKey,"base64"))):(r.log(`generating ${r.bits}-bit RSA keypair...`,!1),e.log("generating peer id: %s bits",r.bits),o(n.create)({bits:r.bits}))}async function m(e,t){if("uninitialized"!==e.state.state())throw new Error("Not able to init from state: "+e.state.state());if(e.state.init(),e.log("init"),t.repo)return void(e._repo=t.repo);t.emptyRepo=t.emptyRepo||!1,t.bits=Number(t.bits)||2048,t.log=t.log||function(){};const r=i(a(),e._options.config);v(e,r,t);const n=await e._repo.exists();if(e.log("repo exists?",n),!0===n)throw Error("repo already exists");const s=await g(e,t);e.log("identity generated"),r.Identity={PeerID:s.toB58String(),PrivKey:s.privKey.bytes.toString("base64")};const o=s.privKey;if(t.pass&&(r.Keychain=c.generateOptions()),t.log("done"),t.log("peer identity: "+r.Identity.PeerID),await e._repo.init(r),await e._repo.open(),e.log("repo opened"),t.pass){e.log("creating keychain");const n=Object.assign({passPhrase:t.pass},r.Keychain);e._keychain=new c(e._repo.keys,n),await e._keychain.importPeer("self",{privKey:o})}const u=new d(e._repo);return e._ipns=new f(u,e._repo.datastore,e._peerInfo,e._keychain,e._options),b(e,o,t)}async function b(e,t,r){if(r.emptyRepo)return;e.log("adding assets");const n=new u(new l("directory").marshal()),i=await e.dag.put(n,{version:0,format:h.DAG_PB,hashAlg:h.SHA2_256,preload:!1});return await e._ipns.initializeKeyspace(t,i.toBaseEncodedString()),e.log("Initialised keyspace"),"function"===typeof p?(e.log("Adding default assets"),p(e,r.log)):void 0}function v(e,t,r){if(r.profiles)for(const n of r.profiles){const r=y[n];if(!r)throw new Error(`Could not find profile with name '${n}'`);e.log(`applying profile ${n}`),r.transform(t)}}e.exports=function(e){return s.variadic(async t=>{t=t||{},await m(e,t),e.log("Created repo"),await e.preStart(),e.log("Done pre-start"),e.state.initialized(),e.emit("init")})}}).call(this,r("b639").Buffer)},"36c6":function(e,t,r){function n(t){return e.exports=n=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},n(t)}r("3410"),r("131a"),e.exports=n},3709:function(e,t,r){(function(t){function r(e){if("object"!==typeof e||null===e)throw new TypeError("First argument must be an abstract-leveldown compliant store");this.db=e,this._ended=!1,this._nexting=!1}r.prototype.next=function(e){var r=this;if("function"!==typeof e)throw new Error("next() requires a callback argument");return r._ended?(t.nextTick(e,new Error("cannot call next() after end()")),r):r._nexting?(t.nextTick(e,new Error("cannot call next() before previous next() has completed")),r):(r._nexting=!0,r._next((function(){r._nexting=!1,e.apply(null,arguments)})),r)},r.prototype._next=function(e){t.nextTick(e)},r.prototype.seek=function(e){if(this._ended)throw new Error("cannot call seek() after end()");if(this._nexting)throw new Error("cannot call seek() before next() has completed");e=this.db._serializeKey(e),this._seek(e)},r.prototype._seek=function(e){},r.prototype.end=function(e){if("function"!==typeof e)throw new Error("end() requires a callback argument");if(this._ended)return t.nextTick(e,new Error("end() already called on iterator"));this._ended=!0,this._end(e)},r.prototype._end=function(e){t.nextTick(e)},e.exports=r}).call(this,r("4362"))},"371e":function(e,t,r){"use strict";var n=r("4ea4"),i=n(r("a34a")),s=n(r("c973")),o=r("aaed"),a=o.fetchText,c=o.getMessageConsent,u=r("a886"),l=r("288a"),h=l.verifyMessage,f=r("b3ec"),d=r("aaed"),p=r("972c");r("b37b")["default"](),r("0397")();var y=f.profile_server_url,g=function(e){return{dag:{get:function(){var t=(0,s["default"])(i["default"].mark((function t(r){var n;return i["default"].wrap((function(t){while(1)switch(t.prev=t.next){case 0:return n="".concat(e,"/did-doc?cid=").concat(encodeURIComponent(r)),t.abrupt("return",d.fetchJson(n));case 2:case"end":return t.stop()}}),t)})));function r(e){return t.apply(this,arguments)}return r}()}}};p(g(y),{pin:!1}),e.exports={verifyGithub:function(){var e=(0,s["default"])(i["default"].mark((function e(t,r){var n,s,o,c;return i["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(n="string"===typeof t?[t]:t,r&&""!==r.trim()){e.next=3;break}return e.abrupt("return",null);case 3:return e.next=5,a(r);case 5:if(s=e.sent,o=n.reduce((function(e,t){return e||-1!==s.indexOf(t)}),!1),o){e.next=9;break}throw new Error("Gist File provided does not contain the correct DID of the user");case 9:return c=r.split("/")[3],e.abrupt("return",{username:c,proof:r});case 11:case"end":return e.stop()}}),e)})));function t(t,r){return e.apply(this,arguments)}return t}(),verifyTwitter:function(){var e=(0,s["default"])(i["default"].mark((function e(t,r){var n,s,o;return i["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(n="string"===typeof t?[t]:t,r){e.next=3;break}return e.abrupt("return",null);case 3:return e.next=5,u.verifyJWT(r);case 5:if(s=e.sent,n.includes(s.payload.sub)){e.next=8;break}throw new Error("Verification not valid for given user");case 8:if(o=s.payload.claim,o.twitter_handle&&o.twitter_proof){e.next=11;break}throw new Error("The claim for your twitter is not correct");case 11:return e.abrupt("return",{username:o.twitter_handle,proof:o.twitter_proof,verifiedBy:s.payload.iss});case 12:case"end":return e.stop()}}),e)})));function t(t,r){return e.apply(this,arguments)}return t}(),verifyEmail:function(){var e=(0,s["default"])(i["default"].mark((function e(t,r){var n,s,o;return i["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(n="string"===typeof t?[t]:t,r){e.next=3;break}return e.abrupt("return",null);case 3:return e.next=5,u.verifyJWT(r);case 5:if(s=e.sent,n.includes(s.payload.sub)){e.next=8;break}throw new Error("Verification not valid for given user");case 8:if(o=s.payload.claim,o.email_address){e.next=11;break}throw new Error("The claim for your email address is not correct");case 11:return e.abrupt("return",{email_address:o.email_address,verifiedBy:s.payload.iss});case 12:case"end":return e.stop()}}),e)})));function t(t,r){return e.apply(this,arguments)}return t}(),verifyDID:function(){var e=(0,s["default"])(i["default"].mark((function e(t){var r,n,s,o;return i["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,u.verifyJWT(t);case 2:if(r=e.sent,n=r.payload.muport,s={},!n){e.next=10;break}return e.next=8,u.verifyJWT(n);case 8:o=e.sent.payload.iss,s.muport=o;case 10:return s.did=r.payload.iss,e.abrupt("return",s);case 12:case"end":return e.stop()}}),e)})));function t(t){return e.apply(this,arguments)}return t}(),verifyEthereum:function(){var e=(0,s["default"])(i["default"].mark((function e(t,r){var n,s,o;return i["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:if("string"===typeof r?[r]:r,n=t.version?t.message:t["consent_msg"],s=t.version?t.signature:t["consent_signature"],o=c(r),n===o){e.next=6;break}throw new Error('Invalid consent message, got: "'.concat(n,'", expected: "').concat(o,'"'));case 6:return e.abrupt("return",h(n,s));case 7:case"end":return e.stop()}}),e)})));function t(t,r){return e.apply(this,arguments)}return t}()}},"3768b":function(e,t,r){"use strict";const n=r("87c4"),i=r("980c2"),s=r("79ea"),o=r("d8ac");t.Key=n,t.MemoryDatastore=i,t.utils=s,t.Errors=o},3798:function(e,t,r){var n=r("918b");r("5ee0");var i=e.exports=n.pem=n.pem||{};function s(e){for(var t=e.name+": ",r=[],n=function(e,t){return" "+t},i=0;i65&&-1!==o){var a=t[o];","===a?(++o,t=t.substr(0,o)+"\r\n "+t.substr(o)):t=t.substr(0,o)+"\r\n"+a+t.substr(o+1),s=i-o-1,o=-1,++i}else" "!==t[i]&&"\t"!==t[i]&&","!==t[i]||(o=i);return t}function o(e){return e.replace(/^\s+/,"")}i.encode=function(e,t){t=t||{};var r,i="-----BEGIN "+e.type+"-----\r\n";if(e.procType&&(r={name:"Proc-Type",values:[String(e.procType.version),e.procType.type]},i+=s(r)),e.contentDomain&&(r={name:"Content-Domain",values:[e.contentDomain]},i+=s(r)),e.dekInfo&&(r={name:"DEK-Info",values:[e.dekInfo.algorithm]},e.dekInfo.parameters&&r.values.push(e.dekInfo.parameters),i+=s(r)),e.headers)for(var o=0;oasync t=>{switch(e){case"sha3-224":return n.from(i.sha3_224.arrayBuffer(t));case"sha3-256":return n.from(i.sha3_256.arrayBuffer(t));case"sha3-384":return n.from(i.sha3_384.arrayBuffer(t));case"sha3-512":return n.from(i.sha3_512.arrayBuffer(t));case"shake-128":return n.from(i.shake128.create(128).update(t).arrayBuffer());case"shake-256":return n.from(i.shake256.create(256).update(t).arrayBuffer());case"keccak-224":return n.from(i.keccak224.arrayBuffer(t));case"keccak-256":return n.from(i.keccak256.arrayBuffer(t));case"keccak-384":return n.from(i.keccak384.arrayBuffer(t));case"keccak-512":return n.from(i.keccak512.arrayBuffer(t));case"murmur3-128":return n.from(s.x64.hash128(t),"hex");case"murmur3-32":return a(s.x86.hash32(t));default:throw new TypeError(`${e} is not a supported algorithm`)}};e.exports={sha1:o("sha1"),sha2256:o("sha2-256"),sha2512:o("sha2-512"),dblSha2256:o("dbl-sha2-256"),sha3224:c("sha3-224"),sha3256:c("sha3-256"),sha3384:c("sha3-384"),sha3512:c("sha3-512"),shake128:c("shake-128"),shake256:c("shake-256"),keccak224:c("keccak-224"),keccak256:c("keccak-256"),keccak384:c("keccak-384"),keccak512:c("keccak-512"),murmur3128:c("murmur3-128"),murmur332:c("murmur3-32"),addBlake:r("ae8a")}},"37c4":function(e,t,r){"use strict";(function(t){const n=r("276f"),i=r("1e83"),s=r("9efb");function o(e){const t=[],r=e.split("/").slice(1);if(1===r.length&&""===r[0])return[];for(let n=0;n=r.length)throw w("invalid address: "+e);if(o.path){t.push([s,v(r.slice(n).join("/"))]);break}t.push([s,r[n]])}else t.push([s])}return t}function a(e){const t=[];return e.map(e=>{const r=_(e);t.push(r.name),e.length>1&&t.push(e[1])}),v(t.join("/"))}function c(e){return e.map(e=>{Array.isArray(e)||(e=[e]);const t=_(e);return e.length>1?[t.code,n.toBuffer(t.code,e[1])]:[t.code]})}function u(e){return e.map(e=>{const t=_(e);return e.length>1?[t.code,n.toString(t.code,e[1])]:[t.code]})}function l(e){return g(t.concat(e.map(e=>{const r=_(e);let n=t.from(s.encode(r.code));return e.length>1&&(n=t.concat([n,e[1]])),n})))}function h(e,t){if(e.size>0)return e.size/8;if(0===e.size)return 0;{const e=s.decode(t);return e+s.decode.bytes}}function f(e){const t=[];let r=0;while(re.length)throw w("Invalid address buffer: "+e.toString("hex"));t.push([n,u])}return t}function d(e){const t=f(e),r=u(t);return a(r)}function p(e){e=v(e);const t=o(e),r=c(t);return l(r)}function y(e){return p(e)}function g(e){const r=m(e);if(r)throw r;return t.from(e)}function m(e){try{f(e)}catch(t){return t}}function b(e){return void 0===m(e)}function v(e){return"/"+e.trim().split("/").filter(e=>e).join("/")}function w(e){return new Error("Error parsing address: "+e)}function _(e){const t=i(e[0]);return t}e.exports={stringToStringTuples:o,stringTuplesToString:a,tuplesToStringTuples:u,stringTuplesToTuples:c,bufferToTuples:f,tuplesToBuffer:l,bufferToString:d,stringToBuffer:p,fromString:y,fromBuffer:g,validateBuffer:m,isValidBuffer:b,cleanPath:v,ParseError:w,protoFromTuple:_,sizeForAddr:h}}).call(this,r("b639").Buffer)},"37dd":function(e,t,r){"use strict";const n=(e,t)=>0;e.exports=n},3814:function(e,t,r){(function(t){var n=r("918b");r("5ee0");var i=null;!n.util.isNodejs||n.options.usePureJavaScript||t.versions["node-webkit"]||(i=r(5));var s=e.exports=n.prng=n.prng||{};s.create=function(e){for(var t={plugin:e,key:null,seed:null,time:null,reseeds:0,generated:0,keyBytes:""},r=e.md,s=new Array(32),o=0;o<32;++o)s[o]=r.create();function a(e){if(t.pools[0].messageLength>=32)return u(),e();var r=32-t.pools[0].messageLength<<5;t.seedFile(r,(function(r,n){if(r)return e(r);t.collect(n),u(),e()}))}function c(){if(t.pools[0].messageLength>=32)return u();var e=32-t.pools[0].messageLength<<5;t.collect(t.seedFileSync(e)),u()}function u(){t.reseeds=4294967295===t.reseeds?0:t.reseeds+1;var e=t.plugin.md.create();e.update(t.keyBytes);for(var r=1,n=0;n<32;++n)t.reseeds%r===0&&(e.update(t.pools[n].digest().getBytes()),t.pools[n].start()),r<<=1;t.keyBytes=e.digest().getBytes(),e.start(),e.update(t.keyBytes);var i=e.digest().getBytes();t.key=t.plugin.formatKey(t.keyBytes),t.seed=t.plugin.formatSeed(i),t.generated=0}function l(e){var t=null,r=n.util.globalScope,i=r.crypto||r.msCrypto;i&&i.getRandomValues&&(t=function(e){return i.getRandomValues(e)});var s=n.util.createBuffer();if(t)while(s.length()>16),l+=(32767&u)<<16,l+=u>>15,l=(2147483647&l)+(l>>31),f=4294967295&l;for(c=0;c<3;++c)h=f>>>(c<<3),h^=Math.floor(256*Math.random()),s.putByte(String.fromCharCode(255&h))}}return s.getBytes(e)}return t.pools=s,t.pool=0,t.generate=function(e,r){if(!r)return t.generateSync(e);var i=t.plugin.cipher,s=t.plugin.increment,o=t.plugin.formatKey,c=t.plugin.formatSeed,u=n.util.createBuffer();function l(h){if(h)return r(h);if(u.length()>=e)return r(null,u.getBytes(e));if(t.generated>1048575&&(t.key=null),null===t.key)return n.util.nextTick((function(){a(l)}));var f=i(t.key,t.seed);t.generated+=f.length,u.putBytes(f),t.key=o(i(t.key,s(t.seed))),t.seed=c(i(t.key,t.seed)),n.util.setImmediate(l)}t.key=null,l()},t.generateSync=function(e){var r=t.plugin.cipher,i=t.plugin.increment,s=t.plugin.formatKey,o=t.plugin.formatSeed;t.key=null;var a=n.util.createBuffer();while(a.length()1048575&&(t.key=null),null===t.key&&c();var u=r(t.key,t.seed);t.generated+=u.length,a.putBytes(u),t.key=s(r(t.key,i(t.seed))),t.seed=o(r(t.key,t.seed))}return a.getBytes(e)},i?(t.seedFile=function(e,t){i.randomBytes(e,(function(e,r){if(e)return t(e);t(null,r.toString())}))},t.seedFileSync=function(e){return i.randomBytes(e).toString()}):(t.seedFile=function(e,t){try{t(null,l(e))}catch(r){t(r)}},t.seedFileSync=l),t.collect=function(e){for(var r=e.length,n=0;n>i&255);t.collect(n)},t.registerWorker=function(e){if(e===self)t.seedFile=function(e,t){function r(e){var n=e.data;n.forge&&n.forge.prng&&(self.removeEventListener("message",r),t(n.forge.prng.err,n.forge.prng.bytes))}self.addEventListener("message",r),self.postMessage({forge:{prng:{needed:e}}})};else{var r=function(r){var n=r.data;n.forge&&n.forge.prng&&t.seedFile(n.forge.prng.needed,(function(t,r){e.postMessage({forge:{prng:{err:t,bytes:r}}})}))};e.addEventListener("message",r)}},t}}).call(this,r("4362"))},3846:function(e,t,r){"use strict";e.exports={pk:r("fc86")}},3849:function(e,t,r){"use strict";const{Buffer:n}=r("b639"),i=r("ec4e"),s=45569,o=45633,a={init:i.blake2bInit,update:i.blake2bUpdate,digest:i.blake2bFinal},c={init:i.blake2sInit,update:i.blake2sUpdate,digest:i.blake2sFinal},u=(e,t)=>async r=>{const i=t.init(e,null);return t.update(i,r),n.from(t.digest(i))};e.exports=e=>{for(let t=0;t<64;t++)e[s+t]=u(t+1,a);for(let t=0;t<32;t++)e[o+t]=u(t+1,c)}},3866:function(e,t,r){"use strict";const n=r("33fc"),i=r("f1fd"),s=r("f2a1"),o=r("d260"),a=r("4bc2")("ipfs:gc:lock");class c{constructor(e,t){t=t||{},this.mutex=new o(e,{...t,log:a})}readLock(){return this.mutex.readLock()}writeLock(){return this.mutex.writeLock()}pullReadLock(e){return this.pullLock("readLock",e)}pullWriteLock(e){return this.pullLock("writeLock",e)}pullLock(e,t){const r=new u(this.mutex,e);return n(r.take(),t(),r.release())}}class u{constructor(e,t){this.mutex=e,this.type=t,this.releaseLock=null}take(){return s((e,t)=>{if(this.releaseLock)return t(null,e);this.mutex[this.type]().then(r=>{this.releaseLock=r,t(null,e)},t)})}release(){return i(null,e=>{this.releaseLock(e)})}}e.exports=c},3897:function(e,t,r){var n=r("1789")("socket.io-parser"),i=r("6a63"),s=r("8183"),o=r("4398"),a=r("4720");function c(){}t.protocol=4,t.types=["CONNECT","DISCONNECT","EVENT","ACK","ERROR","BINARY_EVENT","BINARY_ACK"],t.CONNECT=0,t.DISCONNECT=1,t.EVENT=2,t.ACK=3,t.ERROR=4,t.BINARY_EVENT=5,t.BINARY_ACK=6,t.Encoder=c,t.Decoder=d;var u=t.ERROR+'"encode error"';function l(e){var r=""+e.type;if(t.BINARY_EVENT!==e.type&&t.BINARY_ACK!==e.type||(r+=e.attachments+"-"),e.nsp&&"/"!==e.nsp&&(r+=e.nsp+","),null!=e.id&&(r+=e.id),null!=e.data){var i=h(e.data);if(!1===i)return u;r+=i}return n("encoded %j as %s",e,r),r}function h(e){try{return JSON.stringify(e)}catch(t){return!1}}function f(e,t){function r(e){var r=s.deconstructPacket(e),n=l(r.packet),i=r.buffers;i.unshift(n),t(i)}s.removeBlobs(e,r)}function d(){this.reconstructor=null}function p(e){var r=0,i={type:Number(e.charAt(0))};if(null==t.types[i.type])return m("unknown packet type "+i.type);if(t.BINARY_EVENT===i.type||t.BINARY_ACK===i.type){var s="";while("-"!==e.charAt(++r))if(s+=e.charAt(r),r==e.length)break;if(s!=Number(s)||"-"!==e.charAt(r))throw new Error("Illegal attachments");i.attachments=Number(s)}if("/"===e.charAt(r+1)){i.nsp="";while(++r){var a=e.charAt(r);if(","===a)break;if(i.nsp+=a,r===e.length)break}}else i.nsp="/";var c=e.charAt(r+1);if(""!==c&&Number(c)==c){i.id="";while(++r){a=e.charAt(r);if(null==a||Number(a)!=a){--r;break}if(i.id+=e.charAt(r),r===e.length)break}i.id=Number(i.id)}if(e.charAt(++r)){var u=y(e.substr(r)),l=!1!==u&&(i.type===t.ERROR||o(u));if(!l)return m("invalid payload");i.data=u}return n("decoded %s as %j",e,i),i}function y(e){try{return JSON.parse(e)}catch(t){return!1}}function g(e){this.reconPack=e,this.buffers=[]}function m(e){return{type:t.ERROR,data:"parser error: "+e}}c.prototype.encode=function(e,r){if(n("encoding packet %j",e),t.BINARY_EVENT===e.type||t.BINARY_ACK===e.type)f(e,r);else{var i=l(e);r([i])}},i(d.prototype),d.prototype.add=function(e){var r;if("string"===typeof e)r=p(e),t.BINARY_EVENT===r.type||t.BINARY_ACK===r.type?(this.reconstructor=new g(r),0===this.reconstructor.reconPack.attachments&&this.emit("decoded",r)):this.emit("decoded",r);else{if(!a(e)&&!e.base64)throw new Error("Unknown type: "+e);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");r=this.reconstructor.takeBinaryData(e),r&&(this.reconstructor=null,this.emit("decoded",r))}},d.prototype.destroy=function(){this.reconstructor&&this.reconstructor.finishedReconstruction()},g.prototype.takeBinaryData=function(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){var t=s.reconstructPacket(this.reconPack,this.buffers);return this.finishedReconstruction(),t}return null},g.prototype.finishedReconstruction=function(){this.reconPack=null,this.buffers=[]}},"38d4":function(e,t){try{e.exports="undefined"!==typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(r){e.exports=!1}},3902:function(e,t,r){"use strict";const n=r("5575"),i=r("e3d5"),{DAGNode:s}=r("c75d"),{normalizePath:o}=r("861c"),{Format:a}=r("12dd"),{Errors:c}=r("7b6d"),u=c.notFoundError().code;function l(e,t,r){const i=o(t),s=i.split("/"),a=s[0];if(!n.cid(a))throw new Error(`Error resolving path '${i}': '${a}' is not a valid CID`);return!1!==r.preload&&e._preload(a),"/ipfs/"+i}async function*h(e,t,r){const n=await e.resolve(t),i=n.split("/"),s=i[2];for await(const o of d(e,s,r.maxDepth,r.unique))o.parent&&(o.isDuplicate||(yield{ref:f(o.parent.cid,o.node.cid,o.node.name,r.format)}))}function f(e,t,r,n){let i=n.replace(//g,e.toString());return i=i.replace(//g,t.toString()),i=i.replace(//g,r),i}async function*d(e,t,r,n){const i=new Set;async function*s(t,o){const a=o+1;if(!(a>r))try{for(const r of await p(e,t.cid))yield{parent:t,node:r,isDuplicate:n&&i.has(r.cid.toString())},n&&i.add(r.cid.toString()),yield*s(r,a)}catch(c){throw c.code===u&&(c.message=`Could not find object with CID: ${t.cid}`),c}}yield*s({cid:t},0)}async function p(e,t){const r=await e._ipld.get(new i(t));return s.isDAGNode(r)?r.Links.map(({Name:e,Hash:t})=>({name:e,cid:new i(t)})):y(r)}function y(e,t=""){let r=[];for(const[n,s]of Object.entries(e))i.isCID(s)?r.push({name:t+n,cid:s}):"object"===typeof s&&(r=r.concat(y(s,t+n+"/")));return r}e.exports=function(e){return async function*(t,r){if(r=r||{},0===r.maxDepth)return;if(r.edges&&r.format&&r.format!==a.default)throw new Error("Cannot set edges to true and also specify format");r.format=r.edges?a.edges:r.format||a.default,"number"!==typeof r.maxDepth&&(r.maxDepth=r.recursive?1/0:1);const n=Array.isArray(t)?t:[t],i=n.map(t=>l(e,t,r));for(const s of i)yield*h(e,s,r)}}},3909:function(e,t,r){"use strict";const n=r("0b54"),i=async(e,t,r)=>n(new Array(e).fill(),(e,r)=>t(r),r);e.exports=i,e.exports.default=i},3958:function(e,t,r){"use strict";const n=r("f106"),i='\nmessage IpnsEntry {\n enum ValidityType {\n\t\tEOL = 0; // setting an EOL says "this record is valid until..."\n\t}\n\n required bytes value = 1;\n\trequired bytes signature = 2;\n\n\toptional ValidityType validityType = 3;\n\toptional bytes validity = 4;\n\n\toptional uint64 sequence = 5;\n\n\toptional uint64 ttl = 6;\n\n\t// in order for nodes to properly validate a record upon receipt, they need the public\n\t// key associated with it. For old RSA keys, its easiest if we just send this as part of\n\t// the record itself. For newer ed25519 keys, the public key can be embedded in the\n\t// peerID, making this field unnecessary.\n\toptional bytes pubKey = 7;\n}\n';e.exports=n(i).IpnsEntry},"39cd":function(e,t,r){var n=r("e0c5").Buffer,i=r("ff48");function s(e,t,r){var s=t.length,o=i(t,e._cache);return e._cache=e._cache.slice(s),e._prev=n.concat([e._prev,r?t:o]),o}t.encrypt=function(e,t,r){var i,o=n.allocUnsafe(0);while(t.length){if(0===e._cache.length&&(e._cache=e._cipher.encryptBlock(e._prev),e._prev=n.allocUnsafe(0)),!(e._cache.length<=t.length)){o=n.concat([o,s(e,t,r)]);break}i=e._cache.length,o=n.concat([o,s(e,t.slice(0,i),r)]),t=t.slice(i)}return o}},"3a17":function(e,t,r){"use strict";var n=r("399f"),i=r("549e"),s=r("ffb2");const o="bignumber/5.0.0-beta.135",a=new s["Logger"](o),c={},u=9007199254740991;class l{constructor(e,t){a.checkNew(new.target,l),e!==c&&a.throwError("cannot call consturtor directly; use BigNumber.from",s["Logger"].errors.UNSUPPORTED_OPERATION,{operation:"new (BigNumber)"}),this._hex=t,this._isBigNumber=!0,Object.freeze(this)}fromTwos(e){return f(d(this).fromTwos(e))}toTwos(e){return f(d(this).toTwos(e))}abs(){return"-"===this._hex[0]?l.from(this._hex.substring(1)):this}add(e){return f(d(this).add(d(e)))}sub(e){return f(d(this).sub(d(e)))}div(e){const t=l.from(e);return t.isZero()&&p("division by zero","div"),f(d(this).div(d(e)))}mul(e){return f(d(this).mul(d(e)))}mod(e){return f(d(this).mod(d(e)))}pow(e){return f(d(this).pow(d(e)))}maskn(e){return f(d(this).maskn(e))}eq(e){return d(this).eq(d(e))}lt(e){return d(this).lt(d(e))}lte(e){return d(this).lte(d(e))}gt(e){return d(this).gt(d(e))}gte(e){return d(this).gte(d(e))}isZero(){return d(this).isZero()}toNumber(){try{return d(this).toNumber()}catch(e){p("overflow","toNumber",this.toString())}return null}toString(){return 0!==arguments.length&&a.throwError("bigNumber.toString does not accept parameters",s["Logger"].errors.UNEXPECTED_ARGUMENT,{}),d(this).toString(10)}toHexString(){return this._hex}static from(e){return e instanceof l?e:"string"===typeof e?e.match(/-?0x[0-9a-f]+/i)?new l(c,h(e)):e.match(/^-?[0-9]+$/)?new l(c,h(new n["BN"](e))):a.throwArgumentError("invalid BigNumber string","value",e):"number"===typeof e?(e%1&&p("underflow","BigNumber.from",e),(e>=u||e<=-u)&&p("overflow","BigNumber.from",e),l.from(String(e))):"bigint"===typeof e?l.from(e.toString()):Object(i["isBytes"])(e)?l.from(Object(i["hexlify"])(e)):e._hex&&Object(i["isHexString"])(e._hex)?l.from(e._hex):e.toHexString&&(e=e.toHexString(),"string"===typeof e)?l.from(e):a.throwArgumentError("invalid BigNumber value","value",e)}static isBigNumber(e){return!(!e||!e._isBigNumber)}}function h(e){if("string"!==typeof e)return h(e.toString(16));if("-"===e[0])return e=e.substring(1),"-"===e[0]&&a.throwArgumentError("invalid hex","value",e),e=h(e),"0x00"===e?e:"-"+e;if("0x"!==e.substring(0,2)&&(e="0x"+e),"0x"===e)return"0x00";e.length%2&&(e="0x0"+e.substring(2));while(e.length>4&&"0x00"===e.substring(0,4))e="0x"+e.substring(4);return e}function f(e){return l.from(h(e))}function d(e){const t=l.from(e).toHexString();return"-"===t[0]?new n["BN"]("-"+t.substring(3),16):new n["BN"](t.substring(2),16)}function p(e,t,r){const n={fault:e,operation:t};return null!=r&&(n.value=r),a.throwError(e,s["Logger"].errors.NUMERIC_FAULT,n)}new s["Logger"](o),l.from(0),l.from(-1);let y="0";while(y.length<256)y+=y;r.d(t,"a",(function(){return l}))},"3a70":function(e,t,r){var n=r("5995");r("31a0");var i=[217,120,249,196,25,221,181,237,40,233,253,121,74,160,216,157,198,126,55,131,43,118,83,142,98,76,100,136,68,139,251,162,23,154,89,245,135,179,79,19,97,69,109,141,9,129,125,50,189,143,64,235,134,183,123,11,240,149,33,34,92,107,78,130,84,214,101,147,206,96,178,28,115,86,192,20,167,140,241,220,18,117,202,31,59,190,228,209,66,61,212,48,163,60,182,38,111,191,14,218,70,105,7,87,39,242,29,155,188,148,67,3,248,17,199,246,144,239,62,231,6,195,213,47,200,102,30,215,8,232,234,222,128,82,238,247,132,170,114,172,53,77,106,42,150,26,210,113,90,21,73,116,75,159,208,94,4,24,164,236,194,224,65,110,15,81,203,204,36,145,175,80,161,244,112,57,153,124,58,133,35,184,180,122,252,2,54,91,37,85,151,49,45,93,250,152,227,138,146,174,5,223,41,16,103,108,186,201,211,0,230,207,225,158,168,44,99,22,1,63,88,226,137,169,13,56,52,27,171,51,255,176,187,72,12,95,185,177,205,46,197,243,219,71,229,165,156,119,10,166,32,104,254,127,193,173],s=[1,2,3,5],o=function(e,t){return e<>16-t},a=function(e,t){return(65535&e)>>t|e<<16-t&65535};e.exports=n.rc2=n.rc2||{},n.rc2.expandKey=function(e,t){"string"===typeof e&&(e=n.util.createBuffer(e)),t=t||128;var r,s=e,o=e.length(),a=t,c=Math.ceil(a/8),u=255>>(7&a);for(r=o;r<128;r++)s.putByte(i[s.at(r-1)+s.at(r-o)&255]);for(s.setAt(128-c,i[s.at(128-c)&u]),r=127-c;r>=0;r--)s.setAt(r,i[s.at(r+1)^s.at(r+c)]);return s};var c=function(e,t,r){var i,c,u,l,h=!1,f=null,d=null,p=null,y=[];for(e=n.rc2.expandKey(e,t),u=0;u<64;u++)y.push(e.getInt16Le());r?(i=function(e){for(u=0;u<4;u++)e[u]+=y[l]+(e[(u+3)%4]&e[(u+2)%4])+(~e[(u+3)%4]&e[(u+1)%4]),e[u]=o(e[u],s[u]),l++},c=function(e){for(u=0;u<4;u++)e[u]+=y[63&e[(u+3)%4]]}):(i=function(e){for(u=3;u>=0;u--)e[u]=a(e[u],s[u]),e[u]-=y[l]+(e[(u+3)%4]&e[(u+2)%4])+(~e[(u+3)%4]&e[(u+1)%4]),l--},c=function(e){for(u=3;u>=0;u--)e[u]-=y[63&e[(u+3)%4]]});var g=function(e){var t=[];for(u=0;u<4;u++){var n=f.getInt16Le();null!==p&&(r?n^=p.getInt16Le():p.putInt16Le(n)),t.push(65535&n)}l=r?0:63;for(var i=0;i=8)g([[5,i],[1,c],[6,i],[1,c],[5,i]])},finish:function(e){var t=!0;if(r)if(e)t=e(8,f,!r);else{var n=8===f.length()?8:8-f.length();f.fillWithByte(n,n)}if(t&&(h=!0,m.update()),!r&&(t=0===f.length(),t))if(e)t=e(8,d,!r);else{var i=d.length(),s=d.at(i-1);s>i?t=!1:d.truncate(s)}return t}},m};n.rc2.startEncrypting=function(e,t,r){var i=n.rc2.createEncryptionCipher(e,128);return i.start(t,r),i},n.rc2.createEncryptionCipher=function(e,t){return c(e,t,!0)},n.rc2.startDecrypting=function(e,t,r){var i=n.rc2.createDecryptionCipher(e,128);return i.start(t,r),i},n.rc2.createDecryptionCipher=function(e,t){return c(e,t,!1)}},"3a7b":function(e,t,r){for(var n=r("e2ec"),i=[],s={},o=0;o<256;o++)i[o]=(o+256).toString(16).substr(1),s[i[o]]=o;function a(e,t,r){var n=t&&r||0,i=0;t=t||[],e.toLowerCase().replace(/[0-9a-f]{2}/g,(function(e){i<16&&(t[n+i++]=s[e])}));while(i<16)t[n+i++]=0;return t}function c(e,t){var r=t||0,n=i;return n[e[r++]]+n[e[r++]]+n[e[r++]]+n[e[r++]]+"-"+n[e[r++]]+n[e[r++]]+"-"+n[e[r++]]+n[e[r++]]+"-"+n[e[r++]]+n[e[r++]]+"-"+n[e[r++]]+n[e[r++]]+n[e[r++]]+n[e[r++]]+n[e[r++]]+n[e[r++]]}var u=n(),l=[1|u[0],u[1],u[2],u[3],u[4],u[5]],h=16383&(u[6]<<8|u[7]),f=0,d=0;function p(e,t,r){var n=t&&r||0,i=t||[];e=e||{};var s=void 0!==e.clockseq?e.clockseq:h,o=void 0!==e.msecs?e.msecs:(new Date).getTime(),a=void 0!==e.nsecs?e.nsecs:d+1,u=o-f+(a-d)/1e4;if(u<0&&void 0===e.clockseq&&(s=s+1&16383),(u<0||o>f)&&void 0===e.nsecs&&(a=0),a>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");f=o,d=a,h=s,o+=122192928e5;var p=(1e4*(268435455&o)+a)%4294967296;i[n++]=p>>>24&255,i[n++]=p>>>16&255,i[n++]=p>>>8&255,i[n++]=255&p;var y=o/4294967296*1e4&268435455;i[n++]=y>>>8&255,i[n++]=255&y,i[n++]=y>>>24&15|16,i[n++]=y>>>16&255,i[n++]=s>>>8|128,i[n++]=255&s;for(var g=e.node||l,m=0;m<6;m++)i[n+m]=g[m];return t||c(i)}function y(e,t,r){var i=t&&r||0;"string"==typeof e&&(t="binary"==e?new Array(16):null,e=null),e=e||{};var s=e.random||(e.rng||n)();if(s[6]=15&s[6]|64,s[8]=63&s[8]|128,t)for(var o=0;o<16;o++)t[i+o]=s[o];return t||c(s)}var g=y;g.v1=p,g.v4=y,g.parse=a,g.unparse=c,e.exports=g},"3a90":function(e,t,r){"use strict";const n=r("239c"),i=r("c044"),s=r("4bc2"),o=r("fa4d"),a=r("8945"),c=s("libp2p:dht:peer-queue");class u{static async fromPeerId(e){const t=await o(t=>a.convertPeerId(e,t))();return new u(t)}static async fromKey(e){const t=await o(t=>a.convertBuffer(e,t))();return new u(t)}constructor(e){c("create: %b",e),this.from=e,this.heap=new n(a.xorCompare)}async enqueue(e){c("enqueue %s",e.toB58String());const t=await o(t=>a.convertPeerId(e,t))(),r={id:e,distance:i(this.from,t)};this.heap.push(r)}dequeue(){const e=this.heap.pop();return c("dequeue %s",e.id.toB58String()),e.id}get length(){return this.heap.size()}}e.exports=u},"3a9a":function(e,t,r){"use strict";const{Buffer:n}=r("b639"),i=self.crypto||self.msCrypto;e.exports=e=>{if("undefined"===typeof self||!self.crypto&&!self.msCrypto)throw new Error("Please use a browser with webcrypto support and ensure the code has been delivered securely via HTTPS/TLS and run within a Secure Context");return async t=>{switch(e){case"sha1":return n.from(await i.subtle.digest({name:"SHA-1"},t));case"sha2-256":return n.from(await i.subtle.digest({name:"SHA-256"},t));case"sha2-512":return n.from(await i.subtle.digest({name:"SHA-512"},t));case"dbl-sha2-256":{const e=await i.subtle.digest({name:"SHA-256"},t);return n.from(await i.subtle.digest({name:"SHA-256"},e))}default:throw new Error(`${e} is not a supported algorithm`)}}}},"3b1c":function(e,t,r){"use strict";var n=r("399f"),i=r("549e"),s=r("3a17"),o=r("6f5a"),a=r("e165"),c=r("ffb2");const u="address/5.0.0-beta.134";r.d(t,"a",(function(){return m})),r.d(t,"b",(function(){return b}));const l=new c["Logger"](u);function h(e){Object(i["isHexString"])(e,20)||l.throwArgumentError("invalid address","address",e),e=e.toLowerCase();const t=e.substring(2).split(""),r=new Uint8Array(40);for(let i=0;i<40;i++)r[i]=t[i].charCodeAt(0);const n=Object(i["arrayify"])(Object(o["a"])(r));for(let i=0;i<40;i+=2)n[i>>1]>>4>=8&&(t[i]=t[i].toUpperCase()),(15&n[i>>1])>=8&&(t[i+1]=t[i+1].toUpperCase());return"0x"+t.join("")}const f=9007199254740991;function d(e){return Math.log10?Math.log10(e):Math.log(e)/Math.LN10}const p={};for(let v=0;v<10;v++)p[String(v)]=String(v);for(let v=0;v<26;v++)p[String.fromCharCode(65+v)]=String(10+v);const y=Math.floor(d(f));function g(e){e=e.toUpperCase(),e=e.substring(4)+e.substring(0,2)+"00";let t=e.split("").map(e=>p[e]).join("");while(t.length>=y){let e=t.substring(0,y);t=parseInt(e,10)%97+t.substring(e.length)}let r=String(98-parseInt(t,10)%97);while(r.length<2)r="0"+r;return r}function m(e){let t=null;if("string"!==typeof e&&l.throwArgumentError("invalid address","address",e),e.match(/^(0x)?[0-9a-fA-F]{40}$/))"0x"!==e.substring(0,2)&&(e="0x"+e),t=h(e),e.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&t!==e&&l.throwArgumentError("bad address checksum","address",e);else if(e.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){e.substring(2,4)!==g(e)&&l.throwArgumentError("bad icap checksum","address",e),t=new n["BN"](e.substring(4),36).toString(16);while(t.length<40)t="0"+t;t=h("0x"+t)}else l.throwArgumentError("invalid address","address",e);return t}function b(e){let t=null;try{t=m(e.from)}catch(n){l.throwArgumentError("missing from address","transaction",e)}const r=Object(i["stripZeros"])(Object(i["arrayify"])(s["a"].from(e.nonce).toHexString()));return m(Object(i["hexDataSlice"])(Object(o["a"])(Object(a["b"])([t,r])),12))}},"3b1f":function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=f;var n=r("bcdf"),i=h(n),s=r("dea4"),o=h(s),a=r("ac7e"),c=h(a),u=r("691e"),l=h(u);function h(e){return e&&e.__esModule?e:{default:e}}function f(e,t,r){r=(0,c.default)(r||i.default);var n=(0,l.default)(t);if(!e())return r(null);var s=function(t){if(t)return r(t);if(e())return n(s);var i=(0,o.default)(arguments,1);r.apply(null,[null].concat(i))};n(s)}e.exports=t["default"]},"3b27":function(e,t,r){"use strict";e.exports={repoVersion:7}},"3b66":function(e,t,r){"use strict";const n=r("e3d5"),i=r("0c9a"),s=r("3074");t=e.exports,t.codec=i.DAG_PB,t.defaultHashAlg=i.SHA2_256;const o=async(e,r)=>{const o={cidVersion:1,hashAlg:t.defaultHashAlg},a=Object.assign(o,r),c=await s(e,a.hashAlg),u=i.print[t.codec],l=new n(a.cidVersion,u,c);return l};t.cid=o},"3ba4":function(e,t){for(var r=[],n=0;n<256;++n)r[n]=(n+256).toString(16).substr(1);function i(e,t){var n=t||0,i=r;return[i[e[n++]],i[e[n++]],i[e[n++]],i[e[n++]],"-",i[e[n++]],i[e[n++]],"-",i[e[n++]],i[e[n++]],"-",i[e[n++]],i[e[n++]],"-",i[e[n++]],i[e[n++]],i[e[n++]],i[e[n++]],i[e[n++]],i[e[n++]]].join("")}e.exports=i},"3bd5":function(e,t,r){"use strict";const n=r("33fc"),i=r("03b2"),s=r("5b39"),o=r("4bc2"),a=o("libp2p:secio");a.error=o("libp2p:secio:error");const c=r("e822"),u=r("ab24");e.exports=function(e,t){a("3. finish - start");const r=e.protocols,o=e.shake.rest(),l=s({timeout:e.timeout},e=>{if(e)throw e});n(o,c.createUnboxStream(r.remote.cipher,r.remote.mac),l,c.createBoxStream(r.local.cipher,r.local.mac),o),l.handshake.write(e.proposal.in.rand),l.handshake.read(e.proposal.in.rand.length,(r,n)=>{const s=r=>{a.error(r),e.secure.resolve({source:i(r),sink(e){}}),t(r)};if(r)return s(r);try{u.verifyNonce(e,n)}catch(r){return s(r)}a("3. finish - finish"),e.secure.resolve(l.handshake.rest()),t()})}},"3bd8":function(e,t,r){"use strict";const n={util:r("5ee0"),pki:r("aecb"),jsbn:r("8e82")};function i(e){var t=n.util.decode64((e+"===".slice((e.length+3)%4)).replace(/-/g,"+").replace(/_/g,"/"));return new n.jsbn.BigInteger(n.util.bytesToHex(t),16)}function s(e,t){return t.map(t=>i(e[t]))}function o(e){return n.pki.setRsaPrivateKey(...s(e,["n","e","d","p","q","dp","dq","qi"]))}function a(e){return n.pki.privateKeyToPem(o(e))}function c(e){return n.pki.setRsaPublicKey(...s(e,["n","e"]))}function u(e){return n.pki.publicKeyToPem(c(e))}e.exports={jwk2pub:c,jwk2pubPem:u,jwk2priv:o,jwk2privPem:a}},"3bdc":function(e,t,r){(function(t){var r={};e.exports=r;var n={};function i(e,t){var r=0,n=t.length,i=t.charAt(0),s=[0];for(r=0;r0)s.push(a%n),a=a/n|0}var c="";for(r=0;0===e.at(r)&&r=0;--r)c+=t[s[r]];return c}r.encode=function(e,t,r){if("string"!==typeof t)throw new TypeError('"alphabet" must be a string.');if(void 0!==r&&"number"!==typeof r)throw new TypeError('"maxline" must be a number.');var n="";if(e instanceof Uint8Array){var s=0,o=t.length,a=t.charAt(0),c=[0];for(s=0;s0)c.push(l%o),l=l/o|0}for(s=0;0===e[s]&&s=0;--s)n+=t[c[s]]}else n=i(e,t);if(r){var h=new RegExp(".{1,"+r+"}","g");n=n.match(h).join("\r\n")}return n},r.decode=function(e,r){if("string"!==typeof e)throw new TypeError('"input" must be a string.');if("string"!==typeof r)throw new TypeError('"alphabet" must be a string.');var i=n[r];if(!i){i=n[r]=[];for(var s=0;s>=8;while(h>0)c.push(255&h),h>>=8}for(var f=0;e[f]===a&&f(e=e||new Error("Cannot open database"),n(e,"ERR_DB_OPEN_FAILED")),e.exports.dbDeleteFailedError=e=>(e=e||new Error("Delete failed"),n(e,"ERR_DB_DELETE_FAILED")),e.exports.dbWriteFailedError=e=>(e=e||new Error("Write failed"),n(e,"ERR_DB_WRITE_FAILED")),e.exports.notFoundError=e=>(e=e||new Error("Not Found"),n(e,"ERR_NOT_FOUND"))},"3bf8":function(e,t,r){"use strict";e.exports=e=>r("8a3f")(e)},"3c0e":function(e,t,r){"use strict";const n=r("daf7");class i{constructor(e){this.partner=e,this.wantlist=new n,this.exchangeCount=0,this.sentToPeer=new Map,this.accounting={bytesSent:0,bytesRecv:0}}sentBytes(e){this.exchangeCount++,this.lastExchange=(new Date).getTime(),this.accounting.bytesSent+=e}receivedBytes(e){this.exchangeCount++,this.lastExchange=(new Date).getTime(),this.accounting.bytesRecv+=e}wants(e,t){this.wantlist.add(e,t)}cancelWant(e){this.wantlist.remove(e)}wantlistContains(e){return this.wantlist.contains(e)}debtRatio(){return this.accounting.bytesSent/(this.accounting.bytesRecv+1)}}e.exports=i},"3c1a":function(e,t,r){e.exports=r.p+"img/lock.7aee2123.svg"},"3c1c":function(module,exports,__webpack_require__){"use strict";const fs="object"===typeof window||"object"===typeof self?null:eval('require("fs")'),level=__webpack_require__("cf59"),crypto=__webpack_require__("ff5f"),secp256k1=__webpack_require__("2330"),LRU=__webpack_require__("4128"),Buffer=__webpack_require__("8707").Buffer,{verifier:verifier}=__webpack_require__("720a");function createStore(e="./keystore"){return fs&&fs.mkdirSync&&fs.mkdirSync(e,{recursive:!0}),level(e)}const verifiedCache=new LRU(1e3);class Keystore{constructor(e={}){"string"===typeof e?this._store=createStore(e):"function"===typeof e.open?this._store=e:"string"===typeof e.store?this._store=createStore(e.store):this._store=e.store||createStore(),this._cache=e.cache||new LRU(100)}async open(){return this._store?(await this._store.open(),Promise.resolve()):Promise.reject(new Error("Keystore: No store found to open"))}async close(){this._store&&await this._store.close()}async hasKey(e){if(!e)throw new Error("id needed to check a key");if(this._store.status&&"open"!==this._store.status)return Promise.resolve(null);let t=!1;try{let r=this._cache.get(e)||await this._store.get(e);t=void 0!==r&&null!==r}catch(r){console.error("Error: ENOENT: no such file or directory")}return t}async createKey(e){if(!e)throw new Error("id needed to create a key");if(this._store.status&&"open"!==this._store.status)return Promise.resolve(null);const t=()=>new Promise((e,t)=>{crypto.keys.generateKeyPair("secp256k1",256,(r,n)=>{r||e(n),t(r)})}),r=await t(),n=secp256k1.publicKeyConvert(r.public.marshal(),!1),i={publicKey:n.toString("hex"),privateKey:r.marshal().toString("hex")};try{await this._store.put(e,JSON.stringify(i))}catch(s){console.log(s)}return this._cache.set(e,i),r}async getKey(e){if(!e)throw new Error("id needed to get a key");if(this._store||await this.open(),this._store.status&&"open"!==this._store.status)return Promise.resolve(null);const t=this._cache.get(e);let r;try{r=t||await this._store.get(e)}catch(s){}if(!r)return;const n=t||JSON.parse(r);if(!n)return;t||this._cache.set(e,n);const i=e=>new Promise((t,r)=>{crypto.keys.supportedKeys.secp256k1.unmarshalSecp256k1PrivateKey(e,(e,n)=>{e||t(n),r(e)})});return i(Buffer.from(n.privateKey,"hex"))}async sign(e,t){if(!e)throw new Error("No signing key given");if(!t)throw new Error("Given input data was undefined");return Buffer.isBuffer(t)||(t=Buffer.from(t)),new Promise((r,n)=>{e.sign(t,(e,t)=>{e||r(t.toString("hex")),n(e)})})}getPublic(e,t={}){const r=["hex","buffer"],n="undefined"===typeof t.decompress||t.decompress,i=t.format||"hex";if(-1===r.indexOf(i))throw new Error("Supported formats are `hex` and `buffer`");let s=e.public.marshal();return n&&(s=secp256k1.publicKeyConvert(s,!1)),"buffer"===i?s:s.toString("hex")}async verify(e,t,r,n="v1"){return Keystore.verify(e,t,r,n)}static async verify(e,t,r,n="v1"){const i=verifiedCache.get(e);let s=!1;if(i){const e=(e,t,r)=>{let n;return n="v0"===r?0===Buffer.compare(Buffer.alloc(30,e),Buffer.alloc(30,t)):Buffer.isBuffer(t)?0===Buffer.compare(e,t):e===t,n};s=i.publicKey===t&&e(i.data,r,n)}else{const i=await verifier(n).verify(e,t,r);s=i,i&&verifiedCache.set(e,{publicKey:t,data:r})}return s}}module.exports=Keystore},"3c3f":function(e,t){e.exports={name:"memoryStorage",read:n,write:i,each:s,remove:o,clearAll:a};var r={};function n(e){return r[e]}function i(e,t){r[e]=t}function s(e){for(var t in r)r.hasOwnProperty(t)&&e(r[t],t)}function o(e){delete r[e]}function a(e){r={}}},"3c57":function(e,t,r){"use strict";(function(t){const n=r("f106"),i=r("f654"),s=n(r("061f")).Record,o=r("90f6");class a{constructor(e,r,n){e&&i(t.isBuffer(e),"key must be a Buffer"),r&&i(t.isBuffer(r),"value must be a buffer"),this.key=e,this.value=r,this.timeReceived=n}serialize(){return s.encode(this.prepareSerialize())}prepareSerialize(){return{key:this.key,value:this.value,timeReceived:this.timeReceived&&o.toRFC3339(this.timeReceived)}}static deserialize(e){const t=s.decode(e);return a.fromDeserialized(t)}static fromDeserialized(e){let t;e.timeReceived&&(t=o.parseRFC3339(e.timeReceived));const r=new a(e.key,e.value,t);return r}}e.exports=a}).call(this,r("b639").Buffer)},"3c7d":function(e,t,r){"use strict";const n=r("f256"),i=r("8d3f"),s={sha1:"sha1","sha2-256":"sha256","sha2-512":"sha512"};function o(e,t,r,o,a){const c=s[a];if(!c)throw new Error(`Hash '${a}' is unknown or not supported`);const u=n(e,t,r,o,c);return i.encode64(u)}e.exports=o},"3c96":function(e,t){function r(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}e.exports=r},"3ca3":function(e,t,r){"use strict";var n=r("6547").charAt,i=r("69f3"),s=r("7dd0"),o="String Iterator",a=i.set,c=i.getterFor(o);s(String,"String",(function(e){a(this,{type:o,string:String(e),index:0})}),(function(){var e,t=c(this),r=t.string,i=t.index;return i>=r.length?{value:void 0,done:!0}:(e=n(r,i),t.index+=e.length,{value:e,done:!1})}))},"3cdd":function(e,t){e.exports={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",208:"Already Reported",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",307:"Temporary Redirect",308:"Permanent Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Payload Too Large",414:"URI Too Long",415:"Unsupported Media Type",416:"Range Not Satisfiable",417:"Expectation Failed",418:"I'm a teapot",421:"Misdirected Request",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",425:"Unordered Collection",426:"Upgrade Required",428:"Precondition Required",429:"Too Many Requests",431:"Request Header Fields Too Large",451:"Unavailable For Legal Reasons",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",508:"Loop Detected",509:"Bandwidth Limit Exceeded",510:"Not Extended",511:"Network Authentication Required"}},"3ce6":function(e,t,r){var n=r("5995");r("b3d5"),r("31a0");var i=e.exports=n.hmac=n.hmac||{};i.create=function(){var e=null,t=null,r=null,i=null,s={start:function(s,o){if(null!==s)if("string"===typeof s){if(s=s.toLowerCase(),!(s in n.md.algorithms))throw new Error('Unknown hash algorithm "'+s+'"');t=n.md.algorithms[s].create()}else t=s;if(null===o)o=e;else{if("string"===typeof o)o=n.util.createBuffer(o);else if(n.util.isArray(o)){var a=o;o=n.util.createBuffer();for(var c=0;ct.blockLength&&(t.start(),t.update(o.bytes()),o=t.digest()),r=n.util.createBuffer(),i=n.util.createBuffer(),u=o.length();for(c=0;c1&&this._buf[this._buf.length-1]===a)this._buf=this._buf.slice(0,-1)}less(e){const t=this.list(),r=e.list();for(let n=0;ni)return!1}return t.length"),e.oneof&&(r="");var n=Object.keys(e.options||{}).map((function(t){return t+" = "+e.options[t]})).join(",");return n&&(n=" ["+n+"]"),t.push((r?r+" ":"")+("map"===e.map?"":e.type+" ")+e.name+" = "+e.tag+n+";"),t},n=function(e,t){t.push("message "+e.name+" {"),e.enums||(e.enums=[]),e.enums.forEach((function(e){t.push(i(e,[]))})),e.messages||(e.messages=[]),e.messages.forEach((function(e){t.push(n(e,[]))}));var s={};return e.fields||(e.fields=[]),e.fields.forEach((function(e){e.oneof?(s[e.oneof]||(s[e.oneof]=[]),s[e.oneof].push(r(e,[]))):t.push(r(e,[]))})),Object.keys(s).forEach((function(e){s[e].unshift("oneof "+e+" {"),s[e].push("}"),t.push(s[e])})),t.push("}",""),t},i=function(e,t){t.push("enum "+e.name+" {"),e.options||(e.options={});var r=o(e.options,[]);return r.length>1&&t.push(r.slice(0,-1)),Object.keys(e.values).map((function(r){var n=s(e.values[r]);t.push([r+" = "+n+";"])})),t.push("}",""),t},s=function(e,t){var r=Object.keys(e.options||{}).map((function(t){return t+" = "+e.options[t]})).join(",");r&&(r=" ["+r+"]");var n=e.value+r;return n},o=function(e,t){var r=Object.keys(e);return r.forEach((function(r){var n=e[r];~r.indexOf(".")&&(r="("+r+")");var i=typeof n;"object"===i?(n=a(n,[]),n.length&&t.push("option "+r+" = {",n,"};")):("string"===i&&"optimize_for"!==r&&(n='"'+n+'"'),t.push("option "+r+" = "+n+";"))})),r.length>0&&t.push(""),t},a=function(e,t){var r=Object.keys(e);return r.forEach((function(r){var n=e[r],i=typeof n;"object"===i?Array.isArray(n)?n.forEach((function(e){e=a(e,[]),e.length&&t.push(r+" {",e,"}")})):(n=a(n,[]),n.length&&t.push(r+" {",n,"}")):("string"===i&&(n='"'+n+'"'),t.push(r+": "+n))})),t},c=function(e,t){return t.push("service "+e.name+" {"),e.options||(e.options={}),o(e.options,t),e.methods||(e.methods=[]),e.methods.forEach((function(e){t.push(u(e,[]))})),t.push("}",""),t},u=function(e,t){var r="rpc "+e.name+"(";e.client_streaming&&(r+="stream "),r+=e.input_type+") returns (",e.server_streaming&&(r+="stream "),r+=e.output_type+")",e.options||(e.options={});var n=o(e.options,[]);return n.length>1?t.push(r+" {",n.slice(0,-1),"}"):t.push(r+";"),t},l=function(e){return function(t){return Array.isArray(t)?t.map(l(e+" ")).join("\n"):e+t}};e.exports=function(e){var t=[];return t.push('syntax = "proto'+e.syntax+'";',""),e.package&&t.push("package "+e.package+";",""),e.options||(e.options={}),o(e.options,t),e.enums||(e.enums=[]),e.enums.forEach((function(e){i(e,t)})),e.messages||(e.messages=[]),e.messages.forEach((function(e){n(e,t)})),e.services&&e.services.forEach((function(e){c(e,t)})),t.map(l("")).join("\n")}},"3d4d":function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r("2e00"),i=s(n);function s(e){return e&&e.__esModule?e:{default:e}}t.default=i.default,e.exports=t["default"]},"3d5a":function(e,t,r){"use strict";const n=r("0e38");e.exports=function(e){if(!e||"number"!==typeof e)throw new Error("first argument must be a Number bigger than 0");return n(e)}},"3d68":function(e,t,r){"use strict";(function(e){r.d(t,"a",(function(){return l}));var n=r("33d8"),i=r.n(n),s=r("9bda"),o=r("ffb2"),a=r("4a45"),c=r("3e80");const u=new o["Logger"](a["a"]);class l extends c["a"]{constructor(e,t){u.checkNew(new.target,l),null==e&&u.throwError("missing path",o["Logger"].errors.MISSING_ARGUMENT,{arg:"path"}),super("ipc://"+e,t),Object(s["defineReadOnly"])(this,"path",e)}send(t,r){let n=JSON.stringify({method:t,params:r,id:42,jsonrpc:"2.0"});return new Promise((t,r)=>{let s=e.alloc(0),o=i.a.connect(this.path);o.on("data",t=>{s=e.concat([s,t])}),o.on("end",()=>{try{t(JSON.parse(s.toString()).result),o.destroy()}catch(e){r(e),o.destroy()}}),o.on("error",e=>{r(e),o.destroy()}),o.write(n),o.end()})}}}).call(this,r("b639").Buffer)},"3d73":function(e,t,r){(function(e){"use strict";var t=function(e){var t,r=new Float64Array(16);if(e)for(t=0;t>24&255,e[t+1]=r>>16&255,e[t+2]=r>>8&255,e[t+3]=255&r,e[t+4]=n>>24&255,e[t+5]=n>>16&255,e[t+6]=n>>8&255,e[t+7]=255&n}function y(e,t,r,n,i){var s,o=0;for(s=0;s>>8)-1}function g(e,t,r,n){return y(e,t,r,n,16)}function m(e,t,r,n){return y(e,t,r,n,32)}function b(e,t,r,n){for(var i,s=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,o=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,a=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,c=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,u=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,l=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,h=255&t[0]|(255&t[1])<<8|(255&t[2])<<16|(255&t[3])<<24,f=255&t[4]|(255&t[5])<<8|(255&t[6])<<16|(255&t[7])<<24,d=255&t[8]|(255&t[9])<<8|(255&t[10])<<16|(255&t[11])<<24,p=255&t[12]|(255&t[13])<<8|(255&t[14])<<16|(255&t[15])<<24,y=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,g=255&r[16]|(255&r[17])<<8|(255&r[18])<<16|(255&r[19])<<24,m=255&r[20]|(255&r[21])<<8|(255&r[22])<<16|(255&r[23])<<24,b=255&r[24]|(255&r[25])<<8|(255&r[26])<<16|(255&r[27])<<24,v=255&r[28]|(255&r[29])<<8|(255&r[30])<<16|(255&r[31])<<24,w=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,_=s,E=o,S=a,k=c,C=u,A=l,I=h,T=f,x=d,B=p,R=y,N=g,O=m,P=b,D=v,L=w,M=0;M<20;M+=2)i=_+O|0,C^=i<<7|i>>>25,i=C+_|0,x^=i<<9|i>>>23,i=x+C|0,O^=i<<13|i>>>19,i=O+x|0,_^=i<<18|i>>>14,i=A+E|0,B^=i<<7|i>>>25,i=B+A|0,P^=i<<9|i>>>23,i=P+B|0,E^=i<<13|i>>>19,i=E+P|0,A^=i<<18|i>>>14,i=R+I|0,D^=i<<7|i>>>25,i=D+R|0,S^=i<<9|i>>>23,i=S+D|0,I^=i<<13|i>>>19,i=I+S|0,R^=i<<18|i>>>14,i=L+N|0,k^=i<<7|i>>>25,i=k+L|0,T^=i<<9|i>>>23,i=T+k|0,N^=i<<13|i>>>19,i=N+T|0,L^=i<<18|i>>>14,i=_+k|0,E^=i<<7|i>>>25,i=E+_|0,S^=i<<9|i>>>23,i=S+E|0,k^=i<<13|i>>>19,i=k+S|0,_^=i<<18|i>>>14,i=A+C|0,I^=i<<7|i>>>25,i=I+A|0,T^=i<<9|i>>>23,i=T+I|0,C^=i<<13|i>>>19,i=C+T|0,A^=i<<18|i>>>14,i=R+B|0,N^=i<<7|i>>>25,i=N+R|0,x^=i<<9|i>>>23,i=x+N|0,B^=i<<13|i>>>19,i=B+x|0,R^=i<<18|i>>>14,i=L+D|0,O^=i<<7|i>>>25,i=O+L|0,P^=i<<9|i>>>23,i=P+O|0,D^=i<<13|i>>>19,i=D+P|0,L^=i<<18|i>>>14;_=_+s|0,E=E+o|0,S=S+a|0,k=k+c|0,C=C+u|0,A=A+l|0,I=I+h|0,T=T+f|0,x=x+d|0,B=B+p|0,R=R+y|0,N=N+g|0,O=O+m|0,P=P+b|0,D=D+v|0,L=L+w|0,e[0]=_>>>0&255,e[1]=_>>>8&255,e[2]=_>>>16&255,e[3]=_>>>24&255,e[4]=E>>>0&255,e[5]=E>>>8&255,e[6]=E>>>16&255,e[7]=E>>>24&255,e[8]=S>>>0&255,e[9]=S>>>8&255,e[10]=S>>>16&255,e[11]=S>>>24&255,e[12]=k>>>0&255,e[13]=k>>>8&255,e[14]=k>>>16&255,e[15]=k>>>24&255,e[16]=C>>>0&255,e[17]=C>>>8&255,e[18]=C>>>16&255,e[19]=C>>>24&255,e[20]=A>>>0&255,e[21]=A>>>8&255,e[22]=A>>>16&255,e[23]=A>>>24&255,e[24]=I>>>0&255,e[25]=I>>>8&255,e[26]=I>>>16&255,e[27]=I>>>24&255,e[28]=T>>>0&255,e[29]=T>>>8&255,e[30]=T>>>16&255,e[31]=T>>>24&255,e[32]=x>>>0&255,e[33]=x>>>8&255,e[34]=x>>>16&255,e[35]=x>>>24&255,e[36]=B>>>0&255,e[37]=B>>>8&255,e[38]=B>>>16&255,e[39]=B>>>24&255,e[40]=R>>>0&255,e[41]=R>>>8&255,e[42]=R>>>16&255,e[43]=R>>>24&255,e[44]=N>>>0&255,e[45]=N>>>8&255,e[46]=N>>>16&255,e[47]=N>>>24&255,e[48]=O>>>0&255,e[49]=O>>>8&255,e[50]=O>>>16&255,e[51]=O>>>24&255,e[52]=P>>>0&255,e[53]=P>>>8&255,e[54]=P>>>16&255,e[55]=P>>>24&255,e[56]=D>>>0&255,e[57]=D>>>8&255,e[58]=D>>>16&255,e[59]=D>>>24&255,e[60]=L>>>0&255,e[61]=L>>>8&255,e[62]=L>>>16&255,e[63]=L>>>24&255}function v(e,t,r,n){for(var i,s=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,o=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,a=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,c=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,u=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,l=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,h=255&t[0]|(255&t[1])<<8|(255&t[2])<<16|(255&t[3])<<24,f=255&t[4]|(255&t[5])<<8|(255&t[6])<<16|(255&t[7])<<24,d=255&t[8]|(255&t[9])<<8|(255&t[10])<<16|(255&t[11])<<24,p=255&t[12]|(255&t[13])<<8|(255&t[14])<<16|(255&t[15])<<24,y=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,g=255&r[16]|(255&r[17])<<8|(255&r[18])<<16|(255&r[19])<<24,m=255&r[20]|(255&r[21])<<8|(255&r[22])<<16|(255&r[23])<<24,b=255&r[24]|(255&r[25])<<8|(255&r[26])<<16|(255&r[27])<<24,v=255&r[28]|(255&r[29])<<8|(255&r[30])<<16|(255&r[31])<<24,w=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,_=s,E=o,S=a,k=c,C=u,A=l,I=h,T=f,x=d,B=p,R=y,N=g,O=m,P=b,D=v,L=w,M=0;M<20;M+=2)i=_+O|0,C^=i<<7|i>>>25,i=C+_|0,x^=i<<9|i>>>23,i=x+C|0,O^=i<<13|i>>>19,i=O+x|0,_^=i<<18|i>>>14,i=A+E|0,B^=i<<7|i>>>25,i=B+A|0,P^=i<<9|i>>>23,i=P+B|0,E^=i<<13|i>>>19,i=E+P|0,A^=i<<18|i>>>14,i=R+I|0,D^=i<<7|i>>>25,i=D+R|0,S^=i<<9|i>>>23,i=S+D|0,I^=i<<13|i>>>19,i=I+S|0,R^=i<<18|i>>>14,i=L+N|0,k^=i<<7|i>>>25,i=k+L|0,T^=i<<9|i>>>23,i=T+k|0,N^=i<<13|i>>>19,i=N+T|0,L^=i<<18|i>>>14,i=_+k|0,E^=i<<7|i>>>25,i=E+_|0,S^=i<<9|i>>>23,i=S+E|0,k^=i<<13|i>>>19,i=k+S|0,_^=i<<18|i>>>14,i=A+C|0,I^=i<<7|i>>>25,i=I+A|0,T^=i<<9|i>>>23,i=T+I|0,C^=i<<13|i>>>19,i=C+T|0,A^=i<<18|i>>>14,i=R+B|0,N^=i<<7|i>>>25,i=N+R|0,x^=i<<9|i>>>23,i=x+N|0,B^=i<<13|i>>>19,i=B+x|0,R^=i<<18|i>>>14,i=L+D|0,O^=i<<7|i>>>25,i=O+L|0,P^=i<<9|i>>>23,i=P+O|0,D^=i<<13|i>>>19,i=D+P|0,L^=i<<18|i>>>14;e[0]=_>>>0&255,e[1]=_>>>8&255,e[2]=_>>>16&255,e[3]=_>>>24&255,e[4]=A>>>0&255,e[5]=A>>>8&255,e[6]=A>>>16&255,e[7]=A>>>24&255,e[8]=R>>>0&255,e[9]=R>>>8&255,e[10]=R>>>16&255,e[11]=R>>>24&255,e[12]=L>>>0&255,e[13]=L>>>8&255,e[14]=L>>>16&255,e[15]=L>>>24&255,e[16]=I>>>0&255,e[17]=I>>>8&255,e[18]=I>>>16&255,e[19]=I>>>24&255,e[20]=T>>>0&255,e[21]=T>>>8&255,e[22]=T>>>16&255,e[23]=T>>>24&255,e[24]=x>>>0&255,e[25]=x>>>8&255,e[26]=x>>>16&255,e[27]=x>>>24&255,e[28]=B>>>0&255,e[29]=B>>>8&255,e[30]=B>>>16&255,e[31]=B>>>24&255}function w(e,t,r,n){b(e,t,r,n)}function _(e,t,r,n){v(e,t,r,n)}var E=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function S(e,t,r,n,i,s,o){var a,c,u=new Uint8Array(16),l=new Uint8Array(64);for(c=0;c<16;c++)u[c]=0;for(c=0;c<8;c++)u[c]=s[c];while(i>=64){for(w(l,u,o,E),c=0;c<64;c++)e[t+c]=r[n+c]^l[c];for(a=1,c=8;c<16;c++)a=a+(255&u[c])|0,u[c]=255&a,a>>>=8;i-=64,t+=64,n+=64}if(i>0)for(w(l,u,o,E),c=0;c=64){for(w(c,a,i,E),o=0;o<64;o++)e[t+o]=c[o];for(s=1,o=8;o<16;o++)s=s+(255&a[o])|0,a[o]=255&s,s>>>=8;r-=64,t+=64}if(r>0)for(w(c,a,i,E),o=0;o>>13|r<<3),n=255&e[4]|(255&e[5])<<8,this.r[2]=7939&(r>>>10|n<<6),i=255&e[6]|(255&e[7])<<8,this.r[3]=8191&(n>>>7|i<<9),s=255&e[8]|(255&e[9])<<8,this.r[4]=255&(i>>>4|s<<12),this.r[5]=s>>>1&8190,o=255&e[10]|(255&e[11])<<8,this.r[6]=8191&(s>>>14|o<<2),a=255&e[12]|(255&e[13])<<8,this.r[7]=8065&(o>>>11|a<<5),c=255&e[14]|(255&e[15])<<8,this.r[8]=8191&(a>>>8|c<<8),this.r[9]=c>>>5&127,this.pad[0]=255&e[16]|(255&e[17])<<8,this.pad[1]=255&e[18]|(255&e[19])<<8,this.pad[2]=255&e[20]|(255&e[21])<<8,this.pad[3]=255&e[22]|(255&e[23])<<8,this.pad[4]=255&e[24]|(255&e[25])<<8,this.pad[5]=255&e[26]|(255&e[27])<<8,this.pad[6]=255&e[28]|(255&e[29])<<8,this.pad[7]=255&e[30]|(255&e[31])<<8};function T(e,t,r,n,i,s){var o=new I(s);return o.update(r,n,i),o.finish(e,t),0}function x(e,t,r,n,i,s){var o=new Uint8Array(16);return T(o,0,r,n,i,s),g(e,t,o,0)}function B(e,t,r,n,i){var s;if(r<32)return-1;for(A(e,0,t,0,r,n,i),T(e,16,e,32,r-32,e),s=0;s<16;s++)e[s]=0;return 0}function R(e,t,r,n,i){var s,o=new Uint8Array(32);if(r<32)return-1;if(C(o,0,32,n,i),0!==x(t,16,t,32,r-32,o))return-1;for(A(e,0,t,0,r,n,i),s=0;s<32;s++)e[s]=0;return 0}function N(e,t){var r;for(r=0;r<16;r++)e[r]=0|t[r]}function O(e){var t,r,n=1;for(t=0;t<16;t++)r=e[t]+n+65535,n=Math.floor(r/65536),e[t]=r-65536*n;e[0]+=n-1+37*(n-1)}function P(e,t,r){for(var n,i=~(r-1),s=0;s<16;s++)n=i&(e[s]^t[s]),e[s]^=n,t[s]^=n}function D(e,r){var n,i,s,o=t(),a=t();for(n=0;n<16;n++)a[n]=r[n];for(O(a),O(a),O(a),i=0;i<2;i++){for(o[0]=a[0]-65517,n=1;n<15;n++)o[n]=a[n]-65535-(o[n-1]>>16&1),o[n-1]&=65535;o[15]=a[15]-32767-(o[14]>>16&1),s=o[15]>>16&1,o[14]&=65535,P(a,o,1-s)}for(n=0;n<16;n++)e[2*n]=255&a[n],e[2*n+1]=a[n]>>8}function L(e,t){var r=new Uint8Array(32),n=new Uint8Array(32);return D(r,e),D(n,t),m(r,0,n,0)}function M(e){var t=new Uint8Array(32);return D(t,e),1&t[0]}function U(e,t){var r;for(r=0;r<16;r++)e[r]=t[2*r]+(t[2*r+1]<<8);e[15]&=32767}function j(e,t,r){for(var n=0;n<16;n++)e[n]=t[n]+r[n]}function K(e,t,r){for(var n=0;n<16;n++)e[n]=t[n]-r[n]}function F(e,t,r){var n,i,s=0,o=0,a=0,c=0,u=0,l=0,h=0,f=0,d=0,p=0,y=0,g=0,m=0,b=0,v=0,w=0,_=0,E=0,S=0,k=0,C=0,A=0,I=0,T=0,x=0,B=0,R=0,N=0,O=0,P=0,D=0,L=r[0],M=r[1],U=r[2],j=r[3],K=r[4],F=r[5],V=r[6],q=r[7],z=r[8],H=r[9],G=r[10],$=r[11],W=r[12],Y=r[13],Q=r[14],J=r[15];n=t[0],s+=n*L,o+=n*M,a+=n*U,c+=n*j,u+=n*K,l+=n*F,h+=n*V,f+=n*q,d+=n*z,p+=n*H,y+=n*G,g+=n*$,m+=n*W,b+=n*Y,v+=n*Q,w+=n*J,n=t[1],o+=n*L,a+=n*M,c+=n*U,u+=n*j,l+=n*K,h+=n*F,f+=n*V,d+=n*q,p+=n*z,y+=n*H,g+=n*G,m+=n*$,b+=n*W,v+=n*Y,w+=n*Q,_+=n*J,n=t[2],a+=n*L,c+=n*M,u+=n*U,l+=n*j,h+=n*K,f+=n*F,d+=n*V,p+=n*q,y+=n*z,g+=n*H,m+=n*G,b+=n*$,v+=n*W,w+=n*Y,_+=n*Q,E+=n*J,n=t[3],c+=n*L,u+=n*M,l+=n*U,h+=n*j,f+=n*K,d+=n*F,p+=n*V,y+=n*q,g+=n*z,m+=n*H,b+=n*G,v+=n*$,w+=n*W,_+=n*Y,E+=n*Q,S+=n*J,n=t[4],u+=n*L,l+=n*M,h+=n*U,f+=n*j,d+=n*K,p+=n*F,y+=n*V,g+=n*q,m+=n*z,b+=n*H,v+=n*G,w+=n*$,_+=n*W,E+=n*Y,S+=n*Q,k+=n*J,n=t[5],l+=n*L,h+=n*M,f+=n*U,d+=n*j,p+=n*K,y+=n*F,g+=n*V,m+=n*q,b+=n*z,v+=n*H,w+=n*G,_+=n*$,E+=n*W,S+=n*Y,k+=n*Q,C+=n*J,n=t[6],h+=n*L,f+=n*M,d+=n*U,p+=n*j,y+=n*K,g+=n*F,m+=n*V,b+=n*q,v+=n*z,w+=n*H,_+=n*G,E+=n*$,S+=n*W,k+=n*Y,C+=n*Q,A+=n*J,n=t[7],f+=n*L,d+=n*M,p+=n*U,y+=n*j,g+=n*K,m+=n*F,b+=n*V,v+=n*q,w+=n*z,_+=n*H,E+=n*G,S+=n*$,k+=n*W,C+=n*Y,A+=n*Q,I+=n*J,n=t[8],d+=n*L,p+=n*M,y+=n*U,g+=n*j,m+=n*K,b+=n*F,v+=n*V,w+=n*q,_+=n*z,E+=n*H,S+=n*G,k+=n*$,C+=n*W,A+=n*Y,I+=n*Q,T+=n*J,n=t[9],p+=n*L,y+=n*M,g+=n*U,m+=n*j,b+=n*K,v+=n*F,w+=n*V,_+=n*q,E+=n*z,S+=n*H,k+=n*G,C+=n*$,A+=n*W,I+=n*Y,T+=n*Q,x+=n*J,n=t[10],y+=n*L,g+=n*M,m+=n*U,b+=n*j,v+=n*K,w+=n*F,_+=n*V,E+=n*q,S+=n*z,k+=n*H,C+=n*G,A+=n*$,I+=n*W,T+=n*Y,x+=n*Q,B+=n*J,n=t[11],g+=n*L,m+=n*M,b+=n*U,v+=n*j,w+=n*K,_+=n*F,E+=n*V,S+=n*q,k+=n*z,C+=n*H,A+=n*G,I+=n*$,T+=n*W,x+=n*Y,B+=n*Q,R+=n*J,n=t[12],m+=n*L,b+=n*M,v+=n*U,w+=n*j,_+=n*K,E+=n*F,S+=n*V,k+=n*q,C+=n*z,A+=n*H,I+=n*G,T+=n*$,x+=n*W,B+=n*Y,R+=n*Q,N+=n*J,n=t[13],b+=n*L,v+=n*M,w+=n*U,_+=n*j,E+=n*K,S+=n*F,k+=n*V,C+=n*q,A+=n*z,I+=n*H,T+=n*G,x+=n*$,B+=n*W,R+=n*Y,N+=n*Q,O+=n*J,n=t[14],v+=n*L,w+=n*M,_+=n*U,E+=n*j,S+=n*K,k+=n*F,C+=n*V,A+=n*q,I+=n*z,T+=n*H,x+=n*G,B+=n*$,R+=n*W,N+=n*Y,O+=n*Q,P+=n*J,n=t[15],w+=n*L,_+=n*M,E+=n*U,S+=n*j,k+=n*K,C+=n*F,A+=n*V,I+=n*q,T+=n*z,x+=n*H,B+=n*G,R+=n*$,N+=n*W,O+=n*Y,P+=n*Q,D+=n*J,s+=38*_,o+=38*E,a+=38*S,c+=38*k,u+=38*C,l+=38*A,h+=38*I,f+=38*T,d+=38*x,p+=38*B,y+=38*R,g+=38*N,m+=38*O,b+=38*P,v+=38*D,i=1,n=s+i+65535,i=Math.floor(n/65536),s=n-65536*i,n=o+i+65535,i=Math.floor(n/65536),o=n-65536*i,n=a+i+65535,i=Math.floor(n/65536),a=n-65536*i,n=c+i+65535,i=Math.floor(n/65536),c=n-65536*i,n=u+i+65535,i=Math.floor(n/65536),u=n-65536*i,n=l+i+65535,i=Math.floor(n/65536),l=n-65536*i,n=h+i+65535,i=Math.floor(n/65536),h=n-65536*i,n=f+i+65535,i=Math.floor(n/65536),f=n-65536*i,n=d+i+65535,i=Math.floor(n/65536),d=n-65536*i,n=p+i+65535,i=Math.floor(n/65536),p=n-65536*i,n=y+i+65535,i=Math.floor(n/65536),y=n-65536*i,n=g+i+65535,i=Math.floor(n/65536),g=n-65536*i,n=m+i+65535,i=Math.floor(n/65536),m=n-65536*i,n=b+i+65535,i=Math.floor(n/65536),b=n-65536*i,n=v+i+65535,i=Math.floor(n/65536),v=n-65536*i,n=w+i+65535,i=Math.floor(n/65536),w=n-65536*i,s+=i-1+37*(i-1),i=1,n=s+i+65535,i=Math.floor(n/65536),s=n-65536*i,n=o+i+65535,i=Math.floor(n/65536),o=n-65536*i,n=a+i+65535,i=Math.floor(n/65536),a=n-65536*i,n=c+i+65535,i=Math.floor(n/65536),c=n-65536*i,n=u+i+65535,i=Math.floor(n/65536),u=n-65536*i,n=l+i+65535,i=Math.floor(n/65536),l=n-65536*i,n=h+i+65535,i=Math.floor(n/65536),h=n-65536*i,n=f+i+65535,i=Math.floor(n/65536),f=n-65536*i,n=d+i+65535,i=Math.floor(n/65536),d=n-65536*i,n=p+i+65535,i=Math.floor(n/65536),p=n-65536*i,n=y+i+65535,i=Math.floor(n/65536),y=n-65536*i,n=g+i+65535,i=Math.floor(n/65536),g=n-65536*i,n=m+i+65535,i=Math.floor(n/65536),m=n-65536*i,n=b+i+65535,i=Math.floor(n/65536),b=n-65536*i,n=v+i+65535,i=Math.floor(n/65536),v=n-65536*i,n=w+i+65535,i=Math.floor(n/65536),w=n-65536*i,s+=i-1+37*(i-1),e[0]=s,e[1]=o,e[2]=a,e[3]=c,e[4]=u,e[5]=l,e[6]=h,e[7]=f,e[8]=d,e[9]=p,e[10]=y,e[11]=g,e[12]=m,e[13]=b,e[14]=v,e[15]=w}function V(e,t){F(e,t,t)}function q(e,r){var n,i=t();for(n=0;n<16;n++)i[n]=r[n];for(n=253;n>=0;n--)V(i,i),2!==n&&4!==n&&F(i,i,r);for(n=0;n<16;n++)e[n]=i[n]}function z(e,r){var n,i=t();for(n=0;n<16;n++)i[n]=r[n];for(n=250;n>=0;n--)V(i,i),1!==n&&F(i,i,r);for(n=0;n<16;n++)e[n]=i[n]}function H(e,r,n){var i,s,o=new Uint8Array(32),a=new Float64Array(80),u=t(),l=t(),h=t(),f=t(),d=t(),p=t();for(s=0;s<31;s++)o[s]=r[s];for(o[31]=127&r[31]|64,o[0]&=248,U(a,n),s=0;s<16;s++)l[s]=a[s],f[s]=u[s]=h[s]=0;for(u[0]=f[0]=1,s=254;s>=0;--s)i=o[s>>>3]>>>(7&s)&1,P(u,l,i),P(h,f,i),j(d,u,h),K(u,u,h),j(h,l,f),K(l,l,f),V(f,d),V(p,u),F(u,h,u),F(h,l,d),j(d,u,h),K(u,u,h),V(l,u),K(h,f,p),F(u,h,c),j(u,u,f),F(h,h,u),F(u,f,p),F(f,l,a),V(l,d),P(u,l,i),P(h,f,i);for(s=0;s<16;s++)a[s+16]=u[s],a[s+32]=h[s],a[s+48]=l[s],a[s+64]=f[s];var y=a.subarray(32),g=a.subarray(16);return q(y,y),F(g,g,y),D(e,g),0}function G(e,t){return H(e,t,s)}function $(e,t){return n(t,32),G(e,t)}function W(e,t,r){var n=new Uint8Array(32);return H(n,r,t),_(e,i,n,E)}I.prototype.blocks=function(e,t,r){var n,i,s,o,a,c,u,l,h,f,d,p,y,g,m,b,v,w,_,E=this.fin?0:2048,S=this.h[0],k=this.h[1],C=this.h[2],A=this.h[3],I=this.h[4],T=this.h[5],x=this.h[6],B=this.h[7],R=this.h[8],N=this.h[9],O=this.r[0],P=this.r[1],D=this.r[2],L=this.r[3],M=this.r[4],U=this.r[5],j=this.r[6],K=this.r[7],F=this.r[8],V=this.r[9];while(r>=16)n=255&e[t+0]|(255&e[t+1])<<8,S+=8191&n,i=255&e[t+2]|(255&e[t+3])<<8,k+=8191&(n>>>13|i<<3),s=255&e[t+4]|(255&e[t+5])<<8,C+=8191&(i>>>10|s<<6),o=255&e[t+6]|(255&e[t+7])<<8,A+=8191&(s>>>7|o<<9),a=255&e[t+8]|(255&e[t+9])<<8,I+=8191&(o>>>4|a<<12),T+=a>>>1&8191,c=255&e[t+10]|(255&e[t+11])<<8,x+=8191&(a>>>14|c<<2),u=255&e[t+12]|(255&e[t+13])<<8,B+=8191&(c>>>11|u<<5),l=255&e[t+14]|(255&e[t+15])<<8,R+=8191&(u>>>8|l<<8),N+=l>>>5|E,h=0,f=h,f+=S*O,f+=k*(5*V),f+=C*(5*F),f+=A*(5*K),f+=I*(5*j),h=f>>>13,f&=8191,f+=T*(5*U),f+=x*(5*M),f+=B*(5*L),f+=R*(5*D),f+=N*(5*P),h+=f>>>13,f&=8191,d=h,d+=S*P,d+=k*O,d+=C*(5*V),d+=A*(5*F),d+=I*(5*K),h=d>>>13,d&=8191,d+=T*(5*j),d+=x*(5*U),d+=B*(5*M),d+=R*(5*L),d+=N*(5*D),h+=d>>>13,d&=8191,p=h,p+=S*D,p+=k*P,p+=C*O,p+=A*(5*V),p+=I*(5*F),h=p>>>13,p&=8191,p+=T*(5*K),p+=x*(5*j),p+=B*(5*U),p+=R*(5*M),p+=N*(5*L),h+=p>>>13,p&=8191,y=h,y+=S*L,y+=k*D,y+=C*P,y+=A*O,y+=I*(5*V),h=y>>>13,y&=8191,y+=T*(5*F),y+=x*(5*K),y+=B*(5*j),y+=R*(5*U),y+=N*(5*M),h+=y>>>13,y&=8191,g=h,g+=S*M,g+=k*L,g+=C*D,g+=A*P,g+=I*O,h=g>>>13,g&=8191,g+=T*(5*V),g+=x*(5*F),g+=B*(5*K),g+=R*(5*j),g+=N*(5*U),h+=g>>>13,g&=8191,m=h,m+=S*U,m+=k*M,m+=C*L,m+=A*D,m+=I*P,h=m>>>13,m&=8191,m+=T*O,m+=x*(5*V),m+=B*(5*F),m+=R*(5*K),m+=N*(5*j),h+=m>>>13,m&=8191,b=h,b+=S*j,b+=k*U,b+=C*M,b+=A*L,b+=I*D,h=b>>>13,b&=8191,b+=T*P,b+=x*O,b+=B*(5*V),b+=R*(5*F),b+=N*(5*K),h+=b>>>13,b&=8191,v=h,v+=S*K,v+=k*j,v+=C*U,v+=A*M,v+=I*L,h=v>>>13,v&=8191,v+=T*D,v+=x*P,v+=B*O,v+=R*(5*V),v+=N*(5*F),h+=v>>>13,v&=8191,w=h,w+=S*F,w+=k*K,w+=C*j,w+=A*U,w+=I*M,h=w>>>13,w&=8191,w+=T*L,w+=x*D,w+=B*P,w+=R*O,w+=N*(5*V),h+=w>>>13,w&=8191,_=h,_+=S*V,_+=k*F,_+=C*K,_+=A*j,_+=I*U,h=_>>>13,_&=8191,_+=T*M,_+=x*L,_+=B*D,_+=R*P,_+=N*O,h+=_>>>13,_&=8191,h=(h<<2)+h|0,h=h+f|0,f=8191&h,h>>>=13,d+=h,S=f,k=d,C=p,A=y,I=g,T=m,x=b,B=v,R=w,N=_,t+=16,r-=16;this.h[0]=S,this.h[1]=k,this.h[2]=C,this.h[3]=A,this.h[4]=I,this.h[5]=T,this.h[6]=x,this.h[7]=B,this.h[8]=R,this.h[9]=N},I.prototype.finish=function(e,t){var r,n,i,s,o=new Uint16Array(10);if(this.leftover){for(s=this.leftover,this.buffer[s++]=1;s<16;s++)this.buffer[s]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(r=this.h[1]>>>13,this.h[1]&=8191,s=2;s<10;s++)this.h[s]+=r,r=this.h[s]>>>13,this.h[s]&=8191;for(this.h[0]+=5*r,r=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=r,r=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=r,o[0]=this.h[0]+5,r=o[0]>>>13,o[0]&=8191,s=1;s<10;s++)o[s]=this.h[s]+r,r=o[s]>>>13,o[s]&=8191;for(o[9]-=8192,n=(1^r)-1,s=0;s<10;s++)o[s]&=n;for(n=~n,s=0;s<10;s++)this.h[s]=this.h[s]&n|o[s];for(this.h[0]=65535&(this.h[0]|this.h[1]<<13),this.h[1]=65535&(this.h[1]>>>3|this.h[2]<<10),this.h[2]=65535&(this.h[2]>>>6|this.h[3]<<7),this.h[3]=65535&(this.h[3]>>>9|this.h[4]<<4),this.h[4]=65535&(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14),this.h[5]=65535&(this.h[6]>>>2|this.h[7]<<11),this.h[6]=65535&(this.h[7]>>>5|this.h[8]<<8),this.h[7]=65535&(this.h[8]>>>8|this.h[9]<<5),i=this.h[0]+this.pad[0],this.h[0]=65535&i,s=1;s<8;s++)i=(this.h[s]+this.pad[s]|0)+(i>>>16)|0,this.h[s]=65535&i;e[t+0]=this.h[0]>>>0&255,e[t+1]=this.h[0]>>>8&255,e[t+2]=this.h[1]>>>0&255,e[t+3]=this.h[1]>>>8&255,e[t+4]=this.h[2]>>>0&255,e[t+5]=this.h[2]>>>8&255,e[t+6]=this.h[3]>>>0&255,e[t+7]=this.h[3]>>>8&255,e[t+8]=this.h[4]>>>0&255,e[t+9]=this.h[4]>>>8&255,e[t+10]=this.h[5]>>>0&255,e[t+11]=this.h[5]>>>8&255,e[t+12]=this.h[6]>>>0&255,e[t+13]=this.h[6]>>>8&255,e[t+14]=this.h[7]>>>0&255,e[t+15]=this.h[7]>>>8&255},I.prototype.update=function(e,t,r){var n,i;if(this.leftover){for(i=16-this.leftover,i>r&&(i=r),n=0;n=16&&(i=r-r%16,this.blocks(e,t,i),t+=i,r-=i),r){for(n=0;n=128){for(E=0;E<16;E++)S=8*E+W,B[E]=r[S+0]<<24|r[S+1]<<16|r[S+2]<<8|r[S+3],R[E]=r[S+4]<<24|r[S+5]<<16|r[S+6]<<8|r[S+7];for(E=0;E<80;E++)if(i=N,s=O,o=P,a=D,c=L,u=M,l=U,h=j,f=K,d=F,p=V,y=q,g=z,m=H,b=G,v=$,k=j,C=$,A=65535&C,I=C>>>16,T=65535&k,x=k>>>16,k=(L>>>14|z<<18)^(L>>>18|z<<14)^(z>>>9|L<<23),C=(z>>>14|L<<18)^(z>>>18|L<<14)^(L>>>9|z<<23),A+=65535&C,I+=C>>>16,T+=65535&k,x+=k>>>16,k=L&M^~L&U,C=z&H^~z&G,A+=65535&C,I+=C>>>16,T+=65535&k,x+=k>>>16,k=Z[2*E],C=Z[2*E+1],A+=65535&C,I+=C>>>16,T+=65535&k,x+=k>>>16,k=B[E%16],C=R[E%16],A+=65535&C,I+=C>>>16,T+=65535&k,x+=k>>>16,I+=A>>>16,T+=I>>>16,x+=T>>>16,w=65535&T|x<<16,_=65535&A|I<<16,k=w,C=_,A=65535&C,I=C>>>16,T=65535&k,x=k>>>16,k=(N>>>28|K<<4)^(K>>>2|N<<30)^(K>>>7|N<<25),C=(K>>>28|N<<4)^(N>>>2|K<<30)^(N>>>7|K<<25),A+=65535&C,I+=C>>>16,T+=65535&k,x+=k>>>16,k=N&O^N&P^O&P,C=K&F^K&V^F&V,A+=65535&C,I+=C>>>16,T+=65535&k,x+=k>>>16,I+=A>>>16,T+=I>>>16,x+=T>>>16,h=65535&T|x<<16,v=65535&A|I<<16,k=a,C=y,A=65535&C,I=C>>>16,T=65535&k,x=k>>>16,k=w,C=_,A+=65535&C,I+=C>>>16,T+=65535&k,x+=k>>>16,I+=A>>>16,T+=I>>>16,x+=T>>>16,a=65535&T|x<<16,y=65535&A|I<<16,O=i,P=s,D=o,L=a,M=c,U=u,j=l,N=h,F=f,V=d,q=p,z=y,H=g,G=m,$=b,K=v,E%16===15)for(S=0;S<16;S++)k=B[S],C=R[S],A=65535&C,I=C>>>16,T=65535&k,x=k>>>16,k=B[(S+9)%16],C=R[(S+9)%16],A+=65535&C,I+=C>>>16,T+=65535&k,x+=k>>>16,w=B[(S+1)%16],_=R[(S+1)%16],k=(w>>>1|_<<31)^(w>>>8|_<<24)^w>>>7,C=(_>>>1|w<<31)^(_>>>8|w<<24)^(_>>>7|w<<25),A+=65535&C,I+=C>>>16,T+=65535&k,x+=k>>>16,w=B[(S+14)%16],_=R[(S+14)%16],k=(w>>>19|_<<13)^(_>>>29|w<<3)^w>>>6,C=(_>>>19|w<<13)^(w>>>29|_<<3)^(_>>>6|w<<26),A+=65535&C,I+=C>>>16,T+=65535&k,x+=k>>>16,I+=A>>>16,T+=I>>>16,x+=T>>>16,B[S]=65535&T|x<<16,R[S]=65535&A|I<<16;k=N,C=K,A=65535&C,I=C>>>16,T=65535&k,x=k>>>16,k=e[0],C=t[0],A+=65535&C,I+=C>>>16,T+=65535&k,x+=k>>>16,I+=A>>>16,T+=I>>>16,x+=T>>>16,e[0]=N=65535&T|x<<16,t[0]=K=65535&A|I<<16,k=O,C=F,A=65535&C,I=C>>>16,T=65535&k,x=k>>>16,k=e[1],C=t[1],A+=65535&C,I+=C>>>16,T+=65535&k,x+=k>>>16,I+=A>>>16,T+=I>>>16,x+=T>>>16,e[1]=O=65535&T|x<<16,t[1]=F=65535&A|I<<16,k=P,C=V,A=65535&C,I=C>>>16,T=65535&k,x=k>>>16,k=e[2],C=t[2],A+=65535&C,I+=C>>>16,T+=65535&k,x+=k>>>16,I+=A>>>16,T+=I>>>16,x+=T>>>16,e[2]=P=65535&T|x<<16,t[2]=V=65535&A|I<<16,k=D,C=q,A=65535&C,I=C>>>16,T=65535&k,x=k>>>16,k=e[3],C=t[3],A+=65535&C,I+=C>>>16,T+=65535&k,x+=k>>>16,I+=A>>>16,T+=I>>>16,x+=T>>>16,e[3]=D=65535&T|x<<16,t[3]=q=65535&A|I<<16,k=L,C=z,A=65535&C,I=C>>>16,T=65535&k,x=k>>>16,k=e[4],C=t[4],A+=65535&C,I+=C>>>16,T+=65535&k,x+=k>>>16,I+=A>>>16,T+=I>>>16,x+=T>>>16,e[4]=L=65535&T|x<<16,t[4]=z=65535&A|I<<16,k=M,C=H,A=65535&C,I=C>>>16,T=65535&k,x=k>>>16,k=e[5],C=t[5],A+=65535&C,I+=C>>>16,T+=65535&k,x+=k>>>16,I+=A>>>16,T+=I>>>16,x+=T>>>16,e[5]=M=65535&T|x<<16,t[5]=H=65535&A|I<<16,k=U,C=G,A=65535&C,I=C>>>16,T=65535&k,x=k>>>16,k=e[6],C=t[6],A+=65535&C,I+=C>>>16,T+=65535&k,x+=k>>>16,I+=A>>>16,T+=I>>>16,x+=T>>>16,e[6]=U=65535&T|x<<16,t[6]=G=65535&A|I<<16,k=j,C=$,A=65535&C,I=C>>>16,T=65535&k,x=k>>>16,k=e[7],C=t[7],A+=65535&C,I+=C>>>16,T+=65535&k,x+=k>>>16,I+=A>>>16,T+=I>>>16,x+=T>>>16,e[7]=j=65535&T|x<<16,t[7]=$=65535&A|I<<16,W+=128,n-=128}return n}function te(e,t,r){var n,i=new Int32Array(8),s=new Int32Array(8),o=new Uint8Array(256),a=r;for(i[0]=1779033703,i[1]=3144134277,i[2]=1013904242,i[3]=2773480762,i[4]=1359893119,i[5]=2600822924,i[6]=528734635,i[7]=1541459225,s[0]=4089235720,s[1]=2227873595,s[2]=4271175723,s[3]=1595750129,s[4]=2917565137,s[5]=725511199,s[6]=4215389547,s[7]=327033209,ee(i,s,t,r),r%=128,n=0;n=0;--i)n=r[i/8|0]>>(7&i)&1,ne(e,t,n),re(t,e),re(e,e),ne(e,t,n)}function oe(e,r){var n=[t(),t(),t(),t()];N(n[0],h),N(n[1],f),N(n[2],a),F(n[3],h,f),se(e,n,r)}function ae(e,r,i){var s,o=new Uint8Array(64),a=[t(),t(),t(),t()];for(i||n(r,32),te(o,r,32),o[0]&=248,o[31]&=127,o[31]|=64,oe(a,o),ie(e,a),s=0;s<32;s++)r[s+32]=e[s];return 0}var ce=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function ue(e,t){var r,n,i,s;for(n=63;n>=32;--n){for(r=0,i=n-32,s=n-12;i>4)*ce[i],r=t[i]>>8,t[i]&=255;for(i=0;i<32;i++)t[i]-=r*ce[i];for(n=0;n<32;n++)t[n+1]+=t[n]>>8,e[n]=255&t[n]}function le(e){var t,r=new Float64Array(64);for(t=0;t<64;t++)r[t]=e[t];for(t=0;t<64;t++)e[t]=0;ue(e,r)}function he(e,r,n,i){var s,o,a=new Uint8Array(64),c=new Uint8Array(64),u=new Uint8Array(64),l=new Float64Array(64),h=[t(),t(),t(),t()];te(a,i,32),a[0]&=248,a[31]&=127,a[31]|=64;var f=n+64;for(s=0;s>7&&K(e[0],o,e[0]),F(e[3],e[0],e[1]),0)}function de(e,r,n,i){var s,o=new Uint8Array(32),a=new Uint8Array(64),c=[t(),t(),t(),t()],u=[t(),t(),t(),t()];if(n<64)return-1;if(fe(u,i))return-1;for(s=0;s=0},e.sign.keyPair=function(){var e=new Uint8Array(Ie),t=new Uint8Array(Te);return ae(e,t),{publicKey:e,secretKey:t}},e.sign.keyPair.fromSecretKey=function(e){if(Oe(e),e.length!==Te)throw new Error("bad secret key size");for(var t=new Uint8Array(Ie),r=0;r0;return r.bytes=1,n};return o(0,t,r,e)}(),t.int32=function(){var e=function(t,r){var i=n.decode(t,r);return e.bytes=n.decode.bytes,i>2147483647?i-4294967296:i},t=function(e){return n.encodingLength(e<0?e+4294967296:e)};return o(0,n.encode,e,t)}(),t.int64=function(){var e=function(t,r){var i=n.decode(t,r);if(i>=Math.pow(2,63)){var o=9;while(255===t[r+o-1])o--;o=o||9;var a=s.allocUnsafe(o);t.copy(a,0,r,r+o),a[o-1]=127&a[o-1],i=-1*n.decode(a,0),e.bytes=10}else e.bytes=n.decode.bytes;return i},t=function(e,r,i){if(e<0){var s=i+9;n.encode(-1*e,r,i),i+=n.encode.bytes-1,r[i]=128|r[i];while(i"ls"!==e),c=a.length,u=a.reduce((e,r)=>{const n=t.from(r+"\n"),i=o.encodingLength(n.length);return e+i},0),l=t.concat([t.from(o.encode(c)),t.from(o.encode(u)),t.from("\n")]),h=a.map(e=>t.from(e+"\n"));n(i([l].concat(h)),s.encode(),r)}e.exports=a}).call(this,r("b639").Buffer)},"3e0d":function(e,t,r){(function(t){function r(e){if("object"!==typeof e||null===e)throw new TypeError("First argument must be an abstract-leveldown compliant store");this.db=e,this._ended=!1,this._nexting=!1}r.prototype.next=function(e){var r=this;if("function"!==typeof e)throw new Error("next() requires a callback argument");return r._ended?(t.nextTick(e,new Error("cannot call next() after end()")),r):r._nexting?(t.nextTick(e,new Error("cannot call next() before previous next() has completed")),r):(r._nexting=!0,r._next((function(){r._nexting=!1,e.apply(null,arguments)})),r)},r.prototype._next=function(e){t.nextTick(e)},r.prototype.seek=function(e){if(this._ended)throw new Error("cannot call seek() after end()");if(this._nexting)throw new Error("cannot call seek() before next() has completed");e=this.db._serializeKey(e),this._seek(e)},r.prototype._seek=function(e){},r.prototype.end=function(e){if("function"!==typeof e)throw new Error("end() requires a callback argument");if(this._ended)return t.nextTick(e,new Error("end() already called on iterator"));this._ended=!0,this._end(e)},r.prototype._end=function(e){t.nextTick(e)},e.exports=r}).call(this,r("4362"))},"3e1e":function(e,t,r){"use strict";var n=r("4b5a"),i=r("3f5a"),s=r("2d12");for(var o in t=e.exports=r("bf0b"),t.pull=t,n)t[o]=n[o];for(var o in s)t[o]=s[o];for(var o in i)t[o]=i[o]},"3e21":function(e,t,r){"use strict";const n=r("e302");class i{constructor(e){this.lru=n(e)}get(e){const t=this.lru.get(e);if(t)return t.expire&&t.expiree.key.toString()!==o.toString(),e=>e.key.toString()!==a.toString()]};if(null!=e.prefix&&t.filters.push(t=>this._invertKey(t.key).toString().startsWith(e.prefix)),null!=e.filters){const r=e.filters.map(e=>t=>e(Object.assign({},t,{key:this._invertKey(t.key)})));t.filters=t.filters.concat(r)}return null!=e.orders&&(t.orders=e.orders.map(e=>async t=>{t.forEach(e=>{e.key=this._invertKey(e.key)});const r=await e(t);return r.forEach(e=>{e.key=this._convertKey(e.key)}),r})),this.child.query(t)}close(){return this.child.close()}}e.exports=c}).call(this,r("b639").Buffer)},"3e7a":function(e,t,r){"use strict";(function(t){const n=r("c449"),i=(e,r)=>{if("string"===typeof r)e._links=e._links.filter(e=>e.Name!==r);else{if(!t.isBuffer(r)&&!n.isCID(r))throw new Error("second arg needs to be a name or CID");e._links=e._links.filter(e=>!e.Hash.equals(r))}};e.exports=i}).call(this,r("b639").Buffer)},"3e80":function(e,t,r){"use strict";r.d(t,"b",(function(){return b})),r.d(t,"a",(function(){return _}));var n=r("7ca5"),i=r("3a17"),s=r("549e"),o=r("9bda"),a=r("8e19"),c=r("baf7"),u=r("ffb2"),l=r("4a45"),h=r("bc79"),f=function(e,t,r,n){function i(e){return e instanceof r?e:new r((function(t){t(e)}))}return new(r||(r=Promise))((function(r,s){function o(e){try{c(n.next(e))}catch(t){s(t)}}function a(e){try{c(n["throw"](e))}catch(t){s(t)}}function c(e){e.done?r(e.value):i(e.value).then(o,a)}c((n=n.apply(e,t||[])).next())}))};const d=new u["Logger"](l["a"]);function p(e){return new Promise((function(t){setTimeout((function(){t()}),e)}))}function y(e){if(e.error){let t=new Error(e.error.message);throw t.code=e.error.code,t.data=e.error.data,t}return e.result}function g(e){return e?e.toLowerCase():e}const m={};class b extends n["a"]{constructor(e,t,r){if(d.checkNew(new.target,b),super(),e!==m)throw new Error("do not call the JsonRpcSigner constructor directly; use provider.getSigner");Object(o["defineReadOnly"])(this,"provider",t),null==r&&(r=0),"string"===typeof r?(Object(o["defineReadOnly"])(this,"_address",this.provider.formatter.address(r)),Object(o["defineReadOnly"])(this,"_index",null)):"number"===typeof r?(Object(o["defineReadOnly"])(this,"_index",r),Object(o["defineReadOnly"])(this,"_address",null)):d.throwArgumentError("invalid address or index","addressOrIndex",r)}connect(e){return d.throwError("cannot alter JSON-RPC Signer connection",u["Logger"].errors.UNSUPPORTED_OPERATION,{operation:"connect"})}connectUnchecked(){return new v(m,this.provider,this._address||this._index)}getAddress(){return this._address?Promise.resolve(this._address):this.provider.send("eth_accounts",[]).then(e=>(e.length<=this._index&&d.throwError("unknown account #"+this._index,u["Logger"].errors.UNSUPPORTED_OPERATION,{operation:"getAddress"}),this.provider.formatter.address(e[this._index])))}sendUncheckedTransaction(e){e=Object(o["shallowCopy"])(e);let t=this.getAddress().then(e=>(e&&(e=e.toLowerCase()),e));if(null==e.gasLimit){let r=Object(o["shallowCopy"])(e);r.from=t,e.gasLimit=this.provider.estimateGas(r)}return Promise.all([Object(o["resolveProperties"])(e),t]).then(e=>{let t=e[0],r=this.provider.constructor.hexlifyTransaction(t);return r.from=e[1],this.provider.send("eth_sendTransaction",[r]).then(e=>e,e=>{throw e.responseText&&(e.responseText.indexOf("insufficient funds")>=0&&d.throwError("insufficient funds",u["Logger"].errors.INSUFFICIENT_FUNDS,{transaction:t}),e.responseText.indexOf("nonce too low")>=0&&d.throwError("nonce has already been used",u["Logger"].errors.NONCE_EXPIRED,{transaction:t}),e.responseText.indexOf("replacement transaction underpriced")>=0&&d.throwError("replacement fee too low",u["Logger"].errors.REPLACEMENT_UNDERPRICED,{transaction:t})),e})})}signTransaction(e){return d.throwError("signing transactions is unsupported",u["Logger"].errors.UNSUPPORTED_OPERATION,{operation:"signTransaction"})}sendTransaction(e){return this.sendUncheckedTransaction(e).then(e=>Object(c["b"])(()=>this.provider.getTransaction(e).then(t=>{if(null!==t)return this.provider._wrapTransaction(t,e)}),{onceBlock:this.provider}).catch(t=>{throw t.transactionHash=e,t}))}signMessage(e){let t="string"===typeof e?Object(a["c"])(e):e;return this.getAddress().then(e=>this.provider.send("eth_sign",[e.toLowerCase(),Object(s["hexlify"])(t)]))}unlock(e){let t=this.provider;return this.getAddress().then((function(r){return t.send("personal_unlockAccount",[r.toLowerCase(),e,null])}))}}class v extends b{sendTransaction(e){return this.sendUncheckedTransaction(e).then(e=>({hash:e,nonce:null,gasLimit:null,gasPrice:null,data:null,value:null,chainId:null,confirmations:0,from:null,wait:t=>this.provider.waitForTransaction(e,t)}))}}const w={chainId:!0,data:!0,gasLimit:!0,gasPrice:!0,nonce:!0,to:!0,value:!0};class _ extends h["a"]{constructor(e,t){d.checkNew(new.target,_);const r=Object(o["getStatic"])(new.target,"getNetwork");if("string"===typeof e&&null===t){const n=r(e);t=n,e=null}if(t)super(t);else{const e=new Promise((e,t)=>{setTimeout(()=>f(this,void 0,void 0,(function*(){let n=null;try{n=yield this.send("eth_chainId",[])}catch(s){try{n=yield this.send("net_version",[])}catch(s){}}if(null!=n)try{return e(r(i["a"].from(n).toNumber()))}catch(s){console.log("e3",s)}t(d.makeError("could not detect network",u["Logger"].errors.NETWORK_ERROR))})),0)});super(e)}e||(e="http://localhost:8545"),this.connection="string"===typeof e?Object.freeze({url:e}):Object.freeze(Object(o["shallowCopy"])(e)),this._nextId=42}getSigner(e){return new b(m,this,e)}getUncheckedSigner(e){return this.getSigner(e).connectUnchecked()}listAccounts(){return this.send("eth_accounts",[]).then(e=>e.map(e=>this.formatter.address(e)))}send(e,t){let r={method:e,params:t,id:this._nextId++,jsonrpc:"2.0"};return this.emit("debug",{action:"request",request:Object(o["deepCopy"])(r),provider:this}),Object(c["a"])(this.connection,JSON.stringify(r),y).then(e=>(this.emit("debug",{action:"response",request:r,response:e,provider:this}),e))}perform(e,t){switch(e){case"getBlockNumber":return this.send("eth_blockNumber",[]);case"getGasPrice":return this.send("eth_gasPrice",[]);case"getBalance":return this.send("eth_getBalance",[g(t.address),t.blockTag]);case"getTransactionCount":return this.send("eth_getTransactionCount",[g(t.address),t.blockTag]);case"getCode":return this.send("eth_getCode",[g(t.address),t.blockTag]);case"getStorageAt":return this.send("eth_getStorageAt",[g(t.address),t.position,t.blockTag]);case"sendTransaction":return this.send("eth_sendRawTransaction",[t.signedTransaction]).catch(e=>{throw e.responseText&&(e.responseText.indexOf("insufficient funds")>0&&d.throwError("insufficient funds",u["Logger"].errors.INSUFFICIENT_FUNDS,{}),e.responseText.indexOf("nonce too low")>0&&d.throwError("nonce has already been used",u["Logger"].errors.NONCE_EXPIRED,{}),e.responseText.indexOf("replacement transaction underpriced")>0&&d.throwError("replacement fee too low",u["Logger"].errors.REPLACEMENT_UNDERPRICED,{})),e});case"getBlock":return t.blockTag?this.send("eth_getBlockByNumber",[t.blockTag,!!t.includeTransactions]):t.blockHash?this.send("eth_getBlockByHash",[t.blockHash,!!t.includeTransactions]):d.throwArgumentError("invalid block tag or block hash","params",t);case"getTransaction":return this.send("eth_getTransactionByHash",[t.transactionHash]);case"getTransactionReceipt":return this.send("eth_getTransactionReceipt",[t.transactionHash]);case"call":{const e=Object(o["getStatic"])(this.constructor,"hexlifyTransaction");return this.send("eth_call",[e(t.transaction,{from:!0}),t.blockTag])}case"estimateGas":{const e=Object(o["getStatic"])(this.constructor,"hexlifyTransaction");return this.send("eth_estimateGas",[e(t.transaction,{from:!0})])}case"getLogs":return t.filter&&null!=t.filter.address&&(t.filter.address=g(t.filter.address)),this.send("eth_getLogs",[t.filter]);default:break}return d.throwError(e+" not implemented",u["Logger"].errors.NOT_IMPLEMENTED,{operation:e})}_startPending(){if(null!=this._pendingFilter)return;let e=this,t=this.send("eth_newPendingTransactionFilter",[]);this._pendingFilter=t,t.then((function(r){function n(){e.send("eth_getFilterChanges",[r]).then((function(r){if(e._pendingFilter!=t)return null;let n=Promise.resolve();return r.forEach((function(t){e._emitted["t:"+t.toLowerCase()]="pending",n=n.then((function(){return e.getTransaction(t).then((function(t){return e.emit("pending",t),null}))}))})),n.then((function(){return p(1e3)}))})).then((function(){if(e._pendingFilter==t)return setTimeout((function(){n()}),0),null;e.send("eth_uninstallFilter",[r])})).catch(e=>{})}return n(),r})).catch(e=>{})}_stopPending(){this._pendingFilter=null}static hexlifyTransaction(e,t){const r=Object(o["shallowCopy"])(w);if(t)for(let i in t)t[i]&&(r[i]=!0);Object(o["checkProperties"])(e,r);const n={};return["gasLimit","gasPrice","nonce","value"].forEach((function(t){if(null==e[t])return;const r=Object(s["hexValue"])(e[t]);"gasLimit"===t&&(t="gas"),n[t]=r})),["from","to","data"].forEach((function(t){null!=e[t]&&(n[t]=Object(s["hexlify"])(e[t]))})),n}}},"3e9a":function(e,t,r){"use strict";const n=7;function i(e,t){return e+s(t)}function s(e){let t=e;return t-=t>>1&1431655765,t=(858993459&t)+(t>>2&858993459),16843009*(t+(t>>4)&252645135)>>24}function o(e,t){return e[0]-t[0]}function a(e){return e[1]}e.exports=class{constructor(){this._bitArrays=[],this._data=[],this._length=0,this._changedLength=!1,this._changedData=!1}set(e,t){let r=this._internalPositionFor(e,!1);if(void 0===t)-1!==r&&(this._unsetInternalPos(r),this._unsetBit(e),this._changedLength=!0,this._changedData=!0);else{let n=!1;-1===r?(r=this._data.length,this._setBit(e),this._changedData=!0):n=!0,this._setInternalPos(r,e,t,n),this._changedLength=!0}}unset(e){this.set(e,void 0)}get(e){this._sortData();const t=this._internalPositionFor(e,!0);if(-1!==t)return this._data[t][1]}push(e){return this.set(this.length,e),this.length}get length(){if(this._sortData(),this._changedLength){const e=this._data[this._data.length-1];this._length=e?e[0]+1:0,this._changedLength=!1}return this._length}forEach(e){let t=0;while(t=this._bitArrays.length)return-1;const o=this._bitArrays[r],a=e-r*n,c=(o&1<0;if(!c)return-1;const u=this._bitArrays.slice(0,r).reduce(i,0),l=~(4294967295<=t)i.push(s);else if(i[0][0]<=t)i.unshift(s);else{const e=Math.round(i.length/2);this._data=i.slice(0,e).concat(s).concat(i.slice(e))}else this._data.push(s);this._changedData=!0,this._changedLength=!0}}_unsetInternalPos(e){this._data.splice(e,1)}_sortData(){this._changedData&&this._data.sort(o),this._changedData=!1}bitField(){const e=[];let t,r=8,n=0,i=0;const s=this._bitArrays.slice();while(s.length||n){0===n&&(t=s.shift(),n=7);const o=Math.min(n,r),a=~(255<>>=o,n-=o,r-=o,r&&(n||s.length)||(e.push(i),i=0,r=8)}for(var o=e.length-1;o>0;o--){const t=e[o];if(0!==t)break;e.pop()}return e}compactArray(){return this._sortData(),this._data.map(a)}}},"3ee6":function(e,t,r){"use strict";function n(e,t,r){var n,i=e instanceof Error?e:new Error(e);if("object"===typeof t?r=t:null!=t&&(i.code=t),r)for(n in r)i[n]=r[n];return i}e.exports=n},"3eed":function(e,t,r){"use strict";var n=r("53a8"),i=r("d8ab");e.exports=function(){var e=n.apply(null,arguments);return i(e,{bufferKeys:e.bufferKeys||!1,snapshots:e.snapshots||!1,permanence:e.permanence||!1,seek:e.seek||!1,clear:e.clear||!1,status:e.status||!1,createIfMissing:e.createIfMissing||!1,errorIfExists:e.errorIfExists||!1,deferredOpen:e.deferredOpen||!1,openCallback:e.openCallback||!1,promises:e.promises||!1,streams:e.streams||!1,encodings:e.encodings||!1,additionalMethods:n(e.additionalMethods)})}},"3f13":function(e,t,r){"use strict";const n=t;n.der=r("ebe6"),n.pem=r("b108")},"3f5a":function(e,t,r){"use strict";e.exports={drain:r("90de"),onEnd:r("acee"),log:r("19ff"),find:r("33b3"),reduce:r("ef02"),collect:r("f0c2"),concat:r("5b4a")}},"3f64":function(e,t,r){"use strict";const n=r("f106"),i=r("1a18"),s=r("ff59"),o=r("e3d5"),a=r("bd14"),c=r("41d6"),u=r("63e1"),l=n(r("49c5")),h=r("aa69");class f{constructor(e){this.full=e,this.wantlist=new Map,this.blocks=new Map}get empty(){return 0===this.blocks.size&&0===this.wantlist.size}addEntry(e,t,r){const n=e.toString("base58btc"),i=this.wantlist.get(n);i?(i.priority=t,i.cancel=Boolean(r)):this.wantlist.set(n,new h(e,t,r))}addBlock(e){const t=e.cid.toString("base58btc");this.blocks.set(t,e)}cancel(e){const t=e.toString("base58btc");this.wantlist.delete(t),this.addEntry(e,0,!0)}serializeToBitswap100(){const e={wantlist:{entries:Array.from(this.wantlist.values()).map(e=>({block:e.cid.buffer,priority:Number(e.priority),cancel:Boolean(e.cancel)}))},blocks:Array.from(this.blocks.values()).map(e=>e.data)};return this.full&&(e.wantlist.full=!0),l.Message.encode(e)}serializeToBitswap110(){const e={wantlist:{entries:Array.from(this.wantlist.values()).map(e=>({block:e.cid.buffer,priority:Number(e.priority),cancel:Boolean(e.cancel)}))},payload:[]};return this.full&&(e.wantlist.full=!0),this.blocks.forEach(t=>{e.payload.push({prefix:t.cid.prefix,data:t.data})}),l.Message.encode(e)}equals(e){const t=(e,t)=>{if(e.equals&&"function"===typeof e.equals)return e.equals(t)};return!(this.full!==e.full||!s(this.wantlist,e.wantlist,t)||!s(this.blocks,e.blocks,t))}get[Symbol.toStringTag](){const e=Array.from(this.wantlist.keys()),t=Array.from(this.blocks.keys());return`BitswapMessage `}}f.deserialize=async e=>{const t=l.Message.decode(e),r=t.wantlist&&t.wantlist.full||!1,n=new f(r);return t.wantlist&&t.wantlist.entries.forEach(e=>{const t=new o(e.block);n.addEntry(t,e.priority,e.cancel)}),t.blocks.length>0?(await Promise.all(t.blocks.map(async e=>{const t=await u(e,"sha2-256"),r=new o(t);n.addBlock(new i(e,r))})),n):t.payload.length>0?(await Promise.all(t.payload.map(async e=>{if(!e.prefix||!e.data)return;const t=c(e.prefix),r=t[0],s=t[1],l=t[2],h=await u(e.data,l),f=new o(r,a[s.toString("16")],h);n.addBlock(new i(e.data,f))})),n):n},f.Entry=h,e.exports=f},"3f6e":function(e){e.exports=JSON.parse('{"sha1":{"securityStrength":128,"outlen":160,"seedlen":440},"sha224":{"securityStrength":192,"outlen":224,"seedlen":440},"sha256":{"securityStrength":256,"outlen":256,"seedlen":440},"sha384":{"securityStrength":256,"outlen":384,"seedlen":888},"sha512":{"securityStrength":256,"outlen":512,"seedlen":888}}')},"3f70":function(e,t,r){"use strict";function n(e,t,r){var n,i=e instanceof Error?e:new Error(e);if("object"===typeof t?r=t:null!=t&&(i.code=t),r)for(n in r)i[n]=r[n];return i}e.exports=n},"3f74":function(e,t,r){"use strict";function n(e,t){const r={message:"Create a new 3Box profile\n\n- \nYour unique profile ID is "+e};return t&&(r.timestamp=Math.floor((new Date).getTime()/1e3),r.message+=" \nTimestamp: "+r.timestamp),r}function i(e,t){return{jsonrpc:"2.0",id:1,method:e,params:t}}Object.defineProperty(t,"__esModule",{value:!0}),t.getConsentMessage=n,t.encodeRpcCall=i},"3faa":function(e,t,r){"use strict";const n=r("9efb"),i=r("33fc"),s=r("d3fa"),o=r("d1ae"),a=r("f277"),c=r("0841"),u=r("e24c").Connection,l=r("72af"),h=r("bc1b"),f=r("c59f"),d=r("1287").PROTOCOL_ID;class p{constructor(){this.conn=null,this.log=l.log.dialer()}handle(e,t){this.log("dialer handle conn"),t=f(t);const r=h(d,(r,n)=>{if(r)return t(r);this.log("handshake success"),this.conn=new u(n,e),t()},this.log);try{i(e,r,e)}catch(n){this.log.error(n),t(n)}}select(e,t){if(this.log("dialer select "+e),t=f(t),!this.conn)return t(new Error("multistream handshake has not finalized yet"));const r=h(e,(e,r)=>{if(e)return this.conn=new u(r,this.conn),t(e);t(null,new u(r,this.conn))},this.log);i(this.conn,r,this.conn)}ls(e){e=f(e);const t=h("ls",(t,r)=>{if(t)return e(t);i(r,c.decode(),g(r),s(y),o((t,r)=>{if(t)return e(t);e(null,r.slice(1))}))},this.log);i(this.conn,t,this.conn)}}function y(e){return e.toString().slice(0,-1)}function g(e){let t=!0,r=0;return a(e=>t?(n.decode(e),r=n.decode(e,n.decode.bytes),!0):r-- >0)}e.exports=p},"3faa9":function(e,t,r){"use strict";const n=r("0503"),i=r("4d9e"),s=r("6da9"),o=r("be69"),a={parents:!1,recursive:!1,flush:!0,format:"dag-pb",hashAlg:"sha2-256",shardSplitThreshold:1e3};e.exports=e=>async function(...t){Array.isArray(t[0])&&(t=t[0].concat(t.slice(1)));const{sources:r}=await i(e,t),c=n(t,a),u=r.map(e=>e.path).concat(c),l=r.slice(0,-1).map(e=>e.path).concat(Object.assign(c,{recursive:!0}));await s(e).apply(null,u),await o(e).apply(null,l)}},"3fd3":function(e,t,r){"use strict";const n=r("fa4d");e.exports=e=>n((t,r,n,i)=>{"function"!==typeof n||i||(i=n,n={}),"function"===typeof n&&"function"===typeof i&&(i=n,n={}),e({path:"dht/put",args:[t,r],qs:n},i)})},"3fd8":function(e,t,r){"use strict";(function(t){const n=r("34c0"),i=r("6874"),s=(e,r)=>{const s=r.key,o=n(s,t.from("/"));if(o.length<3)return;const a=e[o[1].toString()];if(!a){const e="Invalid record keytype";throw i(e,"ERR_INVALID_RECORD_KEY_TYPE")}return a.func(s,r.value)};e.exports={verifyRecord:s,validators:r("ec6f")}}).call(this,r("b639").Buffer)},"3ff7":function(e,t){t.encrypt=function(e,t){return e._cipher.encryptBlock(t)},t.decrypt=function(e,t){return e._cipher.decryptBlock(t)}},4041:function(e,t,r){"use strict";t.ERR_WS_STAR_WEBSOCKET_CONNECTION="ERR_WS_STAR_WEBSOCKET_CONNECTION"},4064:function(e,t,r){"use strict";const{Buffer:n}=r("b639"),i=r("1c55"),s=r("416a"),o=r("26d5"),{fromNumberTo32BitBuf:a}=r("9c49"),c=e=>async t=>{switch(e){case"sha3-224":return n.from(i.sha3_224.arrayBuffer(t));case"sha3-256":return n.from(i.sha3_256.arrayBuffer(t));case"sha3-384":return n.from(i.sha3_384.arrayBuffer(t));case"sha3-512":return n.from(i.sha3_512.arrayBuffer(t));case"shake-128":return n.from(i.shake128.create(128).update(t).arrayBuffer());case"shake-256":return n.from(i.shake256.create(256).update(t).arrayBuffer());case"keccak-224":return n.from(i.keccak224.arrayBuffer(t));case"keccak-256":return n.from(i.keccak256.arrayBuffer(t));case"keccak-384":return n.from(i.keccak384.arrayBuffer(t));case"keccak-512":return n.from(i.keccak512.arrayBuffer(t));case"murmur3-128":return n.from(s.x64.hash128(t),"hex");case"murmur3-32":return a(s.x86.hash32(t));default:throw new TypeError(`${e} is not a supported algorithm`)}};e.exports={sha1:o("sha1"),sha2256:o("sha2-256"),sha2512:o("sha2-512"),dblSha2256:o("dbl-sha2-256"),sha3224:c("sha3-224"),sha3256:c("sha3-256"),sha3384:c("sha3-384"),sha3512:c("sha3-512"),shake128:c("shake-128"),shake256:c("shake-256"),keccak224:c("keccak-224"),keccak256:c("keccak-256"),keccak384:c("keccak-384"),keccak512:c("keccak-512"),murmur3128:c("murmur3-128"),murmur332:c("murmur3-32"),addBlake:r("5a38")}},4069:function(e,t,r){"use strict";var n=r("bfbc"),i=r.n(n);i.a},"406d":function(e,t,r){"use strict";const n=r("0841"),i=r("c591"),s=r("09a4"),o=r("3f64"),a=r("c6c3"),c=r("f65f").logger,u="/ipfs/bitswap/1.0.0",l="/ipfs/bitswap/1.1.0";class h{constructor(e,t,r,n){this._log=c(e.peerInfo.id,"network"),r=r||{},this.libp2p=e,this.bitswap=t,this.b100Only=r.b100Only||!1,this._stats=n,this._running=!1}start(){this._running=!0,this._onPeerConnect=this._onPeerConnect.bind(this),this._onPeerDisconnect=this._onPeerDisconnect.bind(this),this._onConnection=this._onConnection.bind(this),this.libp2p.handle(u,this._onConnection),this.b100Only||this.libp2p.handle(l,this._onConnection),this.libp2p.on("peer:connect",this._onPeerConnect),this.libp2p.on("peer:disconnect",this._onPeerDisconnect),this.libp2p.peerBook.getAllArray().filter(e=>e.isConnected()).forEach(e=>this._onPeerConnect(e))}stop(){this._running=!1,this.libp2p.unhandle(u),this.b100Only||this.libp2p.unhandle(l),this.libp2p.removeListener("peer:connect",this._onPeerConnect),this.libp2p.removeListener("peer:disconnect",this._onPeerDisconnect)}_onConnection(e,t){this._running&&(this._log("incomming new bitswap connection: %s",e),i(t,n.decode(),i.asyncMap((e,t)=>s(o.deserialize)(e,t)),i.asyncMap((e,r)=>{t.getPeerInfo((t,n)=>{if(t)return r(t);s(this.bitswap._receiveMessage.bind(this.bitswap))(n.id,e,r)})}),i.onEnd(e=>{this._log("ending connection"),e&&this.bitswap._receiveError(e)})))}_onPeerConnect(e){this._running&&this.bitswap._onPeerConnected(e.id)}_onPeerDisconnect(e){this._running&&this.bitswap._onPeerDisconnected(e.id)}findProviders(e,t){return this.libp2p.contentRouting.findProviders(e,{maxTimeout:a.providerRequestTimeout,maxNumProviders:t})}async findAndConnect(e){const t=await this.findProviders(e,a.maxProvidersPerRequest);this._log("connecting to providers",t.map(e=>e.id.toB58String())),await Promise.all(t.map(e=>this.connectTo(e)))}async provide(e){await this.libp2p.contentRouting.provide(e)}async sendMessage(e,t){if(!this._running)throw new Error("network isn't running");const r=e.toB58String()?e.toB58String():e.id.toB58String();this._log("sendMessage to %s",r,t);const{conn:n,protocol:i}=await this._dialPeer(e);let s;switch(i){case u:s=t.serializeToBitswap100();break;case l:s=t.serializeToBitswap110();break;default:throw new Error("Unknown protocol: "+i)}f(n,s,this._log),this._updateSentStats(e,t.blocks)}async connectTo(e){if(!this._running)throw new Error("network isn't running");return this.libp2p.dial(e)}async _dialPeer(e){try{return{conn:await this.libp2p.dialProtocol(e,l),protocol:l}}catch(t){return{conn:await this.libp2p.dialProtocol(e,u),protocol:u}}}_updateSentStats(e,t){const r=e.toB58String();this._stats&&(t.forEach(e=>this._stats.push(r,"dataSent",e.data.length)),this._stats.push(r,"blocksSent",t.size))}}function f(e,t,r){i(i.values([t]),n.encode(),e.conn,i.onEnd(e=>{e&&r(e)}))}e.exports=h},"406d8":function(e,t,r){"use strict";e.exports="// An IPFS MerkleDAG Link\nmessage PBLink {\n\n // multihash of the target object\n optional bytes Hash = 1;\n\n // utf string name. should be unique per object\n optional string Name = 2;\n\n // cumulative size of target object\n optional uint64 Tsize = 3;\n}\n\n// An IPFS MerkleDAG Node\nmessage PBNode {\n\n // refs to other objects\n repeated PBLink Links = 2;\n\n // opaque user data\n optional bytes Data = 1;\n}"},4089:function(e,t,r){"use strict";var n=r("fbca"),i=r("bda8");e.exports=function(){var e=i();if(n.supportsDescriptors){var t=Object.getOwnPropertyDescriptor(e,"globalThis");(!t||t.configurable&&(t.enumerable||t.writable||globalThis!==e))&&Object.defineProperty(e,"globalThis",{configurable:!0,enumerable:!1,value:e,writable:!1})}else"object"===typeof globalThis&&globalThis===e||(e.globalThis=e);return e}},"408a":function(e,t,r){var n=r("c6b6");e.exports=function(e){if("number"!=typeof e&&"Number"!=n(e))throw TypeError("Incorrect invocation");return+e}},"40a6":function(e,t){function r(e){return e&&"function"===typeof e.then}e.exports=r},"40b3":function(e,t,r){"use strict";const n=r("f69d"),i={16:"aes-128-ctr",32:"aes-256-ctr"};t.create=function(e,t,r){const s=i[e.length];if(!s)return r(new Error("Invalid key length"));const o=n.createCipheriv(s,e,t),a=n.createDecipheriv(s,e,t),c={encrypt(e,t){t(null,o.update(e))},decrypt(e,t){t(null,a.update(e))}};r(null,c)}},"40df":function(e,t,r){"use strict";e.exports=function(){var e,t;function r(r){if("function"!==typeof r)throw new Error("read must be function");if(e)throw new Error("already piped");if(e=r,t){var n=t;t=null,e.apply(null,n)}}function n(r,n){e?e(r,n):t=[r,n]}return{source:n,sink:r}}},"40e4":function(e,t,r){"use strict";const n=(e="")=>(e.trim().match(/([^\\^/]|\\\/)+/g)||[]).filter(Boolean);e.exports=n},"40ee":function(e,t,r){"use strict";const n=r("d4c4"),i=r("0503"),s=r("fd9e"),o=r("7048"),a={offset:0,length:1/0};e.exports=e=>function(t,r={}){return r=i(r,a),{[Symbol.asyncIterator]:async function*(){const i=await s(e,t),a=await n(i.mfsPath,e.ipld);if("file"!==a.unixfs.type)throw o(new Error(`${t} was not a file`),"ERR_NOT_FILE");if(!a.content)throw o(new Error(`Could not load content stream from ${t}`),"ERR_NO_CONTENT");for await(const e of a.content({offset:r.offset,length:r.length}))yield e}}}},4120:function(e,t){function r(e){return e!==e}e.exports=r},4128:function(e,t,r){var n=r("faa1"),i=r("3fb5");function s(e){if(!(this instanceof s))return new s(e);"number"===typeof e&&(e={max:e}),e||(e={}),n.EventEmitter.call(this),this.cache={},this.head=this.tail=null,this.length=0,this.max=e.max||1e3,this.maxAge=e.maxAge||0}e.exports=s,i(s,n.EventEmitter),Object.defineProperty(s.prototype,"keys",{get:function(){return Object.keys(this.cache)}}),s.prototype.clear=function(){this.cache={},this.head=this.tail=null,this.length=0},s.prototype.remove=function(e){if("string"!==typeof e&&(e=""+e),this.cache.hasOwnProperty(e)){var t=this.cache[e];return delete this.cache[e],this._unlink(e,t.prev,t.next),t.value}},s.prototype._unlink=function(e,t,r){this.length--,0===this.length?this.head=this.tail=null:this.head===e?(this.head=t,this.cache[this.head].next=null):this.tail===e?(this.tail=r,this.cache[this.tail].prev=null):(this.cache[t].next=r,this.cache[r].prev=t)},s.prototype.peek=function(e){if(this.cache.hasOwnProperty(e)){var t=this.cache[e];if(this._checkAge(e,t))return t.value}},s.prototype.set=function(e,t){var r;if("string"!==typeof e&&(e=""+e),this.cache.hasOwnProperty(e)){if(r=this.cache[e],r.value=t,this.maxAge&&(r.modified=Date.now()),e===this.head)return t;this._unlink(e,r.prev,r.next)}else r={value:t,modified:0,next:null,prev:null},this.maxAge&&(r.modified=Date.now()),this.cache[e]=r,this.length===this.max&&this.evict();return this.length++,r.next=null,r.prev=this.head,this.head&&(this.cache[this.head].next=e),this.head=e,this.tail||(this.tail=e),t},s.prototype._checkAge=function(e,t){return!(this.maxAge&&Date.now()-t.modified>this.maxAge)||(this.remove(e),this.emit("evict",{key:e,value:t.value}),!1)},s.prototype.get=function(e){if("string"!==typeof e&&(e=""+e),this.cache.hasOwnProperty(e)){var t=this.cache[e];if(this._checkAge(e,t))return this.head!==e&&(e===this.tail?(this.tail=t.next,this.cache[this.tail].prev=null):this.cache[t.prev].next=t.next,this.cache[t.next].prev=t.prev,this.cache[this.head].next=e,t.prev=this.head,t.next=null,this.head=e),t.value}},s.prototype.evict=function(){if(this.tail){var e=this.tail,t=this.remove(this.tail);this.emit("evict",{key:e,value:t})}}},4160:function(e,t,r){"use strict";var n=r("23e7"),i=r("17c2");n({target:"Array",proto:!0,forced:[].forEach!=i},{forEach:i})},"416a":function(e,t,r){e.exports=r("24d2")},4172:function(e,t,r){"use strict";(function(t){const n=r("b1aa"),{Message:i}=r("b317"),s=t.from("libp2p-pubsub:");function o(e,r,n){const o=t.concat([s,i.encode(r)]);e.privKey.sign(o,(t,i)=>{if(t)return n(t);n(null,{...r,signature:i,key:e.pubKey.bytes})})}function a(e,r){let n={...e};delete n.signature,delete n.key;const o=t.concat([s,i.encode(n)]);c(e,(t,n)=>{if(t)return r(t,!1);n.verify(o,e.signature,r)})}function c(e,t){if(e.key)n.createFromPubKey(e.key,(r,n)=>r?t(r,null):n.isEqual(e.from)?t(null,n.pubKey):void t(new Error("Public Key does not match the originator")));else{{const r=n.createFromBytes(e.from);if(r.pubKey)return t(null,r.pubKey)}t(new Error("Could not get the public key from the originator id"))}}e.exports={messagePublicKey:c,signMessage:o,SignPrefix:s,verifySignature:a}}).call(this,r("b639").Buffer)},"41b8":function(e,t,r){"use strict";const n=r("ae33").Reporter,i=r("0617").EncoderBuffer,s=r("0617").DecoderBuffer,o=r("da3e"),a=["seq","seqof","set","setof","objid","bool","gentime","utctime","null_","enum","int","objDesc","bitstr","bmpstr","charstr","genstr","graphstr","ia5str","iso646str","numstr","octstr","printstr","t61str","unistr","utf8str","videostr"],c=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(a),u=["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"];function l(e,t,r){const n={};this._baseState=n,n.name=r,n.enc=e,n.parent=t||null,n.children=null,n.tag=null,n.args=null,n.reverseArgs=null,n.choice=null,n.optional=!1,n.any=!1,n.obj=!1,n.use=null,n.useDecoder=null,n.key=null,n["default"]=null,n.explicit=null,n.implicit=null,n.contains=null,n.parent||(n.children=[],this._wrap())}e.exports=l;const h=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit","contains"];l.prototype.clone=function(){const e=this._baseState,t={};h.forEach((function(r){t[r]=e[r]}));const r=new this.constructor(t.parent);return r._baseState=t,r},l.prototype._wrap=function(){const e=this._baseState;c.forEach((function(t){this[t]=function(){const r=new this.constructor(this);return e.children.push(r),r[t].apply(r,arguments)}}),this)},l.prototype._init=function(e){const t=this._baseState;o(null===t.parent),e.call(this),t.children=t.children.filter((function(e){return e._baseState.parent===this}),this),o.equal(t.children.length,1,"Root node can have only one child")},l.prototype._useArgs=function(e){const t=this._baseState,r=e.filter((function(e){return e instanceof this.constructor}),this);e=e.filter((function(e){return!(e instanceof this.constructor)}),this),0!==r.length&&(o(null===t.children),t.children=r,r.forEach((function(e){e._baseState.parent=this}),this)),0!==e.length&&(o(null===t.args),t.args=e,t.reverseArgs=e.map((function(e){if("object"!==typeof e||e.constructor!==Object)return e;const t={};return Object.keys(e).forEach((function(r){r==(0|r)&&(r|=0);const n=e[r];t[n]=r})),t})))},u.forEach((function(e){l.prototype[e]=function(){const t=this._baseState;throw new Error(e+" not implemented for encoding: "+t.enc)}})),a.forEach((function(e){l.prototype[e]=function(){const t=this._baseState,r=Array.prototype.slice.call(arguments);return o(null===t.tag),t.tag=e,this._useArgs(r),this}})),l.prototype.use=function(e){o(e);const t=this._baseState;return o(null===t.use),t.use=e,this},l.prototype.optional=function(){const e=this._baseState;return e.optional=!0,this},l.prototype.def=function(e){const t=this._baseState;return o(null===t["default"]),t["default"]=e,t.optional=!0,this},l.prototype.explicit=function(e){const t=this._baseState;return o(null===t.explicit&&null===t.implicit),t.explicit=e,this},l.prototype.implicit=function(e){const t=this._baseState;return o(null===t.explicit&&null===t.implicit),t.implicit=e,this},l.prototype.obj=function(){const e=this._baseState,t=Array.prototype.slice.call(arguments);return e.obj=!0,0!==t.length&&this._useArgs(t),this},l.prototype.key=function(e){const t=this._baseState;return o(null===t.key),t.key=e,this},l.prototype.any=function(){const e=this._baseState;return e.any=!0,this},l.prototype.choice=function(e){const t=this._baseState;return o(null===t.choice),t.choice=e,this._useArgs(Object.keys(e).map((function(t){return e[t]}))),this},l.prototype.contains=function(e){const t=this._baseState;return o(null===t.use),t.contains=e,this},l.prototype._decode=function(e,t){const r=this._baseState;if(null===r.parent)return e.wrapResult(r.children[0]._decode(e,t));let n,i=r["default"],o=!0,a=null;if(null!==r.key&&(a=e.enterKey(r.key)),r.optional){let n=null;if(null!==r.explicit?n=r.explicit:null!==r.implicit?n=r.implicit:null!==r.tag&&(n=r.tag),null!==n||r.any){if(o=this._peekTag(e,n,r.any),e.isError(o))return o}else{const n=e.save();try{null===r.choice?this._decodeGeneric(r.tag,e,t):this._decodeChoice(e,t),o=!0}catch(c){o=!1}e.restore(n)}}if(r.obj&&o&&(n=e.enterObject()),o){if(null!==r.explicit){const t=this._decodeTag(e,r.explicit);if(e.isError(t))return t;e=t}const n=e.offset;if(null===r.use&&null===r.choice){let t;r.any&&(t=e.save());const n=this._decodeTag(e,null!==r.implicit?r.implicit:r.tag,r.any);if(e.isError(n))return n;r.any?i=e.raw(t):e=n}if(t&&t.track&&null!==r.tag&&t.track(e.path(),n,e.length,"tagged"),t&&t.track&&null!==r.tag&&t.track(e.path(),e.offset,e.length,"content"),r.any||(i=null===r.choice?this._decodeGeneric(r.tag,e,t):this._decodeChoice(e,t)),e.isError(i))return i;if(r.any||null!==r.choice||null===r.children||r.children.forEach((function(r){r._decode(e,t)})),r.contains&&("octstr"===r.tag||"bitstr"===r.tag)){const n=new s(i);i=this._getUse(r.contains,e._reporterState.obj)._decode(n,t)}}return r.obj&&o&&(i=e.leaveObject(n)),null===r.key||null===i&&!0!==o?null!==a&&e.exitKey(a):e.leaveKey(a,r.key,i),i},l.prototype._decodeGeneric=function(e,t,r){const n=this._baseState;return"seq"===e||"set"===e?null:"seqof"===e||"setof"===e?this._decodeList(t,e,n.args[0],r):/str$/.test(e)?this._decodeStr(t,e,r):"objid"===e&&n.args?this._decodeObjid(t,n.args[0],n.args[1],r):"objid"===e?this._decodeObjid(t,null,null,r):"gentime"===e||"utctime"===e?this._decodeTime(t,e,r):"null_"===e?this._decodeNull(t,r):"bool"===e?this._decodeBool(t,r):"objDesc"===e?this._decodeStr(t,e,r):"int"===e||"enum"===e?this._decodeInt(t,n.args&&n.args[0],r):null!==n.use?this._getUse(n.use,t._reporterState.obj)._decode(t,r):t.error("unknown tag: "+e)},l.prototype._getUse=function(e,t){const r=this._baseState;return r.useDecoder=this._use(e,t),o(null===r.useDecoder._baseState.parent),r.useDecoder=r.useDecoder._baseState.children[0],r.implicit!==r.useDecoder._baseState.implicit&&(r.useDecoder=r.useDecoder.clone(),r.useDecoder._baseState.implicit=r.implicit),r.useDecoder},l.prototype._decodeChoice=function(e,t){const r=this._baseState;let n=null,i=!1;return Object.keys(r.choice).some((function(s){const o=e.save(),a=r.choice[s];try{const r=a._decode(e,t);if(e.isError(r))return!1;n={type:s,value:r},i=!0}catch(c){return e.restore(o),!1}return!0}),this),i?n:e.error("Choice not matched")},l.prototype._createEncoderBuffer=function(e){return new i(e,this.reporter)},l.prototype._encode=function(e,t,r){const n=this._baseState;if(null!==n["default"]&&n["default"]===e)return;const i=this._encodeValue(e,t,r);return void 0===i||this._skipDefault(i,t,r)?void 0:i},l.prototype._encodeValue=function(e,t,r){const i=this._baseState;if(null===i.parent)return i.children[0]._encode(e,t||new n);let s=null;if(this.reporter=t,i.optional&&void 0===e){if(null===i["default"])return;e=i["default"]}let o=null,a=!1;if(i.any)s=this._createEncoderBuffer(e);else if(i.choice)s=this._encodeChoice(e,t);else if(i.contains)o=this._getUse(i.contains,r)._encode(e,t),a=!0;else if(i.children)o=i.children.map((function(r){if("null_"===r._baseState.tag)return r._encode(null,t,e);if(null===r._baseState.key)return t.error("Child should have a key");const n=t.enterKey(r._baseState.key);if("object"!==typeof e)return t.error("Child expected, but input is not object");const i=r._encode(e[r._baseState.key],t,e);return t.leaveKey(n),i}),this).filter((function(e){return e})),o=this._createEncoderBuffer(o);else if("seqof"===i.tag||"setof"===i.tag){if(!i.args||1!==i.args.length)return t.error("Too many args for : "+i.tag);if(!Array.isArray(e))return t.error("seqof/setof, but data is not Array");const r=this.clone();r._baseState.implicit=null,o=this._createEncoderBuffer(e.map((function(r){const n=this._baseState;return this._getUse(n.args[0],e)._encode(r,t)}),r))}else null!==i.use?s=this._getUse(i.use,r)._encode(e,t):(o=this._encodePrimitive(i.tag,e),a=!0);if(!i.any&&null===i.choice){const e=null!==i.implicit?i.implicit:i.tag,r=null===i.implicit?"universal":"context";null===e?null===i.use&&t.error("Tag could be omitted only for .use()"):null===i.use&&(s=this._encodeComposite(e,a,r,o))}return null!==i.explicit&&(s=this._encodeComposite(i.explicit,!1,"context",s)),s},l.prototype._encodeChoice=function(e,t){const r=this._baseState,n=r.choice[e.type];return n||o(!1,e.type+" not found in "+JSON.stringify(Object.keys(r.choice))),n._encode(e.value,t)},l.prototype._encodePrimitive=function(e,t){const r=this._baseState;if(/str$/.test(e))return this._encodeStr(t,e);if("objid"===e&&r.args)return this._encodeObjid(t,r.reverseArgs[0],r.args[1]);if("objid"===e)return this._encodeObjid(t,null,null);if("gentime"===e||"utctime"===e)return this._encodeTime(t,e);if("null_"===e)return this._encodeNull();if("int"===e||"enum"===e)return this._encodeInt(t,r.args&&r.reverseArgs[0]);if("bool"===e)return this._encodeBool(t);if("objDesc"===e)return this._encodeStr(t,e);throw new Error("Unsupported tag: "+e)},l.prototype._isNumstr=function(e){return/^[0-9 ]*$/.test(e)},l.prototype._isPrintstr=function(e){return/^[A-Za-z0-9 '()+,-./:=?]*$/.test(e)}},"41d6":function(e,t,r){"use strict";(function(t){const n=r("9efb");e.exports=e=>{if(!t.isBuffer(e))throw new Error("arg needs to be a buffer");let r=[];while(e.length>0){const t=n.decode(e);r.push(t),e=e.slice(n.decode.bytes)}return r}}).call(this,r("b639").Buffer)},"41dd":function(e,t,r){"use strict";const n=r("b5bc"),i=r("9a72"),s=r("f929"),o=r("fa2f"),a=r("fa4d"),c=r("be41"),u=r("7048"),l="/pkcs8/",h="/info/",f={minKeyLength:14,minSaltLength:16,minIterationCount:1e3},d={dek:{keyLength:64,iterationCount:1e4,salt:"you should override this value with a crypto secure random number",hash:"sha2-512"}};function p(e){return!!e&&("string"===typeof e&&e===n(e.trim()))}async function y(e){const t=200,r=1e3,n=Math.random()*(r-t)+t;throw await new Promise(e=>setTimeout(e,n)),e}function g(e){return new o.Key(l+e)}function m(e){return new o.Key(h+e)}class b{constructor(e,t){if(!e)throw new Error("store is required");this.store=e;const r=i(d,t);if(!r.passPhrase||r.passPhrase.length<20)throw new Error("passPhrase must be least 20 characters");if(r.dek.keyLengthn})}get cms(){return new c(this)}static generateOptions(){const e=Object.assign({},d),t=3*Math.ceil(f.minSaltLength/3);return e.dek.salt=s.randomBytes(t).toString("base64"),e}static get options(){return d}async createKey(e,t,r){const n=this;if(!p(e)||"self"===e)return y(u(new Error(`Invalid key name '${e}'`),"ERR_INVALID_KEY_NAME"));if("string"!==typeof t)return y(u(new Error(`Invalid key type '${t}'`),"ERR_INVALID_KEY_TYPE"));if(!Number.isSafeInteger(r))return y(u(new Error(`Invalid key size '${r}'`),"ERR_INVALID_KEY_SIZE"));const i=g(e),o=await n.store.has(i);if(o)return y(u(new Error(`Key '${e}' already exists`),"ERR_KEY_ALREADY_EXISTS"));switch(t.toLowerCase()){case"rsa":if(r<2048)return y(u(new Error(`Invalid RSA key size ${r}`),"ERR_INVALID_KEY_SIZE"));break;default:break}let c;try{const o=await a(s.keys.generateKeyPair,{context:s.keys})(t,r),u=await a(o.id,{context:o})(),l=await a(o.export,{context:o})(this._());c={name:e,id:u};const h=n.store.batch();h.put(i,l),h.put(m(e),JSON.stringify(c)),await h.commit()}catch(l){return y(l)}return c}async listKeys(){const e=this,t={prefix:h},r=[];for await(const n of e.store.query(t))r.push(JSON.parse(n.value));return r}async findKeyById(e){try{const t=await this.listKeys();return t.find(t=>t.id===e)}catch(t){return y(t)}}async findKeyByName(e){if(!p(e))return y(u(new Error(`Invalid key name '${e}'`),"ERR_INVALID_KEY_NAME"));const t=m(e);try{const e=await this.store.get(t);return JSON.parse(e.toString())}catch(r){return y(u(new Error(`Key '${e}' does not exist. ${r.message}`),"ERR_KEY_NOT_FOUND"))}}async removeKey(e){const t=this;if(!p(e)||"self"===e)return y(u(new Error(`Invalid key name '${e}'`),"ERR_INVALID_KEY_NAME"));const r=g(e),n=await t.findKeyByName(e),i=t.store.batch();return i.delete(r),i.delete(m(e)),await i.commit(),n}async renameKey(e,t){const r=this;if(!p(e)||"self"===e)return y(u(new Error(`Invalid old key name '${e}'`),"ERR_OLD_KEY_NAME_INVALID"));if(!p(t)||"self"===t)return y(u(new Error(`Invalid new key name '${t}'`),"ERR_NEW_KEY_NAME_INVALID"));const n=g(e),i=g(t),s=m(e),o=m(t),a=await r.store.has(i);if(a)return y(u(new Error(`Key '${t}' already exists`),"ERR_KEY_ALREADY_EXISTS"));try{let e=await this.store.get(n);const a=e.toString();e=await r.store.get(s);const c=JSON.parse(e.toString());c.name=t;const u=r.store.batch();return u.put(i,a),u.put(o,JSON.stringify(c)),u.delete(n),u.delete(s),await u.commit(),c}catch(c){return y(c)}}async exportKey(e,t){if(!p(e))return y(u(new Error(`Invalid key name '${e}'`),"ERR_INVALID_KEY_NAME"));if(!t)return y(u(new Error("Password is required"),"ERR_PASSWORD_REQUIRED"));const r=g(e);try{const e=await this.store.get(r),n=e.toString(),i=await a(s.keys.import,{context:s.keys})(n,this._());return a(i.export,{context:i})(t)}catch(n){return y(n)}}async importKey(e,t,r){const n=this;if(!p(e)||"self"===e)return y(u(new Error(`Invalid key name '${e}'`),"ERR_INVALID_KEY_NAME"));if(!t)return y(u(new Error("PEM encoded key is required"),"ERR_PEM_REQUIRED"));const i=g(e),o=await n.store.has(i);if(o)return y(u(new Error(`Key '${e}' already exists`),"ERR_KEY_ALREADY_EXISTS"));let c,l;try{c=await a(s.keys.import,{context:s.keys})(t,r)}catch(d){return y(u(new Error("Cannot read the key, most likely the password is wrong"),"ERR_CANNOT_READ_KEY"))}try{l=await a(c.id,{context:c})(),t=await a(c.export,{context:c})(this._())}catch(d){return y(d)}const h={name:e,id:l},f=n.store.batch();return f.put(i,t),f.put(m(e),JSON.stringify(h)),await f.commit(),h}async importPeer(e,t){const r=this;if(!p(e))return y(u(new Error(`Invalid key name '${e}'`),"ERR_INVALID_KEY_NAME"));if(!t||!t.privKey)return y(u(new Error("Peer.privKey is required"),"ERR_MISSING_PRIVATE_KEY"));const n=t.privKey,i=g(e),s=await r.store.has(i);if(s)return y(u(new Error(`Key '${e}' already exists`),"ERR_KEY_ALREADY_EXISTS"));try{const t=await a(n.id,{context:n})(),s=await a(n.export,{context:n})(this._()),o={name:e,id:t},c=r.store.batch();return c.put(i,s),c.put(m(e),JSON.stringify(o)),await c.commit(),o}catch(o){return y(o)}}async _getPrivateKey(e){if(!p(e))return y(u(new Error(`Invalid key name '${e}'`),"ERR_INVALID_KEY_NAME"));try{const t=g(e),r=await this.store.get(t);return r.toString()}catch(t){return y(u(new Error(`Key '${e}' does not exist. ${t.message}`),"ERR_KEY_NOT_FOUND"))}}}e.exports=b},"41f2":function(e,t,r){var n=r("4bbf"),i=r("54bc"),s=r("04e4"),o=r("7a85"),a=r("9071");function c(e){var t=-1,r=null==e?0:e.length;this.clear();while(++t{for(const r of t){let t,n=e;while(void 0===t){if(n=Object.getPrototypeOf(n),null===n)throw new Error(`no getter named '${r}' found`);t=Object.getOwnPropertyDescriptor(n,r)}if(void 0===t.get)throw new Error(`no getter named '${r}' found`);Object.defineProperty(e,r,{enumerable:!0,get:t.get})}},i=e=>{for(const t in e)"_"===t[0]&&Object.defineProperty(e,t,{enumerable:!1})};e.exports={addEnumerableGetters:n,hidePrivateFields:i}},4223:function(e,t,r){"use strict";const n=t;n._reverse=function(e){const t={};return Object.keys(e).forEach((function(r){(0|r)==r&&(r|=0);const n=e[r];t[n]=r})),t},n.der=r("f1cb")},"427a":function(e,t,r){(function(t){(function(t,r){"use strict";e.exports?e.exports=r():t.nacl?t.nacl.util=r():(t.nacl={},t.nacl.util=r())})(this,(function(){"use strict";var e={};function r(e){if(!/^(?:[A-Za-z0-9+\/]{2}[A-Za-z0-9+\/]{2})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/.test(e))throw new TypeError("invalid encoding")}return e.decodeUTF8=function(e){if("string"!==typeof e)throw new TypeError("expected string");var t,r=unescape(encodeURIComponent(e)),n=new Uint8Array(r.length);for(t=0;t=255)throw new TypeError("Alphabet too long");var t=new Uint8Array(256);t.fill(255);for(var r=0;r>>0,h=new Uint8Array(l);while(s!==c){for(var f=t[s],d=0,p=l-1;(0!==f||d>>0,h[p]=f%o>>>0,f=f/o>>>0;if(0!==f)throw new Error("Non-zero carry");i=d,s++}var y=l-i;while(y!==l&&0===h[y])y++;for(var g=a.repeat(r);y>>0,l=new Uint8Array(u);while(e[r]){var h=t[e.charCodeAt(r)];if(255===h)return;for(var f=0,d=u-1;(0!==h||f>>0,l[d]=h%256>>>0,h=h/256>>>0;if(0!==h)throw new Error("Non-zero carry");s=f,r++}if(" "!==e[r]){var p=u-s;while(p!==u&&0===l[p])p++;var y=n.allocUnsafe(i+(u-p));y.fill(0,0,i);var g=i;while(p!==u)y[g++]=l[p++];return y}}}function f(e){var t=h(e);if(t)return t;throw new Error("Non-base"+o+" character")}return{encode:l,decodeUnsafe:h,decode:f}}e.exports=i},"42b7":function(e,t,r){"use strict";(function(t){const n=r("021d"),i=r("87dd"),s="/",o=t.from(s),a=o[0];class c{constructor(e,r){if("string"===typeof e?this._buf=t.from(e):t.isBuffer(e)&&(this._buf=e),null==r&&(r=!0),r&&this.clean(),0===this._buf.length||this._buf[0]!==a)throw new Error(`Invalid key: ${this.toString()}`)}toString(e){return this._buf.toString(e||"utf8")}toBuffer(){return this._buf}get[Symbol.toStringTag](){return`[Key ${this.toString()}]`}static withNamespaces(e){return new h(e.join(s))}static random(){return new h(n().replace(/-/g,""))}clean(){this._buf&&0!==this._buf.length||(this._buf=t.from(s)),this._buf[0]!==a&&(this._buf=t.concat([o,this._buf]));while(this._buf.length>1&&this._buf[this._buf.length-1]===a)this._buf=this._buf.slice(0,-1)}less(e){const t=this.list(),r=e.list();for(let n=0;ni)return!1}return t.length0?this.tail.next=t:this.head=t,this.tail=t,++this.length}},{key:"unshift",value:function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length}},{key:"shift",value:function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(e){if(0===this.length)return"";var t=this.head,r=""+t.data;while(t=t.next)r+=e+t.data;return r}},{key:"concat",value:function(e){if(0===this.length)return l.alloc(0);var t=l.allocUnsafe(e>>>0),r=this.head,n=0;while(r)p(r.data,t,n),n+=r.data.length,r=r.next;return t}},{key:"consume",value:function(e,t){var r;return ei.length?i.length:e;if(s===i.length?n+=i:n+=i.slice(0,e),e-=s,0===e){s===i.length?(++r,t.next?this.head=t.next:this.head=this.tail=null):(this.head=t,t.data=i.slice(s));break}++r}return this.length-=r,n}},{key:"_getBuffer",value:function(e){var t=l.allocUnsafe(e),r=this.head,n=1;r.data.copy(t),e-=r.data.length;while(r=r.next){var i=r.data,s=e>i.length?i.length:e;if(i.copy(t,t.length-e,0,s),e-=s,0===e){s===i.length?(++n,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=i.slice(s));break}++n}return this.length-=n,t}},{key:d,value:function(e,t){return f(this,i({},t,{depth:0,customInspect:!1}))}}]),e}()},4338:function(e,t,r){"use strict";var n=r("0286");function i(e,t,r){null===e&&null===t&&null===r?(this.x=i.one,this.y=i.one,this.z=i.zero):(this.x=e,this.y=t,this.z=r),this.zOne=this.z===i.one}i.zero=n.fromNumber(0),i.one=n.fromNumber(1),i.prototype.neg=function(){return this.inf?this:new i(this.x,this.y.redNeg(),this.z)},i.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;var t=e.z.redSqr(),r=this.z.redSqr(),n=this.x.redMul(t),s=e.x.redMul(r),o=this.y.redMul(t).redMul(e.z),a=e.y.redMul(r).redMul(this.z),c=n.redSub(s),u=o.redSub(a);if(c.isZero())return u.isZero()?this.dbl():new i(null,null,null);var l=c.redSqr(),h=n.redMul(l),f=l.redMul(c),d=u.redSqr().redIAdd(f).redISub(h).redISub(h),p=u.redMul(h.redISub(d)).redISub(o.redMul(f)),y=this.z.redMul(e.z).redMul(c);return new i(d,p,y)},i.prototype.mixedAdd=function(e){if(this.inf)return e.toECJPoint();if(e.inf)return this;var t=this.z.redSqr(),r=this.x,n=e.x.redMul(t),s=this.y,o=e.y.redMul(t).redMul(this.z),a=r.redSub(n),c=s.redSub(o);if(a.isZero())return c.isZero()?this.dbl():new i(null,null,null);var u=a.redSqr(),l=r.redMul(u),h=u.redMul(a),f=c.redSqr().redIAdd(h).redISub(l).redISub(l),d=c.redMul(l.redISub(f)).redISub(s.redMul(h)),p=this.z.redMul(a);return new i(f,d,p)},i.prototype.dbl=function(){if(this.inf)return this;var e,t,r;if(this.zOne){var n=this.x.redSqr(),s=this.y.redSqr(),o=s.redSqr(),a=this.x.redAdd(s).redSqr().redISub(n).redISub(o);a=a.redIAdd(a);var c=n.redAdd(n).redIAdd(n),u=c.redSqr().redISub(a).redISub(a),l=o.redIAdd(o).redIAdd(o).redIAdd(o);e=u,t=c.redMul(a.redISub(u)).redISub(l),r=this.y.redAdd(this.y)}else{var h=this.x.redSqr(),f=this.y.redSqr(),d=f.redSqr(),p=this.x.redAdd(f).redSqr().redISub(h).redISub(d);p=p.redIAdd(p);var y=h.redAdd(h).redIAdd(h),g=y.redSqr(),m=d.redIAdd(d).redIAdd(d).redIAdd(d);e=g.redISub(p).redISub(p),t=y.redMul(p.redISub(e)).redISub(m),r=this.y.redMul(this.z),r=r.redIAdd(r)}return new i(e,t,r)},i.prototype.dblp=function(e){if(0===e||this.inf)return this;for(var t=this,r=0;ri(n=>{const i=r.init(e,null);return r.update(i,n),t.from(r.digest(i))});e.exports=e=>{for(let t=0;t<64;t++)e[s+t]=u(t+1,a);for(let t=0;t<32;t++)e[o+t]=u(t+1,c)}}).call(this,r("b639").Buffer)},4404:function(e,t,r){"use strict";const n={util:r("8d3f"),pki:r("96f7"),jsbn:r("fdf7")};function i(e){var t=n.util.decode64((e+"===".slice((e.length+3)%4)).replace(/-/g,"+").replace(/_/g,"/"));return new n.jsbn.BigInteger(n.util.bytesToHex(t),16)}function s(e,t){return t.map(t=>i(e[t]))}function o(e){return n.pki.setRsaPrivateKey(...s(e,["n","e","d","p","q","dp","dq","qi"]))}function a(e){return n.pki.privateKeyToPem(o(e))}function c(e){return n.pki.setRsaPublicKey(...s(e,["n","e"]))}function u(e){return n.pki.publicKeyToPem(c(e))}e.exports={jwk2pub:c,jwk2pubPem:u,jwk2priv:o,jwk2privPem:a}},4406:function(e,t,r){var n=r("5303");function i(e){return null==e?"":n(e)}e.exports=i},4434:function(e,t,r){"use strict";var n=r("4ea4"),i=n(r("a34a")),s=n(r("9523")),o=n(r("c973")),a=n(r("970b")),c=n(r("5bc3"));function u(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t1&&void 0!==o[1]?o[1]:{},e.next=3,this._get(t);case 3:if(n=e.sent,n){e.next=6;break}return e.abrupt("return",n);case 6:if(!r.metadata){e.next=9;break}return s=this._extractMetadata(n),e.abrupt("return",l({},s,{value:n.value}));case 9:return e.abrupt("return",n.value);case 10:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"getMetadata",value:function(){var e=(0,o["default"])(i["default"].mark((function e(t){var r;return i["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this._get(t);case 2:if(r=e.sent,r){e.next=5;break}return e.abrupt("return",r);case 5:return e.abrupt("return",this._extractMetadata(r));case 6:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"set",value:function(){var e=(0,o["default"])(i["default"].mark((function e(t,r){var n;return i["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:return f(t,"key"),this._requireLoad(),this._replicator.ensureConnected(this._db.address.toString()),n=(new Date).getTime(),e.next=6,this._db.put(t,{value:r,timeStamp:n});case 6:return e.abrupt("return",!0);case 7:case"end":return e.stop()}}),e,this)})));function t(t,r){return e.apply(this,arguments)}return t}()},{key:"setMultiple",value:function(){var e=(0,o["default"])(i["default"].mark((function e(t,r){var n=this;return i["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:return d(t,r),this._requireLoad(),this._replicator.ensureConnected(this._db.address.toString()),e.prev=3,e.next=6,t.reduce(function(){var e=(0,o["default"])(i["default"].mark((function e(t,s,o){var a;return i["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,t;case 2:return f(s,"key"),a=(new Date).getTime(),e.abrupt("return",n._db.put(s,{value:r[o],timeStamp:a}));case 5:case"end":return e.stop()}}),e)})));return function(t,r,n){return e.apply(this,arguments)}}(),Promise.resolve());case 6:return e.abrupt("return",!0);case 9:throw e.prev=9,e.t0=e["catch"](3),new Error(e.t0);case 12:case"end":return e.stop()}}),e,this,[[3,9]])})));function t(t,r){return e.apply(this,arguments)}return t}()},{key:"remove",value:function(){var e=(0,o["default"])(i["default"].mark((function e(t){return i["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:return f(t,"key"),this._requireLoad(),this._replicator.ensureConnected(this._db.address.toString()),e.next=5,this._db.del(t);case 5:return e.abrupt("return",!0);case 6:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"_extractMetadata",value:function(e){var t=Math.floor(e.timeStamp/1e3);return{timestamp:t}}},{key:"_get",value:function(){var e=(0,o["default"])(i["default"].mark((function e(t){return i["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:return this._requireLoad(),e.abrupt("return",this._db.get(t));case 2:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"_sync",value:function(){var e=(0,o["default"])(i["default"].mark((function e(){return i["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:return this._requireLoad(),e.next=3,this._replicator.syncDB(this._db);case 3:return e.abrupt("return",this._db.address.toString());case 4:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"_load",value:function(){var e=(0,o["default"])(i["default"].mark((function e(t){var r,n,s,o=this;return i["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(this._3id=t||this._3id,r=this._replicator.listStoreAddresses().find((function(e){return e.includes(o._name)})),!r){e.next=8;break}return e.next=5,this._replicator.getStore(r);case 5:this._db=e.sent,e.next=14;break;case 8:return e.next=10,this._3id.getPublicKeys(this._space,!0);case 10:return n=e.sent.signingKey,e.next=13,this._replicator.addKVStore(this._name,n,Boolean(this._space),this._3id.getSubDID(this._space));case 13:this._db=e.sent;case 14:return e.next=16,this._3id.getOdbId(this._space);case 16:return s=e.sent,this._db.setIdentity(s),e.abrupt("return",this._db.address.toString());case 19:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"_requireLoad",value:function(){if(!this._db)throw new Error("_load must be called before interacting with the store")}},{key:"close",value:function(){var e=(0,o["default"])(i["default"].mark((function e(){return i["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:return this._requireLoad(),e.next=3,this._db.close();case 3:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"all",value:function(){var e=(0,o["default"])(i["default"].mark((function e(){var t,r,n,s=this,o=arguments;return i["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:return t=o.length>0&&void 0!==o[0]?o[0]:{},this._requireLoad(),r=this._db.all,n={},Object.keys(r).map((function(e){var i=r[e];t.metadata?n[e]=l({},s._extractMetadata(i),{value:i.value}):n[e]=i.value})),e.abrupt("return",n);case 6:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"log",value:function(){var e=(0,o["default"])(i["default"].mark((function e(){return i["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.abrupt("return",this._db._oplog.values.map((function(e){return{op:e.payload.op,key:e.payload.key,value:e.payload.value?e.payload.value.value:null,timeStamp:e.payload.value?e.payload.value.timeStamp:null}})));case 1:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()}]),e}();e.exports=p},4442:function(e,t,r){var n=r("3053"),i=n.Global;e.exports={name:"oldIE-userDataStorage",write:u,read:l,each:h,remove:f,clearAll:d};var s="storejs",o=i.document,a=g(),c=(i.navigator?i.navigator.userAgent:"").match(/ (MSIE 8|MSIE 9|MSIE 10)\./);function u(e,t){if(!c){var r=y(e);a((function(e){e.setAttribute(r,t),e.save(s)}))}}function l(e){if(!c){var t=y(e),r=null;return a((function(e){r=e.getAttribute(t)})),r}}function h(e){a((function(t){for(var r=t.XMLDocument.documentElement.attributes,n=r.length-1;n>=0;n--){var i=r[n];e(t.getAttribute(i.name),i.name)}}))}function f(e){var t=y(e);a((function(e){e.removeAttribute(t),e.save(s)}))}function d(){a((function(e){var t=e.XMLDocument.documentElement.attributes;e.load(s);for(var r=t.length-1;r>=0;r--)e.removeAttribute(t[r].name);e.save(s)}))}var p=new RegExp("[!\"#$%&'()*+,/\\\\:;<=>?@[\\]^`{|}~]","g");function y(e){return e.replace(/^\d/,"___$&").replace(p,"___")}function g(){if(!o||!o.documentElement||!o.documentElement.addBehavior)return null;var e,t,r,n="script";try{t=new ActiveXObject("htmlfile"),t.open(),t.write("<"+n+">document.w=window'),t.close(),e=t.w.frames[0].document,r=e.createElement("div")}catch(i){r=o.createElement("div"),e=o.body}return function(t){var n=[].slice.call(arguments,0);n.unshift(r),e.appendChild(r),r.addBehavior("#default#userData"),r.load(s),t.apply(this,n),e.removeChild(r)}}},"445d":function(e,t,r){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0});var n=r("bd4b");function i(t,r){return void 0===r&&(r="utf8"),e.isBuffer(t)?a(t.toString("base64")):a(e.from(t,r).toString("base64"))}function s(t,r){return void 0===r&&(r="utf8"),e.from(o(t),"base64").toString(r)}function o(e){return e=e.toString(),n.default(e).replace(/\-/g,"+").replace(/_/g,"/")}function a(e){return e.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function c(t){return e.from(o(t),"base64")}var u=i;u.encode=i,u.decode=s,u.toBase64=o,u.fromBase64=a,u.toBuffer=c,t.default=u}).call(this,r("b639").Buffer)},"448a":function(e,t,r){var n=r("2236"),i=r("11b0"),s=r("0676");function o(e){return n(e)||i(e)||s()}e.exports=o},"449a":function(e,t,r){"use strict";(function(t){const n=r("c591"),i=r("76d6"),s=r("ecd4"),o=r("e028"),a=r("9f2e"),c=r("faa1"),u=r("4bc2"),{emitError:l,emitStream:h}=r("2388"),{Types:f,MAX_MSG_SIZE:d}=r("d27a"),p=r("f574"),y=r("d5453"),g=u("pull-plex");g.err=u("pull-plex:err");class m extends c{constructor(e){super(),"boolean"===typeof e&&(e={initiator:e}),e={initiator:!0,onChan:null,maxChannels:1e4,maxMsgSize:d,lazy:!1,...e},this._maxChannels=e.maxChannels,this._maxMsgSize=e.maxMsgSize,this._lazy=e.lazy,this._initiator=Boolean(e.initiator),this._chanId=0,this._inChannels=new Array(this._maxChannels/2),this._outChannels=new Array(this._maxChannels/2),this._endedRemote=!1,this._endedLocal=!1,this._chandata=i(e=>{this._log("mplex ended"),this._endedRemote=!0,this.close(e)}),e.onChan&&this.on("stream",t=>e.onChan(t,t.id)),this.source=n(this._chandata,y.encode());const t=this;this.sink=n(s((function(e){if(e&&e.length>=t._maxMsgSize)return a(l,t,new Error("message too large!")),this.queue(null);this.queue(e)})),y.decode(),e=>{const r=o(()=>{e(null,(e,n)=>{if(!t._endedLocal){if(!0===e)return t.close();if(e)return t.destroy(e);t._handle(n),r()}})});r()})}_log(e,t){g({op:e,initiator:this._initiator,endedLocal:this._endedLocal,endedRemote:this._endedRemote,data:t&&t.toString()||""})}get initiator(){return this._initiator}close(e){if(this._log("close",e),this.destroyed)return;e&&a(l,this,e),e=e||"Underlying stream has been closed",this._endedLocal=!0;const t=Array.prototype.concat(this._outChannels,this._inChannels);for(let r of t)r&&r.close(e);this.emit("close")}get destroyed(){return this._endedRemote&&this._endedLocal}destroy(e){e=e||new Error("Underlying stream has been closed"),this._chandata.end(e),this.close(e)}push(e){e.data&&t.byteLength(e.data)>this._maxMsgSize&&this._chandata.end(new Error("message too large!")),this._chandata.push(e)}createStream(e){"number"===typeof e&&(e=e.toString());const t=this._newStream(null,!0,!1,e,this._outChannels);return this._lazy||t.openChan(e),t}_newStream(e,t,r,n,i){if(this.chanSize>=this._maxChannels)return void this.emit("error",new Error("max channels exceeded"));if("string"===typeof t&&(n=t,t=!1,r=!1),"string"===typeof r&&(n=r,r=!1),e="number"===typeof e?e:this._chanId++,i[e])return void this.emit("error",new Error(`channel with id ${e} already exist!`));const s=new p({id:e,name:n,plex:this,initiator:t,open:r||!1});return this._addChan(e,s,i)}_addChan(e,t,r){return t.once("close",()=>{r[e]=null}),t.once("error",e=>{g.err("channel error",e)}),r[e]=t,t}get chanSize(){return this._inChannels.size+this._outChannels.size}_handle(e){this._log("_handle",e);const{id:t,type:r,data:n}=e;switch(r){case f.NEW:{const e=this._newStream(t,!1,!0,n.toString(),this._inChannels);a(h,this,e,t);break}case f.OUT_MESSAGE:case f.IN_MESSAGE:{const e=1&r?this._outChannels:this._inChannels,i=e[t];i&&i.push(n);break}case f.OUT_CLOSE:case f.IN_CLOSE:{const e=1&r?this._outChannels:this._inChannels,n=e[t];n&&n.close();break}case f.OUT_RESET:case f.IN_RESET:{const e=1&r?this._outChannels:this._inChannels,n=e[t];n&&n.destroy();break}default:a(l,this,new Error("Invalid message type"))}}}e.exports=m}).call(this,r("b639").Buffer)},"44bd":function(e,t,r){"use strict";const n=r("faa1"),i=r("3e1e"),s=r("71ad"),o=r("83f1"),a=r("f5be"),c=r("6d6a"),u=r("d7fa");e.exports=class extends n{constructor(e,t,r){super(),this._id=e,this._ipfs=t,this._room=r,this._connection=null,this._connecting=!1}push(e){this._connection?this._connection.push(a(e)):(this.once("connect",()=>this.push(e)),this._connecting||this._getConnection())}stop(){this._connection&&this._connection.end()}_getConnection(){this._connecting=!0,this._getPeerAddresses(this._id,(e,t)=>{e?this.emit("error",e):t.length?u(this._ipfs).dialProtocol(t[0],o,(e,t)=>{if(e)return void this.emit("disconnect");this._connecting=!1;const r=s();this._connection=r,i(r,t,i.onEnd(()=>{delete this._connection,this.emit("disconnect")})),this.emit("connect",r)}):this.emit("disconnect")})}_getPeerAddresses(e,t){this._ipfs.swarm.peers((r,n)=>{r?t(r):t(null,n.filter(t=>c(t.peer)===e).map(e=>e.peer))})}}},4503:function(e,t,r){"use strict";e.exports=function(e){if(!Array.isArray(e))throw new TypeError("Expected Array, got "+typeof e);var t,r,n=e.length,i=e.slice();while(n)t=Math.floor(Math.random()*n--),r=i[n],i[n]=i[t],i[t]=r;return i}},4514:function(e,t,r){"use strict";function n(e,t,r){var n,i=e instanceof Error?e:new Error(e);if("object"===typeof t?r=t:null!=t&&(i.code=t),r)for(n in r)i[n]=r[n];return i}e.exports=n},4547:function(e,t,r){"use strict";const n=r("4d31");e.exports.dbOpenFailedError=e=>(e=e||new Error("Cannot open database"),n(e,"ERR_DB_OPEN_FAILED")),e.exports.dbDeleteFailedError=e=>(e=e||new Error("Delete failed"),n(e,"ERR_DB_DELETE_FAILED")),e.exports.dbWriteFailedError=e=>(e=e||new Error("Write failed"),n(e,"ERR_DB_WRITE_FAILED")),e.exports.notFoundError=e=>(e=e||new Error("Not Found"),n(e,"ERR_NOT_FOUND"))},4559:function(e,t,r){"use strict";const n=r("092e");e.exports=e=>{const t=n(e);return{get:r("e587")(t),put:r("3fd3")(t),findProvs:r("4c7e")(t),findPeer:r("b0e9")(t),provide:r("bf4d")(t),query:r("493a")(t)}}},4562:function(e,t,r){"use strict";(function(t){const n=r("0bc9");e.exports=function(e){return function(t){return t instanceof i?t:new i(t,e)}};class i{constructor(e,r){if("string"!==typeof e&&!t.isBuffer(e))throw new Error("can only hash strings or buffers");this._value=e,this._hashFn=r,this._depth=-1,this._availableBits=0,this._currentBufferIndex=0,this._buffers=[]}async take(e){let t=e;while(this._availableBits0){const e=this._buffers[this._currentBufferIndex],n=Math.min(e.availableBits(),t),i=e.take(n);r=(r<0){const e=this._buffers[this._currentBufferIndex],r=Math.min(e.totalBits()-e.availableBits(),t);e.untake(r),t-=r,this._availableBits+=r,this._currentBufferIndex>0&&e.totalBits()===e.availableBits()&&(this._depth--,this._currentBufferIndex--)}}async _produceMoreBits(){this._depth++;const e=this._depth?this._value+this._depth:this._value,t=await this._hashFn(e),r=new n(t);this._buffers.push(r),this._availableBits+=r.availableBits()}}}).call(this,r("b639").Buffer)},4573:function(e,t,r){"use strict";const n=r("09a4"),i=r("7048"),s=r("19e5"),{resolvePath:o}=r("ad58"),a=r("22df"),c=a.PinTypes;e.exports=e=>{const t=e.dag,r=new a(e._repo,t),u={add:n.variadic(async(n,i)=>{i=i||{};const s=!1!==i.recursive,a=await o(e.object,n),c=async()=>{const e=[];for(const o of a){const n=o.toBaseEncodedString();if(s){if(r.recursivePins.has(n)){e.push(n);continue}await r.fetchCompleteDag(n,{preload:i.preload}),e.push(n)}else{if(r.recursivePins.has(n))throw new Error(`${n} already pinned recursively`);r.directPins.has(n)||await t.get(o,{preload:i.preload}),e.push(n)}}const n=s?r.recursivePins:r.directPins;return e.forEach(e=>n.add(e)),await r.flushPins(),e.map(e=>({hash:e}))},u=Boolean(i.lock);if(!u)return c();const l=await e._gcLock.readLock();try{await c()}finally{l()}}),rm:n.variadic(async(t,n)=>{n=n||{};const a=null==n.recursive||n.recursive;if(n.cidBase&&!s.names.includes(n.cidBase))throw i(new Error("invalid multibase"),"ERR_INVALID_MULTIBASE");const u=await o(e.object,t),l=await e._gcLock.readLock(),h=[];try{for(const e of u){const t=await r.isPinnedWithType(e,c.all),{pinned:n,reason:i}=t,s=e.toBaseEncodedString();if(!n)throw new Error(`${s} is not pinned`);switch(i){case c.recursive:if(!a)throw new Error(`${s} is pinned recursively`);h.push(s);break;case c.direct:h.push(s);break;default:throw new Error(`${s} is pinned indirectly under ${i}`)}}return h.forEach(e=>{a&&r.recursivePins.has(e)?r.recursivePins.delete(e):r.directPins.delete(e)}),await r.flushPins(),e.log(`Removed pins: ${h}`),h.map(e=>({hash:e}))}finally{l()}}),ls:n.variadic(async(t,n)=>{n=n||{};let i=c.all;if(t&&t.type&&(n=t,t=null),n.type){i=n.type,"string"===typeof n.type&&(i=n.type.toLowerCase());const e=a.checkPinType(i);if(e)throw e}if(t){const n=await o(e.object,t),s=[];for(const e of n){const{key:t,reason:n,pinned:o}=await r.isPinnedWithType(e,i);if(o)switch(n){case c.direct:case c.recursive:s.push({hash:t,type:n});break;default:s.push({hash:t,type:`${c.indirect} through ${n}`})}}if(!s.length)throw new Error(`path '${t}' is not pinned`);return s}let s=[];if(i!==c.direct&&i!==c.all||(s=s.concat(Array.from(r.directPins).map(e=>({type:c.direct,hash:e})))),i!==c.recursive&&i!==c.all||(s=s.concat(Array.from(r.recursivePins).map(e=>({type:c.recursive,hash:e})))),i===c.indirect||i===c.all){const e=await r.getIndirectKeys(n);return s=s.filter(({hash:t})=>!e.includes(t)||e.includes(t)&&!r.directPins.has(t)).concat(e.map(e=>({type:c.indirect,hash:e}))),s}return s}),pinManager:r};return u}},"45b0":function(e,t,r){const n=r("924f");e.exports=class{constructor(e){this.hwm=e||16,this.head=new n(this.hwm),this.tail=this.head}push(e){if(!this.head.push(e)){const t=this.head;this.head=t.next=new n(2*this.head.buffer.length),this.head.push(e)}}shift(){const e=this.tail.shift();if(void 0===e&&this.tail.next){const e=this.tail.next;return this.tail.next=null,this.tail=e,this.tail.shift()}return e}isEmpty(){return this.head.isEmpty()}}},"45d0":function(e,t,r){"use strict";const n=r("df7c"),i=r("3c43"),s=r("021d");t.filter=(e,t)=>async function*(){for await(const r of e){const e=await t(r);e&&(yield r)}}(),t.sortAll=(e,t)=>async function*(){let r=[];for await(const t of e)r.push(t);r=await t(r);for(const e of r)yield e}(),t.take=(e,t)=>async function*(){if(t<=0)return;let r=0;for await(const n of e)if(yield n,r++,r>=t)return}(),t.map=(e,t)=>async function*(){for await(const r of e)yield t(r)}(),t.replaceStartWith=function(e,t){const r=new RegExp("^"+t);return e.replace(r,"")},t.tmpdir=()=>n.join(i.tmpdir(),s())},"45f5":function(e,t,r){"use strict";e.exports=function(e){var t=0;return e=e||1/0,function(r,n){return r?n&&n(r):t>e?n(!0):void n(null,t++)}}},"460c":function(e,t,r){var n=r("c3bb"),i=r("02a6"),s=r("9d8a"),o=r("e0c5").Buffer,a=new Array(160);function c(){this.init(),this._w=a,s.call(this,128,112)}n(c,i),c.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},c.prototype._hash=function(){var e=o.allocUnsafe(48);function t(t,r,n){e.writeInt32BE(t,n),e.writeInt32BE(r,n+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),e},e.exports=c},"463c":function(e,t,r){"use strict";(function(t){const{Key:n,Errors:i,utils:s}=r("adc0"),{filter:o,map:a,take:c,sortAll:u}=s;class l{constructor(e,t){let n;t&&t.db?(n=t.db,delete t.db):n=r("d508"),this.db=n(e,{...t,valueEncoding:"binary",compression:!1})}async open(){try{await this.db.open()}catch(e){throw i.dbOpenFailedError(e)}}async put(e,t){try{await this.db.put(e.toString(),t)}catch(r){throw i.dbWriteFailedError(r)}}async get(e){let t;try{t=await this.db.get(e.toString())}catch(r){if(r.notFound)throw i.notFoundError(r);throw i.dbWriteFailedError(r)}return t}async has(e){try{await this.db.get(e.toString())}catch(t){if(t.notFound)return!1;throw t}return!0}async delete(e){try{await this.db.del(e.toString())}catch(t){throw i.dbDeleteFailedError(t)}}close(){return this.db.close()}batch(){const e=[];return{put:(t,r)=>{e.push({type:"put",key:t.toString(),value:r})},delete:t=>{e.push({type:"del",key:t.toString()})},commit:()=>this.db.batch(e)}}query(e){let r=!0;null!=e.keysOnly&&(r=!e.keysOnly);let i=h(this.db.db.iterator({keys:!0,values:r,keyAsBuffer:!0}));if(i=a(i,({key:e,value:i})=>{const s={key:new n(e,!1)};return r&&(s.value=t.from(i)),s}),null!=e.prefix&&(i=o(i,t=>t.key.toString().startsWith(e.prefix))),Array.isArray(e.filters)&&(i=e.filters.reduce((e,t)=>o(e,t),i)),Array.isArray(e.orders)&&(i=e.orders.reduce((e,t)=>u(e,t),i)),null!=e.offset){let t=0;i=o(i,()=>t++>=e.offset)}return null!=e.limit&&(i=c(i,e.limit)),i}}function h(e){return{next:()=>new Promise((t,r)=>{e.next((e,n,i)=>e?r(e):null==n?t({done:!0}):void t({done:!1,value:{key:n,value:i}}))}),return:()=>new Promise((t,r)=>{e.end(e=>{if(e)return r(e);t({done:!0})})}),[Symbol.asyncIterator](){return this}}}e.exports=l}).call(this,r("b639").Buffer)},"464c":function(e,t,r){var n=r("a47c");function i(e){return n(this,e).has(e)}e.exports=i},"467e":function(e,t,r){"use strict";const{createFromPrivKey:n}=r("b1aa"),i=r("fa4d"),s=r("7048"),o=r("4bc2"),a=o("ipfs:ipns");a.error=o("ipfs:ipns:error");const c=r("66f0"),u=r("ae21"),l=r("5d36"),h=r("f11e"),{normalizePath:f}=r("ad58"),d=r("3e21"),p=6e4;class y{constructor(e,t,r,n,i){this.publisher=new c(e,t),this.republisher=new u(this.publisher,t,r,n,i),this.resolver=new l(e),this.cache=new d(1e3),this.routing=e}async publish(e,t,r=c.defaultRecordLifetime){try{t=f(t);const s=await i(n)(e.bytes);await this.publisher.publishWithEOL(e,t,r),a(`IPNS value ${t} was published correctly`);const o=s.toB58String(),c=parseFloat(r),u=c1?L(e,t,r):B(e,t,r);case"function":return C(e,t,r);case"object":return N(e,t,r);case"string":{let n,i=!0;if(e.endsWith("?")&&(i=!1,e=e.slice(0,-1)),e.includes("|")){const i=e.split(/\s*\|\s*/g);n=M(i,t,r)}else if(e.includes("&")){const i=e.split(/\s*&\s*/g);n=U(i,t,r)}else n=D(e,t,r);return i||(n=O(n,void 0,r)),n}}throw new Error(`Invalid schema: ${e}`)}function E(e,t,r){if("array"!==s(e)||2!==e.length)throw new Error(`Invalid schema: ${e}`);const n=D("object",void 0,r),i=_(e[0],void 0,r),o=_(e[1],void 0,r),a="dict",c=`dict<${i.type},${o.type}>`,u=e=>{const r=b(t);e=r?v({},r,e):e;const[s]=n.validate(e);if(s)return s.type=c,[s];const a={},u=[];for(let t in e){const r=e[t],[n,s]=i.validate(t);if(n){const r=n.errors||[n];r.forEach(r=>{r.path=[t].concat(r.path),r.data=e,u.push(r)});continue}t=s;const[c,l]=o.validate(r);if(c){const r=c.errors||[c];r.forEach(r=>{r.path=[t].concat(r.path),r.data=e,u.push(r)})}else a[t]=l}return u.length?[v({},u[0],{errors:u})]:[void 0,a]};return new w(a,c,u)}function S(e,t,r){if("array"!==s(e))throw new Error(`Invalid schema: ${e}`);const n="enum",i=e.map(e=>{try{return JSON.stringify(e)}catch(t){return String(e)}}).join(" | "),o=(r=b(t))=>e.includes(r)?[void 0,r]:[{data:r,path:[],value:r,type:i}];return new w(n,i,o)}function k(e,t,r){const n=S(e,void 0,r),i=B([n],t,r);return i}function C(e,t,r){if("function"!==s(e))throw new Error(`Invalid schema: ${e}`);const n="function",i="",o=(r=b(t),n)=>{const o=e(r,n);let a,c={path:[],reason:null};switch(s(o)){case"boolean":a=o;break;case"string":a=!1,c.reason=o;break;case"object":a=!1,c=v({},c,o);break;default:throw new Error(`Invalid result: ${o}`)}return a?[void 0,r]:[v({type:i,value:r,data:r},c)]};return new w(n,i,o)}function A(e,t,r){const n="instance",i=`instance<${e.name}>`,s=(r=b(t))=>r instanceof e?[void 0,r]:[{data:r,path:[],value:r,type:i}];return new w(n,i,s)}function I(e,t,r){if("object"!==s(e))throw new Error(`Invalid schema: ${e}`);const n=D("object",void 0,r),i=[],o={};for(const s in e){i.push(s);const t=e[s],n=_(t,void 0,r);o[s]=n}const a="interface",c=`{${i.join()}}`,u=(e=b(t))=>{const[r]=n.validate(e);if(r)return r.type=c,[r];const i=[],s=e;for(const n in o){let r=e[n];const a=o[n];if(void 0===r){const i=t&&t[n];r=b(i,e)}const[c,u]=a.validate(r,e);if(c){const t=c.errors||[c];t.forEach(t=>{t.path=[n].concat(t.path),t.data=e,i.push(t)})}else(n in e||void 0!==u)&&(s[n]=u)}return i.length?[v({},i[0],{errors:i})]:[void 0,s]};return new w(a,c,u)}function T(e,t,r){if("function"!==s(e))throw new Error(`Invalid schema: ${e}`);let n,i;const o="lazy",a="lazy...",c=t=>(i=e(),n.name=i.kind,n.type=i.type,n.validate=i.validate,n.validate(t));return n=new w(o,a,c),n}function x(e,t,r){if("function"!==s(e))throw new Error(`Invalid schema: ${e}`);const n="dynamic",i="dynamic...",o=(r=b(t),n)=>{const i=e(r,n);if("function"!==s(i))throw new Error(`Invalid schema: ${i}`);const[o,a]=i.validate(r);return o?[o]:[void 0,a]};return new w(n,i,o)}function B(e,t,r){if("array"!==s(e)||1!==e.length)throw new Error(`Invalid schema: ${e}`);const n=D("array",void 0,r),i=_(e[0],void 0,r),o="list",a=`[${i.type}]`,c=(e=b(t))=>{const[r,s]=n.validate(e);if(r)return r.type=a,[r];e=s;const o=[],c=[];for(let t=0;t{r.path=[t].concat(r.path),r.data=e,o.push(r)})}else c[t]=s}return o.length?[v({},o[0],{errors:o})]:[void 0,c]};return new w(o,a,c)}function R(e,t,r){const n="literal",i=`literal: ${JSON.stringify(e)}`,s=(r=b(t))=>r===e?[void 0,r]:[{data:r,path:[],value:r,type:i}];return new w(n,i,s)}function N(e,t,r){if("object"!==s(e))throw new Error(`Invalid schema: ${e}`);const n=D("object",void 0,r),i=[],o={};for(const s in e){i.push(s);const t=e[s],n=_(t,void 0,r);o[s]=n}const a="object",c=`{${i.join()}}`,u=(e=b(t))=>{const[r]=n.validate(e);if(r)return r.type=c,[r];const i=[],s={},a=Object.keys(e),u=Object.keys(o),l=new Set(a.concat(u));return l.forEach(r=>{let n=e[r];const a=o[r];if(void 0===n){const i=t&&t[r];n=b(i,e)}if(!a){const t={data:e,path:[r],value:n};return void i.push(t)}const[c,u]=a.validate(n,e);if(c){const t=c.errors||[c];t.forEach(t=>{t.path=[r].concat(t.path),t.data=e,i.push(t)})}else(r in e||void 0!==u)&&(s[r]=u)}),i.length?[v({},i[0],{errors:i})]:[void 0,s]};return new w(a,c,u)}function O(e,t,r){return M([e,"undefined"],t,r)}function P(e,t,r){if("object"!==s(e))throw new Error(`Invalid schema: ${e}`);const n=D("object",void 0,r),i=[],o={};for(const s in e){i.push(s);const t=e[s],n=_(t,void 0,r);o[s]=n}const a="partial",c=`{${i.join()},...}`,u=(e=b(t))=>{const[r]=n.validate(e);if(r)return r.type=c,[r];const i=[],s={};for(const n in o){let r=e[n];const a=o[n];if(void 0===r){const i=t&&t[n];r=b(i,e)}const[c,u]=a.validate(r,e);if(c){const t=c.errors||[c];t.forEach(t=>{t.path=[n].concat(t.path),t.data=e,i.push(t)})}else(n in e||void 0!==u)&&(s[n]=u)}return i.length?[v({},i[0],{errors:i})]:[void 0,s]};return new w(a,c,u)}function D(e,t,r){if("string"!==s(e))throw new Error(`Invalid schema: ${e}`);const{types:n}=r,i=n[e];if("function"!==s(i))throw new Error(`Invalid type: ${e}`);const o=C(i,t,r),a="scalar",c=e,u=e=>{const[t,r]=o.validate(e);return t?(t.type=c,[t]):[void 0,r]};return new w(a,c,u)}function L(e,t,r){if("array"!==s(e))throw new Error(`Invalid schema: ${e}`);const n=e.map(e=>_(e,void 0,r)),i=D("array",void 0,r),o="tuple",a=`[${n.map(e=>e.type).join()}]`,c=(e=b(t))=>{const[r]=i.validate(e);if(r)return r.type=a,[r];const s=[],o=[],c=Math.max(e.length,n.length);for(let t=0;t{r.path=[t].concat(r.path),r.data=e,o.push(r)})}else s[t]=c}return o.length?[v({},o[0],{errors:o})]:[void 0,s]};return new w(o,a,c)}function M(e,t,r){if("array"!==s(e))throw new Error(`Invalid schema: ${e}`);const n=e.map(e=>_(e,void 0,r)),i="union",o=n.map(e=>e.type).join(" | "),a=(e=b(t))=>{const r=[];for(const t of n){const[n,i]=t.validate(e);if(!n)return[void 0,i];r.push(n)}return r[0].type=o,r};return new w(i,o,a)}function U(e,t,r){if("array"!==s(e))throw new Error(`Invalid schema: ${e}`);const n=e.map(e=>_(e,void 0,r)),i="intersection",o=n.map(e=>e.type).join(" & "),a=(e=b(t))=>{let r=e;for(const t of n){const[e,n]=t.validate(r);if(e)return e.type=o,[e];r=n}return[void 0,r]};return new w(i,o,a)}const j={any:_,dict:E,enum:S,enums:k,function:C,instance:A,interface:I,lazy:T,list:B,literal:R,object:N,optional:O,partial:P,scalar:D,tuple:L,union:M,intersection:U,dynamic:x},K=["arguments","array","boolean","buffer","error","float32array","float64array","function","generatorfunction","int16array","int32array","int8array","map","null","number","object","promise","regexp","set","string","symbol","uint16array","uint32array","uint8array","uint8clampedarray","undefined","weakmap","weakset"],F={any:e=>void 0!==e};function V(e={}){const t=v({},F,e.types||{});function r(e,r,i={}){m(e)&&(e=e.schema);const s=j.any(e,r,v({},i,{types:t}));function o(e){if(this instanceof o)throw new Error("Invalid `new` keyword!");return o.assert(e)}return Object.defineProperty(o,y,{value:!0}),Object.defineProperty(o,g,{value:s}),o.kind=s.name,o.type=s.type,o.schema=e,o.defaults=r,o.options=i,o.assert=e=>{const[t,r]=s.validate(e);if(t)throw new n(t);return r},o.test=e=>{const[t]=s.validate(e);return!t},o.validate=e=>{const[t,r]=s.validate(e);return t?[new n(t)]:[void 0,r]},o}return Object.keys(j).forEach(e=>{const n=j[e];r[e]=(e,i,s)=>{const o=n(e,i,v({},s,{types:t})),a=r(o,i,s);return a}}),r}K.forEach(e=>{F[e]=t=>s(t)===e}),F.date=e=>"date"===s(e)&&!isNaN(e);const q=V()},"46be":function(e,t,r){(function(t){function r(e){if("object"!==typeof e||null===e)throw new TypeError("First argument must be an abstract-leveldown compliant store");this.db=e,this._ended=!1,this._nexting=!1}r.prototype.next=function(e){var r=this;if("function"!==typeof e)throw new Error("next() requires a callback argument");return r._ended?(t.nextTick(e,new Error("cannot call next() after end()")),r):r._nexting?(t.nextTick(e,new Error("cannot call next() before previous next() has completed")),r):(r._nexting=!0,r._next((function(){r._nexting=!1,e.apply(null,arguments)})),r)},r.prototype._next=function(e){t.nextTick(e)},r.prototype.seek=function(e){if(this._ended)throw new Error("cannot call seek() after end()");if(this._nexting)throw new Error("cannot call seek() before next() has completed");e=this.db._serializeKey(e),this._seek(e)},r.prototype._seek=function(e){},r.prototype.end=function(e){if("function"!==typeof e)throw new Error("end() requires a callback argument");if(this._ended)return t.nextTick(e,new Error("end() already called on iterator"));this._ended=!0,this._end(e)},r.prototype._end=function(e){t.nextTick(e)},e.exports=r}).call(this,r("4362"))},"46fd":function(e,t,r){"use strict";var n=r("61a0").AbstractLevelDOWN,i=r("61a0").AbstractChainedBatch,s=r("61a0").AbstractIterator,o=r("3fb5"),a=r("66e8"),c=r("4392").EncodingError,u=["approximateSize","compactRange"];function l(e,t){if(!(this instanceof l))return new l(e,t);var r=e.supports||{},i=r.additionalMethods||{};n.call(this,r),this.supports.encodings=!0,this.supports.additionalMethods={},u.forEach((function(t){var r="function"===typeof e[t];(i[t]||r)&&(this.supports.additionalMethods[t]=!0,this[t]=function(e,r,n,i){return e=this.codec.encodeKey(e,n),r=this.codec.encodeKey(r,n),this.db[t](e,r,n,i)})}),this),t=t||{},"undefined"===typeof t.keyEncoding&&(t.keyEncoding="utf8"),"undefined"===typeof t.valueEncoding&&(t.valueEncoding="utf8"),this.db=e,this.codec=new a(t)}function h(e,t){s.call(this,e),this.codec=e.codec,this.keys=t.keys,this.values=t.values,this.opts=this.codec.encodeLtgt(t),this.it=e.db.iterator(this.opts)}function f(e,t){i.call(this,e),this.codec=e.codec,this.batch=e.db.batch()}e.exports=l.default=l,o(l,n),l.prototype.type="encoding-down",l.prototype._serializeKey=l.prototype._serializeValue=function(e){return e},l.prototype._open=function(e,t){this.db.open(e,t)},l.prototype._close=function(e){this.db.close(e)},l.prototype._put=function(e,t,r,n){e=this.codec.encodeKey(e,r),t=this.codec.encodeValue(t,r),this.db.put(e,t,r,n)},l.prototype._get=function(e,t,r){var n=this;e=this.codec.encodeKey(e,t),t.asBuffer=this.codec.valueAsBuffer(t),this.db.get(e,t,(function(e,i){if(e)return r(e);try{i=n.codec.decodeValue(i,t)}catch(e){return r(new c(e))}r(null,i)}))},l.prototype._del=function(e,t,r){e=this.codec.encodeKey(e,t),this.db.del(e,t,r)},l.prototype._chainedBatch=function(){return new f(this)},l.prototype._batch=function(e,t,r){e=this.codec.encodeBatch(e,t),this.db.batch(e,t,r)},l.prototype._iterator=function(e){return e.keyAsBuffer=this.codec.keyAsBuffer(e),e.valueAsBuffer=this.codec.valueAsBuffer(e),new h(this,e)},l.prototype._clear=function(e,t){e=this.codec.encodeLtgt(e),this.db.clear(e,t)},o(h,s),h.prototype._next=function(e){var t=this;this.it.next((function(r,n,i){if(r)return e(r);try{n=t.keys&&"undefined"!==typeof n?t.codec.decodeKey(n,t.opts):void 0,i=t.values&&"undefined"!==typeof i?t.codec.decodeValue(i,t.opts):void 0}catch(r){return e(new c(r))}e(null,n,i)}))},h.prototype._seek=function(e){e=this.codec.encodeKey(e,this.opts),this.it.seek(e)},h.prototype._end=function(e){this.it.end(e)},o(f,i),f.prototype._put=function(e,t){e=this.codec.encodeKey(e),t=this.codec.encodeValue(t),this.batch.put(e,t)},f.prototype._del=function(e){e=this.codec.encodeKey(e),this.batch.del(e)},f.prototype._clear=function(){this.batch.clear()},f.prototype._write=function(e,t){this.batch.write(e,t)}},4706:function(e,t,r){"use strict";const n=r("23bc"),i=r("ef4d"),s=e=>{if(i.isDAGLink(e))return e;if(!("cid"in e||"hash"in e||"Hash"in e||"multihash"in e))throw new Error("Link must be a DAGLink or DAGLink-like. Convert the DAGNode into a DAGLink via `node.toDAGLink()`.");return new i(e.Name||e.name,e.Tsize||e.size,e.Hash||e.multihash||e.hash||e.cid)},o=(e,t)=>{const r=s(t);e._links.push(r),e._links=n(e._links)};e.exports=o},4720:function(e,t,r){(function(t){e.exports=s;var r="function"===typeof t&&"function"===typeof t.isBuffer,n="function"===typeof ArrayBuffer,i=function(e){return"function"===typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer};function s(e){return r&&t.isBuffer(e)||n&&(e instanceof ArrayBuffer||i(e))}}).call(this,r("b639").Buffer)},"473e":function(e,t,r){"use strict";r.r(t);var n=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"artist-page"},[n("ArtistTitle",{attrs:{"prizes-unlocked":e.prizesUnlocked}}),n("div",{attrs:{id:"primary"}},[n("div",{staticClass:"shrink-top"},[n("h3",{staticStyle:{"margin-left":"25px"}},[e._v("Ticket")]),n("div",{attrs:{id:"artist-card"}},[n("img",{attrs:{id:"artist-img",src:e.imageSrc}}),n("h2",[e._v(e._s(e.artistName)+" VIP Ticket")]),e._m(0)])]),n("div",{staticClass:"shrink-top"},[n("h3",{staticStyle:{"margin-left":"25px"}},[e._v("Price")]),n("div",{attrs:{id:"curve-card"}},[e._m(1),n("div",{attrs:{id:"trade-section"}},[n("h5",[e._v("current value")]),n("div",{attrs:{id:"price-and-token"}},[n("h1",[e._v("$"+e._s(e.tokenPriceUsd))]),n("img",{attrs:{id:"token-number",src:r("a740")}})]),n("div",{attrs:{id:"trade-buttons"}},[n("div",{staticClass:"btn",staticStyle:{"background-color":"#398557"},on:{click:function(t){e.buy=!0}}},[n("p",[e._v("Buy")])]),n("div",{staticClass:"btn sell-btn",staticStyle:{"background-color":"#da304c"},on:{click:function(t){e.sell=!0}}},[n("p",[e._v("Sell")])])])])])])]),n("Tests",{ref:"Tests",on:{receivedContractData:e.updateContract}}),n("Prizes",{attrs:{"prizes-unlocked":e.prizesUnlocked}}),n("Buy",{directives:[{name:"show",rawName:"v-show",value:e.buy,expression:"buy"}],staticClass:"modal",on:{close:function(t){e.buy=!1},confirmed:function(t){e.prizesUnlocked=!0}}}),n("Sell",{directives:[{name:"show",rawName:"v-show",value:e.sell,expression:"sell"}],staticClass:"modal",on:{close:function(t){e.sell=!1}}})],1)},i=[function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ul",{attrs:{id:"offers"}},[r("li",[e._v(" Exclusive access to “BUBBA” behind-the-scenes videos and production tutorials ")]),r("li",[e._v("Receive early access to unrealeased music and videos")]),r("li",[e._v("A chance to win an 1 on 1 production session")]),r("li",[e._v("Two free VIP concert tickets for every year that you hold the token")]),r("li",[e._v("Submit a monthly question to Kaytranada.")])])},function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{attrs:{id:"graph-section"}},[n("img",{staticClass:"graph",attrs:{src:r("80c2")}})])}],s=(r("b0c0"),r("b680"),r("96cf"),r("1da1")),o=r("4360"),a=(r("4dec"),r("6314"),function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"modal-mask"},[r("div",{staticClass:"modal-wrapper"},[r("div",{staticClass:"modal-container"},[r("div",{staticClass:"modal-body"},[e._m(0),r("div",{attrs:{id:"right-column"}},[r("p",{staticStyle:{"font-weight":"700"}},[e._v(e._s(e.tokenPriceUsd))])])]),r("div",{staticClass:"btn",staticStyle:{"background-color":"#398557",width:"100%",margin:"0","margin-bottom":"10px"},on:{click:e.buyToken}},[r("p",[e._v("Buy for "+e._s(e.tokenPriceEth)+" ETH")])]),r("div",{staticClass:"btn btn-cancel",staticStyle:{"background-color":"transparent",width:"100%",margin:"0","margin-bottom":"20px"},attrs:{src:"../assets/CloseModal.svg"},on:{click:function(t){return e.$emit("close")}}},[r("p",{staticStyle:{color:"black"}},[e._v("Cancel")])])])])])}),c=[function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticStyle:{width:"50%",float:"left"},attrs:{id:"left-column"}},[r("p",{staticStyle:{"font-weight":"700"}},[e._v("Total price")])])}],u=(r("d3b7"),r("25f0"),r("9222")),l={name:"Buy",computed:{ethPriceUsd:function(){return this.$store.state.ethPrice},tokenPriceEth:function(){return this.$store.state.tokenPriceEth},tokenPriceUsd:function(){return(this.ethPriceUsd*this.tokenPriceEth).toFixed(2)||0}},data:function(){return{contractAddress:"0xDFA1dE81594DeC91c5a5765A0Cd27b8ECb79e5b9"}},methods:{getTransactionReceipt:function(){var e=Object(s["a"])(regeneratorRuntime.mark((function e(t){var r;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:r=null;case 1:if(null!==r){e.next=8;break}return e.next=4,this.getTransactionReceiptPromise(t);case 4:r=e.sent,setTimeout("",1e3),e.next=1;break;case 8:return e.abrupt("return",r);case 9:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}(),getTransactionReceiptPromise:function(e){return new Promise((function(t,r){u["b"].eth.getTransactionReceipt(e,(function(e,n){null!==e?r(e):t(n)}))}))},buyToken:function(){var e=Object(s["a"])(regeneratorRuntime.mark((function e(){var t=this;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:u["b"].eth.sendTransaction({from:"0x0000000000000000000000000000000000000000",to:this.contractAddress,value:u["b"].utils.toWei(this.tokenPriceEth.toString(),"ether")},function(){var e=Object(s["a"])(regeneratorRuntime.mark((function e(r,n){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:r||(console.log("Transaction Hash: "+n),t.$emit("confirmed"));case 1:case"end":return e.stop()}}),e)})));return function(t,r){return e.apply(this,arguments)}}());case 1:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()}},h=l,f=(r("3e48"),r("2877")),d=Object(f["a"])(h,a,c,!1,null,"6be94cbe",null),p=d.exports,y=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"modal-mask"},[r("div",{staticClass:"modal-wrapper"},[r("div",{staticClass:"modal-container"},[r("div",{staticClass:"modal-body"},[e._m(0),r("div",{attrs:{id:"right-column"}},[r("p",{},[e._v(e._s(e.tokenPriceUsd))]),r("p",{},[e._v(e._s(e.artistCutUsd))]),r("p",{staticStyle:{"font-weight":"700"}},[e._v(e._s((e.tokenPriceUsd-e.artistCutUsd).toFixed(2)))])])]),r("div",{staticClass:"btn",staticStyle:{"background-color":"#da304c",width:"100%",margin:"0","margin-bottom":"10px"},on:{click:e.sellToken}},[r("p",[e._v("Sell for "+e._s(e.tokenPriceEth-e.artistCutEth)+" ETH")])]),r("div",{staticClass:"btn btn-cancel",staticStyle:{"background-color":"transparent",width:"100%",margin:"0","margin-bottom":"20px"},attrs:{src:"../assets/CloseModal.svg"},on:{click:function(t){return e.$emit("close")}}},[r("p",{staticStyle:{color:"black"}},[e._v("Cancel")])])])])])},g=[function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticStyle:{width:"50%",float:"left"},attrs:{id:"left-column"}},[r("p",[e._v("Token value")]),r("p",[e._v("Artist allocation")]),r("p",{staticStyle:{"font-weight":"700"}},[e._v("You receive")])])}],m={name:"Sell",computed:{artistCutUsd:function(){return(this.artistCutEth*this.ethPriceUsd).toFixed(2)||0},artistCutEth:function(){return.2*this.tokenPriceEth},ethPriceUsd:function(){return this.$store.state.ethPrice},tokenPriceEth:function(){return this.$store.state.tokenPriceEth},tokenPriceUsd:function(){return(this.ethPriceUsd*this.tokenPriceEth).toFixed(2)||0}},methods:{sellToken:function(){web3.eth.sendTransaction({from:"0x0000000000000000000000000000000000000000",to:this.contractAddress,value:web3.utils.toWei(this.tokenPriceEth.toString(),"ether")})}}},b=m,v=(r("4069"),Object(f["a"])(b,y,g,!1,null,"231b042c",null)),w=v.exports,_=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{attrs:{id:"prizes"}},[r("h3",[e._v("Rewards")]),r("div",{directives:[{name:"show",rawName:"v-show",value:!e.prizesUnlocked,expression:"!prizesUnlocked"}],attrs:{id:"locked"}},[e._m(0)]),r("div",{directives:[{name:"show",rawName:"v-show",value:e.prizesUnlocked,expression:"prizesUnlocked"}],attrs:{id:"unlocked-grid"}},[r("div",{staticClass:"card",on:{click:function(t){e.redeemPrize=!0}}},[r("p",[e._v("Exclusive Song")])]),e._m(1),e._m(2),e._m(3),e._m(4),e._m(5)]),r("RedeemPrize",{directives:[{name:"show",rawName:"v-show",value:e.redeemPrize,expression:"redeemPrize"}],on:{close:function(t){e.redeemPrize=!1}}})],1)},E=[function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{attrs:{id:"locked-content"}},[n("img",{attrs:{id:"lockIcon",src:r("3c1a")}}),n("p",[e._v("Buy this artist's token to unlock their content")])])},function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"card"},[r("p",[e._v("2 Concert Tickets")])])},function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"card"},[r("p",[e._v("VIP")])])},function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"card"},[r("p",[e._v("1 on 1")])])},function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"card"},[r("p",[e._v("Song")])])},function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"card"},[r("p",[e._v("Concert")])])}],S=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"modal-mask"},[n("div",{staticClass:"modal-wrapper"},[n("div",{staticClass:"modal-container"},[n("div",{staticClass:"modal-body"}),n("div",{attrs:{id:"album-container"},on:{mouseover:function(t){e.hover=!0},mouseleave:function(t){e.hover=!1}}},[n("img",{attrs:{id:"albumArt",src:r("9a723")}}),n("img",{directives:[{name:"show",rawName:"v-show",value:!e.playing&&e.hover,expression:"!playing && hover"}],attrs:{id:"play",src:r("dbd8")},on:{click:e.play}}),n("img",{directives:[{name:"show",rawName:"v-show",value:e.playing&&e.hover,expression:"playing && hover"}],attrs:{id:"pause",src:r("ed6df")},on:{click:e.pause}})]),n("audio",{ref:"KaytraSong",attrs:{id:"song",src:r("2957")}}),e._m(0),n("div",{staticClass:"btn btn-cancel",staticStyle:{"background-color":"transparent",width:"100%",margin:"0","margin-bottom":"20px"},attrs:{src:"../assets/CloseModal.svg"},on:{click:function(t){return e.$emit("close")}}},[n("p",{staticStyle:{color:"black"}},[e._v("Close")])])])])])},k=[function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"btn",staticStyle:{"background-color":"#398557",width:"100%",margin:"0","margin-bottom":"10px","margin-top":"10px"}},[r("p",[e._v("Download Song")])])}],C={name:"RedeemPrize",data:function(){return{playing:!1,hover:!1}},methods:{play:function(){this.$refs.KaytraSong.play(),this.playing=!this.playing},pause:function(){this.$refs.KaytraSong.pause(),this.playing=!this.playing}}},A=C,I=(r("142d"),Object(f["a"])(A,S,k,!1,null,"0fc7ea69",null)),T=I.exports,x={name:"prizes",props:{prizesUnlocked:Boolean},components:{RedeemPrize:T},data:function(){return{redeemPrize:!1}}},B=x,R=(r("4e0a"),Object(f["a"])(B,_,E,!1,null,"662da522",null)),N=R.exports,O=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{attrs:{id:"artist-title"}},[r("p",{attrs:{id:"artist-name"}},[e._v("Kaytranada")]),e._m(0),r("div",{staticClass:"tokenOwnership",class:{own:e.prizesUnlocked,dontOwn:!e.prizesUnlocked}},[e._v(" "+e._s(e.ownershipText)+" ")])])},P=[function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{attrs:{id:"verified"}},[n("img",{attrs:{src:r("8536")}}),n("p",[e._v("Official artist page")])])}],D={name:"artistTitle",computed:{ownershipText:function(){return this.prizesUnlocked?"You own this token":"You do not own this token"}},props:{prizesUnlocked:Boolean},data:function(){return{ownership:!1}}},L=D,M=(r("0b79"),Object(f["a"])(L,O,P,!1,null,"2fa309b2",null)),U=M.exports,j=r("104a"),K=r("2edf"),F=new K,V=r("1d81"),q={name:"ArtistPage",components:{Buy:p,Sell:w,Prizes:N,ArtistTitle:U,Tests:j["a"]},computed:{ethPriceUsd:function(){return this.$store.state.ethPrice},tokenPriceEth:function(){return this.$store.state.tokenPriceEth},tokenPriceUsd:function(){return(this.ethPriceUsd*this.tokenPriceEth).toFixed(2)||0}},data:function(){return{artistAddress:null,artistName:null,boxAddress:"0x2ca6aFF1D484E86f24e0a9c9D879b116c3c904C5",buy:!1,sell:!1,imageSrc:"",rewards:[],prizesUnlocked:!1,totalTokenSupply:0}},methods:{getETHPrice:function(){var e=Object(s["a"])(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,F.simple.price({ids:["ethereum"],vs_currencies:["usd"]});case 2:return t=e.sent,e.abrupt("return",t.data.ethereum.usd);case 4:case"end":return e.stop()}}),e)})));function t(){return e.apply(this,arguments)}return t}(),updateContract:function(e){console.log(e),this.totalTokenSupply=e.artistTokenSupply}},mounted:function(){var e=Object(s["a"])(regeneratorRuntime.mark((function e(){var t,r,n;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,V.getProfile(this.boxAddress);case 2:return t=e.sent,r=JSON.parse(t.artists1),this.artistName=r.name,this.artistAddress=r.artistAddress,this.imageSrc=r.imageSrc,this.rewards=r.rewards,e.next=10,this.getETHPrice();case 10:n=e.sent,o["a"].commit("setEthPrice",n),this.$refs.Tests.test(),o["a"].commit("setTokenPriceEth",.5883);case 14:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},z=q,H=(r("0f11"),Object(f["a"])(z,n,i,!1,null,null,null));t["default"]=H.exports},"475c":function(e,t,r){"use strict";const{Buffer:n}=r("b639"),i=r("6874"),s=r("e782"),o=r("d19a");async function a(e,t,r){const n=await a.digest(e,t,r);return s.encode(n,t,r)}a.Buffer=n,a.multihash=s,a.digest=async(e,t,r)=>{const n=a.createHash(t),i=await n(e);return r?i.slice(0,r):i},a.createHash=function(e){if(!e)throw i("hash algorithm must be specified","ERR_HASH_ALGORITHM_NOT_SPECIFIED");if(e=s.coerceCode(e),!a.functions[e])throw i(`multihash function '${e}' not yet supported`,"ERR_HASH_ALGORITHM_NOT_SUPPORTED");return a.functions[e]},a.functions={17:o.sha1,18:o.sha2256,19:o.sha2512,20:o.sha3512,21:o.sha3384,22:o.sha3256,23:o.sha3224,24:o.shake128,25:o.shake256,26:o.keccak224,27:o.keccak256,28:o.keccak384,29:o.keccak512,34:o.murmur3128,35:o.murmur332,86:o.dblSha2256},o.addBlake(a.functions),a.validate=async(e,t)=>{const r=await a(e,s.decode(t).name);return 0===n.compare(t,r)},e.exports=a},4768:function(e,t,r){"use strict";(function(e){const n=r("682d"),i=r("e31f"),s=r("8c79");function o(e){return Promise.all([i.subtle.exportKey("jwk",e.privateKey),i.subtle.exportKey("jwk",e.publicKey)])}function a(e){return i.subtle.importKey("jwk",{kty:e.kty,n:e.n,e:e.e},{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["verify"])}t.utils=r("2f79"),t.generateKey=function(e,t){n(i.subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:e,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]).then(o).then(e=>({privateKey:e[0],publicKey:e[1]})),t)},t.unmarshalPrivateKey=function(e,t){const r=i.subtle.importKey("jwk",e,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["sign"]);n(Promise.all([r,a(e)]).then(e=>o({privateKey:e[0],publicKey:e[1]})).then(e=>({privateKey:e[0],publicKey:e[1]})),t)},t.getRandomValues=s,t.hashAndSign=function(t,r,s){n(i.subtle.importKey("jwk",t,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]).then(e=>i.subtle.sign({name:"RSASSA-PKCS1-v1_5"},e,Uint8Array.from(r))).then(t=>e.from(t)),s)},t.hashAndVerify=function(e,t,r,s){n(i.subtle.importKey("jwk",e,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]).then(e=>i.subtle.verify({name:"RSASSA-PKCS1-v1_5"},e,t,r)),s)};const{jwk2pub:c,jwk2priv:u}=r("3bd8");function l(t,r,n,i){const s=r?c(t):u(t),o=e.from(n).toString("binary"),a=i(o,s);return e.from(a,"binary")}t.encrypt=function(e,t){return l(e,!0,t,(e,t)=>t.encrypt(e))},t.decrypt=function(e,t){return l(e,!1,t,(e,t)=>t.decrypt(e))}}).call(this,r("b639").Buffer)},"476e":function(e,t,r){"use strict";const{TieredDatastore:n}=r("6e64"),i=r("9829"),s=r("6158"),o=r("20ba");e.exports=e=>{const t=[];let r;if(i(e._options,"EXPERIMENTAL.ipnsPubsub",!1)){const n=e.libp2p.pubsub,i=e._repo.datastore,o=e._peerInfo.id;r=new s(n,i,o),t.push(r)}if(i(e._options,"offline")||!i(e._options,"libp2p.config.dht.enabled",!1)){const r=new o(e._repo);t.push(r)}else t.push(e.libp2p.dht);return new n(t)}},"477b":function(e,t){function r(e){return"function"===typeof e}function n(e){return"object"===typeof e&&i(e.source)&&s(e.sink)}function i(e){return r(e)&&2===e.length}function s(e){return r(e)&&1===e.length}t.isDuplex=n,t.isSource=i,t.isSink=s},"477c":function(e,t,r){"use strict";const n=r("09a4"),i=r("6f12");e.exports=function(e){return n.variadic((async function(t,r){return i(e.refs._localAsyncIterator(t,r))}))}},4783:function(e,t,r){"use strict";t.names=Object.freeze({identity:0,sha1:17,"sha2-256":18,"sha2-512":19,"dbl-sha2-256":86,"sha3-224":23,"sha3-256":22,"sha3-384":21,"sha3-512":20,"shake-128":24,"shake-256":25,"keccak-224":26,"keccak-256":27,"keccak-384":28,"keccak-512":29,"murmur3-128":34,"murmur3-32":35,"blake2b-8":45569,"blake2b-16":45570,"blake2b-24":45571,"blake2b-32":45572,"blake2b-40":45573,"blake2b-48":45574,"blake2b-56":45575,"blake2b-64":45576,"blake2b-72":45577,"blake2b-80":45578,"blake2b-88":45579,"blake2b-96":45580,"blake2b-104":45581,"blake2b-112":45582,"blake2b-120":45583,"blake2b-128":45584,"blake2b-136":45585,"blake2b-144":45586,"blake2b-152":45587,"blake2b-160":45588,"blake2b-168":45589,"blake2b-176":45590,"blake2b-184":45591,"blake2b-192":45592,"blake2b-200":45593,"blake2b-208":45594,"blake2b-216":45595,"blake2b-224":45596,"blake2b-232":45597,"blake2b-240":45598,"blake2b-248":45599,"blake2b-256":45600,"blake2b-264":45601,"blake2b-272":45602,"blake2b-280":45603,"blake2b-288":45604,"blake2b-296":45605,"blake2b-304":45606,"blake2b-312":45607,"blake2b-320":45608,"blake2b-328":45609,"blake2b-336":45610,"blake2b-344":45611,"blake2b-352":45612,"blake2b-360":45613,"blake2b-368":45614,"blake2b-376":45615,"blake2b-384":45616,"blake2b-392":45617,"blake2b-400":45618,"blake2b-408":45619,"blake2b-416":45620,"blake2b-424":45621,"blake2b-432":45622,"blake2b-440":45623,"blake2b-448":45624,"blake2b-456":45625,"blake2b-464":45626,"blake2b-472":45627,"blake2b-480":45628,"blake2b-488":45629,"blake2b-496":45630,"blake2b-504":45631,"blake2b-512":45632,"blake2s-8":45633,"blake2s-16":45634,"blake2s-24":45635,"blake2s-32":45636,"blake2s-40":45637,"blake2s-48":45638,"blake2s-56":45639,"blake2s-64":45640,"blake2s-72":45641,"blake2s-80":45642,"blake2s-88":45643,"blake2s-96":45644,"blake2s-104":45645,"blake2s-112":45646,"blake2s-120":45647,"blake2s-128":45648,"blake2s-136":45649,"blake2s-144":45650,"blake2s-152":45651,"blake2s-160":45652,"blake2s-168":45653,"blake2s-176":45654,"blake2s-184":45655,"blake2s-192":45656,"blake2s-200":45657,"blake2s-208":45658,"blake2s-216":45659,"blake2s-224":45660,"blake2s-232":45661,"blake2s-240":45662,"blake2s-248":45663,"blake2s-256":45664,"Skein256-8":45825,"Skein256-16":45826,"Skein256-24":45827,"Skein256-32":45828,"Skein256-40":45829,"Skein256-48":45830,"Skein256-56":45831,"Skein256-64":45832,"Skein256-72":45833,"Skein256-80":45834,"Skein256-88":45835,"Skein256-96":45836,"Skein256-104":45837,"Skein256-112":45838,"Skein256-120":45839,"Skein256-128":45840,"Skein256-136":45841,"Skein256-144":45842,"Skein256-152":45843,"Skein256-160":45844,"Skein256-168":45845,"Skein256-176":45846,"Skein256-184":45847,"Skein256-192":45848,"Skein256-200":45849,"Skein256-208":45850,"Skein256-216":45851,"Skein256-224":45852,"Skein256-232":45853,"Skein256-240":45854,"Skein256-248":45855,"Skein256-256":45856,"Skein512-8":45857,"Skein512-16":45858,"Skein512-24":45859,"Skein512-32":45860,"Skein512-40":45861,"Skein512-48":45862,"Skein512-56":45863,"Skein512-64":45864,"Skein512-72":45865,"Skein512-80":45866,"Skein512-88":45867,"Skein512-96":45868,"Skein512-104":45869,"Skein512-112":45870,"Skein512-120":45871,"Skein512-128":45872,"Skein512-136":45873,"Skein512-144":45874,"Skein512-152":45875,"Skein512-160":45876,"Skein512-168":45877,"Skein512-176":45878,"Skein512-184":45879,"Skein512-192":45880,"Skein512-200":45881,"Skein512-208":45882,"Skein512-216":45883,"Skein512-224":45884,"Skein512-232":45885,"Skein512-240":45886,"Skein512-248":45887,"Skein512-256":45888,"Skein512-264":45889,"Skein512-272":45890,"Skein512-280":45891,"Skein512-288":45892,"Skein512-296":45893,"Skein512-304":45894,"Skein512-312":45895,"Skein512-320":45896,"Skein512-328":45897,"Skein512-336":45898,"Skein512-344":45899,"Skein512-352":45900,"Skein512-360":45901,"Skein512-368":45902,"Skein512-376":45903,"Skein512-384":45904,"Skein512-392":45905,"Skein512-400":45906,"Skein512-408":45907,"Skein512-416":45908,"Skein512-424":45909,"Skein512-432":45910,"Skein512-440":45911,"Skein512-448":45912,"Skein512-456":45913,"Skein512-464":45914,"Skein512-472":45915,"Skein512-480":45916,"Skein512-488":45917,"Skein512-496":45918,"Skein512-504":45919,"Skein512-512":45920,"Skein1024-8":45921,"Skein1024-16":45922,"Skein1024-24":45923,"Skein1024-32":45924,"Skein1024-40":45925,"Skein1024-48":45926,"Skein1024-56":45927,"Skein1024-64":45928,"Skein1024-72":45929,"Skein1024-80":45930,"Skein1024-88":45931,"Skein1024-96":45932,"Skein1024-104":45933,"Skein1024-112":45934,"Skein1024-120":45935,"Skein1024-128":45936,"Skein1024-136":45937,"Skein1024-144":45938,"Skein1024-152":45939,"Skein1024-160":45940,"Skein1024-168":45941,"Skein1024-176":45942,"Skein1024-184":45943,"Skein1024-192":45944,"Skein1024-200":45945,"Skein1024-208":45946,"Skein1024-216":45947,"Skein1024-224":45948,"Skein1024-232":45949,"Skein1024-240":45950,"Skein1024-248":45951,"Skein1024-256":45952,"Skein1024-264":45953,"Skein1024-272":45954,"Skein1024-280":45955,"Skein1024-288":45956,"Skein1024-296":45957,"Skein1024-304":45958,"Skein1024-312":45959,"Skein1024-320":45960,"Skein1024-328":45961,"Skein1024-336":45962,"Skein1024-344":45963,"Skein1024-352":45964,"Skein1024-360":45965,"Skein1024-368":45966,"Skein1024-376":45967,"Skein1024-384":45968,"Skein1024-392":45969,"Skein1024-400":45970,"Skein1024-408":45971,"Skein1024-416":45972,"Skein1024-424":45973,"Skein1024-432":45974,"Skein1024-440":45975,"Skein1024-448":45976,"Skein1024-456":45977,"Skein1024-464":45978,"Skein1024-472":45979,"Skein1024-480":45980,"Skein1024-488":45981,"Skein1024-496":45982,"Skein1024-504":45983,"Skein1024-512":45984,"Skein1024-520":45985,"Skein1024-528":45986,"Skein1024-536":45987,"Skein1024-544":45988,"Skein1024-552":45989,"Skein1024-560":45990,"Skein1024-568":45991,"Skein1024-576":45992,"Skein1024-584":45993,"Skein1024-592":45994,"Skein1024-600":45995,"Skein1024-608":45996,"Skein1024-616":45997,"Skein1024-624":45998,"Skein1024-632":45999,"Skein1024-640":46e3,"Skein1024-648":46001,"Skein1024-656":46002,"Skein1024-664":46003,"Skein1024-672":46004,"Skein1024-680":46005,"Skein1024-688":46006,"Skein1024-696":46007,"Skein1024-704":46008,"Skein1024-712":46009,"Skein1024-720":46010,"Skein1024-728":46011,"Skein1024-736":46012,"Skein1024-744":46013,"Skein1024-752":46014,"Skein1024-760":46015,"Skein1024-768":46016,"Skein1024-776":46017,"Skein1024-784":46018,"Skein1024-792":46019,"Skein1024-800":46020,"Skein1024-808":46021,"Skein1024-816":46022,"Skein1024-824":46023,"Skein1024-832":46024,"Skein1024-840":46025,"Skein1024-848":46026,"Skein1024-856":46027,"Skein1024-864":46028,"Skein1024-872":46029,"Skein1024-880":46030,"Skein1024-888":46031,"Skein1024-896":46032,"Skein1024-904":46033,"Skein1024-912":46034,"Skein1024-920":46035,"Skein1024-928":46036,"Skein1024-936":46037,"Skein1024-944":46038,"Skein1024-952":46039,"Skein1024-960":46040,"Skein1024-968":46041,"Skein1024-976":46042,"Skein1024-984":46043,"Skein1024-992":46044,"Skein1024-1000":46045,"Skein1024-1008":46046,"Skein1024-1016":46047,"Skein1024-1024":46048}),t.codes=Object.freeze({0:"identity",17:"sha1",18:"sha2-256",19:"sha2-512",86:"dbl-sha2-256",23:"sha3-224",22:"sha3-256",21:"sha3-384",20:"sha3-512",24:"shake-128",25:"shake-256",26:"keccak-224",27:"keccak-256",28:"keccak-384",29:"keccak-512",34:"murmur3-128",35:"murmur3-32",45569:"blake2b-8",45570:"blake2b-16",45571:"blake2b-24",45572:"blake2b-32",45573:"blake2b-40",45574:"blake2b-48",45575:"blake2b-56",45576:"blake2b-64",45577:"blake2b-72",45578:"blake2b-80",45579:"blake2b-88",45580:"blake2b-96",45581:"blake2b-104",45582:"blake2b-112",45583:"blake2b-120",45584:"blake2b-128",45585:"blake2b-136",45586:"blake2b-144",45587:"blake2b-152",45588:"blake2b-160",45589:"blake2b-168",45590:"blake2b-176",45591:"blake2b-184",45592:"blake2b-192",45593:"blake2b-200",45594:"blake2b-208",45595:"blake2b-216",45596:"blake2b-224",45597:"blake2b-232",45598:"blake2b-240",45599:"blake2b-248",45600:"blake2b-256",45601:"blake2b-264",45602:"blake2b-272",45603:"blake2b-280",45604:"blake2b-288",45605:"blake2b-296",45606:"blake2b-304",45607:"blake2b-312",45608:"blake2b-320",45609:"blake2b-328",45610:"blake2b-336",45611:"blake2b-344",45612:"blake2b-352",45613:"blake2b-360",45614:"blake2b-368",45615:"blake2b-376",45616:"blake2b-384",45617:"blake2b-392",45618:"blake2b-400",45619:"blake2b-408",45620:"blake2b-416",45621:"blake2b-424",45622:"blake2b-432",45623:"blake2b-440",45624:"blake2b-448",45625:"blake2b-456",45626:"blake2b-464",45627:"blake2b-472",45628:"blake2b-480",45629:"blake2b-488",45630:"blake2b-496",45631:"blake2b-504",45632:"blake2b-512",45633:"blake2s-8",45634:"blake2s-16",45635:"blake2s-24",45636:"blake2s-32",45637:"blake2s-40",45638:"blake2s-48",45639:"blake2s-56",45640:"blake2s-64",45641:"blake2s-72",45642:"blake2s-80",45643:"blake2s-88",45644:"blake2s-96",45645:"blake2s-104",45646:"blake2s-112",45647:"blake2s-120",45648:"blake2s-128",45649:"blake2s-136",45650:"blake2s-144",45651:"blake2s-152",45652:"blake2s-160",45653:"blake2s-168",45654:"blake2s-176",45655:"blake2s-184",45656:"blake2s-192",45657:"blake2s-200",45658:"blake2s-208",45659:"blake2s-216",45660:"blake2s-224",45661:"blake2s-232",45662:"blake2s-240",45663:"blake2s-248",45664:"blake2s-256",45825:"Skein256-8",45826:"Skein256-16",45827:"Skein256-24",45828:"Skein256-32",45829:"Skein256-40",45830:"Skein256-48",45831:"Skein256-56",45832:"Skein256-64",45833:"Skein256-72",45834:"Skein256-80",45835:"Skein256-88",45836:"Skein256-96",45837:"Skein256-104",45838:"Skein256-112",45839:"Skein256-120",45840:"Skein256-128",45841:"Skein256-136",45842:"Skein256-144",45843:"Skein256-152",45844:"Skein256-160",45845:"Skein256-168",45846:"Skein256-176",45847:"Skein256-184",45848:"Skein256-192",45849:"Skein256-200",45850:"Skein256-208",45851:"Skein256-216",45852:"Skein256-224",45853:"Skein256-232",45854:"Skein256-240",45855:"Skein256-248",45856:"Skein256-256",45857:"Skein512-8",45858:"Skein512-16",45859:"Skein512-24",45860:"Skein512-32",45861:"Skein512-40",45862:"Skein512-48",45863:"Skein512-56",45864:"Skein512-64",45865:"Skein512-72",45866:"Skein512-80",45867:"Skein512-88",45868:"Skein512-96",45869:"Skein512-104",45870:"Skein512-112",45871:"Skein512-120",45872:"Skein512-128",45873:"Skein512-136",45874:"Skein512-144",45875:"Skein512-152",45876:"Skein512-160",45877:"Skein512-168",45878:"Skein512-176",45879:"Skein512-184",45880:"Skein512-192",45881:"Skein512-200",45882:"Skein512-208",45883:"Skein512-216",45884:"Skein512-224",45885:"Skein512-232",45886:"Skein512-240",45887:"Skein512-248",45888:"Skein512-256",45889:"Skein512-264",45890:"Skein512-272",45891:"Skein512-280",45892:"Skein512-288",45893:"Skein512-296",45894:"Skein512-304",45895:"Skein512-312",45896:"Skein512-320",45897:"Skein512-328",45898:"Skein512-336",45899:"Skein512-344",45900:"Skein512-352",45901:"Skein512-360",45902:"Skein512-368",45903:"Skein512-376",45904:"Skein512-384",45905:"Skein512-392",45906:"Skein512-400",45907:"Skein512-408",45908:"Skein512-416",45909:"Skein512-424",45910:"Skein512-432",45911:"Skein512-440",45912:"Skein512-448",45913:"Skein512-456",45914:"Skein512-464",45915:"Skein512-472",45916:"Skein512-480",45917:"Skein512-488",45918:"Skein512-496",45919:"Skein512-504",45920:"Skein512-512",45921:"Skein1024-8",45922:"Skein1024-16",45923:"Skein1024-24",45924:"Skein1024-32",45925:"Skein1024-40",45926:"Skein1024-48",45927:"Skein1024-56",45928:"Skein1024-64",45929:"Skein1024-72",45930:"Skein1024-80",45931:"Skein1024-88",45932:"Skein1024-96",45933:"Skein1024-104",45934:"Skein1024-112",45935:"Skein1024-120",45936:"Skein1024-128",45937:"Skein1024-136",45938:"Skein1024-144",45939:"Skein1024-152",45940:"Skein1024-160",45941:"Skein1024-168",45942:"Skein1024-176",45943:"Skein1024-184",45944:"Skein1024-192",45945:"Skein1024-200",45946:"Skein1024-208",45947:"Skein1024-216",45948:"Skein1024-224",45949:"Skein1024-232",45950:"Skein1024-240",45951:"Skein1024-248",45952:"Skein1024-256",45953:"Skein1024-264",45954:"Skein1024-272",45955:"Skein1024-280",45956:"Skein1024-288",45957:"Skein1024-296",45958:"Skein1024-304",45959:"Skein1024-312",45960:"Skein1024-320",45961:"Skein1024-328",45962:"Skein1024-336",45963:"Skein1024-344",45964:"Skein1024-352",45965:"Skein1024-360",45966:"Skein1024-368",45967:"Skein1024-376",45968:"Skein1024-384",45969:"Skein1024-392",45970:"Skein1024-400",45971:"Skein1024-408",45972:"Skein1024-416",45973:"Skein1024-424",45974:"Skein1024-432",45975:"Skein1024-440",45976:"Skein1024-448",45977:"Skein1024-456",45978:"Skein1024-464",45979:"Skein1024-472",45980:"Skein1024-480",45981:"Skein1024-488",45982:"Skein1024-496",45983:"Skein1024-504",45984:"Skein1024-512",45985:"Skein1024-520",45986:"Skein1024-528",45987:"Skein1024-536",45988:"Skein1024-544",45989:"Skein1024-552",45990:"Skein1024-560",45991:"Skein1024-568",45992:"Skein1024-576",45993:"Skein1024-584",45994:"Skein1024-592",45995:"Skein1024-600",45996:"Skein1024-608",45997:"Skein1024-616",45998:"Skein1024-624",45999:"Skein1024-632",46e3:"Skein1024-640",46001:"Skein1024-648",46002:"Skein1024-656",46003:"Skein1024-664",46004:"Skein1024-672",46005:"Skein1024-680",46006:"Skein1024-688",46007:"Skein1024-696",46008:"Skein1024-704",46009:"Skein1024-712",46010:"Skein1024-720",46011:"Skein1024-728",46012:"Skein1024-736",46013:"Skein1024-744",46014:"Skein1024-752",46015:"Skein1024-760",46016:"Skein1024-768",46017:"Skein1024-776",46018:"Skein1024-784",46019:"Skein1024-792",46020:"Skein1024-800",46021:"Skein1024-808",46022:"Skein1024-816",46023:"Skein1024-824",46024:"Skein1024-832",46025:"Skein1024-840",46026:"Skein1024-848",46027:"Skein1024-856",46028:"Skein1024-864",46029:"Skein1024-872",46030:"Skein1024-880",46031:"Skein1024-888",46032:"Skein1024-896",46033:"Skein1024-904",46034:"Skein1024-912",46035:"Skein1024-920",46036:"Skein1024-928",46037:"Skein1024-936",46038:"Skein1024-944",46039:"Skein1024-952",46040:"Skein1024-960",46041:"Skein1024-968",46042:"Skein1024-976",46043:"Skein1024-984",46044:"Skein1024-992",46045:"Skein1024-1000",46046:"Skein1024-1008",46047:"Skein1024-1016",46048:"Skein1024-1024"}),t.defaultLengths=Object.freeze({17:20,18:32,19:64,86:32,23:28,22:32,21:48,20:64,24:32,25:64,26:28,27:32,28:48,29:64,34:32,45569:1,45570:2,45571:3,45572:4,45573:5,45574:6,45575:7,45576:8,45577:9,45578:10,45579:11,45580:12,45581:13,45582:14,45583:15,45584:16,45585:17,45586:18,45587:19,45588:20,45589:21,45590:22,45591:23,45592:24,45593:25,45594:26,45595:27,45596:28,45597:29,45598:30,45599:31,45600:32,45601:33,45602:34,45603:35,45604:36,45605:37,45606:38,45607:39,45608:40,45609:41,45610:42,45611:43,45612:44,45613:45,45614:46,45615:47,45616:48,45617:49,45618:50,45619:51,45620:52,45621:53,45622:54,45623:55,45624:56,45625:57,45626:58,45627:59,45628:60,45629:61,45630:62,45631:63,45632:64,45633:1,45634:2,45635:3,45636:4,45637:5,45638:6,45639:7,45640:8,45641:9,45642:10,45643:11,45644:12,45645:13,45646:14,45647:15,45648:16,45649:17,45650:18,45651:19,45652:20,45653:21,45654:22,45655:23,45656:24,45657:25,45658:26,45659:27,45660:28,45661:29,45662:30,45663:31,45664:32,45825:1,45826:2,45827:3,45828:4,45829:5,45830:6,45831:7,45832:8,45833:9,45834:10,45835:11,45836:12,45837:13,45838:14,45839:15,45840:16,45841:17,45842:18,45843:19,45844:20,45845:21,45846:22,45847:23,45848:24,45849:25,45850:26,45851:27,45852:28,45853:29,45854:30,45855:31,45856:32,45857:1,45858:2,45859:3,45860:4,45861:5,45862:6,45863:7,45864:8,45865:9,45866:10,45867:11,45868:12,45869:13,45870:14,45871:15,45872:16,45873:17,45874:18,45875:19,45876:20,45877:21,45878:22,45879:23,45880:24,45881:25,45882:26,45883:27,45884:28,45885:29,45886:30,45887:31,45888:32,45889:33,45890:34,45891:35,45892:36,45893:37,45894:38,45895:39,45896:40,45897:41,45898:42,45899:43,45900:44,45901:45,45902:46,45903:47,45904:48,45905:49,45906:50,45907:51,45908:52,45909:53,45910:54,45911:55,45912:56,45913:57,45914:58,45915:59,45916:60,45917:61,45918:62,45919:63,45920:64,45921:1,45922:2,45923:3,45924:4,45925:5,45926:6,45927:7,45928:8,45929:9,45930:10,45931:11,45932:12,45933:13,45934:14,45935:15,45936:16,45937:17,45938:18,45939:19,45940:20,45941:21,45942:22,45943:23,45944:24,45945:25,45946:26,45947:27,45948:28,45949:29,45950:30,45951:31,45952:32,45953:33,45954:34,45955:35,45956:36,45957:37,45958:38,45959:39,45960:40,45961:41,45962:42,45963:43,45964:44,45965:45,45966:46,45967:47,45968:48,45969:49,45970:50,45971:51,45972:52,45973:53,45974:54,45975:55,45976:56,45977:57,45978:58,45979:59,45980:60,45981:61,45982:62,45983:63,45984:64,45985:65,45986:66,45987:67,45988:68,45989:69,45990:70,45991:71,45992:72,45993:73,45994:74,45995:75,45996:76,45997:77,45998:78,45999:79,46e3:80,46001:81,46002:82,46003:83,46004:84,46005:85,46006:86,46007:87,46008:88,46009:89,46010:90,46011:91,46012:92,46013:93,46014:94,46015:95,46016:96,46017:97,46018:98,46019:99,46020:100,46021:101,46022:102,46023:103,46024:104,46025:105,46026:106,46027:107,46028:108,46029:109,46030:110,46031:111,46032:112,46033:113,46034:114,46035:115,46036:116,46037:117,46038:118,46039:119,46040:120,46041:121,46042:122,46043:123,46044:124,46045:125,46046:126,46047:127,46048:128})},4784:function(e,t,r){"use strict";const n=r("218a");e.exports=function(e){return function(t,r){return n.source(e._lsAsyncIterator(t,r))}}},"479a":function(e,t,r){"use strict";t.names=Object.freeze({identity:0,sha1:17,"sha2-256":18,"sha2-512":19,"dbl-sha2-256":86,"sha3-224":23,"sha3-256":22,"sha3-384":21,"sha3-512":20,"shake-128":24,"shake-256":25,"keccak-224":26,"keccak-256":27,"keccak-384":28,"keccak-512":29,"murmur3-128":34,"murmur3-32":35,"blake2b-8":45569,"blake2b-16":45570,"blake2b-24":45571,"blake2b-32":45572,"blake2b-40":45573,"blake2b-48":45574,"blake2b-56":45575,"blake2b-64":45576,"blake2b-72":45577,"blake2b-80":45578,"blake2b-88":45579,"blake2b-96":45580,"blake2b-104":45581,"blake2b-112":45582,"blake2b-120":45583,"blake2b-128":45584,"blake2b-136":45585,"blake2b-144":45586,"blake2b-152":45587,"blake2b-160":45588,"blake2b-168":45589,"blake2b-176":45590,"blake2b-184":45591,"blake2b-192":45592,"blake2b-200":45593,"blake2b-208":45594,"blake2b-216":45595,"blake2b-224":45596,"blake2b-232":45597,"blake2b-240":45598,"blake2b-248":45599,"blake2b-256":45600,"blake2b-264":45601,"blake2b-272":45602,"blake2b-280":45603,"blake2b-288":45604,"blake2b-296":45605,"blake2b-304":45606,"blake2b-312":45607,"blake2b-320":45608,"blake2b-328":45609,"blake2b-336":45610,"blake2b-344":45611,"blake2b-352":45612,"blake2b-360":45613,"blake2b-368":45614,"blake2b-376":45615,"blake2b-384":45616,"blake2b-392":45617,"blake2b-400":45618,"blake2b-408":45619,"blake2b-416":45620,"blake2b-424":45621,"blake2b-432":45622,"blake2b-440":45623,"blake2b-448":45624,"blake2b-456":45625,"blake2b-464":45626,"blake2b-472":45627,"blake2b-480":45628,"blake2b-488":45629,"blake2b-496":45630,"blake2b-504":45631,"blake2b-512":45632,"blake2s-8":45633,"blake2s-16":45634,"blake2s-24":45635,"blake2s-32":45636,"blake2s-40":45637,"blake2s-48":45638,"blake2s-56":45639,"blake2s-64":45640,"blake2s-72":45641,"blake2s-80":45642,"blake2s-88":45643,"blake2s-96":45644,"blake2s-104":45645,"blake2s-112":45646,"blake2s-120":45647,"blake2s-128":45648,"blake2s-136":45649,"blake2s-144":45650,"blake2s-152":45651,"blake2s-160":45652,"blake2s-168":45653,"blake2s-176":45654,"blake2s-184":45655,"blake2s-192":45656,"blake2s-200":45657,"blake2s-208":45658,"blake2s-216":45659,"blake2s-224":45660,"blake2s-232":45661,"blake2s-240":45662,"blake2s-248":45663,"blake2s-256":45664,"Skein256-8":45825,"Skein256-16":45826,"Skein256-24":45827,"Skein256-32":45828,"Skein256-40":45829,"Skein256-48":45830,"Skein256-56":45831,"Skein256-64":45832,"Skein256-72":45833,"Skein256-80":45834,"Skein256-88":45835,"Skein256-96":45836,"Skein256-104":45837,"Skein256-112":45838,"Skein256-120":45839,"Skein256-128":45840,"Skein256-136":45841,"Skein256-144":45842,"Skein256-152":45843,"Skein256-160":45844,"Skein256-168":45845,"Skein256-176":45846,"Skein256-184":45847,"Skein256-192":45848,"Skein256-200":45849,"Skein256-208":45850,"Skein256-216":45851,"Skein256-224":45852,"Skein256-232":45853,"Skein256-240":45854,"Skein256-248":45855,"Skein256-256":45856,"Skein512-8":45857,"Skein512-16":45858,"Skein512-24":45859,"Skein512-32":45860,"Skein512-40":45861,"Skein512-48":45862,"Skein512-56":45863,"Skein512-64":45864,"Skein512-72":45865,"Skein512-80":45866,"Skein512-88":45867,"Skein512-96":45868,"Skein512-104":45869,"Skein512-112":45870,"Skein512-120":45871,"Skein512-128":45872,"Skein512-136":45873,"Skein512-144":45874,"Skein512-152":45875,"Skein512-160":45876,"Skein512-168":45877,"Skein512-176":45878,"Skein512-184":45879,"Skein512-192":45880,"Skein512-200":45881,"Skein512-208":45882,"Skein512-216":45883,"Skein512-224":45884,"Skein512-232":45885,"Skein512-240":45886,"Skein512-248":45887,"Skein512-256":45888,"Skein512-264":45889,"Skein512-272":45890,"Skein512-280":45891,"Skein512-288":45892,"Skein512-296":45893,"Skein512-304":45894,"Skein512-312":45895,"Skein512-320":45896,"Skein512-328":45897,"Skein512-336":45898,"Skein512-344":45899,"Skein512-352":45900,"Skein512-360":45901,"Skein512-368":45902,"Skein512-376":45903,"Skein512-384":45904,"Skein512-392":45905,"Skein512-400":45906,"Skein512-408":45907,"Skein512-416":45908,"Skein512-424":45909,"Skein512-432":45910,"Skein512-440":45911,"Skein512-448":45912,"Skein512-456":45913,"Skein512-464":45914,"Skein512-472":45915,"Skein512-480":45916,"Skein512-488":45917,"Skein512-496":45918,"Skein512-504":45919,"Skein512-512":45920,"Skein1024-8":45921,"Skein1024-16":45922,"Skein1024-24":45923,"Skein1024-32":45924,"Skein1024-40":45925,"Skein1024-48":45926,"Skein1024-56":45927,"Skein1024-64":45928,"Skein1024-72":45929,"Skein1024-80":45930,"Skein1024-88":45931,"Skein1024-96":45932,"Skein1024-104":45933,"Skein1024-112":45934,"Skein1024-120":45935,"Skein1024-128":45936,"Skein1024-136":45937,"Skein1024-144":45938,"Skein1024-152":45939,"Skein1024-160":45940,"Skein1024-168":45941,"Skein1024-176":45942,"Skein1024-184":45943,"Skein1024-192":45944,"Skein1024-200":45945,"Skein1024-208":45946,"Skein1024-216":45947,"Skein1024-224":45948,"Skein1024-232":45949,"Skein1024-240":45950,"Skein1024-248":45951,"Skein1024-256":45952,"Skein1024-264":45953,"Skein1024-272":45954,"Skein1024-280":45955,"Skein1024-288":45956,"Skein1024-296":45957,"Skein1024-304":45958,"Skein1024-312":45959,"Skein1024-320":45960,"Skein1024-328":45961,"Skein1024-336":45962,"Skein1024-344":45963,"Skein1024-352":45964,"Skein1024-360":45965,"Skein1024-368":45966,"Skein1024-376":45967,"Skein1024-384":45968,"Skein1024-392":45969,"Skein1024-400":45970,"Skein1024-408":45971,"Skein1024-416":45972,"Skein1024-424":45973,"Skein1024-432":45974,"Skein1024-440":45975,"Skein1024-448":45976,"Skein1024-456":45977,"Skein1024-464":45978,"Skein1024-472":45979,"Skein1024-480":45980,"Skein1024-488":45981,"Skein1024-496":45982,"Skein1024-504":45983,"Skein1024-512":45984,"Skein1024-520":45985,"Skein1024-528":45986,"Skein1024-536":45987,"Skein1024-544":45988,"Skein1024-552":45989,"Skein1024-560":45990,"Skein1024-568":45991,"Skein1024-576":45992,"Skein1024-584":45993,"Skein1024-592":45994,"Skein1024-600":45995,"Skein1024-608":45996,"Skein1024-616":45997,"Skein1024-624":45998,"Skein1024-632":45999,"Skein1024-640":46e3,"Skein1024-648":46001,"Skein1024-656":46002,"Skein1024-664":46003,"Skein1024-672":46004,"Skein1024-680":46005,"Skein1024-688":46006,"Skein1024-696":46007,"Skein1024-704":46008,"Skein1024-712":46009,"Skein1024-720":46010,"Skein1024-728":46011,"Skein1024-736":46012,"Skein1024-744":46013,"Skein1024-752":46014,"Skein1024-760":46015,"Skein1024-768":46016,"Skein1024-776":46017,"Skein1024-784":46018,"Skein1024-792":46019,"Skein1024-800":46020,"Skein1024-808":46021,"Skein1024-816":46022,"Skein1024-824":46023,"Skein1024-832":46024,"Skein1024-840":46025,"Skein1024-848":46026,"Skein1024-856":46027,"Skein1024-864":46028,"Skein1024-872":46029,"Skein1024-880":46030,"Skein1024-888":46031,"Skein1024-896":46032,"Skein1024-904":46033,"Skein1024-912":46034,"Skein1024-920":46035,"Skein1024-928":46036,"Skein1024-936":46037,"Skein1024-944":46038,"Skein1024-952":46039,"Skein1024-960":46040,"Skein1024-968":46041,"Skein1024-976":46042,"Skein1024-984":46043,"Skein1024-992":46044,"Skein1024-1000":46045,"Skein1024-1008":46046,"Skein1024-1016":46047,"Skein1024-1024":46048}),t.codes=Object.freeze({0:"identity",17:"sha1",18:"sha2-256",19:"sha2-512",86:"dbl-sha2-256",23:"sha3-224",22:"sha3-256",21:"sha3-384",20:"sha3-512",24:"shake-128",25:"shake-256",26:"keccak-224",27:"keccak-256",28:"keccak-384",29:"keccak-512",34:"murmur3-128",35:"murmur3-32",45569:"blake2b-8",45570:"blake2b-16",45571:"blake2b-24",45572:"blake2b-32",45573:"blake2b-40",45574:"blake2b-48",45575:"blake2b-56",45576:"blake2b-64",45577:"blake2b-72",45578:"blake2b-80",45579:"blake2b-88",45580:"blake2b-96",45581:"blake2b-104",45582:"blake2b-112",45583:"blake2b-120",45584:"blake2b-128",45585:"blake2b-136",45586:"blake2b-144",45587:"blake2b-152",45588:"blake2b-160",45589:"blake2b-168",45590:"blake2b-176",45591:"blake2b-184",45592:"blake2b-192",45593:"blake2b-200",45594:"blake2b-208",45595:"blake2b-216",45596:"blake2b-224",45597:"blake2b-232",45598:"blake2b-240",45599:"blake2b-248",45600:"blake2b-256",45601:"blake2b-264",45602:"blake2b-272",45603:"blake2b-280",45604:"blake2b-288",45605:"blake2b-296",45606:"blake2b-304",45607:"blake2b-312",45608:"blake2b-320",45609:"blake2b-328",45610:"blake2b-336",45611:"blake2b-344",45612:"blake2b-352",45613:"blake2b-360",45614:"blake2b-368",45615:"blake2b-376",45616:"blake2b-384",45617:"blake2b-392",45618:"blake2b-400",45619:"blake2b-408",45620:"blake2b-416",45621:"blake2b-424",45622:"blake2b-432",45623:"blake2b-440",45624:"blake2b-448",45625:"blake2b-456",45626:"blake2b-464",45627:"blake2b-472",45628:"blake2b-480",45629:"blake2b-488",45630:"blake2b-496",45631:"blake2b-504",45632:"blake2b-512",45633:"blake2s-8",45634:"blake2s-16",45635:"blake2s-24",45636:"blake2s-32",45637:"blake2s-40",45638:"blake2s-48",45639:"blake2s-56",45640:"blake2s-64",45641:"blake2s-72",45642:"blake2s-80",45643:"blake2s-88",45644:"blake2s-96",45645:"blake2s-104",45646:"blake2s-112",45647:"blake2s-120",45648:"blake2s-128",45649:"blake2s-136",45650:"blake2s-144",45651:"blake2s-152",45652:"blake2s-160",45653:"blake2s-168",45654:"blake2s-176",45655:"blake2s-184",45656:"blake2s-192",45657:"blake2s-200",45658:"blake2s-208",45659:"blake2s-216",45660:"blake2s-224",45661:"blake2s-232",45662:"blake2s-240",45663:"blake2s-248",45664:"blake2s-256",45825:"Skein256-8",45826:"Skein256-16",45827:"Skein256-24",45828:"Skein256-32",45829:"Skein256-40",45830:"Skein256-48",45831:"Skein256-56",45832:"Skein256-64",45833:"Skein256-72",45834:"Skein256-80",45835:"Skein256-88",45836:"Skein256-96",45837:"Skein256-104",45838:"Skein256-112",45839:"Skein256-120",45840:"Skein256-128",45841:"Skein256-136",45842:"Skein256-144",45843:"Skein256-152",45844:"Skein256-160",45845:"Skein256-168",45846:"Skein256-176",45847:"Skein256-184",45848:"Skein256-192",45849:"Skein256-200",45850:"Skein256-208",45851:"Skein256-216",45852:"Skein256-224",45853:"Skein256-232",45854:"Skein256-240",45855:"Skein256-248",45856:"Skein256-256",45857:"Skein512-8",45858:"Skein512-16",45859:"Skein512-24",45860:"Skein512-32",45861:"Skein512-40",45862:"Skein512-48",45863:"Skein512-56",45864:"Skein512-64",45865:"Skein512-72",45866:"Skein512-80",45867:"Skein512-88",45868:"Skein512-96",45869:"Skein512-104",45870:"Skein512-112",45871:"Skein512-120",45872:"Skein512-128",45873:"Skein512-136",45874:"Skein512-144",45875:"Skein512-152",45876:"Skein512-160",45877:"Skein512-168",45878:"Skein512-176",45879:"Skein512-184",45880:"Skein512-192",45881:"Skein512-200",45882:"Skein512-208",45883:"Skein512-216",45884:"Skein512-224",45885:"Skein512-232",45886:"Skein512-240",45887:"Skein512-248",45888:"Skein512-256",45889:"Skein512-264",45890:"Skein512-272",45891:"Skein512-280",45892:"Skein512-288",45893:"Skein512-296",45894:"Skein512-304",45895:"Skein512-312",45896:"Skein512-320",45897:"Skein512-328",45898:"Skein512-336",45899:"Skein512-344",45900:"Skein512-352",45901:"Skein512-360",45902:"Skein512-368",45903:"Skein512-376",45904:"Skein512-384",45905:"Skein512-392",45906:"Skein512-400",45907:"Skein512-408",45908:"Skein512-416",45909:"Skein512-424",45910:"Skein512-432",45911:"Skein512-440",45912:"Skein512-448",45913:"Skein512-456",45914:"Skein512-464",45915:"Skein512-472",45916:"Skein512-480",45917:"Skein512-488",45918:"Skein512-496",45919:"Skein512-504",45920:"Skein512-512",45921:"Skein1024-8",45922:"Skein1024-16",45923:"Skein1024-24",45924:"Skein1024-32",45925:"Skein1024-40",45926:"Skein1024-48",45927:"Skein1024-56",45928:"Skein1024-64",45929:"Skein1024-72",45930:"Skein1024-80",45931:"Skein1024-88",45932:"Skein1024-96",45933:"Skein1024-104",45934:"Skein1024-112",45935:"Skein1024-120",45936:"Skein1024-128",45937:"Skein1024-136",45938:"Skein1024-144",45939:"Skein1024-152",45940:"Skein1024-160",45941:"Skein1024-168",45942:"Skein1024-176",45943:"Skein1024-184",45944:"Skein1024-192",45945:"Skein1024-200",45946:"Skein1024-208",45947:"Skein1024-216",45948:"Skein1024-224",45949:"Skein1024-232",45950:"Skein1024-240",45951:"Skein1024-248",45952:"Skein1024-256",45953:"Skein1024-264",45954:"Skein1024-272",45955:"Skein1024-280",45956:"Skein1024-288",45957:"Skein1024-296",45958:"Skein1024-304",45959:"Skein1024-312",45960:"Skein1024-320",45961:"Skein1024-328",45962:"Skein1024-336",45963:"Skein1024-344",45964:"Skein1024-352",45965:"Skein1024-360",45966:"Skein1024-368",45967:"Skein1024-376",45968:"Skein1024-384",45969:"Skein1024-392",45970:"Skein1024-400",45971:"Skein1024-408",45972:"Skein1024-416",45973:"Skein1024-424",45974:"Skein1024-432",45975:"Skein1024-440",45976:"Skein1024-448",45977:"Skein1024-456",45978:"Skein1024-464",45979:"Skein1024-472",45980:"Skein1024-480",45981:"Skein1024-488",45982:"Skein1024-496",45983:"Skein1024-504",45984:"Skein1024-512",45985:"Skein1024-520",45986:"Skein1024-528",45987:"Skein1024-536",45988:"Skein1024-544",45989:"Skein1024-552",45990:"Skein1024-560",45991:"Skein1024-568",45992:"Skein1024-576",45993:"Skein1024-584",45994:"Skein1024-592",45995:"Skein1024-600",45996:"Skein1024-608",45997:"Skein1024-616",45998:"Skein1024-624",45999:"Skein1024-632",46e3:"Skein1024-640",46001:"Skein1024-648",46002:"Skein1024-656",46003:"Skein1024-664",46004:"Skein1024-672",46005:"Skein1024-680",46006:"Skein1024-688",46007:"Skein1024-696",46008:"Skein1024-704",46009:"Skein1024-712",46010:"Skein1024-720",46011:"Skein1024-728",46012:"Skein1024-736",46013:"Skein1024-744",46014:"Skein1024-752",46015:"Skein1024-760",46016:"Skein1024-768",46017:"Skein1024-776",46018:"Skein1024-784",46019:"Skein1024-792",46020:"Skein1024-800",46021:"Skein1024-808",46022:"Skein1024-816",46023:"Skein1024-824",46024:"Skein1024-832",46025:"Skein1024-840",46026:"Skein1024-848",46027:"Skein1024-856",46028:"Skein1024-864",46029:"Skein1024-872",46030:"Skein1024-880",46031:"Skein1024-888",46032:"Skein1024-896",46033:"Skein1024-904",46034:"Skein1024-912",46035:"Skein1024-920",46036:"Skein1024-928",46037:"Skein1024-936",46038:"Skein1024-944",46039:"Skein1024-952",46040:"Skein1024-960",46041:"Skein1024-968",46042:"Skein1024-976",46043:"Skein1024-984",46044:"Skein1024-992",46045:"Skein1024-1000",46046:"Skein1024-1008",46047:"Skein1024-1016",46048:"Skein1024-1024"}),t.defaultLengths=Object.freeze({17:20,18:32,19:64,86:32,23:28,22:32,21:48,20:64,24:32,25:64,26:28,27:32,28:48,29:64,34:32,45569:1,45570:2,45571:3,45572:4,45573:5,45574:6,45575:7,45576:8,45577:9,45578:10,45579:11,45580:12,45581:13,45582:14,45583:15,45584:16,45585:17,45586:18,45587:19,45588:20,45589:21,45590:22,45591:23,45592:24,45593:25,45594:26,45595:27,45596:28,45597:29,45598:30,45599:31,45600:32,45601:33,45602:34,45603:35,45604:36,45605:37,45606:38,45607:39,45608:40,45609:41,45610:42,45611:43,45612:44,45613:45,45614:46,45615:47,45616:48,45617:49,45618:50,45619:51,45620:52,45621:53,45622:54,45623:55,45624:56,45625:57,45626:58,45627:59,45628:60,45629:61,45630:62,45631:63,45632:64,45633:1,45634:2,45635:3,45636:4,45637:5,45638:6,45639:7,45640:8,45641:9,45642:10,45643:11,45644:12,45645:13,45646:14,45647:15,45648:16,45649:17,45650:18,45651:19,45652:20,45653:21,45654:22,45655:23,45656:24,45657:25,45658:26,45659:27,45660:28,45661:29,45662:30,45663:31,45664:32,45825:1,45826:2,45827:3,45828:4,45829:5,45830:6,45831:7,45832:8,45833:9,45834:10,45835:11,45836:12,45837:13,45838:14,45839:15,45840:16,45841:17,45842:18,45843:19,45844:20,45845:21,45846:22,45847:23,45848:24,45849:25,45850:26,45851:27,45852:28,45853:29,45854:30,45855:31,45856:32,45857:1,45858:2,45859:3,45860:4,45861:5,45862:6,45863:7,45864:8,45865:9,45866:10,45867:11,45868:12,45869:13,45870:14,45871:15,45872:16,45873:17,45874:18,45875:19,45876:20,45877:21,45878:22,45879:23,45880:24,45881:25,45882:26,45883:27,45884:28,45885:29,45886:30,45887:31,45888:32,45889:33,45890:34,45891:35,45892:36,45893:37,45894:38,45895:39,45896:40,45897:41,45898:42,45899:43,45900:44,45901:45,45902:46,45903:47,45904:48,45905:49,45906:50,45907:51,45908:52,45909:53,45910:54,45911:55,45912:56,45913:57,45914:58,45915:59,45916:60,45917:61,45918:62,45919:63,45920:64,45921:1,45922:2,45923:3,45924:4,45925:5,45926:6,45927:7,45928:8,45929:9,45930:10,45931:11,45932:12,45933:13,45934:14,45935:15,45936:16,45937:17,45938:18,45939:19,45940:20,45941:21,45942:22,45943:23,45944:24,45945:25,45946:26,45947:27,45948:28,45949:29,45950:30,45951:31,45952:32,45953:33,45954:34,45955:35,45956:36,45957:37,45958:38,45959:39,45960:40,45961:41,45962:42,45963:43,45964:44,45965:45,45966:46,45967:47,45968:48,45969:49,45970:50,45971:51,45972:52,45973:53,45974:54,45975:55,45976:56,45977:57,45978:58,45979:59,45980:60,45981:61,45982:62,45983:63,45984:64,45985:65,45986:66,45987:67,45988:68,45989:69,45990:70,45991:71,45992:72,45993:73,45994:74,45995:75,45996:76,45997:77,45998:78,45999:79,46e3:80,46001:81,46002:82,46003:83,46004:84,46005:85,46006:86,46007:87,46008:88,46009:89,46010:90,46011:91,46012:92,46013:93,46014:94,46015:95,46016:96,46017:97,46018:98,46019:99,46020:100,46021:101,46022:102,46023:103,46024:104,46025:105,46026:106,46027:107,46028:108,46029:109,46030:110,46031:111,46032:112,46033:113,46034:114,46035:115,46036:116,46037:117,46038:118,46039:119,46040:120,46041:121,46042:122,46043:123,46044:124,46045:125,46046:126,46047:127,46048:128})},"47ca":function(e,t,r){"use strict";const n=r("df7c"),i=r("3c43"),s=r("021d");t.filter=(e,t)=>async function*(){for await(const r of e){const e=await t(r);e&&(yield r)}}(),t.sortAll=(e,t)=>async function*(){let r=[];for await(const t of e)r.push(t);r=await t(r);for(const e of r)yield e}(),t.take=(e,t)=>async function*(){if(t<=0)return;let r=0;for await(const n of e)if(yield n,r++,r>=t)return}(),t.map=(e,t)=>async function*(){for await(const r of e)yield t(r)}(),t.replaceStartWith=function(e,t){const r=new RegExp("^"+t);return e.replace(r,"")},t.tmpdir=()=>n.join(i.tmpdir(),s())},4834:function(e,t,r){"use strict";e.exports=class{constructor(e,t){this.options=t||{},Object.assign(this,e)}}},4843:function(e,t,r){"use strict";(function(t){var n=r("ba68").Duplex,i=r("3022");function s(e){if(!(this instanceof s))return new s(e);if(this._bufs=[],this.length=0,"function"==typeof e){this._callback=e;var t=function(e){this._callback&&(this._callback(e),this._callback=null)}.bind(this);this.on("pipe",(function(e){e.on("error",t)})),this.on("unpipe",(function(e){e.removeListener("error",t)}))}else this.append(e);n.call(this)}i.inherits(s,n),s.prototype._offset=function(e){var t,r=0,n=0;if(0===e)return[0,0];for(;nthis.length||e<0)){var t=this._offset(e);return this._bufs[t[0]][t[1]]}},s.prototype.slice=function(e,t){return"number"==typeof e&&e<0&&(e+=this.length),"number"==typeof t&&t<0&&(t+=this.length),this.copy(null,0,e,t)},s.prototype.copy=function(e,r,n,i){if(("number"!=typeof n||n<0)&&(n=0),("number"!=typeof i||i>this.length)&&(i=this.length),n>=this.length)return e||t.alloc(0);if(i<=0)return e||t.alloc(0);var s,o,a=!!e,c=this._offset(n),u=i-n,l=u,h=a&&r||0,f=c[1];if(0===n&&i==this.length){if(!a)return 1===this._bufs.length?this._bufs[0]:t.concat(this._bufs,this.length);for(o=0;os)){this._bufs[o].copy(e,h,f,f+l);break}this._bufs[o].copy(e,h,f),h+=s,l-=s,f&&(f=0)}return e},s.prototype.shallowSlice=function(e,t){if(e=e||0,t="number"!==typeof t?this.length:t,e<0&&(e+=this.length),t<0&&(t+=this.length),e===t)return new s;var r=this._offset(e),n=this._offset(t),i=this._bufs.slice(r[0],n[0]+1);return 0==n[1]?i.pop():i[i.length-1]=i[i.length-1].slice(0,n[1]),0!=r[1]&&(i[0]=i[0].slice(r[1])),new s(i)},s.prototype.toString=function(e,t,r){return this.slice(t,r).toString(e)},s.prototype.consume=function(e){while(this._bufs.length){if(!(e>=this._bufs[0].length)){this._bufs[0]=this._bufs[0].slice(e),this.length-=e;break}e-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift()}return this},s.prototype.duplicate=function(){for(var e=0,t=new s;ethis.length?this.length:r;var i=this._offset(r),o=i[0],a=i[1];for(o;o=e.length){var l=c.indexOf(e,a);if(-1!==l)return this._reverseOffset([o,l]);a=c.length-e.length+1}else{var h=this._reverseOffset([o,a]);if(this._match(h,e))return h;a++}}a=0}return-1},s.prototype._match=function(e,t){if(this.length-e(new Date).getTime().toString(),m=e=>e.hash,b=(e,t)=>e.concat(t),v=e=>e.next,w=(e,t)=>Math.max(e,t.clock.time),_=(e,t)=>(e[t.hash]=t,e);class E extends i{constructor(e,t,{logId:r,access:n,entries:i,heads:s,clock:o,sortFn:u,concurrency:p}={}){if(!d(e))throw a.IPFSNotDefinedError();if(!d(t))throw new Error("Identity is required");if(d(n)||(n=new f),d(i)&&!Array.isArray(i))throw new Error("'entries' argument must be an array of Entry instances");if(d(s)&&!Array.isArray(s))throw new Error("'heads' argument must be an array");d(u)||(u=l),super(),this._sortFn=h(u),this._storage=e,this._id=r||g(),this._access=n,this._identity=t;const m=(i||[]).reduce(_,{});this._entryIndex=new y(m),i=Object.values(m)||[],s=s||E.findHeads(i),this._headsIndex=s.reduce(_,{}),this._nextsIndex={};const b=e=>e.next.forEach(t=>this._nextsIndex[t]=e.hash);i.forEach(b),this._length=i.length;const v=Math.max(o?o.time:0,this.heads.reduce(w,0));this._clock=new c(this._identity.publicKey,v),this.joinConcurrency=p||16}get id(){return this._id}get clock(){return this._clock}get length(){return this._length}get values(){return Object.values(this.traverse(this.heads)).reverse()}get heads(){return Object.values(this._headsIndex).sort(this._sortFn).reverse()}get tails(){return E.findTails(this.values)}get tailHashes(){return E.findTailHashes(this.values)}setIdentity(e){this._identity=e;const t=Math.max(this.clock.time,this.heads.reduce(w,0));this._clock=new c(this._identity.publicKey,t)}get(e){return this._entryIndex.get(e)}has(e){return void 0!==this._entryIndex.get(e.hash||e)}traverse(e,t=-1,r){let n=e.sort(this._sortFn).reverse(),i={},s={},o=0;const a=e=>this.get(e),c=e=>{e&&!i[e.hash]&&(n=[e,...n].sort(this._sortFn).reverse(),i[e.hash]=!0)},u=e=>{s[e.hash]=e,i[e.hash]=!0,o++};while(n.length>0&&(o{let t=new Set;for(let r=1;r<=e;r*=2){const e=Math.min(r-1,i.length-1);t.add(i[e])}return t},a=o(Math.min(t,i.length));i.length!u.includes(e),h=Array.from(a).map(m).filter(l),f=await s.create(this._storage,this._identity,this.id,e,u,this.clock,h,r),d=await this._access.canAppend(f,this._identity.provider);if(!d)throw new Error(`Could not append entry, key "${this._identity.id}" is not allowed to write to the log`);return this._entryIndex.set(f.hash,f),u.forEach(e=>this._nextsIndex[e]=f.hash),this._headsIndex={},this._headsIndex[f.hash]=f,this._length++,f}iterator({gt:e,gte:t,lt:r,lte:n,amount:i=-1}={}){if(0===i)return function*(){}();if("string"===typeof n&&(n=[this.get(n)]),"string"===typeof r&&(r=[this.get(this.get(r).next)]),n&&!Array.isArray(n))throw a.LtOrLteMustBeStringOrArray();if(r&&!Array.isArray(r))throw a.LtOrLteMustBeStringOrArray();let s=(n||r||this.heads).filter(d),o=t?this.get(t).hash:e?this.get(e).hash:null,c=o?-1:i||-1,u=this.traverse(s,c,o),l=Object.values(u);return e&&l.pop(),(e||t)&&i>-1&&(l=l.slice(l.length-i,l.length)),function*(){for(let e in l)yield l[e]}()}async join(e,t=-1){if(!d(e))throw a.LogNotDefinedError();if(!E.isLog(e))throw a.NotALogError();if(this.id!==e.id)return;const r=E.difference(e,this),i=this._identity.provider,o=async e=>{const t=await this._access.canAppend(e,i);if(!t)throw new Error(`Could not append entry, key "${e.identity.id}" is not allowed to write to the log`)},u=async e=>{const t=await s.verify(i,e),r=e.identity?e.identity.publicKey:e.key;if(!t)throw new Error(`Could not validate signature "${e.sig}" for entry "${e.hash}" and key "${r}"`)},l=Object.values(r);await n(l,async e=>{await o(e),await u(e)},{concurrency:this.joinConcurrency});const h=e=>{const t=this.get(e.hash);t||this._length++,e.next.forEach(t=>this._nextsIndex[t]=e.hash)};Object.values(r).forEach(h),this._entryIndex.add(r);const f=e=>!g.find(t=>t===e.hash),p=e=>!this._nextsIndex[e.hash],g=Object.values(r).map(v).reduce(b,[]),m=E.findHeads(Object.values(Object.assign({},this._headsIndex,e._headsIndex))).filter(f).filter(p).reduce(_,{});if(this._headsIndex=m,t>-1){let e=this.values;e=e.slice(-t),this._entryIndex=null,this._entryIndex=new y(e.reduce(_,{})),this._headsIndex=E.findHeads(e).reduce(_,{}),this._length=this._entryIndex.length}const S=Object.values(this._headsIndex).reduce(w,0);return this._clock=new c(this.clock.id,Math.max(this.clock.time,S)),this}toJSON(){return{id:this.id,heads:this.heads.sort(this._sortFn).reverse().map(m)}}toSnapshot(){return{id:this.id,heads:this.heads,values:this.values}}toBuffer(){return t.from(JSON.stringify(this.toJSON()))}toString(e){return this.values.slice().reverse().map((t,r)=>{const n=s.findChildren(t,this.values),i=n.length;let o=new Array(Math.max(i-1,0));return o=i>1?o.fill(" "):o,o=i>0?o.concat(["└─"]):o,o.join("")+(e?e(t.payload):t.payload)}).join("\n")}static isLog(e){return void 0!==e.id&&void 0!==e.heads&&void 0!==e._entryIndex}toMultihash({format:e}={}){return o.toMultihash(this._storage,this,{format:e})}static async fromMultihash(e,t,r,{access:n,length:i=-1,exclude:s=[],timeout:a,concurrency:c,sortFn:u,onProgressCallback:l}={}){const{logId:h,entries:f,heads:d}=await o.fromMultihash(e,r,{length:i,exclude:s,timeout:a,onProgressCallback:l,concurrency:c,sortFn:u});return new E(e,t,{logId:h,access:n,entries:f,heads:d,sortFn:u})}static async fromEntryHash(e,t,r,{logId:n,access:i,length:s=-1,exclude:a=[],timeout:c,concurrency:u,sortFn:l,onProgressCallback:h}={}){const{entries:f}=await o.fromEntryHash(e,r,{length:s,exclude:a,timeout:c,concurrency:u,onProgressCallback:h});return new E(e,t,{logId:n,access:i,entries:f,sortFn:l})}static async fromJSON(e,t,r,{access:n,length:i=-1,timeout:s,sortFn:a,onProgressCallback:c}={}){const{logId:u,entries:l}=await o.fromJSON(e,r,{length:i,timeout:s,onProgressCallback:c});return new E(e,t,{logId:u,access:n,entries:l,sortFn:a})}static async fromEntry(e,t,r,{access:n,length:i=-1,exclude:s=[],timeout:a,concurrency:c,sortFn:u,onProgressCallback:l}={}){const{logId:h,entries:f}=await o.fromEntry(e,r,{length:i,exclude:s,timeout:a,concurrency:c,onProgressCallback:l});return new E(e,t,{logId:h,access:n,entries:f,sortFn:u})}static findHeads(e){var t=(e,t,r,n)=>{var i=r=>e[r]=t.hash;return t.next.forEach(i),e},r=e.reduce(t,{}),n=e=>void 0===r[e.hash],i=(e,t)=>e.clock.id>t.clock.id;return e.filter(n).sort(i)}static findTails(e){var t={},r=[],n={},i=[],o=e=>{0===e.next.length&&r.push(e);var s=r=>{t[r]||(t[r]=[]),t[r].push(e)};e.next.forEach(s),i=i.concat(e.next),n[e.hash]=!0};e.forEach(o);var a=(e,t,r,n)=>e.concat(p(t,"hash")),c=e=>void 0===n[e],u=e=>t[e];const l=i.filter(c).map(u).reduce(a,[]).concat(r);return p(l,"hash").sort(s.compare)}static findTailHashes(e){var t={},r=e=>t[e.hash]=!0,n=(e,r,n,i)=>{var s=r=>{void 0===t[r]&&e.splice(0,0,r)};return r.next.reverse().forEach(s),e};return e.forEach(r),e.reduce(n,[])}static difference(e,t){let r=Object.keys(e._headsIndex),n={},i={};const s=e=>{n[e]||t.get(e)||(r.push(e),n[e]=!0)};while(r.length>0){const o=r.shift(),a=e.get(o);a&&!t.get(o)&&a.id===t.id&&(i[a.hash]=a,n[a.hash]=!0,a.next.forEach(s))}return i}}e.exports=E,e.exports.Sorting=u,e.exports.Entry=s,e.exports.AccessController=f}).call(this,r("b639").Buffer)},4864:function(e,t,r){"use strict";const n=r("c3bb"),i=r("b639").Buffer,s=r("0c77"),o=r("f1cb");function a(e){this.enc="der",this.name=e.name,this.entity=e,this.tree=new c,this.tree._init(e.body)}function c(e){s.call(this,"der",e)}function u(e){return e<10?"0"+e:e}function l(e,t,r,n){let i;if("seqof"===e?e="seq":"setof"===e&&(e="set"),o.tagByName.hasOwnProperty(e))i=o.tagByName[e];else{if("number"!==typeof e||(0|e)!==e)return n.error("Unknown tag: "+e);i=e}return i>=31?n.error("Multi-octet tag encoding unsupported"):(t||(i|=32),i|=o.tagClassByName[r||"universal"]<<6,i)}e.exports=a,a.prototype.encode=function(e,t){return this.tree._encode(e,t).join()},n(c,s),c.prototype._encodeComposite=function(e,t,r,n){const s=l(e,t,r,this.reporter);if(n.length<128){const e=new i(2);return e[0]=s,e[1]=n.length,this._createEncoderBuffer([e,n])}let o=1;for(let i=n.length;i>=256;i>>=8)o++;const a=new i(2+o);a[0]=s,a[1]=128|o;for(let i=1+o,c=n.length;c>0;i--,c>>=8)a[i]=255&c;return this._createEncoderBuffer([a,n])},c.prototype._encodeStr=function(e,t){if("bitstr"===t)return this._createEncoderBuffer([0|e.unused,e.data]);if("bmpstr"===t){const t=new i(2*e.length);for(let r=0;r=40)return this.reporter.error("Second objid identifier OOB");e.splice(0,2,40*e[0]+e[1])}let n=0;for(let i=0;i=128;t>>=7)n++}const s=new i(n);let o=s.length-1;for(let i=e.length-1;i>=0;i--){let t=e[i];s[o--]=127&t;while((t>>=7)>0)s[o--]=128|127&t}return this._createEncoderBuffer(s)},c.prototype._encodeTime=function(e,t){let r;const n=new Date(e);return"gentime"===t?r=[u(n.getUTCFullYear()),u(n.getUTCMonth()+1),u(n.getUTCDate()),u(n.getUTCHours()),u(n.getUTCMinutes()),u(n.getUTCSeconds()),"Z"].join(""):"utctime"===t?r=[u(n.getUTCFullYear()%100),u(n.getUTCMonth()+1),u(n.getUTCDate()),u(n.getUTCHours()),u(n.getUTCMinutes()),u(n.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+t+" time is not supported yet"),this._encodeStr(r,"octstr")},c.prototype._encodeNull=function(){return this._createEncoderBuffer("")},c.prototype._encodeInt=function(e,t){if("string"===typeof e){if(!t)return this.reporter.error("String int or enum given, but no values map");if(!t.hasOwnProperty(e))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(e));e=t[e]}if("number"!==typeof e&&!i.isBuffer(e)){const t=e.toArray();!e.sign&&128&t[0]&&t.unshift(0),e=new i(t)}if(i.isBuffer(e)){let t=e.length;0===e.length&&t++;const r=new i(t);return e.copy(r),0===e.length&&(r[0]=0),this._createEncoderBuffer(r)}if(e<128)return this._createEncoderBuffer(e);if(e<256)return this._createEncoderBuffer([0,e]);let r=1;for(let i=e;i>=256;i>>=8)r++;const n=new Array(r);for(let i=n.length-1;i>=0;i--)n[i]=255&e,e>>=8;return 128&n[0]&&n.unshift(0),this._createEncoderBuffer(new i(n))},c.prototype._encodeBool=function(e){return this._createEncoderBuffer(e?255:0)},c.prototype._use=function(e,t){return"function"===typeof e&&(e=e(t)),e._getEncoder("der").tree},c.prototype._skipDefault=function(e,t,r){const n=this._baseState;let i;if(null===n["default"])return!1;const s=e.join();if(void 0===n.defaultBuffer&&(n.defaultBuffer=this._encodeValue(n["default"],t,r).join()),s.length!==n.defaultBuffer.length)return!1;for(i=0;ithis.wm.wantlist.contains(e.cid)).map(e=>e.cid);this.wm.cancelWants(n),await Promise.all(r.map(async t=>{const r=n.includes(t.cid);await this._handleReceivedBlock(e,t,r)}))}async _handleReceivedBlock(e,t,r){this._log("received block");const n=await this.blockstore.has(t.cid);this._updateReceiveCounters(e.toB58String(),t,n),!n&&r&&await this.put(t)}_updateReceiveCounters(e,t,r){this._stats.push(e,"blocksReceived",1),this._stats.push(e,"dataReceived",t.data.length),r&&(this._stats.push(e,"dupBlksReceived",1),this._stats.push(e,"dupDataReceived",t.data.length))}_receiveError(e){this._log.error("ReceiveError: %s",e.message)}_onPeerConnected(e){this.wm.connected(e)}_onPeerDisconnected(e){this.wm.disconnected(e),this.engine.peerDisconnected(e),this._stats.disconnected(e)}enableStats(){this._stats.enable()}disableStats(){this._stats.disable()}wantlistForPeer(e){return this.engine.wantlistForPeer(e)}ledgerForPeer(e){return this.engine.ledgerForPeer(e)}async get(e){for await(const t of this.getMany([e]))return t}async*getMany(e){let t=e.length;const r=[];let n=!1;const i=async e=>{r.push(e);const n=this.notifications.wantBlock(e);t||this.wm.wantBlocks(r);const i=await n;return this.wm.cancelWants([e]),i};for(const s of e){const o=await this.blockstore.has(s);t--,o?(t||this.wm.wantBlocks(r),yield this.blockstore.get(s)):(n||(n=!0,this.network.findAndConnect(e[0]).catch(e=>this._log.error(e))),yield i(s))}}unwant(e){Array.isArray(e)||(e=[e]),this.wm.unwantBlocks(e),e.forEach(e=>this.notifications.unwantBlock(e))}cancelWants(e){Array.isArray(e)||(e=[e]),this.wm.cancelWants(e)}async put(e){return this.putMany([e])}async putMany(e){const t=this;return this.blockstore.putMany(async function*(){for await(const r of e)await t.blockstore.has(r.cid)||(yield r,t.notifications.hasBlock(r),t.engine.receivedBlocks([r.cid]),t.network.provide(r.cid).catch(e=>{t._log.error("Failed to provide: %s",e.message)}))}())}getWantlist(){return this.wm.wantlist.entries()}peers(){return this.engine.peers()}stat(){return this._stats}start(){this.wm.start(),this.network.start(),this.engine.start()}stop(){this._stats.stop(),this.wm.stop(),this.network.stop(),this.engine.stop()}}e.exports=h},4896:function(e,t){e.exports=i;var r=128,n=127;function i(e,t){var s,o=0,a=(t=t||0,0),c=t,u=e.length;do{if(c>=u)throw i.bytes=0,new RangeError("Could not decode varint");s=e[c++],o+=a<28?(s&n)<=r);return i.bytes=c-t,o}},"48db":function(e,t,r){var n=r("918b");r("8c35"),r("5ee0");var i=e.exports=n.pss=n.pss||{};i.create=function(e){3===arguments.length&&(e={md:arguments[0],mgf:arguments[1],saltLength:arguments[2]});var t,r=e.md,i=e.mgf,s=r.digestLength,o=e.salt||null;if("string"===typeof o&&(o=n.util.createBuffer(o)),"saltLength"in e)t=e.saltLength;else{if(null===o)throw new Error("Salt length not specified or specific salt not given.");t=o.length()}if(null!==o&&o.length()!==t)throw new Error("Given salt length does not match length of given salt.");var a=e.prng||n.random,c={encode:function(e,c){var u,l,h=c-1,f=Math.ceil(h/8),d=e.digest().getBytes();if(f>8*f-h&255;return w=String.fromCharCode(w.charCodeAt(0)&~_)+w.substr(1),w+y+String.fromCharCode(188)},verify:function(e,o,a){var c,u=a-1,l=Math.ceil(u/8);if(o=o.substr(-l),l>8*l-u&255;if(0!==(f.charCodeAt(0)&p))throw new Error("Bits beyond keysize not zero as expected.");var y=i.generate(d,h),g="";for(c=0;c{if(e)return i(e);i(null,n.encode(s,t,r))})}e.exports=s,s.Buffer=t,s.multihash=n,s.digest=function(e,t,r,n){if("function"===typeof r&&(n=r,r=void 0),!n)throw new Error("Missing callback");let i,o=n;r&&(o=(e,t)=>{if(e)return n(e);n(null,t.slice(0,r))});try{i=s.createHash(t)}catch(a){return o(a)}i(e,o)},s.createHash=function(e){if(e=n.coerceCode(e),!s.functions[e])throw new Error("multihash function "+e+" not yet supported");return s.functions[e]},s.functions={17:i.sha1,18:i.sha2256,19:i.sha2512,20:i.sha3512,21:i.sha3384,22:i.sha3256,23:i.sha3224,24:i.shake128,25:i.shake256,26:i.keccak224,27:i.keccak256,28:i.keccak384,29:i.keccak512,34:i.murmur3128,35:i.murmur332,86:i.dblSha2256},i.addBlake(s.functions),s.validate=(e,r,i)=>{let o=n.decode(r).name;s(e,o,(e,n)=>{if(e)return i(e);i(e,0===t.compare(r,n))})}}).call(this,r("b639").Buffer)},"492d":function(e,t,r){"use strict";(function(e){const n=r("c449"),i=r("bda9");t.resolve=(e,t)=>{let r=i.deserialize(e);const s=t.split("/").filter(Boolean);while(s.length){const e=s.shift();if(void 0===r[e])throw new Error(`Object has no property '${e}'`);if(r=r[e],n.isCID(r))return{value:r,remainderPath:s.join("/")}}return{value:r,remainderPath:""}};const s=function*(t,r){if(!e.isBuffer(t)&&!n.isCID(t)&&"string"!==typeof t&&null!==t)for(const e of Object.keys(t)){const n=void 0===r?e:r+"/"+e;yield n,yield*s(t[e],n)}};t.tree=function*(e){const t=i.deserialize(e);yield*s(t)}}).call(this,r("b639").Buffer)},"493a":function(e,t,r){"use strict";const n=r("fa4d"),i=r("9646"),s=r("b1aa"),o=r("8911");e.exports=e=>n((t,r,n)=>{"function"!==typeof r||n||(n=r,r={}),"function"===typeof r&&"function"===typeof n&&(n=r,r={});const a=(e,t)=>{const r=e.map(e=>new o(s.createFromB58String(e.ID)));t(null,r)};e({path:"dht/query",args:t,qs:r},(e,t)=>{if(e)return n(e);i(t,a,n)})})},"49ba":function(e,t,r){"use strict";const n="undefined"!==typeof BigUint64Array,i=Symbol();function s(e,t,r){var n=e[r>>>2],i=r+4>>>1,s=n,o=[];const a=1024;while(s>a){let e=t[i+a-1],r=e>=55296&&e<56320?a-1:a,n=t.subarray(i,i+=r);o.push(String.fromCharCode.apply(String,n)),s-=r}return o.join("")+String.fromCharCode.apply(String,t.subarray(i,i+s))}function o(e){var t={};function r(e,t){if(!e)return"";var r=e.buffer;return s(new Uint32Array(r),new Uint16Array(r),t)}var n=e.env=e.env||{};return n.abort=n.abort||function(e,i,s,o){var a=t.memory||n.memory;throw Error("abort: "+r(a,e)+" at "+r(a,i)+":"+s+":"+o)},n.trace=n.trace||function(e,i){var s=t.memory||n.memory;console.log("trace: "+r(s,e)+(i?" ":"")+Array.prototype.slice.call(arguments,2,2+i).join(", "))},e.Math=e.Math||Math,e.Date=e.Date||Date,t}function a(e,t){var r,i,o,a,u,l,h,d,p,y,g,m=t.exports,b=m.memory,v=m["memory.allocate"],w=m["memory.fill"],_=m["memory.free"],E=m.table,S=m._setargc||function(){};function k(){r!==b.buffer&&(r=b.buffer,i=new Int8Array(r),o=new Uint8Array(r),a=new Int16Array(r),u=new Uint16Array(r),l=new Int32Array(r),h=new Uint32Array(r),n&&(y=new BigInt64Array(r),g=new BigUint64Array(r)),d=new Float32Array(r),p=new Float64Array(r))}function C(e){var t=e.length,r=v(4+(t<<1)),n=4+r>>>1;k(),h[r>>>2]=t;for(let i=0;i>>2]=c,h[a+4>>>2]=0,h[a+8>>>2]=o,h[c>>>2]=o,h[c+4>>>2]=0,e){if(new i(r,c+8,t).set(e),e.length>>2],s=h[t+4>>>2],o=h[t+8>>>2];return new e(r,i+8+s,(o-s)/n)}function B(e){k();var t=h[e>>>2];_(t),_(e)}function R(e){"function"===typeof e.original&&(e=e.original);var t=E.length;return E.grow(1),E.set(t,e),t}function N(e){return c(E.get(e),S)}return k(),e.newString=C,e.getString=A,e.newArray=T,e.getArray=x,e.freeArray=B,e.newFunction=R,e.getFunction=N,e.memory=e.memory||b,e.table=e.table||E,f(m,Object.defineProperties(e,{I8:{get:function(){return k(),i}},U8:{get:function(){return k(),o}},I16:{get:function(){return k(),a}},U16:{get:function(){return k(),u}},I32:{get:function(){return k(),l}},U32:{get:function(){return k(),h}},I64:{get:function(){return k(),y}},U64:{get:function(){return k(),g}},F32:{get:function(){return k(),d}},F64:{get:function(){return k(),p}}}))}function c(e,t){var r=(...r)=>(t(r.length),e(...r));return r.original=e,r}function u(e,t){return a(o(t||(t={})),new WebAssembly.Instance(e,t))}function l(e,t){return u(new WebAssembly.Module(e),t)}async function h(e,t){return a(o(t||(t={})),(await WebAssembly.instantiateStreaming(e,t)).instance)}function f(e,t){var r=t?Object.create(t):{},n=e._setargc||function(){};function s(e,t){return Object.prototype.hasOwnProperty.call(e,t)}for(let o in e){if(!s(e,o))continue;let t=e[o],a=o.split("."),u=r;while(a.length>1){let e=a.shift();s(u,e)||(u[e]={}),u=u[e]}let l=a[0],h=l.indexOf("#");if(h>=0){let r=l.substring(0,h),a=u[r];if("undefined"===typeof a||!a.prototype){let e=function(...t){return e.wrap(e.prototype.constructor(0,...t))};e.prototype={},e.wrap=function(t){return Object.create(e.prototype,{[i]:{value:t,writable:!1}})},a&&Object.getOwnPropertyNames(a).forEach(t=>Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))),u[r]=e}if(l=l.substring(h+1),u=u[r].prototype,/^(get|set):/.test(l)){if(!s(u,l=l.substring(4))){let t=e[o.replace("set:","get:")],r=e[o.replace("get:","set:")];Object.defineProperty(u,l,{get:function(){return t(this[i])},set:function(e){r(this[i],e)},enumerable:!0})}}else"constructor"===l?u[l]=c(t,n):Object.defineProperty(u,l,{value:function(...e){return n(e.length),t(this[i],...e)}})}else/^(get|set):/.test(l)?s(u,l=l.substring(4))||Object.defineProperty(u,l,{get:e[o.replace("set:","get:")],set:e[o.replace("get:","set:")],enumerable:!0}):u[l]="function"===typeof t?c(t,n):t}return r}t.instantiate=u,t.instantiateBuffer=l,t.instantiateStreaming=h,t.demangle=f},"49c5":function(e,t,r){"use strict";e.exports="\n message Message {\n message Wantlist {\n message Entry {\n // changed from string to bytes, it makes a difference in JavaScript\n optional bytes block = 1; // the block cid (cidV0 in bitswap 1.0.0, cidV1 in bitswap 1.1.0)\n optional int32 priority = 2; // the priority (normalized). default to 1\n optional bool cancel = 3; // whether this revokes an entry\n }\n\n repeated Entry entries = 1; // a list of wantlist entries\n optional bool full = 2; // whether this is the full wantlist. default to false\n }\n\n message Block {\n optional bytes prefix = 1; // CID prefix (cid version, multicodec and multihash prefix (type + length)\n optional bytes data = 2;\n }\n\n optional Wantlist wantlist = 1;\n repeated bytes blocks = 2; // used to send Blocks in bitswap 1.0.0\n repeated Block payload = 3; // used to send Blocks in bitswap 1.1.0\n }\n"},"4a0d":function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=c;var n=r("fdc4"),i=a(n),s=r("0395"),o=a(s);function a(e){return e&&e.__esModule?e:{default:e}}function c(e,t){(0,o.default)(i.default,e,t)}e.exports=t["default"]},"4a45":function(e,t,r){"use strict";r.d(t,"a",(function(){return n}));const n="providers/5.0.0-beta.153"},"4a4b":function(e,t,r){function n(t,r){return e.exports=n=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},n(t,r)}r("131a"),e.exports=n},"4a8a":function(e,t,r){"use strict";const n=r("c3bb");function i(e){this._reporterState={obj:null,path:[],options:e||{},errors:[]}}function s(e,t){this.path=e,this.rethrow(t)}t.Reporter=i,i.prototype.isError=function(e){return e instanceof s},i.prototype.save=function(){const e=this._reporterState;return{obj:e.obj,pathLen:e.path.length}},i.prototype.restore=function(e){const t=this._reporterState;t.obj=e.obj,t.path=t.path.slice(0,e.pathLen)},i.prototype.enterKey=function(e){return this._reporterState.path.push(e)},i.prototype.exitKey=function(e){const t=this._reporterState;t.path=t.path.slice(0,e-1)},i.prototype.leaveKey=function(e,t,r){const n=this._reporterState;this.exitKey(e),null!==n.obj&&(n.obj[t]=r)},i.prototype.path=function(){return this._reporterState.path.join("/")},i.prototype.enterObject=function(){const e=this._reporterState,t=e.obj;return e.obj={},t},i.prototype.leaveObject=function(e){const t=this._reporterState,r=t.obj;return t.obj=e,r},i.prototype.error=function(e){let t;const r=this._reporterState,n=e instanceof s;if(t=n?e:new s(r.path.map((function(e){return"["+JSON.stringify(e)+"]"})).join(""),e.message||e,e.stack),!r.options.partial)throw t;return n||r.errors.push(t),t},i.prototype.wrapResult=function(e){const t=this._reporterState;return t.options.partial?{result:this.isError(e)?null:e,errors:t.errors}:e},n(s,Error),s.prototype.rethrow=function(e){if(this.message=e+" at: "+(this.path||"(shallow)"),Error.captureStackTrace&&Error.captureStackTrace(this,s),!this.stack)try{throw new Error(this.message)}catch(t){this.stack=t.stack}return this}},"4ac5":function(e,t,r){"use strict";var n;function i(e){var t=!1;return function(){t||(t=!0,e.apply(void 0,arguments))}}var s=r("c499").codes,o=s.ERR_MISSING_ARGS,a=s.ERR_STREAM_DESTROYED;function c(e){if(e)throw e}function u(e){return e.setHeader&&"function"===typeof e.abort}function l(e,t,s,o){o=i(o);var c=!1;e.on("close",(function(){c=!0})),void 0===n&&(n=r("b307")),n(e,{readable:t,writable:s},(function(e){if(e)return o(e);c=!0,o()}));var l=!1;return function(t){if(!c&&!l)return l=!0,u(e)?e.abort():"function"===typeof e.destroy?e.destroy():void o(t||new a("pipe"))}}function h(e){e()}function f(e,t){return e.pipe(t)}function d(e){return e.length?"function"!==typeof e[e.length-1]?c:e.pop():c}function p(){for(var e=arguments.length,t=new Array(e),r=0;r0;return l(e,o,a,(function(e){n||(n=e),e&&s.forEach(h),o||(s.forEach(h),i(n))}))}));return t.reduce(f)}e.exports=p},"4b48":function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=!1,i=r("7d0b"),s=r("9bda"),o=r("ffb2"),a=r("bc799");t.logger=new o.Logger(a.version);var c=function(){function e(r){var n=this.constructor;t.logger.checkAbstract(n,e),s.defineReadOnly(this,"locale",r)}return e.prototype.split=function(e){return e.toLowerCase().split(/ +/g)},e.prototype.join=function(e){return e.join(" ")},e.check=function(e){for(var t=[],r=0;r<2048;r++){var n=e.getWord(r);if(r!==e.getWordIndex(n))return"0x";t.push(n)}return i.id(t.join("\n")+"\n")},e.register=function(e,t){if(t||(t=e.locale),n)try{var r=window;r._ethers&&r._ethers.wordlists&&(r._ethers.wordlists[t]||s.defineReadOnly(r._ethers.wordlists,t,e))}catch(i){}},e}();t.Wordlist=c},"4b5a":function(e,t,r){"use strict";e.exports={keys:r("6225"),once:r("99d0"),values:r("e567"),count:r("7e7c"),infinite:r("00c9"),empty:r("2a68"),error:r("e61d")}},"4ba8":function(e,t,r){"use strict";e.exports=(e,t=1,r)=>{if(r={indent:" ",includeEmptyLines:!1,...r},"string"!==typeof e)throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof e}\``);if("number"!==typeof t)throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof t}\``);if("string"!==typeof r.indent)throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof r.indent}\``);if(0===t)return e;const n=r.includeEmptyLines?/^/gm:/^(?!\s*$)/gm;return e.replace(n,r.indent.repeat(t))}},"4bb2":function(e,t,r){"use strict";const n=r("3554"),{hasOwnProperty:i}=Object.prototype,{propertyIsEnumerable:s}=Object,o=(e,t,r)=>Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0}),a=this,c={concatArrays:!1,ignoreUndefined:!1},u=e=>{const t=[];for(const r in e)i.call(e,r)&&t.push(r);if(Object.getOwnPropertySymbols){const r=Object.getOwnPropertySymbols(e);for(const n of r)s.call(e,n)&&t.push(n)}return t};function l(e){return Array.isArray(e)?h(e):n(e)?f(e):e}function h(e){const t=e.slice(0,0);return u(e).forEach(r=>{o(t,r,l(e[r]))}),t}function f(e){const t=null===Object.getPrototypeOf(e)?Object.create(null):{};return u(e).forEach(r=>{o(t,r,l(e[r]))}),t}const d=(e,t,r,n)=>(r.forEach(r=>{"undefined"===typeof t[r]&&n.ignoreUndefined||(r in e&&e[r]!==Object.getPrototypeOf(e)?o(e,r,y(e[r],t[r],n)):o(e,r,l(t[r])))}),e),p=(e,t,r)=>{let n=e.slice(0,0),s=0;return[e,t].forEach(t=>{const a=[];for(let r=0;r!a.includes(e)),r)}),n};function y(e,t,r){return r.concatArrays&&Array.isArray(e)&&Array.isArray(t)?p(e,t,r):n(t)&&n(e)?d(e,t,u(t),r):l(t)}e.exports=function(...e){const t=y(l(c),this!==a&&this||{},c);let r={_:{}};for(const i of e)if(void 0!==i){if(!n(i))throw new TypeError("`"+i+"` is not an Option Object");r=y(r,{_:i},t)}return r._}},"4bbf":function(e,t){function r(){this.__data__=[],this.size=0}e.exports=r},"4bc2":function(e,t,r){(function(n){function i(){return!("undefined"===typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"===typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!==typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!==typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!==typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!==typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))}function s(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const r="color: "+this.color;t.splice(1,0,r,"color: inherit");let n=0,i=0;t[0].replace(/%[a-zA-Z%]/g,e=>{"%%"!==e&&(n++,"%c"===e&&(i=n))}),t.splice(i,0,r)}function o(...e){return"object"===typeof console&&console.log&&console.log(...e)}function a(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(r){}}function c(){let e;try{e=t.storage.getItem("debug")}catch(r){}return!e&&"undefined"!==typeof n&&"env"in n&&(e=Object({NODE_ENV:"production",BASE_URL:"/"}).DEBUG),e}function u(){try{return localStorage}catch(e){}}t.log=o,t.formatArgs=s,t.save=a,t.load=c,t.useColors=i,t.storage=u(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],e.exports=r("5b20")(t);const{formatters:l}=e.exports;l.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}}).call(this,r("4362"))},"4bc9":function(e,t,r){"use strict";const n=r("4bc2")("ipfs:mfs:utils:update-tree"),i=r("8648"),s={shardSplitThreshold:1e3},o=async(e,t,r)=>{r=Object.assign({},s,r),n("Trail",t),t=t.slice().reverse();let o,a=0;for await(const n of e.ipld.getMany(t.map(e=>e.cid))){const s=t[a].cid,c=t[a].name;if(a++,!o){o={cid:s,name:c,size:n.size};continue}const u=await i(e,{parent:n,name:o.name,cid:o.cid,size:o.size,flush:r.flush,shardSplitThreshold:r.shardSplitThreshold,format:r.format,hashAlg:r.hashAlg,cidVersion:r.cidVersion});o={cid:u.cid,name:c,size:u.node.size}}return n(`Final CID ${o.cid}`),o.cid};e.exports=o},"4bef":function(e,t,r){var n;function i(e){var r,n=0;for(r in e)n=(n<<5)-n+e.charCodeAt(r),n|=0;return t.colors[Math.abs(n)%t.colors.length]}function s(e){function r(){if(r.enabled){var e=r,i=+new Date,s=i-(n||i);e.diff=s,e.prev=n,e.curr=i,n=i;for(var o=new Array(arguments.length),a=0;aasync function*(){for await(const r of e){const e=await t(r);e&&(yield r)}}(),t.sortAll=(e,t)=>async function*(){let r=[];for await(const t of e)r.push(t);r=await t(r);for(const e of r)yield e}(),t.take=(e,t)=>async function*(){if(t<=0)return;let r=0;for await(const n of e)if(yield n,r++,r>=t)return}(),t.map=(e,t)=>async function*(){for await(const r of e)yield t(r)}(),t.replaceStartWith=function(e,t){const r=new RegExp("^"+t);return e.replace(r,"")},t.tmpdir=()=>n.join(i.tmpdir(),s())},"4c37":function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r("b442b");class i{constructor(){Object.defineProperty(this,"_queue",{enumerable:!0,configurable:!0,writable:!0,value:[]})}enqueue(e,t){t=Object.assign({priority:0},t);const r={priority:t.priority,run:e};if(this.size&&this._queue[this.size-1].priority>=t.priority)return void this._queue.push(r);const i=n.default(this._queue,r,(e,t)=>t.priority-e.priority);this._queue.splice(i,0,r)}dequeue(){const e=this._queue.shift();return e&&e.run}get size(){return this._queue.length}}t.default=i},"4c6e":function(e,t,r){"use strict";(function(t){var n;function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var s=r("4e5f"),o=Symbol("lastResolve"),a=Symbol("lastReject"),c=Symbol("error"),u=Symbol("ended"),l=Symbol("lastPromise"),h=Symbol("handlePromise"),f=Symbol("stream");function d(e,t){return{value:e,done:t}}function p(e){var t=e[o];if(null!==t){var r=e[f].read();null!==r&&(e[l]=null,e[o]=null,e[a]=null,t(d(r,!1)))}}function y(e){t.nextTick(p,e)}function g(e,t){return function(r,n){e.then((function(){t[u]?r(d(void 0,!0)):t[h](r,n)}),n)}}var m=Object.getPrototypeOf((function(){})),b=Object.setPrototypeOf((n={get stream(){return this[f]},next:function(){var e=this,r=this[c];if(null!==r)return Promise.reject(r);if(this[u])return Promise.resolve(d(void 0,!0));if(this[f].destroyed)return new Promise((function(r,n){t.nextTick((function(){e[c]?n(e[c]):r(d(void 0,!0))}))}));var n,i=this[l];if(i)n=new Promise(g(i,this));else{var s=this[f].read();if(null!==s)return Promise.resolve(d(s,!1));n=new Promise(this[h])}return this[l]=n,n}},i(n,Symbol.asyncIterator,(function(){return this})),i(n,"return",(function(){var e=this;return new Promise((function(t,r){e[f].destroy(null,(function(e){e?r(e):t(d(void 0,!0))}))}))})),n),m),v=function(e){var t,r=Object.create(b,(t={},i(t,f,{value:e,writable:!0}),i(t,o,{value:null,writable:!0}),i(t,a,{value:null,writable:!0}),i(t,c,{value:null,writable:!0}),i(t,u,{value:e._readableState.endEmitted,writable:!0}),i(t,h,{value:function(e,t){var n=r[f].read();n?(r[l]=null,r[o]=null,r[a]=null,e(d(n,!1))):(r[o]=e,r[a]=t)},writable:!0}),t));return r[l]=null,s(e,(function(e){if(e&&"ERR_STREAM_PREMATURE_CLOSE"!==e.code){var t=r[a];return null!==t&&(r[l]=null,r[o]=null,r[a]=null,t(e)),void(r[c]=e)}var n=r[o];null!==n&&(r[l]=null,r[o]=null,r[a]=null,n(d(void 0,!0))),r[u]=!0})),e.on("readable",y.bind(null,r)),r};e.exports=v}).call(this,r("4362"))},"4c79":function(e,t,r){var n=r("ff48"),i=r("e0c5").Buffer,s=r("72e8");function o(e){var t=e._cipher.encryptBlockRaw(e._prev);return s(e._prev),t}var a=16;t.encrypt=function(e,t){var r=Math.ceil(t.length/a),s=e._cache.length;e._cache=i.concat([e._cache,i.allocUnsafe(r*a)]);for(var c=0;cn((t,r,n)=>{"function"!==typeof r||n||(n=r,r={}),"function"===typeof r&&"function"===typeof n&&(n=r,r={});const c=(e,t)=>{Array.isArray(e)||(e=[e]);let r=[];e.forEach(e=>{4===e.Type&&e.Responses.forEach(e=>{const t=new a(o.createFromB58String(e.ID));e.Addrs&&e.Addrs.forEach(e=>{const r=s(e);t.multiaddrs.add(r)}),r.push(t)})}),t(null,r)};e({path:"dht/findprovs",args:t.toString(),qs:r},(e,t)=>{if(e)return n(e);i(t,c,n)})})},"4c9f":function(e,t){e.exports=function(){if("undefined"===typeof window)return null;var e={RTCPeerConnection:window.RTCPeerConnection||window.mozRTCPeerConnection||window.webkitRTCPeerConnection,RTCSessionDescription:window.RTCSessionDescription||window.mozRTCSessionDescription||window.webkitRTCSessionDescription,RTCIceCandidate:window.RTCIceCandidate||window.mozRTCIceCandidate||window.webkitRTCIceCandidate};return e.RTCPeerConnection?e:null}},"4d1c":function(e,t,r){"use strict";const{filter:n,sortAll:i,take:s,map:o}=r("4c33"),a=r("fb4dc"),c=r("8260");class u{constructor(){this.data={}}async open(){}async put(e,t){this.data[e.toString()]=t}async get(e){const t=await this.has(e);if(!t)throw c.notFoundError();return this.data[e.toString()]}async has(e){return void 0!==this.data[e.toString()]}async delete(e){delete this.data[e.toString()]}batch(){let e=[],t=[];return{put(t,r){e.push([t,r])},delete(e){t.push(e)},commit:async()=>{e.forEach(e=>{this.data[e[0].toString()]=e[1]}),e=[],t.forEach(e=>{delete this.data[e.toString()]}),t=[]}}}query(e){let t=Object.entries(this.data);if(t=o(t,e=>({key:new a(e[0]),value:e[1]})),null!=e.prefix&&(t=n(t,t=>t.key.toString().startsWith(e.prefix))),Array.isArray(e.filters)&&(t=e.filters.reduce((e,t)=>n(e,t),t)),Array.isArray(e.orders)&&(t=e.orders.reduce((e,t)=>i(e,t),t)),null!=e.offset){let r=0;t=n(t,()=>r++>=e.offset)}return null!=e.limit&&(t=s(t,e.limit)),!0===e.keysOnly&&(t=o(t,e=>({key:e.key}))),t}async close(){}}e.exports=u},"4d23":function(e,t,r){var n=r("19d1").AbstractIterator,i=r("3fb5");function s(e,t){n.call(this,e),this._options=t,this._iterator=null,this._operations=[]}i(s,n),s.prototype.setDb=function(e){var t=this._iterator=e.iterator(this._options);this._operations.forEach((function(e){t[e.method].apply(t,e.args)}))},s.prototype._operation=function(e,t){if(this._iterator)return this._iterator[e].apply(this._iterator,t);this._operations.push({method:e,args:t})},"next end".split(" ").forEach((function(e){s.prototype["_"+e]=function(){this._operation(e,arguments)}})),s.prototype.seek=function(){this._operation("seek",arguments)},e.exports=s},"4d31":function(e,t,r){"use strict";function n(e,t,r){var n,i=e instanceof Error?e:new Error(e);if("object"===typeof t?r=t:null!=t&&(i.code=t),r)for(n in r)i[n]=r[n];return i}e.exports=n},"4d45":function(e,t,r){"use strict";const n=r("5800");class i extends Error{constructor(e){super(e),this.name="TimeoutError"}}const s=(e,t,r)=>new Promise((s,o)=>{if("number"!==typeof t||t<0)throw new TypeError("Expected `milliseconds` to be a positive number");if(t===1/0)return void s(e);const a=setTimeout(()=>{if("function"===typeof r){try{s(r())}catch(c){o(c)}return}const n="string"===typeof r?r:`Promise timed out after ${t} milliseconds`,a=r instanceof Error?r:new i(n);"function"===typeof e.cancel&&e.cancel(),o(a)},t);n(e.then(s,o),()=>{clearTimeout(a)})});e.exports=s,e.exports.default=s,e.exports.TimeoutError=i},"4d46":function(e,t,r){"use strict";var n=r("3fb5"),i=r("5425").AbstractIterator,s=r("0b90"),o=r("c350"),a=r("8650"),c=function(){};function u(e,t,r){if(i.call(this,e),this._limit=r.limit,this._count=0,this._callback=null,this._cache=[],this._completed=!1,this._aborted=!1,this._error=null,this._transaction=null,this._keyAsBuffer=r.keyAsBuffer,this._valueAsBuffer=r.valueAsBuffer,0!==this._limit){try{var n=this.createKeyRange(r)}catch(s){return void(this._completed=!0)}this.createIterator(t,n,r.reverse)}else this._completed=!0}e.exports=u,n(u,i),u.prototype.createKeyRange=function(e){var t=s.lowerBound(e),r=s.upperBound(e),n=s.lowerBoundExclusive(e),i=s.upperBoundExclusive(e);return void 0!==t&&void 0!==r?IDBKeyRange.bound(t,r,n,i):void 0!==t?IDBKeyRange.lowerBound(t,n):void 0!==r?IDBKeyRange.upperBound(r,i):null},u.prototype.createIterator=function(e,t,r){var n=this,i=this.db.db.transaction([e],"readonly"),s=i.objectStore(e),o=s.openCursor(t,r?"prev":"next");o.onsuccess=function(e){var t=e.target.result;t&&n.onItem(t)},this._transaction=i,i.onabort=function(){n.onAbort(n._transaction.error||new Error("aborted by user"))},i.oncomplete=function(){n.onComplete()}},u.prototype.onItem=function(e){this._cache.push(e.key,e.value),(this._limit<=0||++this._count0){var r=this._cache.shift(),n=this._cache.shift();this._keyAsBuffer&&(r=o(r)),this._valueAsBuffer&&(n=o(n)),a((function(){e(null,r,n)}))}else this._completed?a(e):this._callback=e},u.prototype._end=function(e){if(this._aborted||this._completed){var t=this._error;a((function(){e(t)}))}else this.onItem=c,this.onAbort=e,this.onComplete=e}},"4d51":function(e,t,r){"use strict";const{Buffer:n}=r("b639"),i=self.crypto||self.msCrypto;e.exports=e=>{if("undefined"===typeof self||!self.crypto&&!self.msCrypto)throw new Error("Please use a browser with webcrypto support and ensure the code has been delivered securely via HTTPS/TLS and run within a Secure Context");return async t=>{switch(e){case"sha1":return n.from(await i.subtle.digest({name:"SHA-1"},t));case"sha2-256":return n.from(await i.subtle.digest({name:"SHA-256"},t));case"sha2-512":return n.from(await i.subtle.digest({name:"SHA-512"},t));case"dbl-sha2-256":{const e=await i.subtle.digest({name:"SHA-256"},t);return n.from(await i.subtle.digest({name:"SHA-256"},e))}default:throw new Error(`${e} is not a supported algorithm`)}}}},"4d58":function(e,t,r){"use strict";const n=r("b624"),i=r("f2f6");class s extends n{constructor(e,t,r,n){let s=Object.assign({},{Index:i});Object.assign(s,n),super(e,t,r,s),this._type="keyvalue"}get all(){return this._index._index}get(e){return this._index.get(e)}set(e,t,r={}){return this.put(e,t,r)}put(e,t,r={}){return this._addOperation({op:"PUT",key:e,value:t},r)}del(e,t={}){return this._addOperation({op:"DEL",key:e,value:null},t)}}e.exports=s},"4d84":function(e,t,r){var n=r("f0a0");n.pki=n.pki||{};var i=e.exports=n.pki.oids=n.oids=n.oids||{};function s(e,t){i[e]=t,i[t]=e}function o(e,t){i[e]=t}s("1.2.840.113549.1.1.1","rsaEncryption"),s("1.2.840.113549.1.1.4","md5WithRSAEncryption"),s("1.2.840.113549.1.1.5","sha1WithRSAEncryption"),s("1.2.840.113549.1.1.7","RSAES-OAEP"),s("1.2.840.113549.1.1.8","mgf1"),s("1.2.840.113549.1.1.9","pSpecified"),s("1.2.840.113549.1.1.10","RSASSA-PSS"),s("1.2.840.113549.1.1.11","sha256WithRSAEncryption"),s("1.2.840.113549.1.1.12","sha384WithRSAEncryption"),s("1.2.840.113549.1.1.13","sha512WithRSAEncryption"),s("1.3.101.112","EdDSA25519"),s("1.2.840.10040.4.3","dsa-with-sha1"),s("1.3.14.3.2.7","desCBC"),s("1.3.14.3.2.26","sha1"),s("2.16.840.1.101.3.4.2.1","sha256"),s("2.16.840.1.101.3.4.2.2","sha384"),s("2.16.840.1.101.3.4.2.3","sha512"),s("1.2.840.113549.2.5","md5"),s("1.2.840.113549.1.7.1","data"),s("1.2.840.113549.1.7.2","signedData"),s("1.2.840.113549.1.7.3","envelopedData"),s("1.2.840.113549.1.7.4","signedAndEnvelopedData"),s("1.2.840.113549.1.7.5","digestedData"),s("1.2.840.113549.1.7.6","encryptedData"),s("1.2.840.113549.1.9.1","emailAddress"),s("1.2.840.113549.1.9.2","unstructuredName"),s("1.2.840.113549.1.9.3","contentType"),s("1.2.840.113549.1.9.4","messageDigest"),s("1.2.840.113549.1.9.5","signingTime"),s("1.2.840.113549.1.9.6","counterSignature"),s("1.2.840.113549.1.9.7","challengePassword"),s("1.2.840.113549.1.9.8","unstructuredAddress"),s("1.2.840.113549.1.9.14","extensionRequest"),s("1.2.840.113549.1.9.20","friendlyName"),s("1.2.840.113549.1.9.21","localKeyId"),s("1.2.840.113549.1.9.22.1","x509Certificate"),s("1.2.840.113549.1.12.10.1.1","keyBag"),s("1.2.840.113549.1.12.10.1.2","pkcs8ShroudedKeyBag"),s("1.2.840.113549.1.12.10.1.3","certBag"),s("1.2.840.113549.1.12.10.1.4","crlBag"),s("1.2.840.113549.1.12.10.1.5","secretBag"),s("1.2.840.113549.1.12.10.1.6","safeContentsBag"),s("1.2.840.113549.1.5.13","pkcs5PBES2"),s("1.2.840.113549.1.5.12","pkcs5PBKDF2"),s("1.2.840.113549.1.12.1.1","pbeWithSHAAnd128BitRC4"),s("1.2.840.113549.1.12.1.2","pbeWithSHAAnd40BitRC4"),s("1.2.840.113549.1.12.1.3","pbeWithSHAAnd3-KeyTripleDES-CBC"),s("1.2.840.113549.1.12.1.4","pbeWithSHAAnd2-KeyTripleDES-CBC"),s("1.2.840.113549.1.12.1.5","pbeWithSHAAnd128BitRC2-CBC"),s("1.2.840.113549.1.12.1.6","pbewithSHAAnd40BitRC2-CBC"),s("1.2.840.113549.2.7","hmacWithSHA1"),s("1.2.840.113549.2.8","hmacWithSHA224"),s("1.2.840.113549.2.9","hmacWithSHA256"),s("1.2.840.113549.2.10","hmacWithSHA384"),s("1.2.840.113549.2.11","hmacWithSHA512"),s("1.2.840.113549.3.7","des-EDE3-CBC"),s("2.16.840.1.101.3.4.1.2","aes128-CBC"),s("2.16.840.1.101.3.4.1.22","aes192-CBC"),s("2.16.840.1.101.3.4.1.42","aes256-CBC"),s("2.5.4.3","commonName"),s("2.5.4.5","serialName"),s("2.5.4.6","countryName"),s("2.5.4.7","localityName"),s("2.5.4.8","stateOrProvinceName"),s("2.5.4.9","streetAddress"),s("2.5.4.10","organizationName"),s("2.5.4.11","organizationalUnitName"),s("2.5.4.13","description"),s("2.5.4.15","businessCategory"),s("2.5.4.17","postalCode"),s("1.3.6.1.4.1.311.60.2.1.2","jurisdictionOfIncorporationStateOrProvinceName"),s("1.3.6.1.4.1.311.60.2.1.3","jurisdictionOfIncorporationCountryName"),s("2.16.840.1.113730.1.1","nsCertType"),s("2.16.840.1.113730.1.13","nsComment"),o("2.5.29.1","authorityKeyIdentifier"),o("2.5.29.2","keyAttributes"),o("2.5.29.3","certificatePolicies"),o("2.5.29.4","keyUsageRestriction"),o("2.5.29.5","policyMapping"),o("2.5.29.6","subtreesConstraint"),o("2.5.29.7","subjectAltName"),o("2.5.29.8","issuerAltName"),o("2.5.29.9","subjectDirectoryAttributes"),o("2.5.29.10","basicConstraints"),o("2.5.29.11","nameConstraints"),o("2.5.29.12","policyConstraints"),o("2.5.29.13","basicConstraints"),s("2.5.29.14","subjectKeyIdentifier"),s("2.5.29.15","keyUsage"),o("2.5.29.16","privateKeyUsagePeriod"),s("2.5.29.17","subjectAltName"),s("2.5.29.18","issuerAltName"),s("2.5.29.19","basicConstraints"),o("2.5.29.20","cRLNumber"),o("2.5.29.21","cRLReason"),o("2.5.29.22","expirationDate"),o("2.5.29.23","instructionCode"),o("2.5.29.24","invalidityDate"),o("2.5.29.25","cRLDistributionPoints"),o("2.5.29.26","issuingDistributionPoint"),o("2.5.29.27","deltaCRLIndicator"),o("2.5.29.28","issuingDistributionPoint"),o("2.5.29.29","certificateIssuer"),o("2.5.29.30","nameConstraints"),s("2.5.29.31","cRLDistributionPoints"),s("2.5.29.32","certificatePolicies"),o("2.5.29.33","policyMappings"),o("2.5.29.34","policyConstraints"),s("2.5.29.35","authorityKeyIdentifier"),o("2.5.29.36","policyConstraints"),s("2.5.29.37","extKeyUsage"),o("2.5.29.46","freshestCRL"),o("2.5.29.54","inhibitAnyPolicy"),s("1.3.6.1.4.1.11129.2.4.2","timestampList"),s("1.3.6.1.5.5.7.1.1","authorityInfoAccess"),s("1.3.6.1.5.5.7.3.1","serverAuth"),s("1.3.6.1.5.5.7.3.2","clientAuth"),s("1.3.6.1.5.5.7.3.3","codeSigning"),s("1.3.6.1.5.5.7.3.4","emailProtection"),s("1.3.6.1.5.5.7.3.8","timeStamping")},"4d9e":function(e,t,r){"use strict";const n=r("fd9e");async function i(e,t){Array.isArray(t[0])&&(t=t[0]);const r=t.filter(e=>"string"===typeof e).map(e=>e.trim());return{sources:await n(e,r)}}e.exports=i},"4dd4":function(e,t,r){"use strict";(function(t){const n=r("b62c"),i=r("1f47").encode,s=r("22ac"),o=r("c14df"),a=r("d58b"),c=r("c59f"),{getRequest:u}=r("ff6b"),l=r("81f3"),h=r("e3ea"),f=r("4bc2")("ipfs-http-client:request");function d(e){return e.headers["content-type"]&&0===e.headers["content-type"].indexOf("application/json")}function p(e,t){const r=new Error(`Server responded with ${e.statusCode}`);if(r.statusCode=e.statusCode,!d(e))return l(e,(e,n)=>{n&&n.length&&(r.message=n.toString()),t(r)});h(e,(e,n)=>{if(e)return t(e);n&&(r.code=n.Code,r.message=n.Message||n.toString(),r.type=n.Type),t(r)})}function y(e,t){return r=>{const n=Boolean(r.headers["x-stream-output"]),i=Boolean(r.headers["x-chunked-output"]),s=d(r);if(r.req?f(r.req.method,`${r.req.getHeaders().host}${r.req.path}`,r.statusCode,r.statusMessage):f(r.url,r.statusCode,r.statusMessage),r.statusCode>=400||!r.statusCode)return p(r,t);if(n&&!e)return t(null,r);if(i&&s){const e=o.parse();return a(r,e),r.on("end",()=>{let t=r.trailers["x-stream-error"];if(t){try{t=JSON.parse(t)}catch(n){t={Message:t}}e.emit("error",new Error(t.Message))}}),t(null,e)}return s?h(r,t):l(r,t)}}function g(e,r,o){o=c(o),r.qs=r.qs||{},Array.isArray(r.path)&&(r.path=r.path.join("/")),r.args&&!Array.isArray(r.args)&&(r.args=[r.args]),r.args&&(r.qs.arg=r.args),r.progress&&(r.qs.progress=!0),r.qs.r&&(r.qs.recursive=r.qs.r,delete r.qs.r),r.qs["stream-channels"]=!0,r.stream&&(r.buffer=!1),delete r.qs.followSymlinks;const a="POST",l=Object.assign({},e.headers);if(s&&(l["User-Agent"]=e["user-agent"]),r.multipart){if(!r.multipartBoundary)return o(new Error("No multipartBoundary"));l["Content-Type"]=`multipart/form-data; boundary=${r.multipartBoundary}`}const h=n.stringify(r.qs,{arrayFormat:"repeat",encoder:e=>{if(t.isBuffer(e)){let t="";for(const r of e)if(r>=65&&r<=90||r>=97&&r<=122||r>=48&&r<=57||45===r||46===r||95===r||126===r)t+=String.fromCharCode(r);else{const e=r.toString(16),n=1===e.length?`0${e}`:e;t+=`%${n}`}return t}return i(e)}}),f={hostname:e.host,path:`${e["api-path"]}${r.path}?${h}`,port:e.port,method:a,headers:l,protocol:`${e.protocol}:`},d=u(f,y(r.buffer,o));return d.on("error",e=>{o(e)}),r.stream||d.end(),d}e.exports=e=>{const t=(t,r)=>"object"!==typeof t?r(new Error("no options were passed")):g(e,t,r);return t.andTransform=(e,r,n)=>t(e,(e,t)=>{if(e)return n(e);r(t,n)}),t}}).call(this,r("b639").Buffer)},"4de4":function(e,t,r){"use strict";var n=r("23e7"),i=r("b727").filter,s=r("1dde"),o=r("ae40"),a=s("filter"),c=o("filter");n({target:"Array",proto:!0,forced:!a||!c},{filter:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},"4dec2":function(e,t,r){"use strict";const n=r("09a4"),i=r("ad58").OFFLINE_ERROR,s=r("7048");e.exports=function(e){function t(){if(!e.isOnline())throw s(new Error(i),"ERR_OFFLINE");if(!e.libp2p.pubsub)throw s(new Error("pubsub is not enabled"),"ERR_PUBSUB_DISABLED")}return{subscribe:(r,n,i,s)=>{if("function"===typeof i&&(s=i,i={}),"function"!==typeof s){try{t()}catch(o){return Promise.reject(o)}return e.libp2p.pubsub.subscribe(r,n,i)}try{t()}catch(o){return s(o)}e.libp2p.pubsub.subscribe(r,n,i,s)},unsubscribe:(r,n,i)=>{if("function"!==typeof i){try{t()}catch(s){return Promise.reject(s)}return e.libp2p.pubsub.unsubscribe(r,n)}try{t()}catch(s){return i(s)}e.libp2p.pubsub.unsubscribe(r,n,i)},publish:n(async(r,n)=>{t(),await e.libp2p.pubsub.publish(r,n)}),ls:n(async()=>(t(),e.libp2p.pubsub.ls())),peers:n(async r=>(t(),e.libp2p.pubsub.peers(r))),setMaxListeners(r){t(),e.libp2p.pubsub.setMaxListeners(r)}}}},"4df4":function(e,t,r){"use strict";var n=r("0366"),i=r("7b0b"),s=r("9bdd"),o=r("e95a"),a=r("50c4"),c=r("8418"),u=r("35a1");e.exports=function(e){var t,r,l,h,f,d,p=i(e),y="function"==typeof this?this:Array,g=arguments.length,m=g>1?arguments[1]:void 0,b=void 0!==m,v=u(p),w=0;if(b&&(m=n(m,g>2?arguments[2]:void 0,2)),void 0==v||y==Array&&o(v))for(t=a(p.length),r=new y(t);t>w;w++)d=b?m(p[w],w):p[w],c(r,w,d);else for(h=v.call(p),f=h.next,r=new y;!(l=f.call(h)).done;w++)d=b?s(h,m,[l.value,w],!0):l.value,c(r,w,d);return r.length=w,r}},"4e0a":function(e,t,r){"use strict";var n=r("d75d"),i=r.n(n);i.a},"4e5f":function(e,t,r){"use strict";var n=r("93bc").codes.ERR_STREAM_PREMATURE_CLOSE;function i(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,n=new Array(r),i=0;i0||s>0){var l=new i;l.update(u),l.update(e),t&&l.update(t),u=l.digest();var h=0;if(o>0){var f=a.length-o;h=Math.min(o,u.length),u.copy(a,f,0,h),o-=h}if(h0){var d=c.length-s,p=Math.min(s,u.length-h);u.copy(c,d,h,h+p),s-=p}}return u.fill(0),{key:a,iv:c}}e.exports=s},"4f37":function(e,t,r){"use strict";const{Buffer:n}=r("b639"),i=r("b13c"),s=r("76a7"),o=r("cc1f"),{fromNumberTo32BitBuf:a}=r("8f91"),c=e=>async t=>{switch(e){case"sha3-224":return n.from(i.sha3_224.arrayBuffer(t));case"sha3-256":return n.from(i.sha3_256.arrayBuffer(t));case"sha3-384":return n.from(i.sha3_384.arrayBuffer(t));case"sha3-512":return n.from(i.sha3_512.arrayBuffer(t));case"shake-128":return n.from(i.shake128.create(128).update(t).arrayBuffer());case"shake-256":return n.from(i.shake256.create(256).update(t).arrayBuffer());case"keccak-224":return n.from(i.keccak224.arrayBuffer(t));case"keccak-256":return n.from(i.keccak256.arrayBuffer(t));case"keccak-384":return n.from(i.keccak384.arrayBuffer(t));case"keccak-512":return n.from(i.keccak512.arrayBuffer(t));case"murmur3-128":return n.from(s.x64.hash128(t),"hex");case"murmur3-32":return a(s.x86.hash32(t));default:throw new TypeError(`${e} is not a supported algorithm`)}};e.exports={sha1:o("sha1"),sha2256:o("sha2-256"),sha2512:o("sha2-512"),dblSha2256:o("dbl-sha2-256"),sha3224:c("sha3-224"),sha3256:c("sha3-256"),sha3384:c("sha3-384"),sha3512:c("sha3-512"),shake128:c("shake-128"),shake256:c("shake-256"),keccak224:c("keccak-224"),keccak256:c("keccak-256"),keccak384:c("keccak-384"),keccak512:c("keccak-512"),murmur3128:c("murmur3-128"),murmur332:c("murmur3-32"),addBlake:r("7440")}},"4f57":function(e,t,r){(function(n){function i(){return!("undefined"===typeof window||!window.process||"renderer"!==window.process.type)||("undefined"===typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!==typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!==typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!==typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!==typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))}function s(e){var r=this.useColors;if(e[0]=(r?"%c":"")+this.namespace+(r?" %c":" ")+e[0]+(r?"%c ":" ")+"+"+t.humanize(this.diff),r){var n="color: "+this.color;e.splice(1,0,n,"color: inherit");var i=0,s=0;e[0].replace(/%[a-zA-Z%]/g,(function(e){"%%"!==e&&(i++,"%c"===e&&(s=i))})),e.splice(s,0,n)}}function o(){return"object"===typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function a(e){try{null==e?t.storage.removeItem("debug"):t.storage.debug=e}catch(r){}}function c(){var e;try{e=t.storage.debug}catch(r){}return!e&&"undefined"!==typeof n&&"env"in n&&(e=Object({NODE_ENV:"production",BASE_URL:"/"}).DEBUG),e}function u(){try{return window.localStorage}catch(e){}}t=e.exports=r("b335"),t.log=o,t.formatArgs=s,t.save=a,t.load=c,t.useColors=i,t.storage="undefined"!=typeof chrome&&"undefined"!=typeof chrome.storage?chrome.storage.local:u(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.formatters.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}},t.enable(c())}).call(this,r("4362"))},"4f94":function(e,t){function r(e,t){this.value=e,this.next=t}e.exports=r,r.prototype.contains=function(e){var t=this;while(t){if(t.value===e)return!0;t=t.next}return!1}},"4fa4":function(e,t,r){"use strict";const n=r("33fc"),i=r("e24c").Connection,s=r("f654"),o=r("8911"),a=r("4bc2"),c=r("c59f"),u=a("libp2p:secio");u.error=a("libp2p:secio:error");const l=r("b6ec"),h=r("bd4e");e.exports={tag:"/secio/1.0.0",encrypt(e,t,r,a){s(e,"no local private key provided"),s(t,"no connection for the handshake provided"),"function"===typeof r&&(a=r,r=void 0),a=c(a||function(e){e&&u.error(e)});const f=3e5,d=new h(e,r,f,a);function p(e){if(e)return a(e);t.getPeerInfo((e,r)=>{y.setInnerConn(new i(d.secure,t)),e&&y.setPeerInfo(new o(d.id.remote)),a()})}const y=new i(void 0,t);return n(t,l(d,p),t),y}}},"4fa7":function(e,t,r){"use strict";const n=r("566a"),i=r("a85d"),s=r("20df"),o=r("d79f"),a=r("989c"),c=[["base1","1","","1"],["base2","0",i,"01"],["base8","7",i,"01234567"],["base10","9",i,"0123456789"],["base16","f",s,"0123456789abcdef"],["base32","b",o,"abcdefghijklmnopqrstuvwxyz234567"],["base32pad","c",o,"abcdefghijklmnopqrstuvwxyz234567="],["base32hex","v",o,"0123456789abcdefghijklmnopqrstuv"],["base32hexpad","t",o,"0123456789abcdefghijklmnopqrstuv="],["base32z","h",o,"ybndrfg8ejkmcpqxot1uwisza345h769"],["base58flickr","Z",i,"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"],["base58btc","z",i,"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"],["base64","m",a,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"],["base64pad","M",a,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="],["base64url","u",a,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"],["base64urlpad","U",a,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_="]],u=c.reduce((e,t)=>(e[t[0]]=new n(t[0],t[1],t[2],t[3]),e),{}),l=c.reduce((e,t)=>(e[t[1]]=u[t[0]],e),{});e.exports={names:u,codes:l}},"4fcf":function(e,t,r){var n=r("222c");function i(e,t,r){t&&"string"!=typeof t&&(t=t.message||t.name),n(this,{type:e,name:e,cause:"string"!=typeof t?t:r,message:t},"ewr")}function s(e,t){Error.call(this),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor),i.call(this,"CustomError",e,t)}function o(e,t,r){var n=function(r,s){i.call(this,t,r,s),"FilesystemError"==t&&(this.code=this.cause.code,this.path=this.cause.path,this.errno=this.cause.errno,this.message=(e.errno[this.cause.errno]?e.errno[this.cause.errno].description:this.cause.message)+(this.cause.path?" ["+this.cause.path+"]":"")),Error.call(this),Error.captureStackTrace&&Error.captureStackTrace(this,n)};return n.prototype=r?new r:new s,n}s.prototype=new Error,e.exports=function(e){var t=function(t,r){return o(e,t,r)};return{CustomError:s,FilesystemError:t("FilesystemError"),createError:t}}},"4fd9":function(e,t,r){"use strict";(function(t){const n=r("bb5f"),i=s();function s(){return self.crypto?self.crypto.subtle||self.crypto.webkitSubtle:self.msCrypto?self.msCrypto.subtle:void 0}function o(e){if(!i)throw new Error("Please use a browser with webcrypto support and ensure the code has been delivered securely via HTTPS/TLS and run within a Secure Context");return(r,s)=>{const o=i.digest({name:e},r);if("function"!==typeof o.then)return o.onerror=()=>{s(new Error(`hashing data using ${e}`))},void(o.oncomplete=e=>{s(null,e.target.result)});n(o.then(e=>t.from(new Uint8Array(e))),s)}}function a(e,t){o("SHA-1")(e,t)}function c(e,t){o("SHA-256")(e,t)}function u(e,t){o("SHA-512")(e,t)}e.exports={sha1:a,sha2256:c,sha2512:u}}).call(this,r("b639").Buffer)},5:function(e,t){},5036:function(e,t,r){"use strict";const n=r("218a");e.exports=function(e){return function(t,r){return n.source(e._catAsyncIterator(t,r))}}},5051:function(e,t,r){"use strict";const n=r("7048"),i=r("2091e"),s=r("9c10"),o=(e,t)=>{const r=e.Links.find(e=>e.Name===t);return r&&r.Hash},a={raw:r("ca31"),file:r("ca31"),directory:r("9d33"),"hamt-sharded-directory":r("f37a"),metadata:(e,t,r,n,i,s,o)=>{},symlink:(e,t,r,n,i,s,o)=>{}},c=async(e,t,r,c,u,l,h)=>{const f=await h.get(e);let d,p;t||(t=e.toBaseEncodedString());try{d=i.unmarshal(f.Data)}catch(y){throw n(y,"ERR_NOT_UNIXFS")}if(r||(r=t),c.length){let e;if(e=d&&"hamt-sharded-directory"===d.type?await s(f,c[0],h):o(f,c[0]),!e)throw n(new Error("file does not exist"),"ERR_NOT_FOUND");const t=c.shift(),i=`${r}/${t}`;p={cid:e,toResolve:c,name:t,path:i}}return{entry:{name:t,path:r,cid:e,node:f,content:a[d.type](e,f,d,r,u,l,h),unixfs:d,depth:l},next:p}};e.exports=c},"505b":function(e,t,r){"use strict";e.exports={lock:"memory",storageBackends:{root:r("5eec"),blocks:r("5eec"),keys:r("5eec"),datastore:r("5eec")},storageBackendOptions:{root:{extension:"",prefix:"",version:2},blocks:{sharding:!1,prefix:"",version:2},keys:{sharding:!1,prefix:"",version:2},datastore:{sharding:!1,prefix:"",version:2}}}},"508d":function(e,t,r){var n=r("f0a0");r("5959"),r("8d3f");var i=e.exports=n.sha512=n.sha512||{};n.md.sha512=n.md.algorithms.sha512=i;var s=n.sha384=n.sha512.sha384=n.sha512.sha384||{};s.create=function(){return i.create("SHA-384")},n.md.sha384=n.md.algorithms.sha384=s,n.sha512.sha256=n.sha512.sha256||{create:function(){return i.create("SHA-512/256")}},n.md["sha512/256"]=n.md.algorithms["sha512/256"]=n.sha512.sha256,n.sha512.sha224=n.sha512.sha224||{create:function(){return i.create("SHA-512/224")}},n.md["sha512/224"]=n.md.algorithms["sha512/224"]=n.sha512.sha224,i.create=function(e){if(a||l(),"undefined"===typeof e&&(e="SHA-512"),!(e in u))throw new Error("Invalid SHA-512 algorithm: "+e);for(var t=u[e],r=null,i=n.util.createBuffer(),s=new Array(80),c=0;c<80;++c)s[c]=new Array(2);var f=64;switch(e){case"SHA-384":f=48;break;case"SHA-512/256":f=32;break;case"SHA-512/224":f=28;break}var d={algorithm:e.replace("-","").toLowerCase(),blockLength:128,digestLength:f,messageLength:0,fullMessageLength:null,messageLengthSize:16,start:function(){d.messageLength=0,d.fullMessageLength=d.messageLength128=[];for(var e=d.messageLengthSize/4,s=0;s>>0,o>>>0];for(var a=d.fullMessageLength.length-1;a>=0;--a)d.fullMessageLength[a]+=o[1],o[1]=o[0]+(d.fullMessageLength[a]/4294967296>>>0),d.fullMessageLength[a]=d.fullMessageLength[a]>>>0,o[0]=o[1]/4294967296>>>0;return i.putBytes(e),h(r,s,i),(i.read>2048||0===i.length())&&i.compact(),d},d.digest=function(){var t=n.util.createBuffer();t.putBytes(i.bytes());var a,c,u=d.fullMessageLength[d.fullMessageLength.length-1]+d.messageLengthSize,l=u&d.blockLength-1;t.putBytes(o.substr(0,d.blockLength-l));for(var f=8*d.fullMessageLength[0],p=0;p>>0,f+=c,t.putInt32(f>>>0),f=a>>>0;t.putInt32(f);var y=new Array(r.length);for(p=0;p=128){for(N=0;N<16;++N)t[N][0]=r.getInt32()>>>0,t[N][1]=r.getInt32()>>>0;for(;N<80;++N)D=t[N-2],O=D[0],P=D[1],n=((O>>>19|P<<13)^(P>>>29|O<<3)^O>>>6)>>>0,i=((O<<13|P>>>19)^(P<<3|O>>>29)^(O<<26|P>>>6))>>>0,M=t[N-15],O=M[0],P=M[1],s=((O>>>1|P<<31)^(O>>>8|P<<24)^O>>>7)>>>0,o=((O<<31|P>>>1)^(O<<24|P>>>8)^(O<<25|P>>>7))>>>0,L=t[N-7],U=t[N-16],P=i+L[1]+o+U[1],t[N][0]=n+L[0]+s+U[0]+(P/4294967296>>>0)>>>0,t[N][1]=P>>>0;for(g=e[0][0],m=e[0][1],b=e[1][0],v=e[1][1],w=e[2][0],_=e[2][1],E=e[3][0],S=e[3][1],k=e[4][0],C=e[4][1],A=e[5][0],I=e[5][1],T=e[6][0],x=e[6][1],B=e[7][0],R=e[7][1],N=0;N<80;++N)l=((k>>>14|C<<18)^(k>>>18|C<<14)^(C>>>9|k<<23))>>>0,h=((k<<18|C>>>14)^(k<<14|C>>>18)^(C<<23|k>>>9))>>>0,f=(T^k&(A^T))>>>0,d=(x^C&(I^x))>>>0,a=((g>>>28|m<<4)^(m>>>2|g<<30)^(m>>>7|g<<25))>>>0,u=((g<<4|m>>>28)^(m<<30|g>>>2)^(m<<25|g>>>7))>>>0,p=(g&b|w&(g^b))>>>0,y=(m&v|_&(m^v))>>>0,P=R+h+d+c[N][1]+t[N][1],n=B+l+f+c[N][0]+t[N][0]+(P/4294967296>>>0)>>>0,i=P>>>0,P=u+y,s=a+p+(P/4294967296>>>0)>>>0,o=P>>>0,B=T,R=x,T=A,x=I,A=k,I=C,P=S+i,k=E+n+(P/4294967296>>>0)>>>0,C=P>>>0,E=w,S=_,w=b,_=v,b=g,v=m,P=i+o,g=n+s+(P/4294967296>>>0)>>>0,m=P>>>0;P=e[0][1]+m,e[0][0]=e[0][0]+g+(P/4294967296>>>0)>>>0,e[0][1]=P>>>0,P=e[1][1]+v,e[1][0]=e[1][0]+b+(P/4294967296>>>0)>>>0,e[1][1]=P>>>0,P=e[2][1]+_,e[2][0]=e[2][0]+w+(P/4294967296>>>0)>>>0,e[2][1]=P>>>0,P=e[3][1]+S,e[3][0]=e[3][0]+E+(P/4294967296>>>0)>>>0,e[3][1]=P>>>0,P=e[4][1]+C,e[4][0]=e[4][0]+k+(P/4294967296>>>0)>>>0,e[4][1]=P>>>0,P=e[5][1]+I,e[5][0]=e[5][0]+A+(P/4294967296>>>0)>>>0,e[5][1]=P>>>0,P=e[6][1]+x,e[6][0]=e[6][0]+T+(P/4294967296>>>0)>>>0,e[6][1]=P>>>0,P=e[7][1]+R,e[7][0]=e[7][0]+B+(P/4294967296>>>0)>>>0,e[7][1]=P>>>0,j-=128}}},"50b0":function(e,t,r){"use strict";const n=r("faa1").EventEmitter,i=r("e24c").Connection,s=r("9f2e"),o=r("4bc2"),a=r("0b0f"),c=o("libp2p-mplex:muxer");function u(){}c.err=o("libp2p-mplex:muxer:error");class l extends n{constructor(e,t){super(),this.conn=e,this.multiplex=t,this.multicodec=a,t.on("close",()=>this.emit("close")),t.on("error",e=>this.emit("error",e)),t.on("stream",e=>{e.on("error",e=>{c.err("receiver stream errored",e)}),this.emit("stream",new i(e,this.conn))})}newStream(e){e=e||u;let t=this.multiplex.createStream();t.on("error",e=>{c.err("initiator stream errored",e)});const r=new i(t,this.conn);return s(e,null,r),r}end(e){if(e=e||u,this.multiplex.destroyed)return s(e);this.multiplex.once("close",e),this.multiplex.close()}}e.exports=l},"50f6":function(e,t,r){"use strict";var n=r("00d8"),i=r("da3e");function s(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}t.BlockHash=s,s.prototype.update=function(e,t){if(e=n.toArray(e,t),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){e=this.pending;var r=e.length%this._delta8;this.pending=e.slice(e.length-r,e.length),0===this.pending.length&&(this.pending=null),e=n.join32(e,0,e.length-r,this.endian);for(var i=0;i>>24&255,n[i++]=e>>>16&255,n[i++]=e>>>8&255,n[i++]=255&e}else for(n[i++]=255&e,n[i++]=e>>>8&255,n[i++]=e>>>16&255,n[i++]=e>>>24&255,n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=0,s=8;s{const t=e._modules.contentRouting||[];return e._dht&&t.unshift(e._dht),{findProviders:o((e,r,i)=>{if("function"===typeof r?(i=r,r={}):"number"===typeof r&&(r={maxTimeout:r}),!t.length)return i(s(new Error("No content routers available"),"NO_ROUTERS_AVAILABLE"));const o=t.map(t=>n=>t.findProviders(e,r,(e,t)=>e?n(e):t&&0!==Object.keys(t).length?void n(null,t):n(s(new Error("not found"),"NOT_FOUND"),null)));n(o,(e,t)=>{if(e&&"NOT_FOUND"!==e.code)return i(e);t=t||[],i(null,t)})}),provide:o((e,r)=>{if(!t.length)return r(s(new Error("No content routers available"),"NO_ROUTERS_AVAILABLE"));i(t.map(t=>r=>t.provide(e,r)),r)})}}},5118:function(e,t,r){(function(e){var n="undefined"!==typeof e&&e||"undefined"!==typeof self&&self||window,i=Function.prototype.apply;function s(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new s(i.call(setTimeout,n,arguments),clearTimeout)},t.setInterval=function(){return new s(i.call(setInterval,n,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},s.prototype.unref=s.prototype.ref=function(){},s.prototype.close=function(){this._clearFn.call(n,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout((function(){e._onTimeout&&e._onTimeout()}),t))},r("6017"),t.setImmediate="undefined"!==typeof self&&self.setImmediate||"undefined"!==typeof e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!==typeof self&&self.clearImmediate||"undefined"!==typeof e&&e.clearImmediate||this&&this.clearImmediate}).call(this,r("c8ba"))},"512f":function(e,t,r){var n=r("f0a0");r("8d3f"),e.exports=n.cipher=n.cipher||{},n.cipher.algorithms=n.cipher.algorithms||{},n.cipher.createCipher=function(e,t){var r=e;if("string"===typeof r&&(r=n.cipher.getAlgorithm(r),r&&(r=r())),!r)throw new Error("Unsupported algorithm: "+e);return new n.cipher.BlockCipher({algorithm:r,key:t,decrypt:!1})},n.cipher.createDecipher=function(e,t){var r=e;if("string"===typeof r&&(r=n.cipher.getAlgorithm(r),r&&(r=r())),!r)throw new Error("Unsupported algorithm: "+e);return new n.cipher.BlockCipher({algorithm:r,key:t,decrypt:!0})},n.cipher.registerAlgorithm=function(e,t){e=e.toUpperCase(),n.cipher.algorithms[e]=t},n.cipher.getAlgorithm=function(e){return e=e.toUpperCase(),e in n.cipher.algorithms?n.cipher.algorithms[e]:null};var i=n.cipher.BlockCipher=function(e){this.algorithm=e.algorithm,this.mode=this.algorithm.mode,this.blockSize=this.mode.blockSize,this._finish=!1,this._input=null,this.output=null,this._op=e.decrypt?this.mode.decrypt:this.mode.encrypt,this._decrypt=e.decrypt,this.algorithm.initialize(e)};i.prototype.start=function(e){e=e||{};var t={};for(var r in e)t[r]=e[r];t.decrypt=this._decrypt,this._finish=!1,this._input=n.util.createBuffer(),this.output=e.output||n.util.createBuffer(),this.mode.start(t)},i.prototype.update=function(e){e&&this._input.putBuffer(e);while(!this._op.call(this.mode,this._input,this.output,this._finish)&&!this._finish);this._input.compact()},i.prototype.finish=function(e){!e||"ECB"!==this.mode.name&&"CBC"!==this.mode.name||(this.mode.pad=function(t){return e(this.blockSize,t,!1)},this.mode.unpad=function(t){return e(this.blockSize,t,!0)});var t={};return t.decrypt=this._decrypt,t.overflow=this._input.length()%this.blockSize,!(!this._decrypt&&this.mode.pad&&!this.mode.pad(this._input,t))&&(this._finish=!0,this.update(),!(this._decrypt&&this.mode.unpad&&!this.mode.unpad(this.output,t))&&!(this.mode.afterFinish&&!this.mode.afterFinish(this.output,t)))}},"515c":function(e,t){(function(){"use strict";for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",r=new Uint8Array(256),n=0;n>2],s+=e[(3&n[r])<<4|n[r+1]>>4],s+=e[(15&n[r+1])<<2|n[r+2]>>6],s+=e[63&n[r+2]];return i%3===2?s=s.substring(0,s.length-1)+"=":i%3===1&&(s=s.substring(0,s.length-2)+"=="),s},t.decode=function(e){var t,n,i,s,o,a=.75*e.length,c=e.length,u=0;"="===e[e.length-1]&&(a--,"="===e[e.length-2]&&a--);var l=new ArrayBuffer(a),h=new Uint8Array(l);for(t=0;t>4,h[u++]=(15&i)<<4|s>>2,h[u++]=(3&s)<<6|63&o;return l}})()},"516b":function(e,t,r){"use strict";var n=r("a3b8");e.exports=function(e,t){return function(r,i){if(r)return n(i,r,t);if(null!=e){var s=e;e=null,i(null,s)}else i(!0)}}},"516c":function(e,t,r){"use strict";const n=r("80f8");e.exports=function(e){return function(t,r){return n.readable(e._refsAsyncIterator(t,r),{objectMode:!0})}}},5190:function(e,t,r){var n=r("e0c5").Buffer,i=r("d485").Transform,s=r("7d72").StringDecoder,o=r("c3bb");function a(e){i.call(this),this.hashMode="string"===typeof e,this.hashMode?this[e]=this._finalOrDigest:this.final=this._finalOrDigest,this._final&&(this.__final=this._final,this._final=null),this._decoder=null,this._encoding=null}o(a,i),a.prototype.update=function(e,t,r){"string"===typeof e&&(e=n.from(e,t));var i=this._update(e);return this.hashMode?this:(r&&(i=this._toString(i,r)),i)},a.prototype.setAutoPadding=function(){},a.prototype.getAuthTag=function(){throw new Error("trying to get auth tag in unsupported state")},a.prototype.setAuthTag=function(){throw new Error("trying to set auth tag in unsupported state")},a.prototype.setAAD=function(){throw new Error("trying to set aad in unsupported state")},a.prototype._transform=function(e,t,r){var n;try{this.hashMode?this._update(e):this.push(this._update(e))}catch(i){n=i}finally{r(n)}},a.prototype._flush=function(e){var t;try{this.push(this.__final())}catch(r){t=r}e(t)},a.prototype._finalOrDigest=function(e){var t=this.__final()||n.alloc(0);return e&&(t=this._toString(t,e,!0)),t},a.prototype._toString=function(e,t,r){if(this._decoder||(this._decoder=new s(t),this._encoding=t),this._encoding!==t)throw new Error("can't switch encodings");var n=this._decoder.write(e);return r&&(n+=this._decoder.end()),n},e.exports=a},"51a5":function(e,t,r){"use strict";const{DAGNode:n,DAGLink:i}=r("c75d"),s=r("e3d5"),o=r("4bc2")("ipfs:mfs:core:utils:remove-link"),a=r("2091e"),{generatePath:c,updateHamtDirectory:u}=r("f6e4"),l=r("7048"),h=r("0c9a"),f=r("e782"),d=async(e,t)=>{if(!t.parentCid&&!t.parent)throw l(new Error("No parent node or CID passed to removeLink"),"EINVALIDPARENT");if(t.parentCid&&!s.isCID(t.parentCid))throw l(new Error("Invalid CID passed to removeLink"),"EINVALIDPARENTCID");if(t.parent||(o(`Loading parent node ${t.parentCid}`),t.parent=await e.ipld.get(t.parentCid)),!t.name)throw l(new Error("No child name passed to removeLink"),"EINVALIDCHILDNAME");const r=a.unmarshal(t.parent.Data);return"hamt-sharded-directory"===r.type?(o(`Removing ${t.name} from sharded directory`),y(e,t)):(o(`Removing link ${t.name} regular directory`),p(e,t))},p=async(e,t)=>{const r=h[t.format.toUpperCase().replace(/-/g,"_")],n=f.names[t.hashAlg];t.parent.rmLink(t.name);const i=await e.ipld.put(t.parent,r,{cidVersion:t.cidVersion,hashAlg:n});return o(`Updated regular directory ${i}`),{node:t.parent,cid:i}},y=async(e,t)=>{const{rootBucket:r,path:n}=await c(e,t.name,t.parent);await r.del(t.name);const{node:i}=await g(e,n,{name:t.name,cid:t.cid,size:t.size,hashAlg:t.hashAlg,format:t.format,cidVersion:t.cidVersion,flush:t.flush},t);return u(e,i.Links,r,t)},g=async(e,t,r,i)=>{const{bucket:s,prefix:a,node:c}=t.pop(),h=c.Links.find(e=>e.Name.substring(0,2)===a);if(!h)throw l(new Error(`No link found with prefix ${a} for file ${r.name}`),"ERR_NOT_FOUND");if(h.Name===`${a}${r.name}`)return o(`Removing existing link ${h.Name}`),c.rmLink(h.Name),await s.del(r.name),u(e,c.Links,s,i);o(`Descending into sub-shard ${h.Name} for ${a}${r.name}`);const f=await g(e,t,r,i);let d=a;1===f.node.Links.length&&(o(`Removing subshard for ${a}`),f.cid=f.node.Links[0].Hash,f.node=f.node.Links[0],d=`${a}${f.node.Name.substring(2)}`),o(`Updating shard ${a} with name ${d}`);const p=n.isDAGNode(f.node)?f.node.size:f.node.Tsize;return m(e,s,c,a,d,p,f.cid,i)},m=(e,t,r,n,s,o,a,c)=>(r.rmLink(n),r.addLink(new i(s,o,a)),u(e,r.Links,t,c));e.exports=d},"51de":function(e,t,r){"use strict";var n=r("69b6");function i(e){return Number.isFinite(e)}function s(e){return"function"===typeof e}function o(e,t){return t?function(r,n){var i=setTimeout((function(){e(new Error("pull-reader: read exceeded timeout"),n)}),t);e(r,(function(e,t){clearTimeout(i),n(e,t)}))}:e}e.exports=function(e){var t,r,a,c,u,l=[],h=!1,f=n();function d(){while(l.length)if(null==l[0].length&&f.has(1))l.shift().cb(null,f.get());else if(f.has(l[0].length)){var e=l.shift();e.cb(null,f.get(e.length))}else if(1==a&&l[0].length&&f.length(t=t||{},n.call({concatArrays:!0},{blockService:e,formats:[i,s,o]},t))},"521b":function(e,t,r){"use strict";const n=r("e3d5"),i=r("7048"),s=async(e,t,r,s,o,a,c)=>{const u=await c.get(e);let l=u,h=r;while(s.length){const o=s[0];if(!(o in l))throw i(new Error(`No property named ${o} found in cbor node ${e.toBaseEncodedString()}`),"ERR_NO_PROP");if(s.shift(),h=`${h}/${o}`,n.isCID(l[o]))return{entry:{name:t,path:r,cid:e,node:u,depth:a},next:{cid:l[o],name:o,path:h,toResolve:s}};l=l[o]}return{entry:{name:t,path:r,cid:e,node:u,depth:a}}};e.exports=s},5252:function(e,t,r){"use strict";e.exports='// can\'t use, because protocol-buffers doesn\'t support imports\n// so we have to duplicate for now :(\n// import "record.proto";\n\nmessage Record {\n // adjusted for javascript\n optional bytes key = 1;\n optional bytes value = 2;\n optional bytes author = 3;\n optional bytes signature = 4;\n optional string timeReceived = 5;\n}\n\nmessage Message {\n enum MessageType {\n PUT_VALUE = 0;\n GET_VALUE = 1;\n ADD_PROVIDER = 2;\n GET_PROVIDERS = 3;\n FIND_NODE = 4;\n PING = 5;\n }\n\n enum ConnectionType {\n // sender does not have a connection to peer, and no extra information (default)\n NOT_CONNECTED = 0;\n\n // sender has a live connection to peer\n CONNECTED = 1;\n\n // sender recently connected to peer\n CAN_CONNECT = 2;\n\n // sender recently tried to connect to peer repeatedly but failed to connect\n // ("try" here is loose, but this should signal "made strong effort, failed")\n CANNOT_CONNECT = 3;\n }\n\n message Peer {\n // ID of a given peer.\n optional bytes id = 1;\n\n // multiaddrs for a given peer\n repeated bytes addrs = 2;\n\n // used to signal the sender\'s connection capabilities to the peer\n optional ConnectionType connection = 3;\n }\n\n // defines what type of message it is.\n optional MessageType type = 1;\n\n // defines what coral cluster level this query/response belongs to.\n // in case we want to implement coral\'s cluster rings in the future.\n optional int32 clusterLevelRaw = 10;\n\n // Used to specify the key associated with this message.\n // PUT_VALUE, GET_VALUE, ADD_PROVIDER, GET_PROVIDERS\n // adjusted for javascript\n optional bytes key = 2;\n\n // Used to return a value\n // PUT_VALUE, GET_VALUE\n // adjusted Record to bytes for js\n optional bytes record = 3;\n\n // Used to return peers closer to a key in a query\n // GET_VALUE, GET_PROVIDERS, FIND_NODE\n repeated Peer closerPeers = 8;\n\n // Used to return Providers\n // GET_VALUE, ADD_PROVIDER, GET_PROVIDERS\n repeated Peer providerPeers = 9;\n}'},"52b2":function(e,t,r){"use strict";(function(t){const n=r("3e1e"),i=r("faa1"),s=new i;function o(e,r){r.getPeerInfo((e,i)=>{if(e)return void console.log(e);const o=i.id.toB58String();n(r,n.map(r=>{let n;try{n=JSON.parse(r.toString())}catch(e){return void s.emit("warning",e.message)}if(o!==n.from)return void s.emit("warning","no peerid match "+n.from);const i=n.topicIDs;if(Array.isArray(i))return n.data=t.from(n.data,"hex"),n.seqno=t.from(n.seqno,"hex"),i.forEach(e=>{s.emit(e,n)}),n;s.emit("warning","no topic IDs")}),n.onEnd(()=>{}))})}e.exports={handler:o,emitter:s}}).call(this,r("b639").Buffer)},"52ec":function(e,t,r){"use strict";function n(e){return e}var i=r("64f1");e.exports=function(e){if(!e)return n;e=i(e);var t,r,s=!1;return function(n){return function i(o,a){if(r)return a(r);o?(r=o,n(o,s?function(e){s?t=a:a(o)}:function(e){a(o)})):n(null,(function(n,o){n?a(n):r?a(r):(s=!0,e(o,(function(e,n){s=!1,r?(a(r),t&&t(r)):e?i(e,a):a(null,n)})))}))}}}},5303:function(e,t,r){var n=r("6b4f"),i=r("9868"),s=r("cdca"),o=r("9144"),a=1/0,c=n?n.prototype:void 0,u=c?c.toString:void 0;function l(e){if("string"==typeof e)return e;if(s(e))return i(e,l)+"";if(o(e))return u?u.call(e):"";var t=e+"";return"0"==t&&1/e==-a?"-0":t}e.exports=l},5329:function(e,t,r){e.exports=r("faa1").EventEmitter},"532e":function(e,t,r){var n=r("0b22"),i=r("0c7b");function s(e){return null!=e&&i(e.length)&&!n(e)}e.exports=s},5345:function(e,t,r){"use strict";function n(e,t,r){var n,i=e instanceof Error?e:new Error(e);if("object"===typeof t?r=t:null!=t&&(i.code=t),r)for(n in r)i[n]=r[n];return i}e.exports=n},5353:function(e,t,r){(function(t){var n=r("faa1").EventEmitter,i=r("3022").inherits,s=r("53a8"),o=r("54af"),a=r("7a3d"),c=r("edbd"),u=r("4392"),l=r("f654"),h=r("5438"),f=r("0bd9").getCallback,d=r("0bd9").getOptions,p=u.WriteError,y=u.ReadError,g=u.NotFoundError,m=u.OpenError,b=u.InitializationError;function v(e,r,i){if(!(this instanceof v))return new v(e,r,i);var s;if(n.call(this),this.setMaxListeners(1/0),"function"===typeof r&&(i=r,r={}),r=r||{},!e||"object"!==typeof e){if(s=new b("First argument must be an abstract-leveldown compliant store"),"function"===typeof i)return t.nextTick(i,s);throw s}l.strictEqual(typeof e.status,"string",".status required, old abstract-leveldown"),this.options=d(r),this._db=e,this.db=new o(e),this.open(i)}function w(e,r){if(!e._isOpening()&&!e.isOpen())return t.nextTick(r,new y("Database is not open")),!0}v.prototype.emit=n.prototype.emit,v.prototype.once=n.prototype.once,i(v,n),v.prototype.open=function(e,r){var n,i=this;return"function"===typeof e&&(r=e,e=null),r||(r=h(),n=r.promise),e||(e=this.options),this.isOpen()?(t.nextTick(r,null,i),n):this._isOpening()?(this.once("open",(function(){r(null,i)})),n):(this.emit("opening"),this.db.open(e,(function(e){if(e)return r(new m(e));i.db=i._db,r(null,i),i.emit("open"),i.emit("ready")})),n)},v.prototype.close=function(e){var r,n=this;return e||(e=h(),r=e.promise),this.isOpen()?(this.db.close((function(){n.emit("closed"),e.apply(null,arguments)})),this.emit("closing"),this.db=new o(this._db)):this.isClosed()?t.nextTick(e):"closing"===this.db.status?this.once("closed",e):this._isOpening()&&this.once("open",(function(){n.close(e)})),r},v.prototype.isOpen=function(){return"open"===this.db.status},v.prototype._isOpening=function(){return"opening"===this.db.status},v.prototype.isClosed=function(){return/^clos|new/.test(this.db.status)},v.prototype.get=function(e,t,r){if(null===e||void 0===e)throw new y("get() requires a key argument");var n;return r=f(t,r),r||(r=h(),n=r.promise),w(this,r)?n:(t=d(t),this.db.get(e,t,(function(t,n){if(t)return t=/notfound/i.test(t)||t.notFound?new g("Key not found in database ["+e+"]",t):new y(t),r(t);r(null,n)})),n)},v.prototype.put=function(e,t,r,n){if(null===e||void 0===e)throw new p("put() requires a key argument");var i,s=this;return n=f(r,n),n||(n=h(),i=n.promise),w(this,n)?i:(r=d(r),this.db.put(e,t,r,(function(r){if(r)return n(new p(r));s.emit("put",e,t),n()})),i)},v.prototype.del=function(e,t,r){if(null===e||void 0===e)throw new p("del() requires a key argument");var n,i=this;return r=f(t,r),r||(r=h(),n=r.promise),w(this,r)?n:(t=d(t),this.db.del(e,t,(function(t){if(t)return r(new p(t));i.emit("del",e),r()})),n)},v.prototype.batch=function(e,t,r){if(!arguments.length)return new c(this);if(!Array.isArray(e))throw new p("batch() requires an array argument");var n,i=this;return r=f(t,r),r||(r=h(),n=r.promise),w(this,r)?n:(t=d(t),this.db.batch(e,t,(function(t){if(t)return r(new p(t));i.emit("batch",e),r()})),n)},v.prototype.iterator=function(e){return this.db.iterator(e)},v.prototype.readStream=v.prototype.createReadStream=function(e){return e=s({keys:!0,values:!0},e),"number"!==typeof e.limit&&(e.limit=-1),new a(this.db.iterator(e),e)},v.prototype.keyStream=v.prototype.createKeyStream=function(e){return this.createReadStream(s(e,{keys:!0,values:!1}))},v.prototype.valueStream=v.prototype.createValueStream=function(e){return this.createReadStream(s(e,{keys:!1,values:!0}))},v.prototype.toString=function(){return"LevelUP"},v.errors=u,e.exports=v.default=v}).call(this,r("4362"))},5380:function(e){e.exports=JSON.parse('{"COMPRESSED_TYPE_INVALID":"compressed should be a boolean","EC_PRIVATE_KEY_TYPE_INVALID":"private key should be a Buffer","EC_PRIVATE_KEY_LENGTH_INVALID":"private key length is invalid","EC_PRIVATE_KEY_RANGE_INVALID":"private key range is invalid","EC_PRIVATE_KEY_TWEAK_ADD_FAIL":"tweak out of range or resulting private key is invalid","EC_PRIVATE_KEY_TWEAK_MUL_FAIL":"tweak out of range","EC_PRIVATE_KEY_EXPORT_DER_FAIL":"couldn\'t export to DER format","EC_PRIVATE_KEY_IMPORT_DER_FAIL":"couldn\'t import from DER format","EC_PUBLIC_KEYS_TYPE_INVALID":"public keys should be an Array","EC_PUBLIC_KEYS_LENGTH_INVALID":"public keys Array should have at least 1 element","EC_PUBLIC_KEY_TYPE_INVALID":"public key should be a Buffer","EC_PUBLIC_KEY_LENGTH_INVALID":"public key length is invalid","EC_PUBLIC_KEY_PARSE_FAIL":"the public key could not be parsed or is invalid","EC_PUBLIC_KEY_CREATE_FAIL":"private was invalid, try again","EC_PUBLIC_KEY_TWEAK_ADD_FAIL":"tweak out of range or resulting public key is invalid","EC_PUBLIC_KEY_TWEAK_MUL_FAIL":"tweak out of range","EC_PUBLIC_KEY_COMBINE_FAIL":"the sum of the public keys is not valid","ECDH_FAIL":"scalar was invalid (zero or overflow)","ECDSA_SIGNATURE_TYPE_INVALID":"signature should be a Buffer","ECDSA_SIGNATURE_LENGTH_INVALID":"signature length is invalid","ECDSA_SIGNATURE_PARSE_FAIL":"couldn\'t parse signature","ECDSA_SIGNATURE_PARSE_DER_FAIL":"couldn\'t parse DER signature","ECDSA_SIGNATURE_SERIALIZE_DER_FAIL":"couldn\'t serialize signature to DER format","ECDSA_SIGN_FAIL":"nonce generation function failed or private key is invalid","ECDSA_RECOVER_FAIL":"couldn\'t recover public key from signature","MSG32_TYPE_INVALID":"message should be a Buffer","MSG32_LENGTH_INVALID":"message length is invalid","OPTIONS_TYPE_INVALID":"options should be an Object","OPTIONS_DATA_TYPE_INVALID":"options.data should be a Buffer","OPTIONS_DATA_LENGTH_INVALID":"options.data length is invalid","OPTIONS_NONCEFN_TYPE_INVALID":"options.noncefn should be a Function","RECOVERY_ID_TYPE_INVALID":"recovery should be a Number","RECOVERY_ID_VALUE_INVALID":"recovery should have value between -1 and 4","TWEAK_TYPE_INVALID":"tweak should be a Buffer","TWEAK_LENGTH_INVALID":"tweak length is invalid"}')},"53a4":function(e,t,r){"use strict";const n=r("4a0d"),i=r("c59f"),s=r("4bc2"),o=s("libp2p:switch:transport"),a=r("8b4d"),{DIAL_TIMEOUT:c}=r("0d8d"),{uniqueBy:u}=r("82a9"),l=8;class h{constructor(e){this.switch=e,this.dialer=new a(l,this.switch._options.dialTimeout||c)}add(e,t){if(o("adding %s",e),this.switch.transports[e])throw new Error("There is already a transport with this key");this.switch.transports[e]=t,this.switch.transports[e].listeners||(this.switch.transports[e].listeners=[])}remove(e,t){if(t=t||function(){},!this.switch.transports[e])return t();this.close(e,r=>{delete this.switch.transports[e],t(r)})}removeAll(e){const t=Object.keys(this.switch.transports).map(e=>t=>{this.remove(e,t)});n(t,e)}dial(e,t,r){const n=this.switch.transports[e];let i=t.multiaddrs.toArray();Array.isArray(i)||(i=[i]),i=h.dialables(n,i,this.switch._peerInfo),o("dialing %s",e,i.map(e=>e.toString())),this.dialer.dialMany(t.id,n,i,(e,n)=>{if(e)return r(e);t.connect(n.multiaddr),r(null,n.conn)})}listen(e,t,r,s){r=this.switch._connectionHandler(e,r);const o=this.switch.transports[e];let a=this.switch._peerInfo.multiaddrs.toArray();a=u(a,e=>{const t=Number(e.toOptions().port);return isNaN(t)||0===t?e.toString():t});const c=h.dialables(o,a);o.listeners||(o.listeners=[]);let l=[];const f=c.map(e=>t=>{const n=i(t),s=o.createListener(r);s.once("error",n),s.listen(e,e=>{if(e)return n(e);s.removeListener("error",n),s.getAddrs((e,t)=>{if(e)return n(e);l=l.concat(t),o.listeners.push(s),n()})})});n(f,e=>{if(e)return s(e);this.switch._peerInfo.multiaddrs.replace(c,l),s()})}close(e,t){const r=this.switch.transports[e];if(!r)return t(new Error(`Trying to close non existing transport: ${e}`));n(r.listeners.map(e=>t=>{e.close(t)}),t)}static dialables(e,t,r){if(!e||!e.filter)return[];const n=e.filter(t);if(!r||!n.length)return n;const i=f(r),s=n.filter(e=>!i.some(t=>p(e).startsWith(t)));return s}}function f(e){const t=e.id.toB58String();return e.multiaddrs.toArray().reduce((e,r)=>{const n=r.getPeerId();r=r.toString();const i=n?r.slice(0,r.lastIndexOf(`/ipfs/${n}`)):`${r}/ipfs/${t}`;return e.concat([r,i])},[]).filter(e=>Boolean(e)).concat(`/ipfs/${t}`)}const d=["p2p-circuit","p2p-websocket-star","p2p-webrtc-star","p2p-stardust"];function p(e){const t=e.protoNames().reverse(),r=t.find(e=>d.includes(e));return e=e.toString(),r?e.slice(e.lastIndexOf(r)+r.length):e}e.exports=h},"53b2":function(e,t,r){"use strict";(function(t){var n=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};e.exports=u;var i=r("2bff"),s=r("b7eb");r("c3bb")(u,i);for(var o=n(s.prototype),a=0;a4||!a||"sha1"===a))return"string"!==typeof a&&(a="sha1"),e=t.from(e,"binary"),r=t.from(r,"binary"),c?4===i.pbkdf2Sync.length?i.pbkdf2(e,r,s,o,(function(e,t){if(e)return c(e);c(null,t.toString("binary"))})):i.pbkdf2(e,r,s,o,a,(function(e,t){if(e)return c(e);c(null,t.toString("binary"))})):4===i.pbkdf2Sync.length?i.pbkdf2Sync(e,r,s,o).toString("binary"):i.pbkdf2Sync(e,r,s,o,a).toString("binary");if("undefined"!==typeof a&&null!==a||(a="sha1"),"string"===typeof a){if(!(a in n.md.algorithms))throw new Error("Unknown hash algorithm: "+a);a=n.md[a].create()}var u=a.digestLength;if(o>4294967295*u){var l=new Error("Derived key is too long.");if(c)return c(l);throw l}var h=Math.ceil(o/u),f=o-(h-1)*u,d=n.hmac.create();d.start(a,e);var p,y,g,m="";if(!c){for(var b=1;b<=h;++b){d.start(null,null),d.update(r),d.update(n.util.int32ToBytes(b)),p=g=d.digest().getBytes();for(var v=2;v<=s;++v)d.start(null,null),d.update(g),y=d.digest().getBytes(),p=n.util.xorBytes(p,y,u),g=y;m+=bh)return c(null,m);d.start(null,null),d.update(r),d.update(n.util.int32ToBytes(b)),p=g=d.digest().getBytes(),v=2,_()}function _(){if(v<=s)return d.start(null,null),d.update(g),y=d.digest().getBytes(),p=n.util.xorBytes(p,y,u),g=y,++v,n.util.setImmediate(_);m+=b2&&void 0!==arguments[2]?arguments[2]:{};return(0,a["default"])(this,t),n=(0,u["default"])(this,(0,l["default"])(t).call(this)),n._name=e,n._spaceName=e.split(".")[2],n._room=y(i,e),n._ipfs=i,n._peerId=i._peerInfo.id.toB58String(),n._members={},n._backlog=new Set,n._backlogLimit=c.ghostBacklogLimit||g,n._filters=c.ghostFilters||[],n._room.on("message",function(){var e=(0,o["default"])(s["default"].mark((function e(t){var r,i,o,a,c,u;return s["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(r=t.from,i=t.data,!i.toString().startsWith("{")){e.next=7;break}if(o=JSON.parse(i),"request_backlog"===o.type||"backlog_response"===o.type){e.next=5;break}return e.abrupt("return");case 5:e.next=12;break;case 7:return e.next=9,n._verifyData(i);case 9:c=e.sent,o=c.payload,a=c.issuer;case 12:if(u=n._filters.reduce((function(e,t){return e&&t(o,a,r)}),!0),!o||!u){e.next=25;break}e.t0=o.type,e.next="join"===e.t0?17:"request_backlog"===e.t0?19:"backlog_response"===e.t0?21:24;break;case 17:return n._userJoined(a,r),e.abrupt("break",25);case 19:return n.getPosts(n._backlogLimit).then((function(e){return n._sendDirect({type:"backlog_response",message:e},r,!0)})),e.abrupt("break",25);case 21:return o.message.map((function(e){n._backlog.add(JSON.stringify(e))})),n.emit("backlog-received",{type:"backlog",author:a,message:o.message,timestamp:o.iat}),e.abrupt("break",25);case 24:n._messageReceived(o);case 25:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()),n._room.on("peer joined",(function(e){n._announce(e),n._requestBacklog(e)})),n._room.on("peer left",(function(e){return n._userLeft(e)})),n}return(0,h["default"])(t,e),(0,c["default"])(t,[{key:"_set3id",value:function(e){var t=this;this._3id=e,this.listMembers().then((function(e){t._room.getPeers().map((function(e){t._announce(e)}))}))}},{key:"listMembers",value:function(){var e=(0,o["default"])(s["default"].mark((function e(){return s["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.abrupt("return",Object.keys(this._members).filter((function(e){return!e.startsWith("Qm")})));case 1:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"_threeIdToPeerId",value:function(e){return this._members[e]}},{key:"getPosts",value:function(){var e=(0,o["default"])(s["default"].mark((function e(){var t,r,n=arguments;return s["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:return t=n.length>0&&void 0!==n[0]?n[0]:0,r=(0,i["default"])(this._backlog).map((function(e){return JSON.parse(e)})).sort((function(e,t){return e.timestamp-t.timestamp})).slice(-t),e.abrupt("return",r);case 3:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"_announce",value:function(){var e=(0,o["default"])(s["default"].mark((function e(t){return s["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(!this._3id){e.next=8;break}if(t){e.next=6;break}return e.next=4,this._broadcast({type:"join"});case 4:e.next=8;break;case 6:return e.next=8,this._sendDirect({type:"join"},t);case 8:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"post",value:function(){var e=(0,o["default"])(s["default"].mark((function e(t,r){return s["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(r){e.next=5;break}return e.next=3,this._broadcast({type:"chat",message:t});case 3:e.next=7;break;case 5:return e.next=7,this._sendDirect({type:"chat",message:t},r);case 7:case"end":return e.stop()}}),e,this)})));function t(t,r){return e.apply(this,arguments)}return t}()},{key:"deletePost",value:function(){var e=(0,o["default"])(s["default"].mark((function e(t){return s["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:throw new Error("Not possible to delete post in Ghost Thread");case 1:case"end":return e.stop()}}),e)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"addModerator",value:function(){var e=(0,o["default"])(s["default"].mark((function e(t){return s["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:throw new Error("Not possible to add moderator in Ghost Thread");case 1:case"end":return e.stop()}}),e)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"listModerators",value:function(){var e=(0,o["default"])(s["default"].mark((function e(){return s["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:throw new Error("Not possible to list moderators in Ghost Thread");case 1:case"end":return e.stop()}}),e)})));function t(){return e.apply(this,arguments)}return t}()},{key:"addMember",value:function(){var e=(0,o["default"])(s["default"].mark((function e(t){return s["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:throw new Error("Not possible to add member in Ghost Thread");case 1:case"end":return e.stop()}}),e)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"_requestBacklog",value:function(){var e=(0,o["default"])(s["default"].mark((function e(t){return s["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(t){e.next=5;break}return e.next=3,this._broadcast({type:"request_backlog"});case 3:e.next=7;break;case 5:return e.next=7,this._sendDirect({type:"request_backlog"},t,!0);case 7:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"close",value:function(){var e=(0,o["default"])(s["default"].mark((function e(){return s["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this._room.leave();case 2:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"_broadcast",value:function(){var e=(0,o["default"])(s["default"].mark((function e(t,r){var n;return s["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(this._3id||r){e.next=2;break}throw new Error("Can not send message if not authenticated");case 2:if(!r){e.next=6;break}e.t0=JSON.stringify(t),e.next=9;break;case 6:return e.next=8,this._3id.signJWT(t);case 8:e.t0=e.sent;case 9:n=e.t0,this._room.broadcast(n);case 11:case"end":return e.stop()}}),e,this)})));function t(t,r){return e.apply(this,arguments)}return t}()},{key:"_sendDirect",value:function(){var e=(0,o["default"])(s["default"].mark((function e(t,r,n){var i;return s["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(this._3id||n){e.next=2;break}throw new Error("Can not send message if not authenticated");case 2:if(!n){e.next=6;break}e.t0=JSON.stringify(t),e.next=9;break;case 6:return e.next=8,this._3id.signJWT(t);case 8:e.t0=e.sent;case 9:i=e.t0,r.startsWith("Qm")?this._room.sendTo(r,i):this._room.sendTo(this._threeIdToPeerId(r),i);case 11:case"end":return e.stop()}}),e,this)})));function t(t,r,n){return e.apply(this,arguments)}return t}()},{key:"onUpdate",value:function(e){this.removeAllListeners("message"),this.removeAllListeners("backlog-received"),this.on("message",e),this.on("backlog-received",e)}},{key:"onNewCapabilities",value:function(e){this.removeAllListeners("user-joined"),this.removeAllListeners("user-left"),this.on("user-joined",e),this.on("user-left",e)}},{key:"_userJoined",value:function(){var e=(0,o["default"])(s["default"].mark((function e(t,r){var n;return s["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.listMembers();case 2:n=e.sent,n.includes(t)||this._3id&&this._3id.DID===t||(this._members[t]=r,this._members[r]=t,this.emit("user-joined","joined",t,r));case 4:case"end":return e.stop()}}),e,this)})));function t(t,r){return e.apply(this,arguments)}return t}()},{key:"_userLeft",value:function(){var e=(0,o["default"])(s["default"].mark((function e(t){var r;return s["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:r=this._members[t],delete this._members[r],delete this._members[t],this.emit("user-left","left",r,t);case 4:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"_messageReceived",value:function(){var e=(0,o["default"])(s["default"].mark((function e(t){var r,n,i,o,a;return s["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:r=t.type,n=t.message,i=t.iss,o=t.iat,a=t.postId,this._backlog.add(JSON.stringify({type:r,author:i,message:n,timestamp:o,postId:a})),this.emit("message",{type:r,author:i,message:n,timestamp:o,postId:a});case 3:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"_verifyData",value:function(){var e=(0,o["default"])(s["default"].mark((function e(t){var r,n,i;return s["default"].wrap((function(e){while(1)switch(e.prev=e.next){case 0:return r=t.toString(),n=this._ipfs.dag.put(r),e.prev=2,e.next=5,p(r);case 5:return i=e.sent,e.next=8,n;case 8:return i.payload.postId=e.sent.toString(),e.abrupt("return",i);case 12:e.prev=12,e.t0=e["catch"](2),console.log(e.t0);case 15:case"end":return e.stop()}}),e,this,[[2,12]])})));function t(t){return e.apply(this,arguments)}return t}()},{key:"isGhost",get:function(){return!0}}]),t}(f);e.exports=m},"53d3":function(e,t,r){"use strict";(function(t){"undefined"!==typeof self?e.exports=self:"undefined"!==typeof window?e.exports=window:e.exports="undefined"!==typeof t?t:Function("return this")()}).call(this,r("c8ba"))},"53e9":function(e,t,r){t.AbstractLevelDOWN=r("2776"),t.AbstractIterator=r("f7ae"),t.AbstractChainedBatch=r("d7a8")},"540c":function(e,t,r){"use strict";const n=r("1421");function i(e){return n.isMultiaddr(e)?e:n(e)}e.exports={ensureMultiaddr:i}},5425:function(e,t,r){t.AbstractLevelDOWN=r("7ca2"),t.AbstractIterator=r("7e11"),t.AbstractChainedBatch=r("e7aa")},5438:function(e,t){function r(){var e,t=new Promise((function(t,r){e=function(e,n){e?r(e):t(n)}}));return e.promise=t,e}e.exports=r},"545b":function(e,t,r){"use strict";const n=r("df7c"),i=r("3c43"),s=r("021d");t.filter=(e,t)=>async function*(){for await(const r of e){const e=await t(r);e&&(yield r)}}(),t.sortAll=(e,t)=>async function*(){let r=[];for await(const t of e)r.push(t);r=await t(r);for(const e of r)yield e}(),t.take=(e,t)=>async function*(){if(t<=0)return;let r=0;for await(const n of e)if(yield n,r++,r>=t)return}(),t.map=(e,t)=>async function*(){for await(const r of e)yield t(r)}(),t.replaceStartWith=function(e,t){const r=new RegExp("^"+t);return e.replace(r,"")},t.tmpdir=()=>n.join(i.tmpdir(),s())},"549e":function(e,t,r){"use strict";r.r(t);var n=r("ffb2");const i="bytes/5.0.0-beta.136";r.d(t,"isBytesLike",(function(){return c})),r.d(t,"isBytes",(function(){return u})),r.d(t,"arrayify",(function(){return l})),r.d(t,"concat",(function(){return h})),r.d(t,"stripZeros",(function(){return f})),r.d(t,"zeroPad",(function(){return d})),r.d(t,"isHexString",(function(){return p})),r.d(t,"hexlify",(function(){return g})),r.d(t,"hexDataLength",(function(){return m})),r.d(t,"hexDataSlice",(function(){return b})),r.d(t,"hexConcat",(function(){return v})),r.d(t,"hexValue",(function(){return w})),r.d(t,"hexStripZeros",(function(){return _})),r.d(t,"hexZeroPad",(function(){return E})),r.d(t,"splitSignature",(function(){return S})),r.d(t,"joinSignature",(function(){return k}));const s=new n["Logger"](i);function o(e){return!!e.toHexString}function a(e){return e.slice?e:(e.slice=function(){const t=Array.prototype.slice.call(arguments);return a(new Uint8Array(Array.prototype.slice.apply(e,t)))},e)}function c(e){return p(e)&&!(e.length%2)||u(e)}function u(e){if(null==e)return!1;if(e.constructor===Uint8Array)return!0;if("string"===typeof e)return!1;if(null==e.length)return!1;for(let t=0;t=256||r%1)return!1}return!0}function l(e,t){if(t||(t={}),"number"===typeof e){s.checkSafeUint53(e,"invalid arrayify value");const t=[];while(e)t.unshift(255&e),e/=256;return 0===t.length&&t.push(0),a(new Uint8Array(t))}if(t.allowMissingPrefix&&"string"===typeof e&&"0x"!==e.substring(0,2)&&(e="0x"+e),o(e)&&(e=e.toHexString()),p(e)){let r=e.substring(2);r.length%2&&("left"===t.hexPad?r="0x0"+r.substring(2):"right"===t.hexPad?r+="0":s.throwArgumentError("hex data is odd-length","value",e));const n=[];for(let e=0;el(e)),r=t.reduce((e,t)=>e+t.length,0),n=new Uint8Array(r);return t.reduce((e,t)=>(n.set(t,e),e+t.length),0),a(n)}function f(e){let t=l(e);if(0===t.length)return t;let r=0;while(rt&&s.throwArgumentError("value out of range","value",arguments[0]);const r=new Uint8Array(t);return r.set(e,t-e.length),a(r)}function p(e,t){return!("string"!==typeof e||!e.match(/^0x[0-9A-Fa-f]*$/))&&(!t||e.length===2+2*t)}const y="0123456789abcdef";function g(e,t){if(t||(t={}),"number"===typeof e){s.checkSafeUint53(e,"invalid hexlify value");let t="";while(e)t=y[15&e]+t,e=Math.floor(e/16);return t.length?(t.length%2&&(t="0"+t),"0x"+t):"0x00"}if(t.allowMissingPrefix&&"string"===typeof e&&"0x"!==e.substring(0,2)&&(e="0x"+e),o(e))return e.toHexString();if(p(e))return e.length%2&&("left"===t.hexPad?e="0x0"+e.substring(2):"right"===t.hexPad?e+="0":s.throwArgumentError("hex data is odd-length","value",e)),e.toLowerCase();if(u(e)){let t="0x";for(let r=0;r>4]+y[15&n]}return t}return s.throwArgumentError("invalid hexlify value","value",e)}function m(e){if("string"!==typeof e)e=g(e);else if(!p(e)||e.length%2)return null;return(e.length-2)/2}function b(e,t,r){return"string"!==typeof e?e=g(e):(!p(e)||e.length%2)&&s.throwArgumentError("invalid hexData","value",e),t=2+2*t,null!=r?"0x"+e.substring(t,2+2*r):"0x"+e.substring(t)}function v(e){let t="0x";return e.forEach(e=>{t+=g(e).substring(2)}),t}function w(e){const t=_(g(e,{hexPad:"left"}));return"0x"===t?"0x0":t}function _(e){"string"!==typeof e&&(e=g(e)),p(e)||s.throwArgumentError("invalid hex string","value",e),e=e.substring(2);let t=0;while(t2*t+2&&s.throwArgumentError("value out of range","value",arguments[1]);while(e.length<2*t+2)e="0x0"+e.substring(2);return e}function S(e){const t={r:"0x",s:"0x",_vs:"0x",recoveryParam:0,v:0};if(c(e)){const r=l(e);65!==r.length&&s.throwArgumentError("invalid signature string; must be 65 bytes","signature",e),t.r=g(r.slice(0,32)),t.s=g(r.slice(32,64)),t.v=r[64],t.recoveryParam=1-t.v%2,t.v<27&&(0===t.v||1===t.v?t.v+=27:s.throwArgumentError("signature invalid v byte","signature",e)),t.recoveryParam&&(r[32]|=128),t._vs=g(r.slice(32,64))}else{if(t.r=e.r,t.s=e.s,t.v=e.v,t.recoveryParam=e.recoveryParam,t._vs=e._vs,null!=t._vs){const r=d(l(t._vs),32);t._vs=g(r);const n=r[0]>=128?1:0;null==t.recoveryParam?t.recoveryParam=n:t.recoveryParam!==n&&s.throwArgumentError("signature recoveryParam mismatch _vs","signature",e),r[0]&=127;const i=g(r);null==t.s?t.s=i:t.s!==i&&s.throwArgumentError("signature v mismatch _vs","signature",e)}null==t.recoveryParam?null==t.v?s.throwArgumentError("signature missing v and recoveryParam","signature",e):t.recoveryParam=1-t.v%2:null==t.v?t.v=27+t.recoveryParam:t.recoveryParam!==1-t.v%2&&s.throwArgumentError("signature recoveryParam mismatch v","signature",e),null!=t.r&&p(t.r)?t.r=E(t.r,32):s.throwArgumentError("signature missing or invalid r","signature",e),null!=t.s&&p(t.s)?t.s=E(t.s,32):s.throwArgumentError("signature missing or invalid s","signature",e);const r=l(t.s);r[0]>=128&&s.throwArgumentError("signature s out of range","signature",e),t.recoveryParam&&(r[0]|=128);const n=g(r);t._vs&&(p(t._vs)||s.throwArgumentError("signature invalid _vs","signature",e),t._vs=E(t._vs,32)),null==t._vs?t._vs=n:t._vs!==n&&s.throwArgumentError("signature _vs mismatch v and s","signature",e)}return t}function k(e){return e=S(e),g(h([e.r,e.s,e.recoveryParam?"0x1c":"0x1b"]))}},"54af":function(e,t,r){var n=r("5425").AbstractLevelDOWN,i=r("3fb5"),s=r("f0a01"),o="put get del batch".split(" ");function a(e){n.call(this,""),this._db=e,this._operations=[],this._iterators=[],u(this)}function c(e){o.concat("iterator").forEach((function(t){e["_"+t]=function(){return this._db[t].apply(this._db,arguments)}})),e._db.approximateSize&&(e.approximateSize=function(){return this._db.approximateSize.apply(this._db,arguments)})}function u(e){o.forEach((function(t){e["_"+t]=function(){this._operations.push({method:t,args:arguments})}})),"function"===typeof e._db.approximateSize&&(e.approximateSize=function(){this._operations.push({method:"approximateSize",args:arguments})}),e._iterator=function(e){var t=new s(e);return this._iterators.push(t),t}}i(a,n),a.prototype._open=function(e,t){var r=this;this._db.open(e,(function(e){if(e)return t(e);r._operations.forEach((function(e){r._db[e.method].apply(r._db,e.args)})),r._operations=[],r._iterators.forEach((function(e){e.setDb(r._db)})),r._iterators=[],c(r),t()}))},a.prototype._close=function(e){var t=this;this._db.close((function(r){if(r)return e(r);u(t),e()}))},a.prototype._serializeKey=function(e){return e},a.prototype._serializeValue=function(e){return e},e.exports=a,e.exports.DeferredIterator=s},"54bc":function(e,t,r){var n=r("8284"),i=Array.prototype,s=i.splice;function o(e){var t=this.__data__,r=n(t,e);if(r<0)return!1;var i=t.length-1;return r==i?t.pop():s.call(t,r,1),--this.size,!0}e.exports=o},"54fb":function(e,t,r){var n=r("0cb2"),i=536870911,s=["int32","int64","uint32","uint64","sint32","sint64","bool","fixed64","sfixed64","double","fixed32","sfixed32","float"],o=function(e){var t={};while(e.length)switch(e[0]){case"[":case",":e.shift();var r=e.shift();if("("===r&&(r=e.shift(),e.shift()),"="!==e[0])throw new Error("Unexpected token in field options: "+e[0]);if(e.shift(),"]"===e[0])throw new Error("Unexpected ] in field option");t[r]=e.shift();break;case"]":return e.shift(),t;default:throw new Error("Unexpected token in field options: "+e[0])}throw new Error("No closing tag for field options")},a=function(e){var t={name:null,type:null,tag:-1,map:null,oneof:null,required:!1,repeated:!1,options:{}};while(e.length)switch(e[0]){case"=":e.shift(),t.tag=Number(e.shift());break;case"map":if(t.type="map",t.map={from:null,to:null},e.shift(),"<"!==e[0])throw new Error("Unexpected token in map type: "+e[0]);if(e.shift(),t.map.from=e.shift(),","!==e[0])throw new Error("Unexpected token in map type: "+e[0]);if(e.shift(),t.map.to=e.shift(),">"!==e[0])throw new Error("Unexpected token in map type: "+e[0]);e.shift(),t.name=e.shift();break;case"repeated":case"required":case"optional":var r=e.shift();t.required="required"===r,t.repeated="repeated"===r,t.type=e.shift(),t.name=e.shift();break;case"[":t.options=o(e);break;case";":if(null===t.name)throw new Error("Missing field name");if(null===t.type)throw new Error("Missing type in message field: "+t.name);if(-1===t.tag)throw new Error("Missing tag number in message field: "+t.name);return e.shift(),t;default:throw new Error("Unexpected token in message field: "+e[0])}throw new Error("No ; found for message field")},c=function(e){var t={enums:[],messages:[],fields:[],extends:[],extensions:null};while(e.length)switch(e[0]){case"map":case"repeated":case"optional":case"required":t.fields.push(a(e));break;case"enum":t.enums.push(y(e));break;case"message":t.messages.push(h(e));break;case"extensions":t.extensions=l(e);break;case"oneof":e.shift();var r=e.shift();if("{"!==e[0])throw new Error("Unexpected token in oneof: "+e[0]);e.shift();while("}"!==e[0]){e.unshift("optional");var n=a(e);n.oneof=r,t.fields.push(n)}e.shift();break;case"extend":t.extends.push(u(e));break;case";":e.shift();break;case"reserved":case"option":e.shift();while(";"!==e[0])e.shift();break;default:e.unshift("optional"),t.fields.push(a(e))}return t},u=function(e){var t={name:e[1],message:h(e)};return t},l=function(e){e.shift();var t=Number(e.shift());if(isNaN(t))throw new Error("Invalid from in extensions definition");if("to"!==e.shift())throw new Error("Expected keyword 'to' in extensions definition");var r=e.shift();if("max"===r&&(r=i),r=Number(r),isNaN(r))throw new Error("Invalid to in extensions definition");if(";"!==e.shift())throw new Error("Missing ; in extensions definition");return{from:t,to:r}},h=function(e){e.shift();var t=1,r=[],n={name:e.shift(),enums:[],extends:[],messages:[],fields:[]};if("{"!==e[0])throw new Error("Expected { but found "+e[0]);e.shift();while(e.length){if("{"===e[0]?t++:"}"===e[0]&&t--,!t)return e.shift(),r=c(r),n.enums=r.enums,n.messages=r.messages,n.fields=r.fields,n.extends=r.extends,n.extensions=r.extensions,n;r.push(e.shift())}if(t)throw new Error("No closing tag for message")},f=function(e){e.shift();var t=e.shift();if(";"!==e[0])throw new Error("Expected ; but found "+e[0]);return e.shift(),t},d=function(e){if(e.shift(),"="!==e[0])throw new Error("Expected = but found "+e[0]);e.shift();var t=e.shift();switch(t){case'"proto2"':t=2;break;case'"proto3"':t=3;break;default:throw new Error("Expected protobuf syntax version but found "+t)}if(";"!==e[0])throw new Error("Expected ; but found "+e[0]);return e.shift(),t},p=function(e){if(e.length<4)throw new Error("Invalid enum value: "+e.slice(0,3).join(" "));if("="!==e[1])throw new Error("Expected = but found "+e[1]);if(";"!==e[3]&&"["!==e[3])throw new Error("Expected ; or [ but found "+e[1]);var t=e.shift();e.shift();var r={value:null,options:{}};return r.value=Number(e.shift()),"["===e[0]&&(r.options=o(e)),e.shift(),{name:t,val:r}},y=function(e){e.shift();var t={},r={name:e.shift(),values:{},options:{}};if("{"!==e[0])throw new Error("Expected { but found "+e[0]);e.shift();while(e.length){if("}"===e[0])return e.shift(),";"===e[0]&&e.shift(),r;if("option"!==e[0]){var n=p(e);r.values[n.name]=n.val}else t=g(e),r.options[t.name]=t.value}throw new Error("No closing tag for enum")},g=function(e){var t=null,r=null,n=function(e){return"true"===e||"false"!==e&&e.replace(/^"+|"+$/gm,"")};while(e.length){if(";"===e[0])return e.shift(),{name:t,value:r};switch(e[0]){case"option":e.shift();var i="("===e[0];if(i&&e.shift(),t=e.shift(),i){if(")"!==e[0])throw new Error("Expected ) but found "+e[0]);e.shift()}"."===e[0][0]&&(t+=e.shift());break;case"=":if(e.shift(),null===t)throw new Error("Expected key for option with value: "+e[0]);if(r=n(e.shift()),"optimize_for"===t&&!/^(SPEED|CODE_SIZE|LITE_RUNTIME)$/.test(r))throw new Error("Unexpected value for option optimize_for: "+r);"{"===r&&(r=m(e));break;default:throw new Error("Unexpected token in option: "+e[0])}}},m=function(e){var t=function(e){return"true"===e||"false"!==e&&e.replace(/^"+|"+$/gm,"")},r={};while(e.length){if("}"===e[0])return e.shift(),r;var n="("===e[0];n&&e.shift();var i=e.shift();if(n){if(")"!==e[0])throw new Error("Expected ) but found "+e[0]);e.shift()}var s=null;switch(e[0]){case":":if(void 0!==r[i])throw new Error("Duplicate option map key "+i);e.shift(),s=t(e.shift()),"{"===s&&(s=m(e)),r[i]=s,";"===e[0]&&e.shift();break;case"{":if(e.shift(),s=m(e),void 0===r[i]&&(r[i]=[]),!Array.isArray(r[i]))throw new Error("Duplicate option map key "+i);r[i].push(s);break;default:throw new Error("Unexpected token in option map: "+e[0])}}throw new Error("No closing tag for option map")},b=function(e){e.shift();var t=e.shift().replace(/^"+|"+$/gm,"");if(";"!==e[0])throw new Error("Unexpected token: "+e[0]+'. Expected ";"');return e.shift(),t},v=function(e){e.shift();var t={name:e.shift(),methods:[],options:{}};if("{"!==e[0])throw new Error("Expected { but found "+e[0]);e.shift();while(e.length){if("}"===e[0])return e.shift(),";"===e[0]&&e.shift(),t;switch(e[0]){case"option":var r=g(e);if(void 0!==t.options[r.name])throw new Error("Duplicate option "+r.name);t.options[r.name]=r.value;break;case"rpc":t.methods.push(w(e));break;default:throw new Error("Unexpected token in service: "+e[0])}}throw new Error("No closing tag for service")},w=function(e){e.shift();var t={name:e.shift(),input_type:null,output_type:null,client_streaming:!1,server_streaming:!1,options:{}};if("("!==e[0])throw new Error("Expected ( but found "+e[0]);if(e.shift(),"stream"===e[0]&&(e.shift(),t.client_streaming=!0),t.input_type=e.shift(),")"!==e[0])throw new Error("Expected ) but found "+e[0]);if(e.shift(),"returns"!==e[0])throw new Error("Expected returns but found "+e[0]);if(e.shift(),"("!==e[0])throw new Error("Expected ( but found "+e[0]);if(e.shift(),"stream"===e[0]&&(e.shift(),t.server_streaming=!0),t.output_type=e.shift(),")"!==e[0])throw new Error("Expected ) but found "+e[0]);if(e.shift(),";"===e[0])return e.shift(),t;if("{"!==e[0])throw new Error("Expected { but found "+e[0]);e.shift();while(e.length){if("}"===e[0])return e.shift(),";"===e[0]&&e.shift(),t;if("option"!==e[0])throw new Error("Unexpected token in rpc options: "+e[0]);var r=g(e);if(void 0!==t.options[r.name])throw new Error("Duplicate option "+r.name);t.options[r.name]=r.value}throw new Error("No closing tag for rpc")},_=function(e){for(var t=n(e.toString()),r=0;rt.extensions.to)throw new Error(t.name+" does not declare "+e.tag+" as an extension number");t.fields.push(e)}))}))})),o.messages.forEach((function(e){e.fields.forEach((function(t){var r,n,i,a;function c(e){return e.name===t.type}function u(e){return e.name===i}if(t.options&&"true"===t.options.packed&&-1===s.indexOf(t.type)){if(-1===t.type.indexOf(".")){if(e.enums&&e.enums.some(c))return}else{if(r=t.type.split("."),r.length>2)throw new Error("what is this?");if(n=r[0],i=r[1],o.messages.some((function(e){if(e.name===n)return a=e,e})),a&&a.enums&&a.enums.some(u))return}throw new Error("Fields of type "+t.type+' cannot be declared [packed=true]. Only repeated fields of primitive numeric types (types which use the varint, 32-bit, or 64-bit wire types) can be declared "packed". See https://developers.google.com/protocol-buffers/docs/encoding#optional')}}))})),o};e.exports=_},"554d":function(e,t,r){var n=r("8707").Buffer;e.exports=function(e){for(var t={},r=e.length,i=e.charAt(0),s=0;s0)n.push(a%r),a=a/r|0}for(var c="",u=0;0===t[u]&&u=0;--l)c+=e[n[l]];return c}function c(e){if("string"!==typeof e)throw new TypeError("Expected String");if(0===e.length)return n.allocUnsafe(0);for(var s=[0],o=0;o>=8;while(u>0)s.push(255&u),u>>=8}for(var l=0;e[l]===i&&l_(e,d,y,p),A=e=>E(e,d,y,p);e.exports={multihash:g,multiaddr:v,peerMultiaddr:w,cid:b,base32cid:e=>"base32"===m(e)&&b(e),ipfsSubdomain:C,ipnsSubdomain:A,subdomain:e=>C(e)||A(e),subdomainPattern:d,ipfsUrl:e=>_(e,u),ipnsUrl:e=>E(e,u),url:e=>_(e,u)||E(e,u),urlPattern:u,ipfsPath:e=>_(e,l),ipnsPath:e=>E(e,l),path:e=>_(e,l)||E(e,l),pathPattern:l,urlOrPath:e=>_(e,u)||E(e,u)||_(e,l)||E(e,l),cidPath:e=>S(e)&&!b(e)&&_(`/ipfs/${e}`,l)}}).call(this,r("b639").Buffer)},"55cd":function(e,t,r){"use strict";const n=t;n.bignum=r("6e62"),n.define=r("fc4a").define,n.base=r("67e0"),n.constants=r("4223"),n.decoders=r("b43d"),n.encoders=r("19c5")},"55e1":function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=l;var n=r("96f6"),i=u(n),s=r("e4f6"),o=u(s),a=r("76bf"),c=u(a);function u(e){return e&&e.__esModule?e:{default:e}}function l(e,t,r,n){(0,i.default)(t)(e,(0,o.default)((0,c.default)(r)),n)}e.exports=t["default"]},5609:function(e,t,r){var n=r("5995");r("c882"),r("80f7"),r("84f3"),r("b3d5"),r("c81d"),r("ce05"),r("71c7"),r("b05d"),r("88cb"),r("31a0");var i=n.asn1,s=e.exports=n.pki=n.pki||{},o=s.oids,a={};a["CN"]=o["commonName"],a["commonName"]="CN",a["C"]=o["countryName"],a["countryName"]="C",a["L"]=o["localityName"],a["localityName"]="L",a["ST"]=o["stateOrProvinceName"],a["stateOrProvinceName"]="ST",a["O"]=o["organizationName"],a["organizationName"]="O",a["OU"]=o["organizationalUnitName"],a["organizationalUnitName"]="OU",a["E"]=o["emailAddress"],a["emailAddress"]="E";var c=n.pki.rsa.publicKeyValidator,u={name:"Certificate",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,value:[{name:"Certificate.TBSCertificate",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,captureAsn1:"tbsCertificate",value:[{name:"Certificate.TBSCertificate.version",tagClass:i.Class.CONTEXT_SPECIFIC,type:0,constructed:!0,optional:!0,value:[{name:"Certificate.TBSCertificate.version.integer",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"certVersion"}]},{name:"Certificate.TBSCertificate.serialNumber",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"certSerialNumber"},{name:"Certificate.TBSCertificate.signature",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,value:[{name:"Certificate.TBSCertificate.signature.algorithm",tagClass:i.Class.UNIVERSAL,type:i.Type.OID,constructed:!1,capture:"certinfoSignatureOid"},{name:"Certificate.TBSCertificate.signature.parameters",tagClass:i.Class.UNIVERSAL,optional:!0,captureAsn1:"certinfoSignatureParams"}]},{name:"Certificate.TBSCertificate.issuer",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,captureAsn1:"certIssuer"},{name:"Certificate.TBSCertificate.validity",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,value:[{name:"Certificate.TBSCertificate.validity.notBefore (utc)",tagClass:i.Class.UNIVERSAL,type:i.Type.UTCTIME,constructed:!1,optional:!0,capture:"certValidity1UTCTime"},{name:"Certificate.TBSCertificate.validity.notBefore (generalized)",tagClass:i.Class.UNIVERSAL,type:i.Type.GENERALIZEDTIME,constructed:!1,optional:!0,capture:"certValidity2GeneralizedTime"},{name:"Certificate.TBSCertificate.validity.notAfter (utc)",tagClass:i.Class.UNIVERSAL,type:i.Type.UTCTIME,constructed:!1,optional:!0,capture:"certValidity3UTCTime"},{name:"Certificate.TBSCertificate.validity.notAfter (generalized)",tagClass:i.Class.UNIVERSAL,type:i.Type.GENERALIZEDTIME,constructed:!1,optional:!0,capture:"certValidity4GeneralizedTime"}]},{name:"Certificate.TBSCertificate.subject",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,captureAsn1:"certSubject"},c,{name:"Certificate.TBSCertificate.issuerUniqueID",tagClass:i.Class.CONTEXT_SPECIFIC,type:1,constructed:!0,optional:!0,value:[{name:"Certificate.TBSCertificate.issuerUniqueID.id",tagClass:i.Class.UNIVERSAL,type:i.Type.BITSTRING,constructed:!1,captureBitStringValue:"certIssuerUniqueId"}]},{name:"Certificate.TBSCertificate.subjectUniqueID",tagClass:i.Class.CONTEXT_SPECIFIC,type:2,constructed:!0,optional:!0,value:[{name:"Certificate.TBSCertificate.subjectUniqueID.id",tagClass:i.Class.UNIVERSAL,type:i.Type.BITSTRING,constructed:!1,captureBitStringValue:"certSubjectUniqueId"}]},{name:"Certificate.TBSCertificate.extensions",tagClass:i.Class.CONTEXT_SPECIFIC,type:3,constructed:!0,captureAsn1:"certExtensions",optional:!0}]},{name:"Certificate.signatureAlgorithm",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,value:[{name:"Certificate.signatureAlgorithm.algorithm",tagClass:i.Class.UNIVERSAL,type:i.Type.OID,constructed:!1,capture:"certSignatureOid"},{name:"Certificate.TBSCertificate.signature.parameters",tagClass:i.Class.UNIVERSAL,optional:!0,captureAsn1:"certSignatureParams"}]},{name:"Certificate.signatureValue",tagClass:i.Class.UNIVERSAL,type:i.Type.BITSTRING,constructed:!1,captureBitStringValue:"certSignature"}]},l={name:"rsapss",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,value:[{name:"rsapss.hashAlgorithm",tagClass:i.Class.CONTEXT_SPECIFIC,type:0,constructed:!0,value:[{name:"rsapss.hashAlgorithm.AlgorithmIdentifier",tagClass:i.Class.UNIVERSAL,type:i.Class.SEQUENCE,constructed:!0,optional:!0,value:[{name:"rsapss.hashAlgorithm.AlgorithmIdentifier.algorithm",tagClass:i.Class.UNIVERSAL,type:i.Type.OID,constructed:!1,capture:"hashOid"}]}]},{name:"rsapss.maskGenAlgorithm",tagClass:i.Class.CONTEXT_SPECIFIC,type:1,constructed:!0,value:[{name:"rsapss.maskGenAlgorithm.AlgorithmIdentifier",tagClass:i.Class.UNIVERSAL,type:i.Class.SEQUENCE,constructed:!0,optional:!0,value:[{name:"rsapss.maskGenAlgorithm.AlgorithmIdentifier.algorithm",tagClass:i.Class.UNIVERSAL,type:i.Type.OID,constructed:!1,capture:"maskGenOid"},{name:"rsapss.maskGenAlgorithm.AlgorithmIdentifier.params",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,value:[{name:"rsapss.maskGenAlgorithm.AlgorithmIdentifier.params.algorithm",tagClass:i.Class.UNIVERSAL,type:i.Type.OID,constructed:!1,capture:"maskGenHashOid"}]}]}]},{name:"rsapss.saltLength",tagClass:i.Class.CONTEXT_SPECIFIC,type:2,optional:!0,value:[{name:"rsapss.saltLength.saltLength",tagClass:i.Class.UNIVERSAL,type:i.Class.INTEGER,constructed:!1,capture:"saltLength"}]},{name:"rsapss.trailerField",tagClass:i.Class.CONTEXT_SPECIFIC,type:3,optional:!0,value:[{name:"rsapss.trailer.trailer",tagClass:i.Class.UNIVERSAL,type:i.Class.INTEGER,constructed:!1,capture:"trailer"}]}]},h={name:"CertificationRequestInfo",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,captureAsn1:"certificationRequestInfo",value:[{name:"CertificationRequestInfo.integer",tagClass:i.Class.UNIVERSAL,type:i.Type.INTEGER,constructed:!1,capture:"certificationRequestInfoVersion"},{name:"CertificationRequestInfo.subject",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,captureAsn1:"certificationRequestInfoSubject"},c,{name:"CertificationRequestInfo.attributes",tagClass:i.Class.CONTEXT_SPECIFIC,type:0,constructed:!0,optional:!0,capture:"certificationRequestInfoAttributes",value:[{name:"CertificationRequestInfo.attributes",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,value:[{name:"CertificationRequestInfo.attributes.type",tagClass:i.Class.UNIVERSAL,type:i.Type.OID,constructed:!1},{name:"CertificationRequestInfo.attributes.value",tagClass:i.Class.UNIVERSAL,type:i.Type.SET,constructed:!0}]}]}]},f={name:"CertificationRequest",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,captureAsn1:"csr",value:[h,{name:"CertificationRequest.signatureAlgorithm",tagClass:i.Class.UNIVERSAL,type:i.Type.SEQUENCE,constructed:!0,value:[{name:"CertificationRequest.signatureAlgorithm.algorithm",tagClass:i.Class.UNIVERSAL,type:i.Type.OID,constructed:!1,capture:"csrSignatureOid"},{name:"CertificationRequest.signatureAlgorithm.parameters",tagClass:i.Class.UNIVERSAL,optional:!0,captureAsn1:"csrSignatureParams"}]},{name:"CertificationRequest.signature",tagClass:i.Class.UNIVERSAL,type:i.Type.BITSTRING,constructed:!1,captureBitStringValue:"csrSignature"}]};function d(e,t){"string"===typeof t&&(t={shortName:t});for(var r,n=null,i=0;null===n&&i128)throw new Error('Invalid "nsComment" content.');e.value=i.create(i.Class.UNIVERSAL,i.Type.IA5STRING,!1,e.comment)}else if("subjectKeyIdentifier"===e.name&&t.cert){var p=t.cert.generateSubjectKeyIdentifier();e.subjectKeyIdentifier=p.toHex(),e.value=i.create(i.Class.UNIVERSAL,i.Type.OCTETSTRING,!1,p.getBytes())}else if("authorityKeyIdentifier"===e.name&&t.cert){e.value=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[]);h=e.value.value;if(e.keyIdentifier){var g=!0===e.keyIdentifier?t.cert.generateSubjectKeyIdentifier().getBytes():e.keyIdentifier;h.push(i.create(i.Class.CONTEXT_SPECIFIC,0,!1,g))}if(e.authorityCertIssuer){var m=[i.create(i.Class.CONTEXT_SPECIFIC,4,!0,[y(!0===e.authorityCertIssuer?t.cert.issuer:e.authorityCertIssuer)])];h.push(i.create(i.Class.CONTEXT_SPECIFIC,1,!0,m))}if(e.serialNumber){var b=n.util.hexToBytes(!0===e.serialNumber?t.cert.serialNumber:e.serialNumber);h.push(i.create(i.Class.CONTEXT_SPECIFIC,2,!1,b))}}else if("cRLDistributionPoints"===e.name){e.value=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[]);h=e.value.value;var v,w=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[]),_=i.create(i.Class.CONTEXT_SPECIFIC,0,!0,[]);for(d=0;d2)throw new Error("Cannot read notBefore/notAfter validity times; more than two times were provided in the certificate.");if(y.length<2)throw new Error("Cannot read notBefore/notAfter validity times; they were not provided as either UTCTime or GeneralizedTime.");if(h.validity.notBefore=y[0],h.validity.notAfter=y[1],h.tbsCertificate=r.tbsCertificate,t){if(h.md=null,h.signatureOid in o){l=o[h.signatureOid];switch(l){case"sha1WithRSAEncryption":h.md=n.md.sha1.create();break;case"md5WithRSAEncryption":h.md=n.md.md5.create();break;case"sha256WithRSAEncryption":h.md=n.md.sha256.create();break;case"sha384WithRSAEncryption":h.md=n.md.sha384.create();break;case"sha512WithRSAEncryption":h.md=n.md.sha512.create();break;case"RSASSA-PSS":h.md=n.md.sha256.create();break}}if(null===h.md){c=new Error("Could not compute certificate digest. Unknown signature OID.");throw c.signatureOid=h.signatureOid,c}var m=i.toDer(h.tbsCertificate);h.md.update(m.getBytes())}var b=n.md.sha1.create();h.issuer.getField=function(e){return d(h.issuer,e)},h.issuer.addField=function(e){g([e]),h.issuer.attributes.push(e)},h.issuer.attributes=s.RDNAttributesAsArray(r.certIssuer,b),r.certIssuerUniqueId&&(h.issuer.uniqueId=r.certIssuerUniqueId),h.issuer.hash=b.digest().toHex();var v=n.md.sha1.create();return h.subject.getField=function(e){return d(h.subject,e)},h.subject.addField=function(e){g([e]),h.subject.attributes.push(e)},h.subject.attributes=s.RDNAttributesAsArray(r.certSubject,v),r.certSubjectUniqueId&&(h.subject.uniqueId=r.certSubjectUniqueId),h.subject.hash=v.digest().toHex(),r.certExtensions?h.extensions=s.certificateExtensionsFromAsn1(r.certExtensions):h.extensions=[],h.publicKey=s.publicKeyFromAsn1(r.subjectPublicKeyInfo),h},s.certificateExtensionsFromAsn1=function(e){for(var t=[],r=0;r1&&(s=r.value.charCodeAt(1),a=r.value.length>2?r.value.charCodeAt(2):0),t.digitalSignature=128===(128&s),t.nonRepudiation=64===(64&s),t.keyEncipherment=32===(32&s),t.dataEncipherment=16===(16&s),t.keyAgreement=8===(8&s),t.keyCertSign=4===(4&s),t.cRLSign=2===(2&s),t.encipherOnly=1===(1&s),t.decipherOnly=128===(128&a)}else if("basicConstraints"===t.name){r=i.fromDer(t.value);r.value.length>0&&r.value[0].type===i.Type.BOOLEAN?t.cA=0!==r.value[0].value.charCodeAt(0):t.cA=!1;var c=null;r.value.length>0&&r.value[0].type===i.Type.INTEGER?c=r.value[0].value:r.value.length>1&&(c=r.value[1].value),null!==c&&(t.pathLenConstraint=i.derToInteger(c))}else if("extKeyUsage"===t.name){r=i.fromDer(t.value);for(var u=0;u1&&(s=r.value.charCodeAt(1)),t.client=128===(128&s),t.server=64===(64&s),t.email=32===(32&s),t.objsign=16===(16&s),t.reserved=8===(8&s),t.sslCA=4===(4&s),t.emailCA=2===(2&s),t.objCA=1===(1&s)}else if("subjectAltName"===t.name||"issuerAltName"===t.name){var h;t.altNames=[];r=i.fromDer(t.value);for(var f=0;f=w&&e<_?i.create(i.Class.UNIVERSAL,i.Type.UTCTIME,!1,i.dateToUtcTime(e)):i.create(i.Class.UNIVERSAL,i.Type.GENERALIZEDTIME,!1,i.dateToGeneralizedTime(e))}s.getTBSCertificate=function(e){var t=E(e.validity.notBefore),r=E(e.validity.notAfter),o=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.CONTEXT_SPECIFIC,0,!0,[i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,i.integerToDer(e.version).getBytes())]),i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,n.util.hexToBytes(e.serialNumber)),i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(e.siginfo.algorithmOid).getBytes()),b(e.siginfo.algorithmOid,e.siginfo.parameters)]),y(e.issuer),i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[t,r]),y(e.subject),s.publicKeyToAsn1(e.publicKey)]);return e.issuer.uniqueId&&o.value.push(i.create(i.Class.CONTEXT_SPECIFIC,1,!0,[i.create(i.Class.UNIVERSAL,i.Type.BITSTRING,!1,String.fromCharCode(0)+e.issuer.uniqueId)])),e.subject.uniqueId&&o.value.push(i.create(i.Class.CONTEXT_SPECIFIC,2,!0,[i.create(i.Class.UNIVERSAL,i.Type.BITSTRING,!1,String.fromCharCode(0)+e.subject.uniqueId)])),e.extensions.length>0&&o.value.push(s.certificateExtensionsToAsn1(e.extensions)),o},s.getCertificationRequestInfo=function(e){var t=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.INTEGER,!1,i.integerToDer(e.version).getBytes()),y(e.subject),s.publicKeyToAsn1(e.publicKey),v(e)]);return t},s.distinguishedNameToAsn1=function(e){return y(e)},s.certificateToAsn1=function(e){var t=e.tbsCertificate||s.getTBSCertificate(e);return i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[t,i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[i.create(i.Class.UNIVERSAL,i.Type.OID,!1,i.oidToDer(e.signatureOid).getBytes()),b(e.signatureOid,e.signatureParameters)]),i.create(i.Class.UNIVERSAL,i.Type.BITSTRING,!1,String.fromCharCode(0)+e.signature)])},s.certificateExtensionsToAsn1=function(e){var t=i.create(i.Class.CONTEXT_SPECIFIC,3,!0,[]),r=i.create(i.Class.UNIVERSAL,i.Type.SEQUENCE,!0,[]);t.value.push(r);for(var n=0;nl.validity.notAfter)&&(c={message:"Certificate is not valid yet or has expired.",error:s.certificateError.certificate_expired,notBefore:l.validity.notBefore,notAfter:l.validity.notAfter,now:o}),null===c){if(h=t[0]||e.getIssuer(l),null===h&&l.isIssuer(l)&&(f=!0,h=l),h){var d=h;n.util.isArray(d)||(d=[d]);var p=!1;while(!p&&d.length>0){h=d.shift();try{p=h.verify(l)}catch(S){}}p||(c={message:"Certificate signature is invalid.",error:s.certificateError.bad_certificate})}null!==c||h&&!f||e.hasCertificate(l)||(c={message:"Certificate is not trusted.",error:s.certificateError.unknown_ca})}if(null===c&&h&&!l.isIssuer(h)&&(c={message:"Certificate issuer is invalid.",error:s.certificateError.bad_certificate}),null===c)for(var y={keyUsage:!0,basicConstraints:!0},g=0;null===c&&gb.pathLenConstraint&&(c={message:"Certificate basicConstraints pathLenConstraint violated.",error:s.certificateError.bad_certificate})}}var _=null===c||c.error,E=r.verify?r.verify(_,u,i):_;if(!0!==E)throw!0===_&&(c={message:"The application rejected the certificate.",error:s.certificateError.bad_certificate}),(E||0===E)&&("object"!==typeof E||n.util.isArray(E)?"string"===typeof E&&(c.error=E):(E.message&&(c.message=E.message),E.error&&(c.error=E.error))),c;c=null,a=!1,++u}while(t.length>0);return!0}},5624:function(e,t){function r(e,t,r){var n=e.length;if(!n)return r(t);function i(){--n||r(t)}e.forEach((function(e){e?e(t,i):i()})),n||i()}e.exports=function(e){return function(t,n){(function i(){t?r(e,t,n):e.length?e[0]?e[0](null,(function(t,s){t?(e.shift(),!0===t?i():r(e,t,n)):n(null,s)})):(e.shift(),i()):n(!0)})()}}},"566a":function(e,t,r){"use strict";class n{constructor(e,t,r,n){this.name=e,this.code=t,this.alphabet=n,r&&n&&(this.engine=r(n))}encode(e){return this.engine.encode(e)}decode(e){return this.engine.decode(e)}isImplemented(){return this.engine}}e.exports=n},"567e":function(e,t,r){"use strict";const n=r("9941"),i=r("faa1").EventEmitter,s=r("e24c").Connection,o=r("bcc7"),a=r("8911"),c=r("6c8b").CircuitRelay,u=r("0512"),l=r("4bc2"),h=l("libp2p:circuit:stop");h.err=l("libp2p:circuit:error:stop");class f extends i{constructor(e){super(),this.swarm=e,this.utils=o(e)}handle(e,t,r){r=r||(()=>{}),u([r=>this.utils.validateAddrs(e,t,c.Type.STOP,r),e=>this.utils.writeResponse(t,c.Status.Success,e)],i=>{if(i)return r(),h(i);const o=new a(this.utils.peerIdFromId(e.srcPeer.id));e.srcPeer.addrs.forEach(e=>o.multiaddrs.add(e));const c=new s(t.rest());c.setPeerInfo(o),n(()=>this.emit("connection",c)),r(c)})}}e.exports=f},5681:function(e,t,r){"use strict";var n=r("309b").defined,i=r("9efb");function s(e,t,r){for(var s=Object.keys(r),o=t.length,a=new Array(o),c=0;c0;t--){var r=Math.floor(Math.random()*(t+1)),n=e[t];e[t]=e[r],e[r]=n}return e}Object.defineProperty(t,"__esModule",{value:!0}),t.shuffled=n},"56ad":function(e,t,r){"use strict";const n=r("d4c4"),i=r("4bc2")("ipfs:mfs:utils:to-trail"),s=async(e,t)=>{i(`Creating trail for path ${t}`);const r=[];for await(const i of n.path(t,e.ipld))r.push({name:i.name,cid:i.cid,size:i.node.size,type:i.unixfs?i.unixfs.type:void 0});return r};e.exports=s},5705:function(e,t,r){"use strict";(function(n){Object.defineProperty(t,"__esModule",{value:!0});const i=r("3022"),s=Object.prototype.toString,o=e=>t=>typeof t===e,a=e=>{const t=s.call(e).slice(8,-1);return t||null},c=e=>t=>a(t)===e;function u(e){if(null===e)return"null";if(!0===e||!1===e)return"boolean";const t=typeof e;if("undefined"===t)return"undefined";if("string"===t)return"string";if("number"===t)return"number";if("symbol"===t)return"symbol";if(u.function_(e))return"Function";if(Array.isArray(e))return"Array";if(n.isBuffer(e))return"Buffer";const r=a(e);if(r)return r;if(e instanceof String||e instanceof Boolean||e instanceof Number)throw new TypeError("Please don't use object wrappers for primitive types");return"Object"}(function(e){const t=e=>"object"===typeof e;e.undefined=o("undefined"),e.string=o("string"),e.number=o("number"),e.function_=o("function"),e.null_=e=>null===e,e.class_=t=>e.function_(t)&&t.toString().startsWith("class "),e.boolean=e=>!0===e||!1===e,e.symbol=o("symbol"),e.array=Array.isArray,e.buffer=n.isBuffer,e.nullOrUndefined=t=>e.null_(t)||e.undefined(t),e.object=r=>!e.nullOrUndefined(r)&&(e.function_(r)||t(r)),e.iterable=t=>!e.nullOrUndefined(t)&&e.function_(t[Symbol.iterator]),e.generator=t=>e.iterable(t)&&e.function_(t.next)&&e.function_(t.throw),e.nativePromise=c("Promise");const r=r=>!e.null_(r)&&t(r)&&e.function_(r.then)&&e.function_(r.catch);e.promise=t=>e.nativePromise(t)||r(t);const s=t=>r=>e.function_(r)&&e.function_(r.constructor)&&r.constructor.name===t;e.generatorFunction=s("GeneratorFunction"),e.asyncFunction=s("AsyncFunction"),e.boundFunction=t=>e.function_(t)&&!t.hasOwnProperty("prototype"),e.regExp=c("RegExp"),e.date=c("Date"),e.error=c("Error"),e.map=c("Map"),e.set=c("Set"),e.weakMap=c("WeakMap"),e.weakSet=c("WeakSet"),e.int8Array=c("Int8Array"),e.uint8Array=c("Uint8Array"),e.uint8ClampedArray=c("Uint8ClampedArray"),e.int16Array=c("Int16Array"),e.uint16Array=c("Uint16Array"),e.int32Array=c("Int32Array"),e.uint32Array=c("Uint32Array"),e.float32Array=c("Float32Array"),e.float64Array=c("Float64Array"),e.arrayBuffer=c("ArrayBuffer"),e.sharedArrayBuffer=c("SharedArrayBuffer"),e.dataView=c("DataView"),e.directInstanceOf=(t,r)=>e.object(t)&&e.object(r)&&Object.getPrototypeOf(t)===r.prototype,e.truthy=e=>Boolean(e),e.falsy=e=>!e,e.nan=e=>Number.isNaN(e);const u=new Set(["undefined","string","number","boolean","symbol"]);e.primitive=t=>e.null_(t)||u.has(typeof t),e.integer=e=>Number.isInteger(e),e.safeInteger=e=>Number.isSafeInteger(e),e.plainObject=e=>{let t;return"Object"===a(e)&&(t=Object.getPrototypeOf(e),null===t||t===Object.getPrototypeOf({}))};const l=new Set(["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array"]);e.typedArray=e=>{const t=a(e);return null!==t&&l.has(t)};const h=t=>e.safeInteger(t)&&t>-1;e.arrayLike=t=>!e.nullOrUndefined(t)&&!e.function_(t)&&h(t.length),e.inRange=(t,r)=>{if(e.number(r))return t>=Math.min(0,r)&&t<=Math.max(r,0);if(e.array(r)&&2===r.length)return t>=Math.min.apply(null,r)&&t<=Math.max.apply(null,r);throw new TypeError(`Invalid range: ${i.inspect(r)}`)};const f=1,d=["innerHTML","ownerDocument","style","attributes","nodeValue"];e.domElement=t=>e.object(t)&&t.nodeType===f&&e.string(t.nodeName)&&!e.plainObject(t)&&d.every(e=>e in t),e.nodeStream=r=>!e.nullOrUndefined(r)&&t(r)&&e.function_(r.pipe),e.infinite=e=>e===1/0||e===-1/0;const p=t=>r=>e.integer(r)&&Math.abs(r%2)===t;e.even=p(0),e.odd=p(1);const y=t=>e.string(t)&&!1===/\S/.test(t),g=t=>(e.string(t)||e.array(t))&&0===t.length,m=t=>!e.map(t)&&!e.set(t)&&e.object(t)&&0===Object.keys(t).length,b=t=>(e.map(t)||e.set(t))&&0===t.size;e.empty=t=>e.falsy(t)||g(t)||m(t)||b(t),e.emptyOrWhitespace=t=>e.empty(t)||y(t);const v=(t,r,n)=>{const s=Array.prototype.slice.call(n,1);if(!1===e.function_(r))throw new TypeError(`Invalid predicate: ${i.inspect(r)}`);if(0===s.length)throw new TypeError("Invalid number of values");return t.call(s,r)};function w(e){return v(Array.prototype.some,e,arguments)}function _(e){return v(Array.prototype.every,e,arguments)}e.any=w,e.all=_})(u||(u={})),Object.defineProperties(u,{class:{value:u.class_},function:{value:u.function_},null:{value:u.null_}}),t.default=u,e.exports=u,e.exports.default=u}).call(this,r("b639").Buffer)},5721:function(e,t,r){"use strict";const n=r("8945");e.exports=e=>{const t=n.logger(e.peerInfo.id,"rpc:ping");return function(e,r,n){t("from %s",e.id.toB58String()),n(null,r)}}},5754:function(e,t,r){"use strict";(function(t){const n=r("ec4e"),i=r("91f6").toCallback,s=45569,o=45633,a={init:n.blake2bInit,update:n.blake2bUpdate,digest:n.blake2bFinal},c={init:n.blake2sInit,update:n.blake2sUpdate,digest:n.blake2sFinal},u=(e,r)=>i(n=>{const i=r.init(e,null);return r.update(i,n),t.from(r.digest(i))});e.exports=e=>{for(let t=0;t<64;t++)e[s+t]=u(t+1,a);for(let t=0;t<32;t++)e[o+t]=u(t+1,c)}}).call(this,r("b639").Buffer)},"576d":function(e,t,r){"use strict";const n=async e=>{for await(const t of e)return t};e.exports=n},5790:function(e,t,r){"use strict";(function(t){const n=r("021d"),i=r("87dd"),s="/",o=t.from(s),a=o[0];class c{constructor(e,r){if("string"===typeof e?this._buf=t.from(e):t.isBuffer(e)&&(this._buf=e),null==r&&(r=!0),r&&this.clean(),0===this._buf.length||this._buf[0]!==a)throw new Error(`Invalid key: ${this.toString()}`)}toString(e){return this._buf.toString(e||"utf8")}toBuffer(){return this._buf}get[Symbol.toStringTag](){return`[Key ${this.toString()}]`}static withNamespaces(e){return new h(e.join(s))}static random(){return new h(n().replace(/-/g,""))}clean(){this._buf&&0!==this._buf.length||(this._buf=t.from(s)),this._buf[0]!==a&&(this._buf=t.concat([o,this._buf]));while(this._buf.length>1&&this._buf[this._buf.length-1]===a)this._buf=this._buf.slice(0,-1)}less(e){const t=this.list(),r=e.list();for(let n=0;ni)return!1}return t.length-1&&(m=m.split(",")),b.indexOf("[]=")>-1&&(m=s(m)?[m]:m),i.call(l,g)?l[g]=n.combine(l[g],m):l[g]=m}return l},h=function(e,t,r){for(var n=t,i=e.length-1;i>=0;--i){var s,o=e[i];if("[]"===o&&r.parseArrays)s=[].concat(n);else{s=r.plainObjects?Object.create(null):{};var a="["===o.charAt(0)&&"]"===o.charAt(o.length-1)?o.slice(1,-1):o,c=parseInt(a,10);r.parseArrays||""!==a?!isNaN(c)&&o!==a&&String(c)===a&&c>=0&&r.parseArrays&&c<=r.arrayLimit?(s=[],s[c]=n):s[a]=n:s={0:n}}n=s}return n},f=function(e,t,r){if(e){var n=r.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,s=/(\[[^[\]]*])/,o=/(\[[^[\]]*])/g,a=r.depth>0&&s.exec(n),c=a?n.slice(0,a.index):n,u=[];if(c){if(!r.plainObjects&&i.call(Object.prototype,c)&&!r.allowPrototypes)return;u.push(c)}var l=0;while(r.depth>0&&null!==(a=o.exec(n))&&l{const n=new URL(r.url).search.slice(1),i=await r.json();o.set(n,i,a)}]}}),l=e=>{if(e.Path)return e.Path;throw new Error(e.Message)};e.exports=async(e,t)=>{const r=async(e,t)=>{t=t||{};const r=new URLSearchParams(t);r.set("arg",e);const n=r.toString();if(!t.nocache&&o.has(n)){const e=o.get(n);return l(e)}const i=await c.add(()=>u.get("dns",{searchParams:r}).json());return l(i)};return r(e,t)}},5800:function(e,t,r){"use strict";e.exports=(e,t)=>(t=t||(()=>{}),e.then(e=>new Promise(e=>{e(t())}).then(()=>e),e=>new Promise(e=>{e(t())}).then(()=>{throw e})))},"583a":function(e,t,r){var n=r("f0a0");r("8d3f"),n.cipher=n.cipher||{};var i=e.exports=n.cipher.modes=n.cipher.modes||{};function s(e,t){if("string"===typeof e&&(e=n.util.createBuffer(e)),n.util.isArray(e)&&e.length>4){var r=e;e=n.util.createBuffer();for(var i=0;i0))return!0;for(var n=0;n0))return!0;for(var n=0;n0)return!1;var r=e.length(),n=e.at(r-1);return!(n>this.blockSize<<2)&&(e.truncate(n),!0)},i.cbc=function(e){e=e||{},this.name="CBC",this.cipher=e.cipher,this.blockSize=e.blockSize||16,this._ints=this.blockSize/4,this._inBlock=new Array(this._ints),this._outBlock=new Array(this._ints)},i.cbc.prototype.start=function(e){if(null===e.iv){if(!this._prev)throw new Error("Invalid IV parameter.");this._iv=this._prev.slice(0)}else{if(!("iv"in e))throw new Error("Invalid IV parameter.");this._iv=s(e.iv,this.blockSize),this._prev=this._iv.slice(0)}},i.cbc.prototype.encrypt=function(e,t,r){if(e.length()0))return!0;for(var n=0;n0))return!0;for(var n=0;n0)return!1;var r=e.length(),n=e.at(r-1);return!(n>this.blockSize<<2)&&(e.truncate(n),!0)},i.cfb=function(e){e=e||{},this.name="CFB",this.cipher=e.cipher,this.blockSize=e.blockSize||16,this._ints=this.blockSize/4,this._inBlock=null,this._outBlock=new Array(this._ints),this._partialBlock=new Array(this._ints),this._partialOutput=n.util.createBuffer(),this._partialBytes=0},i.cfb.prototype.start=function(e){if(!("iv"in e))throw new Error("Invalid IV parameter.");this._iv=s(e.iv,this.blockSize),this._inBlock=this._iv.slice(0),this._partialBytes=0},i.cfb.prototype.encrypt=function(e,t,r){var n=e.length();if(0===n)return!0;if(this.cipher.encrypt(this._inBlock,this._outBlock),0===this._partialBytes&&n>=this.blockSize)for(var i=0;i0&&(s=this.blockSize-s),this._partialOutput.clear();for(i=0;i0)e.read-=this.blockSize;else for(i=0;i0&&this._partialOutput.getBytes(this._partialBytes),s>0&&!r)return t.putBytes(this._partialOutput.getBytes(s-this._partialBytes)),this._partialBytes=s,!0;t.putBytes(this._partialOutput.getBytes(n-this._partialBytes)),this._partialBytes=0}},i.cfb.prototype.decrypt=function(e,t,r){var n=e.length();if(0===n)return!0;if(this.cipher.encrypt(this._inBlock,this._outBlock),0===this._partialBytes&&n>=this.blockSize)for(var i=0;i0&&(s=this.blockSize-s),this._partialOutput.clear();for(i=0;i0)e.read-=this.blockSize;else for(i=0;i0&&this._partialOutput.getBytes(this._partialBytes),s>0&&!r)return t.putBytes(this._partialOutput.getBytes(s-this._partialBytes)),this._partialBytes=s,!0;t.putBytes(this._partialOutput.getBytes(n-this._partialBytes)),this._partialBytes=0}},i.ofb=function(e){e=e||{},this.name="OFB",this.cipher=e.cipher,this.blockSize=e.blockSize||16,this._ints=this.blockSize/4,this._inBlock=null,this._outBlock=new Array(this._ints),this._partialOutput=n.util.createBuffer(),this._partialBytes=0},i.ofb.prototype.start=function(e){if(!("iv"in e))throw new Error("Invalid IV parameter.");this._iv=s(e.iv,this.blockSize),this._inBlock=this._iv.slice(0),this._partialBytes=0},i.ofb.prototype.encrypt=function(e,t,r){var n=e.length();if(0===e.length())return!0;if(this.cipher.encrypt(this._inBlock,this._outBlock),0===this._partialBytes&&n>=this.blockSize)for(var i=0;i0&&(s=this.blockSize-s),this._partialOutput.clear();for(i=0;i0)e.read-=this.blockSize;else for(i=0;i0&&this._partialOutput.getBytes(this._partialBytes),s>0&&!r)return t.putBytes(this._partialOutput.getBytes(s-this._partialBytes)),this._partialBytes=s,!0;t.putBytes(this._partialOutput.getBytes(n-this._partialBytes)),this._partialBytes=0}},i.ofb.prototype.decrypt=i.ofb.prototype.encrypt,i.ctr=function(e){e=e||{},this.name="CTR",this.cipher=e.cipher,this.blockSize=e.blockSize||16,this._ints=this.blockSize/4,this._inBlock=null,this._outBlock=new Array(this._ints),this._partialOutput=n.util.createBuffer(),this._partialBytes=0},i.ctr.prototype.start=function(e){if(!("iv"in e))throw new Error("Invalid IV parameter.");this._iv=s(e.iv,this.blockSize),this._inBlock=this._iv.slice(0),this._partialBytes=0},i.ctr.prototype.encrypt=function(e,t,r){var n=e.length();if(0===n)return!0;if(this.cipher.encrypt(this._inBlock,this._outBlock),0===this._partialBytes&&n>=this.blockSize)for(var i=0;i0&&(s=this.blockSize-s),this._partialOutput.clear();for(i=0;i0&&(e.read-=this.blockSize),this._partialBytes>0&&this._partialOutput.getBytes(this._partialBytes),s>0&&!r)return t.putBytes(this._partialOutput.getBytes(s-this._partialBytes)),this._partialBytes=s,!0;t.putBytes(this._partialOutput.getBytes(n-this._partialBytes)),this._partialBytes=0}o(this._inBlock)},i.ctr.prototype.decrypt=i.ctr.prototype.encrypt,i.gcm=function(e){e=e||{},this.name="GCM",this.cipher=e.cipher,this.blockSize=e.blockSize||16,this._ints=this.blockSize/4,this._inBlock=new Array(this._ints),this._outBlock=new Array(this._ints),this._partialOutput=n.util.createBuffer(),this._partialBytes=0,this._R=3774873600},i.gcm.prototype.start=function(e){if(!("iv"in e))throw new Error("Invalid IV parameter.");var t,r=n.util.createBuffer(e.iv);if(this._cipherLength=0,t="additionalData"in e?n.util.createBuffer(e.additionalData):n.util.createBuffer(),this._tagLength="tagLength"in e?e.tagLength:128,this._tag=null,e.decrypt&&(this._tag=n.util.createBuffer(e.tag).getBytes(),this._tag.length!==this._tagLength/8))throw new Error("Authentication tag does not match tag length.");this._hashBlock=new Array(this._ints),this.tag=null,this._hashSubkey=new Array(this._ints),this.cipher.encrypt([0,0,0,0],this._hashSubkey),this.componentBits=4,this._m=this.generateHashTable(this._hashSubkey,this.componentBits);var i=r.length();if(12===i)this._j0=[r.getInt32(),r.getInt32(),r.getInt32(),1];else{this._j0=[0,0,0,0];while(r.length()>0)this._j0=this.ghash(this._hashSubkey,this._j0,[r.getInt32(),r.getInt32(),r.getInt32(),r.getInt32()]);this._j0=this.ghash(this._hashSubkey,this._j0,[0,0].concat(a(8*i)))}this._inBlock=this._j0.slice(0),o(this._inBlock),this._partialBytes=0,t=n.util.createBuffer(t),this._aDataLength=a(8*t.length());var s=t.length()%this.blockSize;s&&t.fillWithByte(0,this.blockSize-s),this._s=[0,0,0,0];while(t.length()>0)this._s=this.ghash(this._hashSubkey,this._s,[t.getInt32(),t.getInt32(),t.getInt32(),t.getInt32()])},i.gcm.prototype.encrypt=function(e,t,r){var n=e.length();if(0===n)return!0;if(this.cipher.encrypt(this._inBlock,this._outBlock),0===this._partialBytes&&n>=this.blockSize){for(var i=0;i0&&(s=this.blockSize-s),this._partialOutput.clear();for(i=0;i0&&this._partialOutput.getBytes(this._partialBytes),s>0&&!r)return e.read-=this.blockSize,t.putBytes(this._partialOutput.getBytes(s-this._partialBytes)),this._partialBytes=s,!0;t.putBytes(this._partialOutput.getBytes(n-this._partialBytes)),this._partialBytes=0}this._s=this.ghash(this._hashSubkey,this._s,this._outBlock),o(this._inBlock)},i.gcm.prototype.decrypt=function(e,t,r){var n=e.length();if(n0))return!0;this.cipher.encrypt(this._inBlock,this._outBlock),o(this._inBlock),this._hashBlock[0]=e.getInt32(),this._hashBlock[1]=e.getInt32(),this._hashBlock[2]=e.getInt32(),this._hashBlock[3]=e.getInt32(),this._s=this.ghash(this._hashSubkey,this._s,this._hashBlock);for(var i=0;i0;--n)t[n]=e[n]>>>1|(1&e[n-1])<<31;t[0]=e[0]>>>1,r&&(t[0]^=this._R)},i.gcm.prototype.tableMultiply=function(e){for(var t=[0,0,0,0],r=0;r<32;++r){var n=r/8|0,i=e[n]>>>4*(7-r%8)&15,s=this._m[r][i];t[0]^=s[0],t[1]^=s[1],t[2]^=s[2],t[3]^=s[3]}return t},i.gcm.prototype.ghash=function(e,t,r){return t[0]^=r[0],t[1]^=r[1],t[2]^=r[2],t[3]^=r[3],this.tableMultiply(t)},i.gcm.prototype.generateHashTable=function(e,t){for(var r=8/t,n=4*r,i=16*r,s=new Array(i),o=0;o>>1,i=new Array(r);i[n]=e.slice(0);var s=n>>>1;while(s>0)this.pow(i[2*s],i[s]=[]),s>>=1;s=2;while(s4||!a||"sha1"===a))return"string"!==typeof a&&(a="sha1"),e=t.from(e,"binary"),r=t.from(r,"binary"),c?4===i.pbkdf2Sync.length?i.pbkdf2(e,r,s,o,(function(e,t){if(e)return c(e);c(null,t.toString("binary"))})):i.pbkdf2(e,r,s,o,a,(function(e,t){if(e)return c(e);c(null,t.toString("binary"))})):4===i.pbkdf2Sync.length?i.pbkdf2Sync(e,r,s,o).toString("binary"):i.pbkdf2Sync(e,r,s,o,a).toString("binary");if("undefined"!==typeof a&&null!==a||(a="sha1"),"string"===typeof a){if(!(a in n.md.algorithms))throw new Error("Unknown hash algorithm: "+a);a=n.md[a].create()}var u=a.digestLength;if(o>4294967295*u){var l=new Error("Derived key is too long.");if(c)return c(l);throw l}var h=Math.ceil(o/u),f=o-(h-1)*u,d=n.hmac.create();d.start(a,e);var p,y,g,m="";if(!c){for(var b=1;b<=h;++b){d.start(null,null),d.update(r),d.update(n.util.int32ToBytes(b)),p=g=d.digest().getBytes();for(var v=2;v<=s;++v)d.start(null,null),d.update(g),y=d.digest().getBytes(),p=n.util.xorBytes(p,y,u),g=y;m+=bh)return c(null,m);d.start(null,null),d.update(r),d.update(n.util.int32ToBytes(b)),p=g=d.digest().getBytes(),v=2,_()}function _(){if(v<=s)return d.start(null,null),d.update(g),y=d.digest().getBytes(),p=n.util.xorBytes(p,y,u),g=y,++v,n.util.setImmediate(_);m+=b=0;c--)x>>=8,x+=C.at(c)+T.at(c),T.setAt(c,255&x);I.putBuffer(T)}w=I,h.putBuffer(S)}return h.truncate(h.length()-s),h},o.pbe.getCipher=function(e,t,r){switch(e){case o.oids["pkcs5PBES2"]:return o.pbe.getCipherForPBES2(e,t,r);case o.oids["pbeWithSHAAnd3-KeyTripleDES-CBC"]:case o.oids["pbewithSHAAnd40BitRC2-CBC"]:return o.pbe.getCipherForPKCS12PBE(e,t,r);default:var n=new Error("Cannot read encrypted PBE data block. Unsupported OID.");throw n.oid=e,n.supportedOids=["pkcs5PBES2","pbeWithSHAAnd3-KeyTripleDES-CBC","pbewithSHAAnd40BitRC2-CBC"],n}},o.pbe.getCipherForPBES2=function(e,t,r){var i={},a=[];if(!s.validate(t,u,i,a)){var c=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw c.errors=a,c}if(e=s.derToOid(i.kdfOid),e!==o.oids["pkcs5PBKDF2"]){c=new Error("Cannot read encrypted private key. Unsupported key derivation function OID.");throw c.oid=e,c.supportedOids=["pkcs5PBKDF2"],c}if(e=s.derToOid(i.encOid),e!==o.oids["aes128-CBC"]&&e!==o.oids["aes192-CBC"]&&e!==o.oids["aes256-CBC"]&&e!==o.oids["des-EDE3-CBC"]&&e!==o.oids["desCBC"]){c=new Error("Cannot read encrypted private key. Unsupported encryption scheme OID.");throw c.oid=e,c.supportedOids=["aes128-CBC","aes192-CBC","aes256-CBC","des-EDE3-CBC","desCBC"],c}var l,h,d=i.kdfSalt,p=n.util.createBuffer(i.kdfIterationCount);switch(p=p.getInt(p.length()<<3),o.oids[e]){case"aes128-CBC":l=16,h=n.aes.createDecryptionCipher;break;case"aes192-CBC":l=24,h=n.aes.createDecryptionCipher;break;case"aes256-CBC":l=32,h=n.aes.createDecryptionCipher;break;case"des-EDE3-CBC":l=24,h=n.des.createDecryptionCipher;break;case"desCBC":l=8,h=n.des.createDecryptionCipher;break}var y=f(i.prfOid),g=n.pkcs5.pbkdf2(r,d,p,l,y),m=i.encIv,b=h(g);return b.start(m),b},o.pbe.getCipherForPKCS12PBE=function(e,t,r){var i={},a=[];if(!s.validate(t,l,i,a)){var c=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw c.errors=a,c}var u,h,d,p=n.util.createBuffer(i.salt),y=n.util.createBuffer(i.iterations);switch(y=y.getInt(y.length()<<3),e){case o.oids["pbeWithSHAAnd3-KeyTripleDES-CBC"]:u=24,h=8,d=n.des.startDecrypting;break;case o.oids["pbewithSHAAnd40BitRC2-CBC"]:u=5,h=8,d=function(e,t){var r=n.rc2.createDecryptionCipher(e,40);return r.start(t,null),r};break;default:c=new Error("Cannot read PKCS #12 PBE data block. Unsupported OID.");throw c.oid=e,c}var g=f(i.prfOid),m=o.pbe.generatePkcs12Key(r,p,1,y,u,g);g.start();var b=o.pbe.generatePkcs12Key(r,p,2,y,h,g);return d(m,b)},o.pbe.opensslDeriveBytes=function(e,t,r,i){if("undefined"===typeof i||null===i){if(!("md5"in n.md))throw new Error('"md5" hash algorithm unavailable.');i=n.md.md5.create()}null===t&&(t="");for(var s=[h(i,e+t)],o=16,a=1;o>16-t},a=function(e,t){return(65535&e)>>t|e<<16-t&65535};e.exports=n.rc2=n.rc2||{},n.rc2.expandKey=function(e,t){"string"===typeof e&&(e=n.util.createBuffer(e)),t=t||128;var r,s=e,o=e.length(),a=t,c=Math.ceil(a/8),u=255>>(7&a);for(r=o;r<128;r++)s.putByte(i[s.at(r-1)+s.at(r-o)&255]);for(s.setAt(128-c,i[s.at(128-c)&u]),r=127-c;r>=0;r--)s.setAt(r,i[s.at(r+1)^s.at(r+c)]);return s};var c=function(e,t,r){var i,c,u,l,h=!1,f=null,d=null,p=null,y=[];for(e=n.rc2.expandKey(e,t),u=0;u<64;u++)y.push(e.getInt16Le());r?(i=function(e){for(u=0;u<4;u++)e[u]+=y[l]+(e[(u+3)%4]&e[(u+2)%4])+(~e[(u+3)%4]&e[(u+1)%4]),e[u]=o(e[u],s[u]),l++},c=function(e){for(u=0;u<4;u++)e[u]+=y[63&e[(u+3)%4]]}):(i=function(e){for(u=3;u>=0;u--)e[u]=a(e[u],s[u]),e[u]-=y[l]+(e[(u+3)%4]&e[(u+2)%4])+(~e[(u+3)%4]&e[(u+1)%4]),l--},c=function(e){for(u=3;u>=0;u--)e[u]-=y[63&e[(u+3)%4]]});var g=function(e){var t=[];for(u=0;u<4;u++){var n=f.getInt16Le();null!==p&&(r?n^=p.getInt16Le():p.putInt16Le(n)),t.push(65535&n)}l=r?0:63;for(var i=0;i=8)g([[5,i],[1,c],[6,i],[1,c],[5,i]])},finish:function(e){var t=!0;if(r)if(e)t=e(8,f,!r);else{var n=8===f.length()?8:8-f.length();f.fillWithByte(n,n)}if(t&&(h=!0,m.update()),!r&&(t=0===f.length(),t))if(e)t=e(8,d,!r);else{var i=d.length(),s=d.at(i-1);s>i?t=!1:d.truncate(s)}return t}},m};n.rc2.startEncrypting=function(e,t,r){var i=n.rc2.createEncryptionCipher(e,128);return i.start(t,r),i},n.rc2.createEncryptionCipher=function(e,t){return c(e,t,!0)},n.rc2.startDecrypting=function(e,t,r){var i=n.rc2.createDecryptionCipher(e,128);return i.start(t,r),i},n.rc2.createDecryptionCipher=function(e,t){return c(e,t,!1)}},5959:function(e,t,r){var n=r("f0a0");e.exports=n.md=n.md||{},n.md.algorithms=n.md.algorithms||{}},5968:function(e,t,r){"use strict";class n{constructor(e){}append(e){}merge(e){}get(e){}has(e){}get values(){}get length(){}}e.exports=n},5995:function(e,t){e.exports={options:{usePureJavaScript:!1}}},59957:function(e,t){var r=Function.prototype,n=r.toString;function i(e){if(null!=e){try{return n.call(e)}catch(t){}try{return e+""}catch(t){}}return""}e.exports=i},"59c5":function(e,t,r){"use strict";const n=r("df7c"),i=r("3c43"),s=r("c64e");t.filter=(e,t)=>async function*(){for await(const r of e){const e=await t(r);e&&(yield r)}}(),t.sortAll=(e,t)=>async function*(){let r=[];for await(const t of e)r.push(t);r=await t(r);for(const e of r)yield e}(),t.take=(e,t)=>async function*(){if(t<=0)return;let r=0;for await(const n of e)if(yield n,r++,r>=t)return}(),t.map=(e,t)=>async function*(){for await(const r of e)yield t(r)}(),t.replaceStartWith=function(e,t){const r=new RegExp("^"+t);return e.replace(r,"")},t.tmpdir=()=>n.join(i.tmpdir(),s())},"59eb":function(e,t,r){"use strict";class n{constructor(){this.queries=new Set,this.running=!1}queryStarted(e){this.queries.add(e)}queryCompleted(e){this.queries.delete(e)}start(){this.running=!0}stop(){this.running=!1;for(const e of this.queries)e.stop();this.queries.clear()}}e.exports=n},"5a38":function(e,t,r){"use strict";const{Buffer:n}=r("b639"),i=r("c8f6"),s=45569,o=45633,a={init:i.blake2bInit,update:i.blake2bUpdate,digest:i.blake2bFinal},c={init:i.blake2sInit,update:i.blake2sUpdate,digest:i.blake2sFinal},u=(e,t)=>async r=>{const i=t.init(e,null);return t.update(i,r),n.from(t.digest(i))};e.exports=e=>{for(let t=0;t<64;t++)e[s+t]=u(t+1,a);for(let t=0;t<32;t++)e[o+t]=u(t+1,c)}},"5ab1":function(e,t,r){"use strict";const n=r("cfab"),i=new Map;for(const s in n){const e=n[s];i.set(e,s)}e.exports=Object.freeze(i)},"5ac3":function(e,t,r){"use strict";var n=r("3b1c"),i=r("3a17"),s=r("549e"),o=r("b46b"),a=r("6f5a"),c=r("9bda"),u=r("e165"),l=r("ae1c"),h=r("ffb2");const f="transactions/5.0.0-beta.134";r.d(t,"a",(function(){return b})),r.d(t,"c",(function(){return v})),r.d(t,"d",(function(){return w})),r.d(t,"b",(function(){return _}));const d=new h["Logger"](f);function p(e){return"0x"===e?null:Object(n["a"])(e)}function y(e){return"0x"===e?o["f"]:i["a"].from(e)}const g=[{name:"nonce",maxLength:32,numeric:!0},{name:"gasPrice",maxLength:32,numeric:!0},{name:"gasLimit",maxLength:32,numeric:!0},{name:"to",length:20},{name:"value",maxLength:32,numeric:!0},{name:"data"}],m={chainId:!0,data:!0,gasLimit:!0,gasPrice:!0,nonce:!0,to:!0,value:!0};function b(e){const t=Object(l["b"])(e);return Object(n["a"])(Object(s["hexDataSlice"])(Object(a["a"])(Object(s["hexDataSlice"])(t,1)),12))}function v(e,t){return b(Object(l["c"])(Object(s["arrayify"])(e),t))}function w(e,t){Object(c["checkProperties"])(e,m);const r=[];g.forEach((function(t){let n=e[t.name]||[];const i={};t.numeric&&(i.hexPad="left"),n=Object(s["arrayify"])(Object(s["hexlify"])(n,i)),t.length&&n.length!==t.length&&n.length>0&&d.throwArgumentError("invalid length for "+t.name,"transaction:"+t.name,n),t.maxLength&&(n=Object(s["stripZeros"])(n),n.length>t.maxLength&&d.throwArgumentError("invalid length for "+t.name,"transaction:"+t.name,n)),r.push(Object(s["hexlify"])(n))}));let n=0;if(null!=e.chainId?(n=e.chainId,"number"!==typeof n&&d.throwArgumentError("invalid transaction.chainId","transaction",e)):t&&!Object(s["isBytesLike"])(t)&&t.v>28&&(n=Math.floor((t.v-35)/2)),0!==n&&(r.push(Object(s["hexlify"])(n)),r.push("0x"),r.push("0x")),!t)return u["b"](r);const i=Object(s["splitSignature"])(t);let o=27+i.recoveryParam;return 0!==n?(r.pop(),r.pop(),r.pop(),o+=2*n+8,i.v>28&&i.v!==o&&d.throwArgumentError("transaction.chainId/signature.v mismatch","signature",t)):i.v!==o&&d.throwArgumentError("transaction.chainId/signature.v mismatch","signature",t),r.push(Object(s["hexlify"])(o)),r.push(Object(s["stripZeros"])(Object(s["arrayify"])(i.r))),r.push(Object(s["stripZeros"])(Object(s["arrayify"])(i.s))),u["b"](r)}function _(e){const t=u["a"](e);9!==t.length&&6!==t.length&&d.throwArgumentError("invalid raw transaction","rawTransactin",e);const r={nonce:y(t[0]).toNumber(),gasPrice:y(t[1]),gasLimit:y(t[2]),to:p(t[3]),value:y(t[4]),data:t[5],chainId:0};if(6===t.length)return r;try{r.v=i["a"].from(t[6]).toNumber()}catch(n){return console.log(n),r}if(r.r=Object(s["hexZeroPad"])(t[7],32),r.s=Object(s["hexZeroPad"])(t[8],32),i["a"].from(r.r).isZero()&&i["a"].from(r.s).isZero())r.chainId=r.v,r.v=0;else{r.chainId=Math.floor((r.v-35)/2),r.chainId<0&&(r.chainId=0);let i=r.v-27;const o=t.slice(0,6);0!==r.chainId&&(o.push(Object(s["hexlify"])(r.chainId)),o.push("0x"),o.push("0x"),i-=2*r.chainId+8);const c=Object(a["a"])(u["b"](o));try{r.from=v(c,{r:Object(s["hexlify"])(r.r),s:Object(s["hexlify"])(r.s),recoveryParam:i})}catch(n){console.log(n)}r.hash=Object(a["a"])(e)}return r}},"5ae5":function(e,t,r){"use strict";(function(t){const n=r("6586"),i=s();function s(){return self.crypto?self.crypto.subtle||self.crypto.webkitSubtle:self.msCrypto?self.msCrypto.subtle:void 0}function o(e){if(!i)throw new Error("Please use a browser with webcrypto support and ensure the code has been delivered securely via HTTPS/TLS and run within a Secure Context");return(r,s)=>{const o=i.digest({name:e},r);if("function"!==typeof o.then)return o.onerror=()=>{s(new Error(`hashing data using ${e}`))},void(o.oncomplete=e=>{s(null,e.target.result)});n(o.then(e=>t.from(new Uint8Array(e))),s)}}function a(e,t){o("SHA-1")(e,t)}function c(e,t){o("SHA-256")(e,t)}function u(e,t){o("SHA-512")(e,t)}e.exports={sha1:a,sha2256:c,sha2512:u}}).call(this,r("b639").Buffer)},"5b20":function(e,t,r){function n(e){function t(e){let t=0;for(let r=0;r{if("%%"===r)return r;a++;const s=n.formatters[i];if("function"===typeof s){const n=e[a];r=s.call(t,n),e.splice(a,1),a--}return r}),n.formatArgs.call(t,e);const c=t.log||n.log;c.apply(t,e)}return o.namespace=e,o.enabled=n.enabled(e),o.useColors=n.useColors(),o.color=t(e),o.destroy=i,o.extend=s,"function"===typeof n.init&&n.init(o),n.instances.push(o),o}function i(){const e=n.instances.indexOf(this);return-1!==e&&(n.instances.splice(e,1),!0)}function s(e,t){const r=n(this.namespace+("undefined"===typeof t?":":t)+e);return r.log=this.log,r}function o(e){let t;n.save(e),n.names=[],n.skips=[];const r=("string"===typeof e?e:"").split(/[\s,]+/),i=r.length;for(t=0;t"-"+e)].join(",");return n.enable(""),e}function c(e){if("*"===e[e.length-1])return!0;let t,r;for(t=0,r=n.skips.length;t{n[t]=e[t]}),n.instances=[],n.names=[],n.skips=[],n.formatters={},n.selectColor=t,n.enable(n.load()),n}e.exports=n},"5b29":function(e,t,r){"use strict";const n=async(e,t)=>{const r=await e();if(t(r))return n(e,t)};e.exports=n,e.exports.default=n},"5b39":function(e,t,r){var n=r("51de"),i=r("76d6"),s=r("5624"),o=r("40df");function a(e){var t=0;return function(r,n,i){t++||e(r,n,i)}}function c(e){return"function"===typeof e}e.exports=function(e,t){c(e)&&(t=e,e={}),t=a(t||function(){});var r=n(e&&e.timeout||5e3),u=i((function(e){e&&t(e)})),l=o();return{handshake:{read:r.read,abort:function(e){u.end(e),r.abort(e,(function(e){})),t(e)},write:u.push,rest:function(){return u.end(),{source:r.read(),sink:l.sink}}},sink:r,source:s([u,l.source])}}},"5b398":function(e,t,r){"use strict";function n(e,t,r){var n,i=e instanceof Error?e:new Error(e);if("object"===typeof t?r=t:null!=t&&(i.code=t),r)for(n in r)i[n]=r[n];return i}e.exports=n},"5b4a":function(e,t,r){"use strict";var n=r("ef02");e.exports=function(e){return n((function(e,t){return e+t}),"",e)}},"5b50":function(e,t,r){"use strict";const n=r("f281");e.exports=(e,t={})=>{if(!n(e))throw new TypeError("Expected a plain object");const{deep:r}=t,i=[],s=[],o=e=>{const a=i.indexOf(e);if(-1!==a)return s[a];const c={},u=Object.keys(e).sort(t.compare);i.push(e),s.push(c);for(const t of u){const i=e[t];r&&Array.isArray(i)?c[t]=i.map(e=>n(e)?o(e):e):c[t]=r&&n(i)?o(i):i}return c};return o(e)}},"5bc3":function(e,t){function r(e,t){for(var r=0;r1)throw new Error("value should be a number between 0 and 1");e.toB58String&&(e=e.toB58String()),this._peerValues.set(e,t)}_onceStarted(){this._peerId=this._libp2p.peerInfo.id.toB58String()}_onStatsUpdate(){const e=this._stats.global.movingAverages,t=e.dataReceived[this._options.movingAverageInterval].movingAverage();this._checkLimit("maxReceivedData",t);const r=e.dataSent[this._options.movingAverageInterval].movingAverage();this._checkLimit("maxSentData",r);const n=t+r;this._checkLimit("maxData",n),s("stats update",n)}_onPeerConnect(e){const t=e.id.toB58String();s("%s: connected to %s",this._peerId,t),this._peerValues.set(t,this._options.defaultPeerValue),this._peers.set(t,e),this.emit("connected",t),this._checkLimit("maxPeers",this._peers.size),l(e).forEach(e=>{const r=this._peerCountPerProtocol[e];r||(this._peerCountPerProtocol[e]=0),this._peerCountPerProtocol[e]++;let n=this._peerProtocols[t];n||(n=this._peerProtocols[t]=new Set),n.add(e),this._checkProtocolMaxPeersLimit(e,this._peerCountPerProtocol[e])})}_onPeerDisconnect(e){const t=e.id.toB58String();s("%s: disconnected from %s",this._peerId,t),this._peerValues.delete(t),this._peers.delete(t);const r=this._peerProtocols[t];r&&Array.from(r).forEach(e=>{const t=this._peerCountPerProtocol[e];t&&this._peerCountPerProtocol[e]--}),this.emit("disconnected",t)}_onLatencyMeasure(e){this._checkLimit("maxEventLoopDelay",e.avgMs)}_checkLimit(e,t){const r=this._options[e];s("checking limit of %s. current value: %d of %d",e,t,r),t>r&&(s("%s: limit exceeded: %s, %d",this._peerId,e,t),this.emit("limit:exceeded",e,t),this._maybeDisconnectOne())}_checkProtocolMaxPeersLimit(e,t){s("checking protocol limit. current value of %s is %d",e,t);const r=this._options.maxPeersPerProtocol[e];t>r&&(s("%s: protocol max peers limit exceeded: %s, %d",this._peerId,e,t),this.emit("limit:exceeded",e,t),this._maybeDisconnectOne())}_maybeDisconnectOne(){if(this._options.minPeers{e&&this.emit("error",e)})}}function c(e,t){return e[1]-t[1]}function u(e){return e||(e={}),Object.keys(e).forEach(t=>{const r=e[t];delete e[t],e[t.toLowerCase()]=r}),e}function l(e){const t=new Set;return e.multiaddrs.forEach(e=>{e.protos().map(h).forEach(e=>{t.add(e)})}),Array.from(t)}function h(e){return e.name.toLowerCase()}e.exports=a},"5c41":function(e,t,r){"use strict";const n=r("f2a6"),i=r("b103"),s=r("b02d"),{LastWriteWins:o,NoZeroes:a}=s,c=r("ce32"),{isDefined:u,findUniques:l,difference:h,io:f}=r("79ca"),d=["heads"],p=(e,t)=>e.slice(e.length-Math.min(e.length,t),e.length);class y{static async toMultihash(e,t,{format:r}={}){if(!u(e))throw c.IPFSNotDefinedError();if(!u(t))throw c.LogNotDefinedError();if(u(r)||(r="dag-cbor"),t.values.length<1)throw new Error("Can't serialize an empty log");return f.write(e,r,t.toJSON(),{links:d})}static async fromMultihash(e,t,{length:r=-1,exclude:n=[],timeout:s,concurrency:l,sortFn:h,onProgressCallback:y}){if(!u(e))throw c.IPFSNotDefinedError();if(!u(t))throw new Error(`Invalid hash: ${t}`);const g=await f.read(e,t,{links:d});if(!g.heads||!g.id)throw c.NotALogError();h=h||a(o);const m=e=>g.heads.includes(e.hash),b=await i.fetchAll(e,g.heads,{length:r,exclude:n,timeout:s,concurrency:l,onProgressCallback:y}),v=g.id,w=r>-1?p(b.sort(h),r):b,_=w.filter(m);return{logId:v,entries:w,heads:_}}static async fromEntryHash(e,t,{length:r=-1,exclude:n=[],timeout:s,concurrency:l,sortFn:h,onProgressCallback:f}){if(!u(e))throw c.IpfsNotDefinedError();if(!u(t))throw new Error("'hash' must be defined");const d=Array.isArray(t)?t:[t];r=r>-1?Math.max(r,1):r;const y=await i.fetchParallel(e,d,{length:r,exclude:n,timeout:s,concurrency:l,onProgressCallback:f});h=h||a(o);const g=r>-1?p(y.sort(h),r):y;return{entries:g}}static async fromJSON(e,t,{length:r=-1,timeout:s,concurrency:o,onProgressCallback:a}){if(!u(e))throw c.IPFSNotDefinedError();const{id:l,heads:h}=t,f=h.map(e=>e.hash),d=await i.fetchParallel(e,f,{length:r,timeout:s,concurrency:o,onProgressCallback:a}),p=d.sort(n.compare);return{logId:l,entries:p,heads:h}}static async fromEntry(e,t,{length:r=-1,exclude:s=[],timeout:o,concurrency:a,onProgressCallback:f}){if(!u(e))throw c.IPFSNotDefinedError();if(!u(t))throw new Error("'sourceEntries' must be defined");if(!Array.isArray(t)&&!n.isEntry(t))throw new Error("'sourceEntries' argument must be an array of Entry instances or a single Entry");Array.isArray(t)||(t=[t]),r=r>-1?Math.max(r,t.length):r;const d=t.map(e=>e.hash),p=await i.fetchParallel(e,d,{length:r,exclude:s,timeout:o,concurrency:a,onProgressCallback:f}),y=t.concat(p).concat(s),g=l(y,"hash").sort(n.compare),m=g.slice(r>-1?-r:-g.length),b=h(m,t,"hash"),v=(e,t)=>{var r=e.slice(t.length,e.length);return t.concat(r)},w=v(m,b),_=w[w.length-1].id;return{logId:_,entries:w}}}e.exports=y},"5c43":function(e,t){const r="GENESIS";class n{constructor(e,t){this._ipfs=e,this._content={id:`did:${t}:${r}`}}get DID(){if(this._content.id.includes(r))throw new Error("DID is not available before commit");return this._content.id}static async load(e,t){const r=new n(e);return r._content=await n.cidToDocument(e,t),r._content.previousDocument={"/":t.toString()},r}addPublicKey(e,t,r,n,i){this._content.publicKey||(this._content.publicKey=[]);let s={id:`${this._content.id}#${e}`,type:t};s[r]=n,i&&(s.owner=i),this._content.publicKey.push(s)}removePublicKey(e){const t=this._content.publicKey.findIndex(t=>t.id.endsWith(e));this._content.publicKey.splice(t,1),this._content.publicKey.length||delete this._content.publicKey}addAuthentication(e,t){this._content.authentication||(this._content.authentication=[]),this._content.authentication.push({type:e,publicKey:`${this._content.id}#${t}`})}removeAuthentication(e){const t=this._content.authentication.findIndex(t=>t.publicKey.endsWith(e));this._content.authentication.splice(t,1),this._content.authentication.length||delete this._content.authentication}addService(e,t,r,n){this._content.service||(this._content.service=[]),this._content.service.push(Object.assign({id:`${this._content.id};${e}`,type:t,serviceEndpoint:r},n))}removeService(e){const t=this._content.service.findIndex(t=>t.id.endsWith(e));this._content.service.splice(t,1),this._content.service.length||delete this._content.service}setRevocationMethod(e){this._content.revocationMethod=e}addCustomProperty(e,t){this._content[e]=t}removeCustomProperty(e){delete this._content[e]}async commit(e={}){this._content.created?e.noTimestamp||(this._content.updated=new Date(Date.now()).toISOString()):(this._content["@context"]="https://w3id.org/did/v1",e.noTimestamp||(this._content.created=new Date(Date.now()).toISOString()));const t=await this._ipfs.dag.put(this._content,{format:"dag-cbor",hashAlg:"sha2-256"});return this._content=await n.cidToDocument(this._ipfs,t),this._content.previousDocument={"/":t.toString()},t}static async cidToDocument(e,t){let n=(await e.dag.get(t)).value;if(n.id.includes(r)){const e=new RegExp(r,"gi");n.id=n.id.replace(e,t),n.publicKey&&(n.publicKey=JSON.parse(JSON.stringify(n.publicKey).replace(e,t))),n.authentication&&(n.authentication=JSON.parse(JSON.stringify(n.authentication).replace(e,t))),n.service&&(n.service=JSON.parse(JSON.stringify(n.service).replace(e,t)))}return n.previousDocument&&(n.previousDocument={"/":n.previousDocument.toString()}),n}}e.exports=n},"5c4e":function(e,t,r){"use strict";const n=r("fb71");e.exports=e=>{const t=e.repo||"ipfs";return new n(t,{autoMigrate:e.repoAutoMigrate})}},"5c71":function(e,t,r){"use strict";const n=r("b74a"),i=r("3f64"),s=r("f65f").logger;e.exports=class{constructor(e,t,r){this.peerId=t,this.network=r,this.refcnt=1,this._entries=[],this._log=s(e,"msgqueue",t.toB58String().slice(0,8)),this.sendEntries=n(this._sendEntries.bind(this),200)}addMessage(e){e.empty||this.send(e)}addEntries(e){this._entries=this._entries.concat(e),this.sendEntries()}_sendEntries(){if(!this._entries.length)return;const e=new i(!1);this._entries.forEach(t=>{t.cancel?e.cancel(t.cid):e.addEntry(t.cid,t.priority)}),this._entries=[],this.addMessage(e)}async send(e){try{await this.network.connectTo(this.peerId)}catch(t){return void this._log.error("cant connect to peer %s: %s",this.peerId.toB58String(),t.message)}this._log("sending message to peer %s",this.peerId.toB58String()),this.network.sendMessage(this.peerId,e).catch(e=>{this._log.error("send error: %s",e.message)})}}},"5c9e":function(e,t,r){"use strict";const n=r("df7c"),i=r("3c43"),s=r("021d");t.filter=(e,t)=>async function*(){for await(const r of e){const e=await t(r);e&&(yield r)}}(),t.sortAll=(e,t)=>async function*(){let r=[];for await(const t of e)r.push(t);r=await t(r);for(const e of r)yield e}(),t.take=(e,t)=>async function*(){if(t<=0)return;let r=0;for await(const n of e)if(yield n,r++,r>=t)return}(),t.map=(e,t)=>async function*(){for await(const r of e)yield t(r)}(),t.replaceStartWith=function(e,t){const r=new RegExp("^"+t);return e.replace(r,"")},t.tmpdir=()=>n.join(i.tmpdir(),s())},"5c9e5":function(e,t){function r(e,t){return null==e?void 0:e[t]}e.exports=r},"5c9eb":function(e,t,r){"use strict";var n=r("4ea4");Object.defineProperty(t,"__esModule",{value:!0}),t.toSignatureObject=l,t.verifyES256K=h,t.verifyRecoverableES256K=f,t.verifyEd25519=d;var i=r("3337"),s=r("b0e4"),o=n(r("fb4d")),a=n(r("dfb7")),c=n(r("427a")),u=new i.ec("secp256k1");function l(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=o.default.toBuffer(e);if(r.length!==(t?65:64))throw new Error("wrong signature length");var n=r.slice(0,32).toString("hex"),i=r.slice(32,64).toString("hex"),s={r:n,s:i};return t&&(s.recoveryParam=r[64]),s}function h(e,t,r){var n=(0,s.sha256)(e),i=l(t),o=r.find((function(e){var t=e.publicKeyHex;return u.keyFromPublic(t,"hex").verify(n,i)}));if(!o)throw new Error("Signature invalid for JWT");return o}function f(e,t,r){var n=l(t,!0),i=(0,s.sha256)(e),o=u.recoverPubKey(i,n,n.recoveryParam),a=o.encode("hex"),c=o.encode("hex",!0),h=(0,s.toEthereumAddress)(a),f=r.find((function(e){var t=e.publicKeyHex,r=e.ethereumAddress;return t===a||t===c||r===h}));if(!f)throw new Error("Signature invalid for JWT");return f}function d(e,t,r){var n=c.default.decodeUTF8(e),i=c.default.decodeBase64(o.default.toBase64(t)),s=r.find((function(e){var t=e.publicKeyBase64;return a.default.sign.detached.verify(n,i,c.default.decodeBase64(t))}));if(!s)throw new Error("Signature invalid for JWT");return s}var p={ES256K:h,"ES256K-R":f,Ed25519:d};function y(e){var t=p[e];if(!t)throw new Error("Unsupported algorithm ".concat(e));return t}y.toSignatureObject=l,e.exports=y},"5cb7":function(e,t,r){var n,i,s;(function(){var r,o,a,c,u,l,h,f,d,p,y,g,m,b,v;a=Math.floor,p=Math.min,o=function(e,t){return et?1:0},d=function(e,t,r,n,i){var s;if(null==r&&(r=0),null==i&&(i=o),r<0)throw new Error("lo must be non-negative");null==n&&(n=e.length);while(rr;0<=r?t++:t--)u.push(t);return u}.apply(this).reverse(),c=[],n=0,i=s.length;ny;0<=y?++l:--l)g.push(u(e,r));return g},b=function(e,t,r,n){var i,s,a;null==n&&(n=o),i=e[r];while(r>t){if(a=r-1>>1,s=e[a],!(n(i,s)<0))break;e[r]=s,r=a}return e[r]=i},v=function(e,t,r){var n,i,s,a,c;null==r&&(r=o),i=e.length,c=t,s=e[t],n=2*t+1;while(n0&&void 0!==arguments[0]?arguments[0]:{},n=t.latencyCheckIntervalMs,i=t.dataEmitIntervalMs,s=t.asyncTestFn,o=t.latencyRandomPercentage;d(this,r);var c=p(this,(r.__proto__||Object.getPrototypeOf(r)).call(this)),u=c;return u.latencyCheckIntervalMs=n||500,u.latencyRandomPercentage=o||10,u._latecyCheckMultiply=u.latencyRandomPercentage/100*2*u.latencyCheckIntervalMs,u._latecyCheckSubtract=u._latecyCheckMultiply/2,u.dataEmitIntervalMs=null===i||0===i?void 0:i||5e3,g("latencyCheckIntervalMs: %s dataEmitIntervalMs: %s",u.latencyCheckIntervalMs,u.dataEmitIntervalMs),u.dataEmitIntervalMs?g("Expecting ~%s events per summary",u.latencyCheckIntervalMs/u.dataEmitIntervalMs):g("Not emitting summaries"),u.asyncTestFn=s,e&&e.hrtime?(g("Using process.hrtime for timing"),u.now=e.hrtime,u.getDeltaMS=function(e){var t=u.now(e);return 1e3*t[0]+t[1]/1e6}):"undefined"!==typeof window&&(0,a.default)(window,"performance.now")?(g("Using performance.now for timing"),u.now=window.performance.now.bind(window.performance),u.getDeltaMS=function(e){return Math.round(u.now()-e)}):(g("Using Date.now for timing"),u.now=Date.now,u.getDeltaMS=function(e){return u.now()-e}),u._latencyData=u._initLatencyData(),b()&&(u._visibilityChangeEmitter=new h.default,u._visibilityChangeEmitter.on("visibilityChange",(function(e){e?u._startTimers():(u._emitSummary(),u._stopTimers())}))),u._visibilityChangeEmitter&&!u._visibilityChangeEmitter.isVisible()||u._startTimers(),c}return y(r,t),n(r,[{key:"_startTimers",value:function(){var e=this;this._checkLatencyID||(this._checkLatency(),this.dataEmitIntervalMs&&(this._emitIntervalID=setInterval((function(){return e._emitSummary()}),this.dataEmitIntervalMs),(0,u.default)(this._emitIntervalID.unref)&&this._emitIntervalID.unref()))}},{key:"_stopTimers",value:function(){this._checkLatencyID&&(clearTimeout(this._checkLatencyID),this._checkLatencyID=void 0),this._emitIntervalID&&(clearInterval(this._emitIntervalID),this._emitIntervalID=void 0)}},{key:"_emitSummary",value:function(){var e=this.getSummary();e.events>0&&this.emit("data",e)}},{key:"getSummary",value:function(){var e={events:this._latencyData.events,minMs:this._latencyData.minMs,maxMs:this._latencyData.maxMs,avgMs:this._latencyData.events?this._latencyData.totalMs/this._latencyData.events:Number.POSITIVE_INFINITY,lengthMs:this.getDeltaMS(this._latencyData.startTime)};return this._latencyData=this._initLatencyData(),g("Summary: %O",e),e}},{key:"_checkLatency",value:function(){var e=this,t=this,r=Math.random()*t._latecyCheckMultiply-t._latecyCheckSubtract,n={deltaOffset:Math.ceil(t.latencyCheckIntervalMs+r),startTime:t.now()},i=function(){if(e._checkLatencyID){var r=t.getDeltaMS(n.startTime)-n.deltaOffset;t._checkLatency(),t._latencyData.events++,t._latencyData.minMs=Math.min(t._latencyData.minMs,r),t._latencyData.maxMs=Math.max(t._latencyData.maxMs,r),t._latencyData.totalMs+=r,g("MS: %s Data: %O",r,t._latencyData)}};g("localData: %O",n),this._checkLatencyID=setTimeout((function(){t.asyncTestFn?(n.deltaOffset=0,n.startTime=t.now(),t.asyncTestFn(i)):(n.deltaOffset-=1,i())}),n.deltaOffset),(0,u.default)(this._checkLatencyID.unref)&&this._checkLatencyID.unref()}},{key:"_initLatencyData",value:function(){return{startTime:this.now(),minMs:Number.POSITIVE_INFINITY,maxMs:Number.NEGATIVE_INFINITY,events:0,totalMs:0}}}]),r}(s.default);function b(){return"undefined"!==typeof window}t.default=m}).call(this,r("4362"))},"5cdc":function(e,t,r){"use strict";(function(e){const n=r("a0e5").bignum;t.toBase64=function(t,r){const n=t.toArrayLike(e,"be",r).toString("base64");return n.replace(/(=*)$/,"").replace(/\+/g,"-").replace(/\//g,"_")},t.toBn=function(t){return new n(e.from(t,"base64"))}}).call(this,r("b639").Buffer)},"5d02":function(e){e.exports=JSON.parse('{"_args":[["ipfs-http-client@33.1.1","/Users/feewet/dev/ethdenver/bound/frontend"]],"_from":"ipfs-http-client@33.1.1","_id":"ipfs-http-client@33.1.1","_inBundle":false,"_integrity":"sha512-iwtLL3lOIzxXJFwLnOEtFUv1cYTuWJ0NauD7rpMEd/y4C7z6fuN6TSF4h547lxMh7sJWv+6Z0PmOA5N8FzUHJw==","_location":"/ipfs/libp2p-delegated-content-routing/ipfs-http-client","_phantomChildren":{},"_requested":{"type":"version","registry":true,"raw":"ipfs-http-client@33.1.1","name":"ipfs-http-client","escapedName":"ipfs-http-client","rawSpec":"33.1.1","saveSpec":null,"fetchSpec":"33.1.1"},"_requiredBy":["/ipfs/libp2p-delegated-content-routing"],"_resolved":"https://registry.npmjs.org/ipfs-http-client/-/ipfs-http-client-33.1.1.tgz","_spec":"33.1.1","_where":"/Users/feewet/dev/ethdenver/bound/frontend","browser":{"glob":false,"fs":false,"stream":"readable-stream"},"bugs":{"url":"https://github.com/ipfs/js-ipfs-http-client/issues"},"contributors":[{"name":"Alan Shaw","email":"alan.shaw@protocol.ai"},{"name":"Alan Shaw","email":"alan@tableflip.io"},{"name":"Alex Mingoia","email":"talk@alexmingoia.com"},{"name":"Alex Potsides","email":"alex@achingbrain.net"},{"name":"Antonio Tenorio-Fornés","email":"antoniotenorio@ucm.es"},{"name":"Bruno Barbieri","email":"bbarbieri@delivery.com"},{"name":"Clemo","email":"flipflopsimsommer@users.noreply.github.com"},{"name":"Connor Keenan","email":"ckeenan89@gmail.com"},{"name":"Danny","email":"dannyid@protonmail.com"},{"name":"David Braun","email":"David.Braun@Toptal.com"},{"name":"David Dias","email":"daviddias.p@gmail.com"},{"name":"Dietrich Ayala","email":"autonome@gmail.com"},{"name":"Diogo Silva","email":"fsdiogo@gmail.com"},{"name":"Dmitriy Ryajov","email":"dryajov@gmail.com"},{"name":"Dmitry Nikulin","email":"dmitr-nikulin@mail.ru"},{"name":"Donatas Stundys","email":"donatas.stundys@necolt.com"},{"name":"Fil","email":"fil@rezo.net"},{"name":"Filip Š","email":"filip.stamcar@hotmail.com"},{"name":"Francisco Baio Dias","email":"xicombd@gmail.com"},{"name":"Friedel Ziegelmayer","email":"dignifiedquire@gmail.com"},{"name":"Gar","email":"gar+gh@danger.computer"},{"name":"Gavin McDermott","email":"gavinmcdermott@gmail.com"},{"name":"Gopalakrishna Palem","email":"KrishnaPG@users.noreply.github.com"},{"name":"Greenkeeper","email":"support@greenkeeper.io"},{"name":"Haad","email":"haadcode@users.noreply.github.com"},{"name":"Harlan T Wood","email":"harlantwood@users.noreply.github.com"},{"name":"Harlan T Wood","email":"code@harlantwood.net"},{"name":"Henrique Dias","email":"hacdias@gmail.com"},{"name":"Holodisc","email":"holodiscent@gmail.com"},{"name":"Hugo Dias","email":"hugomrdias@gmail.com"},{"name":"Hugo Dias","email":"mail@hugodias.me"},{"name":"JGAntunes","email":"j.goncalo.antunes@gmail.com"},{"name":"Jacob Heun","email":"jacobheun@gmail.com"},{"name":"James Halliday","email":"substack@gmail.com"},{"name":"Jason Carver","email":"jacarver@linkedin.com"},{"name":"Jason Papakostas","email":"vith@users.noreply.github.com"},{"name":"Jeff Downie","email":"JeffDownie@users.noreply.github.com"},{"name":"Jeromy","email":"why@ipfs.io"},{"name":"Jeromy","email":"jeromyj@gmail.com"},{"name":"Joe Turgeon","email":"arithmetric@gmail.com"},{"name":"Jonathan","email":"jkrone@vt.edu"},{"name":"Juan Batiz-Benet","email":"juan@benet.ai"},{"name":"Kevin Wang","email":"kevin@fossa.io"},{"name":"Kristoffer Ström","email":"kristoffer@rymdkoloni.se"},{"name":"Marcin Rataj","email":"lidel@lidel.org"},{"name":"Matt Bell","email":"mappum@gmail.com"},{"name":"Matt Ober","email":"matt.ober3@gmail.com"},{"name":"Maxime Lathuilière","email":"k@maxlath.eu"},{"name":"Michael Bradley","email":"michaelsbradleyjr@gmail.com"},{"name":"Michael Muré","email":"michael.mure@consensys.net"},{"name":"Michael Muré","email":"batolettre@gmail.com"},{"name":"Mikeal Rogers","email":"mikeal.rogers@gmail.com"},{"name":"Mitar","email":"mitar.git@tnode.com"},{"name":"Mithgol","email":"getgit@mithgol.ru"},{"name":"Mohamed Abdulaziz","email":"mohamed@mohamedabdulaziz.com"},{"name":"Nitin Patel","email":"31539366+niinpatel@users.noreply.github.com"},{"name":"Nuno Nogueira","email":"nunofmn@gmail.com"},{"name":"Níckolas Goline","email":"nickolas.goline@gmail.com"},{"name":"Oli Evans","email":"oli@tableflip.io"},{"name":"Orie Steele","email":"orie@ohs.io"},{"name":"Pedro Teixeira","email":"i@pgte.me"},{"name":"Pete Thomas","email":"pete@xminusone.net"},{"name":"Richard Littauer","email":"richard.littauer@gmail.com"},{"name":"Richard Schneider","email":"makaretu@gmail.com"},{"name":"Roman Khafizianov","email":"requilence@gmail.com"},{"name":"SeungWon","email":"ksw3894@gmail.com"},{"name":"Stephen Whitmore","email":"stephen.whitmore@gmail.com"},{"name":"Tara Vancil","email":"tbvanc@gmail.com"},{"name":"Teri Chadbourne","email":"terichadbourne@users.noreply.github.com"},{"name":"Travis Person","email":"travis@protocol.ai"},{"name":"Travis Person","email":"travis.person@gmail.com"},{"name":"Vasco Santos","email":"vasco.santos@ua.pt"},{"name":"Vasco Santos","email":"vasco.santos@moxy.studio"},{"name":"Victor Bjelkholm","email":"victor@typeform.com"},{"name":"Volker Mische","email":"volker.mische@gmail.com"},{"name":"Zhiyuan Lin","email":"edsgerlin@gmail.com"},{"name":"dirkmc","email":"dirkmdev@gmail.com"},{"name":"dmitriy ryajov","email":"dryajov@dmitriys-MacBook-Pro.local"},{"name":"elsehow","email":"yes@cosmopol.is"},{"name":"ethers","email":"ethereum@outlook.com"},{"name":"greenkeeper[bot]","email":"greenkeeper[bot]@users.noreply.github.com"},{"name":"haad","email":"haad@headbanggames.com"},{"name":"kumavis","email":"kumavis@users.noreply.github.com"},{"name":"leekt216","email":"leekt216@gmail.com"},{"name":"nginnever","email":"ginneversource@gmail.com"},{"name":"noah the goodra","email":"peterpan0413@live.com"},{"name":"priecint","email":"tp-dev@seznam.cz"},{"name":"samuli","email":"samuli@nugg.ad"},{"name":"shunkin","email":"hiyoko.san.ipod@gmail.com"},{"name":"victorbjelkholm","email":"victorbjelkholm@gmail.com"},{"name":"Łukasz Magiera","email":"magik6k@users.noreply.github.com"},{"name":"Łukasz Magiera","email":"magik6k@gmail.com"}],"dependencies":{"async":"^2.6.1","bignumber.js":"^9.0.0","bl":"^3.0.0","bs58":"^4.0.1","buffer":"^5.2.1","cids":"~0.7.1","concat-stream":"github:hugomrdias/concat-stream#feat/smaller","debug":"^4.1.0","detect-node":"^2.0.4","end-of-stream":"^1.4.1","err-code":"^1.1.2","flatmap":"0.0.3","glob":"^7.1.3","ipfs-block":"~0.8.1","ipfs-utils":"~0.0.3","ipld-dag-cbor":"~0.15.0","ipld-dag-pb":"~0.17.3","ipld-raw":"^4.0.0","is-ipfs":"~0.6.1","is-pull-stream":"0.0.0","is-stream":"^2.0.0","iso-stream-http":"~0.1.2","iso-url":"~0.4.6","just-kebab-case":"^1.1.0","just-map-keys":"^1.1.0","kind-of":"^6.0.2","lru-cache":"^5.1.1","multiaddr":"^6.0.6","multibase":"~0.6.0","multicodec":"~0.5.1","multihashes":"~0.4.14","ndjson":"github:hugomrdias/ndjson#feat/readable-stream3","once":"^1.4.0","peer-id":"~0.12.2","peer-info":"~0.15.1","promisify-es6":"^1.0.3","pull-defer":"~0.2.3","pull-stream":"^3.6.9","pull-to-stream":"~0.1.1","pump":"^3.0.0","qs":"^6.5.2","readable-stream":"^3.1.1","stream-to-pull-stream":"^1.7.2","tar-stream":"^2.0.1","through2":"^3.0.1"},"description":"A client library for the IPFS HTTP API","devDependencies":{"aegir":"^19.0.3","browser-process-platform":"~0.1.1","chai":"^4.2.0","cross-env":"^5.2.0","dirty-chai":"^2.0.1","go-ipfs-dep":"~0.4.21","interface-ipfs-core":"^0.109.0","ipfsd-ctl":"~0.43.0","nock":"^10.0.2","stream-equal":"^1.1.1"},"engines":{"node":">=8.3.0","npm":">=3.0.0"},"files":["src","dist"],"homepage":"https://github.com/ipfs/js-ipfs-http-client","keywords":["ipfs"],"leadMaintainer":"Alan Shaw ","license":"MIT","main":"src/index.js","name":"ipfs-http-client","repository":{"type":"git","url":"git+https://github.com/ipfs/js-ipfs-http-client.git"},"scripts":{"build":"aegir build","coverage":"npx nyc -r html npm run test:node -- --bail","lint":"aegir lint","release":"aegir release ","release-major":"aegir release --type major ","release-minor":"aegir release --type minor ","test":"aegir test","test:browser":"aegir test -t browser","test:node":"aegir test -t node","test:webworker":"aegir test -t webworker"},"version":"33.1.1"}')},"5d14":function(e,t,r){"use strict";(function(t){const n=r("1304").Key,i=new n("api");e.exports=e=>({async get(){const t=await e.get(i);return t&&t.toString()},async set(r){return e.put(i,t.from(r.toString()))},async delete(){return e.delete(i)}})}).call(this,r("b639").Buffer)},"5d36":function(e,t,r){"use strict";const n=r("2e53"),i=r("f929"),s=r("b1aa"),o=r("7048"),a=r("e3d5"),c=r("4bc2"),u=c("ipfs:ipns:resolver");u.error=c("ipfs:ipns:resolver:error");const{Errors:l}=r("7b6d"),h=l.notFoundError().code,f=32;class d{constructor(e){this._routing=e}async resolve(e,t){if(t=t||{},"string"!==typeof e)throw o(new Error("invalid name"),"ERR_INVALID_NAME");t=t||{};const r=t.recursive&&"true"===t.recursive.toString(),n=e.split("/");if(3!==n.length||""!==n[0])throw o(new Error("invalid name"),"ERR_INVALID_NAME");const i=n[2];let s;r&&(s=f);const a=await this.resolver(i,s);return u(`${e} was locally resolved correctly`),a}async resolver(e,t){if(0===t){const e=`could not resolve name (recursion limit of ${f} exceeded)`;throw u.error(e),o(new Error(e),"ERR_RESOLVE_RECURSION_LIMIT")}const r=await this._resolveName(e),n=r.split("/");return"ipfs"!==n[1]&&t?this.resolver(n[2],t-1):r}async _resolveName(e){const t=s.createFromBytes(new a(e).multihash),{routingKey:r}=n.getIdKeys(t.toBytes());let c,l,f;try{c=await this._routing.get(r.toBuffer())}catch(d){if(u.error(d),d.code===h)throw o(new Error(`record requested for ${e} was not found in the network`),"ERR_NO_RECORD_FOUND");throw o(new Error(`unexpected error getting the ipns record ${t.id}`),"ERR_UNEXPECTED_ERROR_GETTING_RECORD")}try{l=n.unmarshal(c)}catch(d){throw u.error(d),o(new Error("found ipns record that we couldn't convert to a value"),"ERR_INVALID_RECORD_RECEIVED")}if(l.pubKey)return this._validateRecord(t,l);try{f=await this._routing.get(r.toBuffer())}catch(d){if(u.error(d),d.code===h)throw o(new Error(`public key requested for ${e} was not found in the network`),"ERR_NO_RECORD_FOUND");throw o(new Error(`unexpected error getting the public key for the ipns record ${t.id}`),"ERR_UNEXPECTED_ERROR_GETTING_PUB_KEY")}try{t.pubKey=i.keys.unmarshalPublicKey(f)}catch(d){throw u.error(d),o(new Error("found public key record that we couldn't convert to a value"),"ERR_INVALID_PUB_KEY_RECEIVED")}return this._validateRecord(t,l)}async _validateRecord(e,t){const r=await n.extractPublicKey(e,t);return await n.validate(r,t),t.value.toString()}}e.exports=d},"5d41":function(e,t,r){var n=r("23e7"),i=r("861d"),s=r("825a"),o=r("5135"),a=r("06cf"),c=r("e163");function u(e,t){var r,n,l=arguments.length<3?e:arguments[2];return s(e)===l?e[t]:(r=a.f(e,t))?o(r,"value")?r.value:void 0===r.get?void 0:r.get.call(l):i(n=c(e))?u(n,t,l):void 0}n({target:"Reflect",stat:!0},{get:u})},"5d5f":function(e,t,r){var n=r("5995");r("b3d5"),r("31a0");var i=e.exports=n.sha256=n.sha256||{};n.md.sha256=n.md.algorithms.sha256=i,i.create=function(){o||c();var e=null,t=n.util.createBuffer(),r=new Array(64),i={algorithm:"sha256",blockLength:64,digestLength:32,messageLength:0,fullMessageLength:null,messageLengthSize:8,start:function(){i.messageLength=0,i.fullMessageLength=i.messageLength64=[];for(var r=i.messageLengthSize/4,s=0;s>>0,a>>>0];for(var c=i.fullMessageLength.length-1;c>=0;--c)i.fullMessageLength[c]+=a[1],a[1]=a[0]+(i.fullMessageLength[c]/4294967296>>>0),i.fullMessageLength[c]=i.fullMessageLength[c]>>>0,a[0]=a[1]/4294967296>>>0;return t.putBytes(s),u(e,r,t),(t.read>2048||0===t.length())&&t.compact(),i},i.digest=function(){var o=n.util.createBuffer();o.putBytes(t.bytes());var a,c,l=i.fullMessageLength[i.fullMessageLength.length-1]+i.messageLengthSize,h=l&i.blockLength-1;o.putBytes(s.substr(0,i.blockLength-h));for(var f=8*i.fullMessageLength[0],d=0;d>>0,f+=c,o.putInt32(f>>>0),f=a>>>0;o.putInt32(f);var p={h0:e.h0,h1:e.h1,h2:e.h2,h3:e.h3,h4:e.h4,h5:e.h5,h6:e.h6,h7:e.h7};u(p,r,o);var y=n.util.createBuffer();return y.putInt32(p.h0),y.putInt32(p.h1),y.putInt32(p.h2),y.putInt32(p.h3),y.putInt32(p.h4),y.putInt32(p.h5),y.putInt32(p.h6),y.putInt32(p.h7),y},i};var s=null,o=!1,a=null;function c(){s=String.fromCharCode(128),s+=n.util.fillString(String.fromCharCode(0),64),a=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],o=!0}function u(e,t,r){var n,i,s,o,c,u,l,h,f,d,p,y,g,m,b,v=r.length();while(v>=64){for(l=0;l<16;++l)t[l]=r.getInt32();for(;l<64;++l)n=t[l-2],n=(n>>>17|n<<15)^(n>>>19|n<<13)^n>>>10,i=t[l-15],i=(i>>>7|i<<25)^(i>>>18|i<<14)^i>>>3,t[l]=n+t[l-7]+i+t[l-16]|0;for(h=e.h0,f=e.h1,d=e.h2,p=e.h3,y=e.h4,g=e.h5,m=e.h6,b=e.h7,l=0;l<64;++l)o=(y>>>6|y<<26)^(y>>>11|y<<21)^(y>>>25|y<<7),c=m^y&(g^m),s=(h>>>2|h<<30)^(h>>>13|h<<19)^(h>>>22|h<<10),u=h&f|d&(h^f),n=b+o+c+a[l]+t[l],i=s+u,b=m,m=g,g=y,y=p+n>>>0,p=d,d=f,f=h,h=n+i>>>0;e.h0=e.h0+h|0,e.h1=e.h1+f|0,e.h2=e.h2+d|0,e.h3=e.h3+p|0,e.h4=e.h4+y|0,e.h5=e.h5+g|0,e.h6=e.h6+m|0,e.h7=e.h7+b|0,v-=64}}},"5d61":function(e,t){var r=function(e){function t(){this.fetch=!1,this.DOMException=e.DOMException}return t.prototype=e,new t}("undefined"!==typeof self?self:this);(function(e){(function(t){var r={searchParams:"URLSearchParams"in e,iterable:"Symbol"in e&&"iterator"in Symbol,blob:"FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch(e){return!1}}(),formData:"FormData"in e,arrayBuffer:"ArrayBuffer"in e};function n(e){return e&&DataView.prototype.isPrototypeOf(e)}if(r.arrayBuffer)var i=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],s=ArrayBuffer.isView||function(e){return e&&i.indexOf(Object.prototype.toString.call(e))>-1};function o(e){if("string"!==typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(e))throw new TypeError("Invalid character in header field name");return e.toLowerCase()}function a(e){return"string"!==typeof e&&(e=String(e)),e}function c(e){var t={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return r.iterable&&(t[Symbol.iterator]=function(){return t}),t}function u(e){this.map={},e instanceof u?e.forEach((function(e,t){this.append(t,e)}),this):Array.isArray(e)?e.forEach((function(e){this.append(e[0],e[1])}),this):e&&Object.getOwnPropertyNames(e).forEach((function(t){this.append(t,e[t])}),this)}function l(e){if(e.bodyUsed)return Promise.reject(new TypeError("Already read"));e.bodyUsed=!0}function h(e){return new Promise((function(t,r){e.onload=function(){t(e.result)},e.onerror=function(){r(e.error)}}))}function f(e){var t=new FileReader,r=h(t);return t.readAsArrayBuffer(e),r}function d(e){var t=new FileReader,r=h(t);return t.readAsText(e),r}function p(e){for(var t=new Uint8Array(e),r=new Array(t.length),n=0;n-1?t:e}function v(e,t){t=t||{};var r=t.body;if(e instanceof v){if(e.bodyUsed)throw new TypeError("Already read");this.url=e.url,this.credentials=e.credentials,t.headers||(this.headers=new u(e.headers)),this.method=e.method,this.mode=e.mode,this.signal=e.signal,r||null==e._bodyInit||(r=e._bodyInit,e.bodyUsed=!0)}else this.url=String(e);if(this.credentials=t.credentials||this.credentials||"same-origin",!t.headers&&this.headers||(this.headers=new u(t.headers)),this.method=b(t.method||this.method||"GET"),this.mode=t.mode||this.mode||null,this.signal=t.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&r)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(r)}function w(e){var t=new FormData;return e.trim().split("&").forEach((function(e){if(e){var r=e.split("="),n=r.shift().replace(/\+/g," "),i=r.join("=").replace(/\+/g," ");t.append(decodeURIComponent(n),decodeURIComponent(i))}})),t}function _(e){var t=new u,r=e.replace(/\r?\n[\t ]+/g," ");return r.split(/\r?\n/).forEach((function(e){var r=e.split(":"),n=r.shift().trim();if(n){var i=r.join(":").trim();t.append(n,i)}})),t}function E(e,t){t||(t={}),this.type="default",this.status=void 0===t.status?200:t.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in t?t.statusText:"OK",this.headers=new u(t.headers),this.url=t.url||"",this._initBody(e)}v.prototype.clone=function(){return new v(this,{body:this._bodyInit})},g.call(v.prototype),g.call(E.prototype),E.prototype.clone=function(){return new E(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new u(this.headers),url:this.url})},E.error=function(){var e=new E(null,{status:0,statusText:""});return e.type="error",e};var S=[301,302,303,307,308];E.redirect=function(e,t){if(-1===S.indexOf(t))throw new RangeError("Invalid status code");return new E(null,{status:t,headers:{location:e}})},t.DOMException=e.DOMException;try{new t.DOMException}catch(C){t.DOMException=function(e,t){this.message=e,this.name=t;var r=Error(e);this.stack=r.stack},t.DOMException.prototype=Object.create(Error.prototype),t.DOMException.prototype.constructor=t.DOMException}function k(e,n){return new Promise((function(i,s){var o=new v(e,n);if(o.signal&&o.signal.aborted)return s(new t.DOMException("Aborted","AbortError"));var a=new XMLHttpRequest;function c(){a.abort()}a.onload=function(){var e={status:a.status,statusText:a.statusText,headers:_(a.getAllResponseHeaders()||"")};e.url="responseURL"in a?a.responseURL:e.headers.get("X-Request-URL");var t="response"in a?a.response:a.responseText;i(new E(t,e))},a.onerror=function(){s(new TypeError("Network request failed"))},a.ontimeout=function(){s(new TypeError("Network request failed"))},a.onabort=function(){s(new t.DOMException("Aborted","AbortError"))},a.open(o.method,o.url,!0),"include"===o.credentials?a.withCredentials=!0:"omit"===o.credentials&&(a.withCredentials=!1),"responseType"in a&&r.blob&&(a.responseType="blob"),o.headers.forEach((function(e,t){a.setRequestHeader(t,e)})),o.signal&&(o.signal.addEventListener("abort",c),a.onreadystatechange=function(){4===a.readyState&&o.signal.removeEventListener("abort",c)}),a.send("undefined"===typeof o._bodyInit?null:o._bodyInit)}))}k.polyfill=!0,e.fetch||(e.fetch=k,e.Headers=u,e.Request=v,e.Response=E),t.Headers=u,t.Request=v,t.Response=E,t.fetch=k})({})})(r),delete r.fetch.polyfill,t=r.fetch,t.default=r.fetch,t.fetch=r.fetch,t.Headers=r.Headers,t.Request=r.Request,t.Response=r.Response,e.exports=t},"5d98":function(e,t,r){"use strict";(function(n){const i=r("2612"),s=r("5ab1"),o=r("cc3c"),a=r("1c13");t=e.exports,t.addPrefix=(e,t)=>{let r;if(n.isBuffer(e))r=a.varintBufferEncode(e);else{if(!o[e])throw new Error("multicodec not recognized");r=o[e]}return n.concat([r,t])},t.rmPrefix=e=>(i.decode(e),e.slice(i.decode.bytes)),t.getCodec=e=>{const t=i.decode(e),r=s.get(t);if(void 0===r)throw new Error(`Code ${t} not found`);return r},t.getName=e=>s.get(e),t.getNumber=e=>{const t=o[e];if(void 0===t)throw new Error("Codec `"+e+"` not found");return a.varintBufferDecode(t)[0]},t.getCode=e=>i.decode(e),t.getCodeVarint=e=>{const t=o[e];if(void 0===t)throw new Error("Codec `"+e+"` not found");return t},t.getVarint=e=>i.encode(e);const c=r("81116");Object.assign(t,c),t.print=r("17b2")}).call(this,r("b639").Buffer)},"5dd0":function(e,t,r){"use strict";(function(t){const n=r("7048");async function*i(e){for await(const r of e){if(void 0===r.length)throw n(new Error("Content was invalid"),"ERR_INVALID_CONTENT");"string"===typeof r||r instanceof String?yield t.from(r,"utf8"):Array.isArray(r)?yield t.from(r):yield r}}e.exports=i}).call(this,r("b639").Buffer)},"5e0f":function(e,t,r){"use strict";(function(t,n){function i(e){var t=this;this.next=null,this.entry=null,this.finish=function(){H(t,e)}}var s;e.exports=T,T.WritableState=I;var o={deprecate:r("b7d1")},a=r("22a8"),c=r("b639").Buffer,u=t.Uint8Array||function(){};function l(e){return c.from(e)}function h(e){return c.isBuffer(e)||e instanceof u}var f,d=r("28d3"),p=r("ac2a"),y=p.getHighWaterMark,g=r("c499").codes,m=g.ERR_INVALID_ARG_TYPE,b=g.ERR_METHOD_NOT_IMPLEMENTED,v=g.ERR_MULTIPLE_CALLBACK,w=g.ERR_STREAM_CANNOT_PIPE,_=g.ERR_STREAM_DESTROYED,E=g.ERR_STREAM_NULL_VALUES,S=g.ERR_STREAM_WRITE_AFTER_END,k=g.ERR_UNKNOWN_ENCODING,C=d.errorOrDestroy;function A(){}function I(e,t,n){s=s||r("a390"),e=e||{},"boolean"!==typeof n&&(n=t instanceof s),this.objectMode=!!e.objectMode,n&&(this.objectMode=this.objectMode||!!e.writableObjectMode),this.highWaterMark=y(this,e,"writableHighWaterMark",n),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var o=!1===e.decodeStrings;this.decodeStrings=!o,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){L(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==e.emitClose,this.autoDestroy=!!e.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new i(this)}function T(e){s=s||r("a390");var t=this instanceof s;if(!t&&!f.call(T,this))return new T(e);this._writableState=new I(e,this,t),this.writable=!0,e&&("function"===typeof e.write&&(this._write=e.write),"function"===typeof e.writev&&(this._writev=e.writev),"function"===typeof e.destroy&&(this._destroy=e.destroy),"function"===typeof e.final&&(this._final=e.final)),a.call(this)}function x(e,t){var r=new S;C(e,r),n.nextTick(t,r)}function B(e,t,r,i){var s;return null===r?s=new E:"string"===typeof r||t.objectMode||(s=new m("chunk",["string","Buffer"],r)),!s||(C(e,s),n.nextTick(i,s),!1)}function R(e,t,r){return e.objectMode||!1===e.decodeStrings||"string"!==typeof t||(t=c.from(t,r)),t}function N(e,t,r,n,i,s){if(!r){var o=R(t,n,i);n!==o&&(r=!0,i="buffer",n=o)}var a=t.objectMode?1:n.length;t.length+=a;var c=t.length-1))throw new k(e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(T.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(T.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),T.prototype._write=function(e,t,r){r(new b("_write()"))},T.prototype._writev=null,T.prototype.end=function(e,t,r){var n=this._writableState;return"function"===typeof e?(r=e,e=null,t=null):"function"===typeof t&&(r=t,t=null),null!==e&&void 0!==e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||z(this,n,r),this},Object.defineProperty(T.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(T.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),T.prototype.destroy=d.destroy,T.prototype._undestroy=d.undestroy,T.prototype._destroy=function(e,t){t(e)}}).call(this,r("c8ba"),r("4362"))},"5e27":function(e,t,r){"use strict";const n=r("df7c"),i=r("3c43"),s=r("021d");t.filter=(e,t)=>async function*(){for await(const r of e){const e=await t(r);e&&(yield r)}}(),t.sortAll=(e,t)=>async function*(){let r=[];for await(const t of e)r.push(t);r=await t(r);for(const e of r)yield e}(),t.take=(e,t)=>async function*(){if(t<=0)return;let r=0;for await(const n of e)if(yield n,r++,r>=t)return}(),t.map=(e,t)=>async function*(){for await(const r of e)yield t(r)}(),t.replaceStartWith=function(e,t){const r=new RegExp("^"+t);return e.replace(r,"")},t.tmpdir=()=>n.join(i.tmpdir(),s())},"5e38":function(e,t,r){"use strict";function n(e,t,r){var n;if(!(e instanceof Error))throw new TypeError("Please pass an Error to err-code");if("object"===typeof t?r=t:null!=t&&(e.code=t),r)for(n in r)e[n]=r[n];return e}e.exports=n},"5e45":function(e,t,r){var n=r("c3bb"),i=r("ba68").Readable,s=r("0bac");function o(e,t){if(!(this instanceof o))return new o(e,t);t=t||{},i.call(this,s(t,{objectMode:!0})),this._iterator=e,this._options=t,this.on("end",this.destroy.bind(this,null,null))}e.exports=o,n(o,i),o.prototype._read=function(){var e=this,t=this._options;this.destroyed||this._iterator.next((function(r,n,i){if(!e.destroyed)return r?e.destroy(r):void(void 0===n&&void 0===i?e.push(null):!1!==t.keys&&!1===t.values?e.push(n):!1===t.keys&&!1!==t.values?e.push(i):e.push({key:n,value:i}))}))},o.prototype._destroy=function(e,t){this._iterator.end((function(r){t(e||r)}))}},"5e55":function(e,t,r){"use strict";var n=r("a3b8");e.exports=function(e,t){if(!e)return function(e,r){return e?n(r,e,t):r(!0)};Array.isArray(e)||(e=Object.keys(e).map((function(t){return e[t]})));var r=0;return function(i,s){if(i)return n(s,i,t);r>=e.length?s(!0):s(null,e[r++])}}},"5e57":function(e,t,r){"use strict";(function(e){const n=r("9aa3"),i=r("9f2e");t.publicKeyLength=n.sign.publicKeyLength,t.privateKeyLength=n.sign.secretKeyLength,t.generateKey=function(e){i(()=>{let t;try{t=n.sign.keyPair()}catch(r){return e(r)}e(null,t)})},t.generateKeyFromSeed=function(e,t){i(()=>{let r;try{r=n.sign.keyPair.fromSeed(e)}catch(i){return t(i)}t(null,r)})},t.hashAndSign=function(t,r,s){i(()=>{s(null,e.from(n.sign.detached(r,t)))})},t.hashAndVerify=function(e,t,r,s){i(()=>{let i;try{i=n.sign.detached.verify(r,t,e)}catch(o){return s(o)}s(null,i)})}}).call(this,r("b639").Buffer)},"5eae":function(e,t,r){"use strict";const n=r("bbaf6"),i=r("de4f").isFunction,s=r("de4f").isBoolean,o=r("de4f").isObject,a=r("de4f").isArray,c=r("de4f").isRegex,u=r("de4f").assign,l=r("de4f").keys;function h(e){return null===e||void 0===e?e:c(e)?e.toString():e.toJSON?e.toJSON():e}function f(e,t){t=t||u({},n),i(t)&&(t={compare:t});const r=t.space||n.space,c=s(t.cycles)?t.cycles:n.cycles,f=t.replacer||n.replacer,d=t.stringify||n.stringify,p=t.compare&&function(e){return function(t){return function(r,n){const i={key:r,value:t[r]},s={key:n,value:t[n]};return e(i,s)}}}(t.compare);c||d(e);const y=[];return function e(t,n,i,s){const u=r?"\n"+new Array(s+1).join(r):"",g=r?": ":":";if(i=h(i),i=f.call(t,n,i),void 0!==i){if(!o(i)||null===i)return d(i);if(a(i)){const t=[];for(let n=0;n15?(i=Date.now(),c(e)):(r.push(e),1===r.length&&o.setAttribute("a",s=!s))}}a.nextTick=a.setImmediate})(),a.isNodejs="undefined"!==typeof t&&t.versions&&t.versions.node,a.globalScope=function(){return a.isNodejs?n:"undefined"===typeof self?window:self}(),a.isArray=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},a.isArrayBuffer=function(e){return"undefined"!==typeof ArrayBuffer&&e instanceof ArrayBuffer},a.isArrayBufferView=function(e){return e&&a.isArrayBuffer(e.buffer)&&void 0!==e.byteLength},a.ByteBuffer=u,a.ByteStringBuffer=u;var l=4096;function h(e,t){t=t||{},this.read=t.readOffset||0,this.growSize=t.growSize||1024;var r=a.isArrayBuffer(e),n=a.isArrayBufferView(e);if(r||n)return this.data=r?new DataView(e):new DataView(e.buffer,e.byteOffset,e.byteLength),void(this.write="writeOffset"in t?t.writeOffset:this.data.byteLength);this.data=new DataView(new ArrayBuffer(0)),this.write=0,null!==e&&void 0!==e&&this.putBytes(e),"writeOffset"in t&&(this.write=t.writeOffset)}a.ByteStringBuffer.prototype._optimizeConstructedString=function(e){this._constructedStringLength+=e,this._constructedStringLength>l&&(this.data.substr(0,1),this._constructedStringLength=0)},a.ByteStringBuffer.prototype.length=function(){return this.data.length-this.read},a.ByteStringBuffer.prototype.isEmpty=function(){return this.length()<=0},a.ByteStringBuffer.prototype.putByte=function(e){return this.putBytes(String.fromCharCode(e))},a.ByteStringBuffer.prototype.fillWithByte=function(e,t){e=String.fromCharCode(e);var r=this.data;while(t>0)1&t&&(r+=e),t>>>=1,t>0&&(e+=e);return this.data=r,this._optimizeConstructedString(t),this},a.ByteStringBuffer.prototype.putBytes=function(e){return this.data+=e,this._optimizeConstructedString(e.length),this},a.ByteStringBuffer.prototype.putString=function(e){return this.putBytes(a.encodeUtf8(e))},a.ByteStringBuffer.prototype.putInt16=function(e){return this.putBytes(String.fromCharCode(e>>8&255)+String.fromCharCode(255&e))},a.ByteStringBuffer.prototype.putInt24=function(e){return this.putBytes(String.fromCharCode(e>>16&255)+String.fromCharCode(e>>8&255)+String.fromCharCode(255&e))},a.ByteStringBuffer.prototype.putInt32=function(e){return this.putBytes(String.fromCharCode(e>>24&255)+String.fromCharCode(e>>16&255)+String.fromCharCode(e>>8&255)+String.fromCharCode(255&e))},a.ByteStringBuffer.prototype.putInt16Le=function(e){return this.putBytes(String.fromCharCode(255&e)+String.fromCharCode(e>>8&255))},a.ByteStringBuffer.prototype.putInt24Le=function(e){return this.putBytes(String.fromCharCode(255&e)+String.fromCharCode(e>>8&255)+String.fromCharCode(e>>16&255))},a.ByteStringBuffer.prototype.putInt32Le=function(e){return this.putBytes(String.fromCharCode(255&e)+String.fromCharCode(e>>8&255)+String.fromCharCode(e>>16&255)+String.fromCharCode(e>>24&255))},a.ByteStringBuffer.prototype.putInt=function(e,t){c(t);var r="";do{t-=8,r+=String.fromCharCode(e>>t&255)}while(t>0);return this.putBytes(r)},a.ByteStringBuffer.prototype.putSignedInt=function(e,t){return e<0&&(e+=2<0);return t},a.ByteStringBuffer.prototype.getSignedInt=function(e){var t=this.getInt(e),r=2<=r&&(t-=r<<1),t},a.ByteStringBuffer.prototype.getBytes=function(e){var t;return e?(e=Math.min(this.length(),e),t=this.data.slice(this.read,this.read+e),this.read+=e):0===e?t="":(t=0===this.read?this.data:this.data.slice(this.read),this.clear()),t},a.ByteStringBuffer.prototype.bytes=function(e){return"undefined"===typeof e?this.data.slice(this.read):this.data.slice(this.read,this.read+e)},a.ByteStringBuffer.prototype.at=function(e){return this.data.charCodeAt(this.read+e)},a.ByteStringBuffer.prototype.setAt=function(e,t){return this.data=this.data.substr(0,this.read+e)+String.fromCharCode(t)+this.data.substr(this.read+e+1),this},a.ByteStringBuffer.prototype.last=function(){return this.data.charCodeAt(this.data.length-1)},a.ByteStringBuffer.prototype.copy=function(){var e=a.createBuffer(this.data);return e.read=this.read,e},a.ByteStringBuffer.prototype.compact=function(){return this.read>0&&(this.data=this.data.slice(this.read),this.read=0),this},a.ByteStringBuffer.prototype.clear=function(){return this.data="",this.read=0,this},a.ByteStringBuffer.prototype.truncate=function(e){var t=Math.max(0,this.length()-e);return this.data=this.data.substr(this.read,t),this.read=0,this},a.ByteStringBuffer.prototype.toHex=function(){for(var e="",t=this.read;t=e)return this;t=Math.max(t||this.growSize,e);var r=new Uint8Array(this.data.buffer,this.data.byteOffset,this.data.byteLength),n=new Uint8Array(this.length()+t);return n.set(r),this.data=new DataView(n.buffer),this},a.DataBuffer.prototype.putByte=function(e){return this.accommodate(1),this.data.setUint8(this.write++,e),this},a.DataBuffer.prototype.fillWithByte=function(e,t){this.accommodate(t);for(var r=0;r>8&65535),this.data.setInt8(this.write,e>>16&255),this.write+=3,this},a.DataBuffer.prototype.putInt32=function(e){return this.accommodate(4),this.data.setInt32(this.write,e),this.write+=4,this},a.DataBuffer.prototype.putInt16Le=function(e){return this.accommodate(2),this.data.setInt16(this.write,e,!0),this.write+=2,this},a.DataBuffer.prototype.putInt24Le=function(e){return this.accommodate(3),this.data.setInt8(this.write,e>>16&255),this.data.setInt16(this.write,e>>8&65535,!0),this.write+=3,this},a.DataBuffer.prototype.putInt32Le=function(e){return this.accommodate(4),this.data.setInt32(this.write,e,!0),this.write+=4,this},a.DataBuffer.prototype.putInt=function(e,t){c(t),this.accommodate(t/8);do{t-=8,this.data.setInt8(this.write++,e>>t&255)}while(t>0);return this},a.DataBuffer.prototype.putSignedInt=function(e,t){return c(t),this.accommodate(t/8),e<0&&(e+=2<0);return t},a.DataBuffer.prototype.getSignedInt=function(e){var t=this.getInt(e),r=2<=r&&(t-=r<<1),t},a.DataBuffer.prototype.getBytes=function(e){var t;return e?(e=Math.min(this.length(),e),t=this.data.slice(this.read,this.read+e),this.read+=e):0===e?t="":(t=0===this.read?this.data:this.data.slice(this.read),this.clear()),t},a.DataBuffer.prototype.bytes=function(e){return"undefined"===typeof e?this.data.slice(this.read):this.data.slice(this.read,this.read+e)},a.DataBuffer.prototype.at=function(e){return this.data.getUint8(this.read+e)},a.DataBuffer.prototype.setAt=function(e,t){return this.data.setUint8(e,t),this},a.DataBuffer.prototype.last=function(){return this.data.getUint8(this.write-1)},a.DataBuffer.prototype.copy=function(){return new a.DataBuffer(this)},a.DataBuffer.prototype.compact=function(){if(this.read>0){var e=new Uint8Array(this.data.buffer,this.read),t=new Uint8Array(e.byteLength);t.set(e),this.data=new DataView(t),this.write-=this.read,this.read=0}return this},a.DataBuffer.prototype.clear=function(){return this.data=new DataView(new ArrayBuffer(0)),this.read=this.write=0,this},a.DataBuffer.prototype.truncate=function(e){return this.write=Math.max(0,this.length()-e),this.read=Math.min(this.read,this.write),this},a.DataBuffer.prototype.toHex=function(){for(var e="",t=this.read;t0)1&t&&(r+=e),t>>>=1,t>0&&(e+=e);return r},a.xorBytes=function(e,t,r){for(var n="",i="",s="",o=0,a=0;r>0;--r,++o)i=e.charCodeAt(o)^t.charCodeAt(o),a>=10&&(n+=s,s="",a=0),s+=String.fromCharCode(i),++a;return n+=s,n},a.hexToBytes=function(e){var t="",r=0;for(!0&e.length&&(r=1,t+=String.fromCharCode(parseInt(e[0],16)));r>24&255)+String.fromCharCode(e>>16&255)+String.fromCharCode(e>>8&255)+String.fromCharCode(255&e)};var f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",d=[62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,64,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],p="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";a.encode64=function(e,t){var r,n,i,s="",o="",a=0;while(a>2),s+=f.charAt((3&r)<<4|n>>4),isNaN(n)?s+="==":(s+=f.charAt((15&n)<<2|i>>6),s+=isNaN(i)?"=":f.charAt(63&i)),t&&s.length>t&&(o+=s.substr(0,t)+"\r\n",s=s.substr(t));return o+=s,o},a.decode64=function(e){e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");var t,r,n,i,s="",o=0;while(o>4),64!==n&&(s+=String.fromCharCode((15&r)<<4|n>>2),64!==i&&(s+=String.fromCharCode((3&n)<<6|i)));return s},a.encodeUtf8=function(e){return unescape(encodeURIComponent(e))},a.decodeUtf8=function(e){return decodeURIComponent(escape(e))},a.binary={raw:{},hex:{},base64:{},base58:{},baseN:{encode:o.encode,decode:o.decode}},a.binary.raw.encode=function(e){return String.fromCharCode.apply(null,e)},a.binary.raw.decode=function(e,t,r){var n=t;n||(n=new Uint8Array(e.length)),r=r||0;for(var i=r,s=0;s>2),s+=f.charAt((3&r)<<4|n>>4),isNaN(n)?s+="==":(s+=f.charAt((15&n)<<2|i>>6),s+=isNaN(i)?"=":f.charAt(63&i)),t&&s.length>t&&(o+=s.substr(0,t)+"\r\n",s=s.substr(t));return o+=s,o},a.binary.base64.decode=function(e,t,r){var n,i,s,o,a=t;a||(a=new Uint8Array(3*Math.ceil(e.length/4))),e=e.replace(/[^A-Za-z0-9\+\/\=]/g,""),r=r||0;var c=0,u=r;while(c>4,64!==s&&(a[u++]=(15&i)<<4|s>>2,64!==o&&(a[u++]=(3&s)<<6|o));return t?u-r:a.subarray(0,u)},a.binary.base58.encode=function(e,t){return a.binary.baseN.encode(e,p,t)},a.binary.base58.decode=function(e,t){return a.binary.baseN.decode(e,p,t)},a.text={utf8:{},utf16:{}},a.text.utf8.encode=function(e,t,r){e=a.encodeUtf8(e);var n=t;n||(n=new Uint8Array(e.length)),r=r||0;for(var i=r,s=0;s0?(i=r[n].substring(0,o),s=r[n].substring(o+1)):(i=r[n],s=null),i in t||(t[i]=[]),i in Object.prototype||null===s||t[i].push(unescape(s))}return t};return"undefined"===typeof e?(null===E&&(E="undefined"!==typeof window&&window.location&&window.location.search?r(window.location.search.substring(1)):{}),t=E):t=r(e),t},a.parseFragment=function(e){var t=e,r="",n=e.indexOf("?");n>0&&(t=e.substring(0,n),r=e.substring(n+1));var i=t.split("/");i.length>0&&""===i[0]&&i.shift();var s=""===r?{}:a.getQueryVariables(r);return{pathString:t,queryString:r,path:i,query:s}},a.makeRequest=function(e){var t=a.parseFragment(e),r={path:t.pathString,query:t.queryString,getPath:function(e){return"undefined"===typeof e?t.path:t.path[e]},getQuery:function(e,r){var n;return"undefined"===typeof e?n=t.query:(n=t.query[e],n&&"undefined"!==typeof r&&(n=n[r])),n},getQueryLast:function(e,t){var n,i=r.getQuery(e);return n=i?i[i.length-1]:t,n}};return r},a.makeLink=function(e,t,r){e=jQuery.isArray(e)?e.join("/"):e;var n=jQuery.param(t||{});return r=r||"",e+(n.length>0?"?"+n:"")+(r.length>0?"#"+r:"")},a.setPath=function(e,t,r){if("object"===typeof e&&null!==e){var n=0,i=t.length;while(n0&&s.push(r),o=n.lastIndex;var a=t[0][1];switch(a){case"s":case"o":i");break;case"%":s.push("%");break;default:s.push("<%"+a+"?>")}}return s.push(e.substring(o)),s.join("")},a.formatNumber=function(e,t,r,n){var i=e,s=isNaN(t=Math.abs(t))?2:t,o=void 0===r?",":r,a=void 0===n?".":n,c=i<0?"-":"",u=parseInt(i=Math.abs(+i||0).toFixed(s),10)+"",l=u.length>3?u.length%3:0;return c+(l?u.substr(0,l)+a:"")+u.substr(l).replace(/(\d{3})(?=\d)/g,"$1"+a)+(s?o+Math.abs(i-u).toFixed(s).slice(2):"")},a.formatSize=function(e){return e=e>=1073741824?a.formatNumber(e/1073741824,2,".","")+" GiB":e>=1048576?a.formatNumber(e/1048576,2,".","")+" MiB":e>=1024?a.formatNumber(e/1024,0)+" KiB":a.formatNumber(e,0)+" bytes",e},a.bytesFromIP=function(e){return-1!==e.indexOf(".")?a.bytesFromIPv4(e):-1!==e.indexOf(":")?a.bytesFromIPv6(e):null},a.bytesFromIPv4=function(e){if(e=e.split("."),4!==e.length)return null;for(var t=a.createBuffer(),r=0;rr[n].end-r[n].start&&(n=r.length-1)):r.push({start:c,end:c})}t.push(s)}if(r.length>0){var u=r[n];u.end-u.start>0&&(t.splice(u.start,u.end-u.start+1,""),0===u.start&&t.unshift(""),7===u.end&&t.push(""))}return t.join(":")},a.estimateCores=function(e,t){if("function"===typeof e&&(t=e,e={}),e=e||{},"cores"in a&&!e.update)return t(null,a.cores);if("undefined"!==typeof navigator&&"hardwareConcurrency"in navigator&&navigator.hardwareConcurrency>0)return a.cores=navigator.hardwareConcurrency,t(null,a.cores);if("undefined"===typeof Worker)return a.cores=1,t(null,a.cores);if("undefined"===typeof Blob)return a.cores=2,t(null,a.cores);var r=URL.createObjectURL(new Blob(["(",function(){self.addEventListener("message",(function(e){var t=Date.now(),r=t+4;while(Date.now()a.st&&i.sti.st&&a.st{e.push({type:"put",key:t.toString(),value:r})},delete:t=>{e.push({type:"del",key:t.toString()})},commit:()=>this.db.batch(e)}}query(e){let r=!0;null!=e.keysOnly&&(r=!e.keysOnly);const i={keys:!0,values:r,keyAsBuffer:!0};if(null!=e.prefix){const t=e.prefix.toString();i.gte=t,i.lt=t+"ÿ"}let s=h(this.db.iterator(i));if(s=a(s,({key:e,value:i})=>{const s={key:new n(e,!1)};return r&&(s.value=t.from(i)),s}),Array.isArray(e.filters)&&(s=e.filters.reduce((e,t)=>o(e,t),s)),Array.isArray(e.orders)&&(s=e.orders.reduce((e,t)=>u(e,t),s)),null!=e.offset){let t=0;s=o(s,()=>t++>=e.offset)}return null!=e.limit&&(s=c(s,e.limit)),s}}function h(e){return{next:()=>new Promise((t,r)=>{e.next((n,i,s)=>n?r(n):null==i?e.end(e=>{if(e)return r(e);t({done:!0})}):void t({done:!1,value:{key:i,value:s}}))}),return:()=>new Promise((t,r)=>{e.end(e=>{if(e)return r(e);t({done:!0})})}),[Symbol.asyncIterator](){return this}}}e.exports=l}).call(this,r("b639").Buffer)},"5f0c":function(e,t,r){"use strict";const n=r("7048"),i={fixed:r("99e7"),rabin:r("7494")};e.exports=(e,t,r)=>{const s=i[e];if(!s)throw n(new Error(`Unknkown chunker named ${e}`),"ERR_UNKNOWN_CHUNKER");return s(t,r)}},"5f0e":function(e,t,r){"use strict";const n=r("e43a"),{EventEmitter:i}=r("faa1");function s(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let r=0,n=e.length;rt.vectorClock?e:t}static distance(e,t){let r=0,n=0;const i=Math.min(e.length,t.length),s=Math.max(e.length,t.length);for(;n=0?(this._update(r,n,e),this):r.contacts.length0&&r.length[this.distance(t.id,e),t]).sort((e,t)=>e[0]-t[0]).slice(0,t).map(e=>e[1])}count(){let e=0;for(const t=[this.root];t.length>0;){const r=t.pop();null===r.contacts?t.push(r.right,r.left):e+=r.contacts.length}return e}_determineNode(e,t,r){const n=r>>3,i=r%8;if(t.length<=n&&0!==i)return e.left;const s=t[n];return s&1<<7-i?e.right:e.left}get(e){a("id",e);let t=0,r=this.root;while(null===r.contacts)r=this._determineNode(r,e,t++);const n=this._indexOf(r,e);return n>=0?r.contacts[n]:null}_indexOf(e,t){for(let r=0;r=0){const e=r.contacts.splice(n,1)[0];this.emit("removed",e)}return this}_split(e,t){e.left=o(),e.right=o();for(const i of e.contacts)this._determineNode(e,i.id,t).contacts.push(i);e.contacts=null;const r=this._determineNode(e,this.localNodeId,t),n=e.left===r?e.right:e.left;n.dontSplit=!0}toArray(){let e=[];for(const t=[this.root];t.length>0;){const r=t.pop();null===r.contacts?t.push(r.right,r.left):e=e.concat(r.contacts)}return e}_update(e,t,r){if(!s(e.contacts[t].id,r.id))throw new Error("wrong index for _update");const n=e.contacts[t],i=this.arbiter(n,r);i===n&&n!==r||(e.contacts.splice(t,1),e.contacts.push(i),this.emit("updated",n,i))}}e.exports=c},"5f14":function(e,t,r){(function(t){var n=r("4bc2")("simple-peer"),i=r("4c9f"),s=r("e43a"),o=r("ba68"),a=r("6a91"),c=65536,u=5e3,l=5e3;function h(e){return e.replace(/a=ice-options:trickle\s\n/g,"")}function f(e,t){var r=new Error(e);return r.code=t,r}function d(e){console.warn(e)}class p extends o.Duplex{constructor(e){if(e=Object.assign({allowHalfOpen:!1},e),super(e),this._id=s(4).toString("hex").slice(0,7),this._debug("new peer %o",e),this.channelName=e.initiator?e.channelName||s(20).toString("hex"):null,this.initiator=e.initiator||!1,this.channelConfig=e.channelConfig||p.channelConfig,this.config=Object.assign({},p.config,e.config),this.offerOptions=e.offerOptions||{},this.answerOptions=e.answerOptions||{},this.sdpTransform=e.sdpTransform||(e=>e),this.streams=e.streams||(e.stream?[e.stream]:[]),this.trickle=void 0===e.trickle||e.trickle,this.allowHalfTrickle=void 0!==e.allowHalfTrickle&&e.allowHalfTrickle,this.iceCompleteTimeout=e.iceCompleteTimeout||u,this.destroyed=!1,this._connected=!1,this.remoteAddress=void 0,this.remoteFamily=void 0,this.remotePort=void 0,this.localAddress=void 0,this.localFamily=void 0,this.localPort=void 0,this._wrtc=e.wrtc&&"object"===typeof e.wrtc?e.wrtc:i(),!this._wrtc)throw"undefined"===typeof window?f("No WebRTC support: Specify `opts.wrtc` option in this environment","ERR_WEBRTC_SUPPORT"):f("No WebRTC support: Not a supported browser","ERR_WEBRTC_SUPPORT");this._pcReady=!1,this._channelReady=!1,this._iceComplete=!1,this._iceCompleteTimer=null,this._channel=null,this._pendingCandidates=[],this._isNegotiating=!this.initiator,this._batchedNegotiation=!1,this._queuedNegotiation=!1,this._sendersAwaitingStable=[],this._senderMap=new Map,this._firstStable=!0,this._closingInterval=null,this._remoteTracks=[],this._remoteStreams=[],this._chunk=null,this._cb=null,this._interval=null;try{this._pc=new this._wrtc.RTCPeerConnection(this.config)}catch(t){return void a(()=>this.destroy(f(t,"ERR_PC_CONSTRUCTOR")))}this._isReactNativeWebrtc="number"===typeof this._pc._peerConnectionId,this._pc.oniceconnectionstatechange=()=>{this._onIceStateChange()},this._pc.onicegatheringstatechange=()=>{this._onIceStateChange()},this._pc.onconnectionstatechange=()=>{this._onConnectionStateChange()},this._pc.onsignalingstatechange=()=>{this._onSignalingStateChange()},this._pc.onicecandidate=e=>{this._onIceCandidate(e)},this.initiator?this._setupData({channel:this._pc.createDataChannel(this.channelName,this.channelConfig)}):this._pc.ondatachannel=e=>{this._setupData(e)},this.streams&&this.streams.forEach(e=>{this.addStream(e)}),this._pc.ontrack=e=>{this._onTrack(e)},this.initiator&&this._needsNegotiation(),this._onFinishBound=()=>{this._onFinish()},this.once("finish",this._onFinishBound)}get bufferSize(){return this._channel&&this._channel.bufferedAmount||0}get connected(){return this._connected&&"open"===this._channel.readyState}address(){return{port:this.localPort,family:this.localFamily,address:this.localAddress}}signal(e){if(this.destroyed)throw f("cannot signal after peer is destroyed","ERR_SIGNALING");if("string"===typeof e)try{e=JSON.parse(e)}catch(t){e={}}this._debug("signal()"),e.renegotiate&&this.initiator&&(this._debug("got request to renegotiate"),this._needsNegotiation()),e.transceiverRequest&&this.initiator&&(this._debug("got request for transceiver"),this.addTransceiver(e.transceiverRequest.kind,e.transceiverRequest.init)),e.candidate&&(this._pc.remoteDescription&&this._pc.remoteDescription.type?this._addIceCandidate(e.candidate):this._pendingCandidates.push(e.candidate)),e.sdp&&this._pc.setRemoteDescription(new this._wrtc.RTCSessionDescription(e)).then(()=>{this.destroyed||(this._pendingCandidates.forEach(e=>{this._addIceCandidate(e)}),this._pendingCandidates=[],"offer"===this._pc.remoteDescription.type&&this._createAnswer())}).catch(e=>{this.destroy(f(e,"ERR_SET_REMOTE_DESCRIPTION"))}),e.sdp||e.candidate||e.renegotiate||e.transceiverRequest||this.destroy(f("signal() called with invalid signal data","ERR_SIGNALING"))}_addIceCandidate(e){var t=new this._wrtc.RTCIceCandidate(e);this._pc.addIceCandidate(t).catch(e=>{!t.address||t.address.endsWith(".local")?d("Ignoring unsupported ICE candidate."):this.destroy(f(e,"ERR_ADD_ICE_CANDIDATE"))})}send(e){this._channel.send(e)}addTransceiver(e,t){if(this._debug("addTransceiver()"),this.initiator)try{this._pc.addTransceiver(e,t),this._needsNegotiation()}catch(r){this.destroy(f(r,"ERR_ADD_TRANSCEIVER"))}else this.emit("signal",{transceiverRequest:{kind:e,init:t}})}addStream(e){this._debug("addStream()"),e.getTracks().forEach(t=>{this.addTrack(t,e)})}addTrack(e,t){this._debug("addTrack()");var r=this._senderMap.get(e)||new Map,n=r.get(t);if(n)throw n.removed?f("Track has been removed. You should enable/disable tracks that you want to re-add.","ERR_SENDER_REMOVED"):f("Track has already been added to that stream.","ERR_SENDER_ALREADY_ADDED");n=this._pc.addTrack(e,t),r.set(t,n),this._senderMap.set(e,r),this._needsNegotiation()}replaceTrack(e,t,r){this._debug("replaceTrack()");var n=this._senderMap.get(e),i=n?n.get(r):null;if(!i)throw f("Cannot replace track that was never added.","ERR_TRACK_NOT_ADDED");t&&this._senderMap.set(t,n),null!=i.replaceTrack?i.replaceTrack(t):this.destroy(f("replaceTrack is not supported in this browser","ERR_UNSUPPORTED_REPLACETRACK"))}removeTrack(e,t){this._debug("removeSender()");var r=this._senderMap.get(e),n=r?r.get(t):null;if(!n)throw f("Cannot remove track that was never added.","ERR_TRACK_NOT_ADDED");try{n.removed=!0,this._pc.removeTrack(n)}catch(i){"NS_ERROR_UNEXPECTED"===i.name?this._sendersAwaitingStable.push(n):this.destroy(f(i,"ERR_REMOVE_TRACK"))}this._needsNegotiation()}removeStream(e){this._debug("removeSenders()"),e.getTracks().forEach(t=>{this.removeTrack(t,e)})}_needsNegotiation(){this._debug("_needsNegotiation"),this._batchedNegotiation||(this._batchedNegotiation=!0,a(()=>{this._batchedNegotiation=!1,this._debug("starting batched negotiation"),this.negotiate()}))}negotiate(){this.initiator?this._isNegotiating?(this._queuedNegotiation=!0,this._debug("already negotiating, queueing")):(this._debug("start negotiation"),setTimeout(()=>{this._createOffer()},0)):this._isNegotiating||(this._debug("requesting negotiation from initiator"),this.emit("signal",{renegotiate:!0})),this._isNegotiating=!0}destroy(e){this._destroy(e,()=>{})}_destroy(e,t){if(!this.destroyed){if(this._debug("destroy (error: %s)",e&&(e.message||e)),this.readable=this.writable=!1,this._readableState.ended||this.push(null),this._writableState.finished||this.end(),this.destroyed=!0,this._connected=!1,this._pcReady=!1,this._channelReady=!1,this._remoteTracks=null,this._remoteStreams=null,this._senderMap=null,clearInterval(this._closingInterval),this._closingInterval=null,clearInterval(this._interval),this._interval=null,this._chunk=null,this._cb=null,this._onFinishBound&&this.removeListener("finish",this._onFinishBound),this._onFinishBound=null,this._channel){try{this._channel.close()}catch(e){}this._channel.onmessage=null,this._channel.onopen=null,this._channel.onclose=null,this._channel.onerror=null}if(this._pc){try{this._pc.close()}catch(e){}this._pc.oniceconnectionstatechange=null,this._pc.onicegatheringstatechange=null,this._pc.onsignalingstatechange=null,this._pc.onicecandidate=null,this._pc.ontrack=null,this._pc.ondatachannel=null}this._pc=null,this._channel=null,e&&this.emit("error",e),this.emit("close"),t()}}_setupData(e){if(!e.channel)return this.destroy(f("Data channel event is missing `channel` property","ERR_DATA_CHANNEL"));this._channel=e.channel,this._channel.binaryType="arraybuffer","number"===typeof this._channel.bufferedAmountLowThreshold&&(this._channel.bufferedAmountLowThreshold=c),this.channelName=this._channel.label,this._channel.onmessage=e=>{this._onChannelMessage(e)},this._channel.onbufferedamountlow=()=>{this._onChannelBufferedAmountLow()},this._channel.onopen=()=>{this._onChannelOpen()},this._channel.onclose=()=>{this._onChannelClose()},this._channel.onerror=e=>{this.destroy(f(e,"ERR_DATA_CHANNEL"))};var t=!1;this._closingInterval=setInterval(()=>{this._channel&&"closing"===this._channel.readyState?(t&&this._onChannelClose(),t=!0):t=!1},l)}_read(){}_write(e,t,r){if(this.destroyed)return r(f("cannot write after peer is destroyed","ERR_DATA_CHANNEL"));if(this._connected){try{this.send(e)}catch(n){return this.destroy(f(n,"ERR_DATA_CHANNEL"))}this._channel.bufferedAmount>c?(this._debug("start backpressure: bufferedAmount %d",this._channel.bufferedAmount),this._cb=r):r(null)}else this._debug("write before connect"),this._chunk=e,this._cb=r}_onFinish(){if(this.destroyed)return;const e=()=>{setTimeout(()=>this.destroy(),1e3)};this._connected?e():this.once("connect",e)}_startIceCompleteTimeout(){this.destroyed||this._iceCompleteTimer||(this._debug("started iceComplete timeout"),this._iceCompleteTimer=setTimeout(()=>{this._iceComplete||(this._iceComplete=!0,this._debug("iceComplete timeout completed"),this.emit("iceTimeout"),this.emit("_iceComplete"))},this.iceCompleteTimeout))}_createOffer(){this.destroyed||this._pc.createOffer(this.offerOptions).then(e=>{if(this.destroyed)return;this.trickle||this.allowHalfTrickle||(e.sdp=h(e.sdp)),e.sdp=this.sdpTransform(e.sdp);const t=()=>{if(!this.destroyed){var t=this._pc.localDescription||e;this._debug("signal"),this.emit("signal",{type:t.type,sdp:t.sdp})}},r=()=>{this._debug("createOffer success"),this.destroyed||(this.trickle||this._iceComplete?t():this.once("_iceComplete",t))},n=e=>{this.destroy(f(e,"ERR_SET_LOCAL_DESCRIPTION"))};this._pc.setLocalDescription(e).then(r).catch(n)}).catch(e=>{this.destroy(f(e,"ERR_CREATE_OFFER"))})}_requestMissingTransceivers(){this._pc.getTransceivers&&this._pc.getTransceivers().forEach(e=>{e.mid||!e.sender.track||e.requested||(e.requested=!0,this.addTransceiver(e.sender.track.kind))})}_createAnswer(){this.destroyed||this._pc.createAnswer(this.answerOptions).then(e=>{if(this.destroyed)return;this.trickle||this.allowHalfTrickle||(e.sdp=h(e.sdp)),e.sdp=this.sdpTransform(e.sdp);const t=()=>{if(!this.destroyed){var t=this._pc.localDescription||e;this._debug("signal"),this.emit("signal",{type:t.type,sdp:t.sdp}),this.initiator||this._requestMissingTransceivers()}},r=()=>{this.destroyed||(this.trickle||this._iceComplete?t():this.once("_iceComplete",t))},n=e=>{this.destroy(f(e,"ERR_SET_LOCAL_DESCRIPTION"))};this._pc.setLocalDescription(e).then(r).catch(n)}).catch(e=>{this.destroy(f(e,"ERR_CREATE_ANSWER"))})}_onConnectionStateChange(){this.destroyed||"failed"===this._pc.connectionState&&this.destroy(f("Connection failed.","ERR_CONNECTION_FAILURE"))}_onIceStateChange(){if(!this.destroyed){var e=this._pc.iceConnectionState,t=this._pc.iceGatheringState;this._debug("iceStateChange (connection: %s) (gathering: %s)",e,t),this.emit("iceStateChange",e,t),"connected"!==e&&"completed"!==e||(this._pcReady=!0,this._maybeReady()),"failed"===e&&this.destroy(f("Ice connection failed.","ERR_ICE_CONNECTION_FAILURE")),"closed"===e&&this.destroy(f("Ice connection closed.","ERR_ICE_CONNECTION_CLOSED"))}}getStats(e){const t=e=>("[object Array]"===Object.prototype.toString.call(e.values)&&e.values.forEach(t=>{Object.assign(e,t)}),e);0===this._pc.getStats.length||this._isReactNativeWebrtc?this._pc.getStats().then(r=>{var n=[];r.forEach(e=>{n.push(t(e))}),e(null,n)},t=>e(t)):this._pc.getStats.length>0?this._pc.getStats(r=>{if(!this.destroyed){var n=[];r.result().forEach(e=>{var r={};e.names().forEach(t=>{r[t]=e.stat(t)}),r.id=e.id,r.type=e.type,r.timestamp=e.timestamp,n.push(t(r))}),e(null,n)}},t=>e(t)):e(null,[])}_maybeReady(){if(this._debug("maybeReady pc %s channel %s",this._pcReady,this._channelReady),this._connected||this._connecting||!this._pcReady||!this._channelReady)return;this._connecting=!0;const e=()=>{this.destroyed||this.getStats((t,r)=>{if(this.destroyed)return;t&&(r=[]);var n={},i={},s={},o=!1;r.forEach(e=>{"remotecandidate"!==e.type&&"remote-candidate"!==e.type||(n[e.id]=e),"localcandidate"!==e.type&&"local-candidate"!==e.type||(i[e.id]=e),"candidatepair"!==e.type&&"candidate-pair"!==e.type||(s[e.id]=e)});const a=e=>{o=!0;var t=i[e.localCandidateId];t&&(t.ip||t.address)?(this.localAddress=t.ip||t.address,this.localPort=Number(t.port)):t&&t.ipAddress?(this.localAddress=t.ipAddress,this.localPort=Number(t.portNumber)):"string"===typeof e.googLocalAddress&&(t=e.googLocalAddress.split(":"),this.localAddress=t[0],this.localPort=Number(t[1])),this.localAddress&&(this.localFamily=this.localAddress.includes(":")?"IPv6":"IPv4");var r=n[e.remoteCandidateId];r&&(r.ip||r.address)?(this.remoteAddress=r.ip||r.address,this.remotePort=Number(r.port)):r&&r.ipAddress?(this.remoteAddress=r.ipAddress,this.remotePort=Number(r.portNumber)):"string"===typeof e.googRemoteAddress&&(r=e.googRemoteAddress.split(":"),this.remoteAddress=r[0],this.remotePort=Number(r[1])),this.remoteAddress&&(this.remoteFamily=this.remoteAddress.includes(":")?"IPv6":"IPv4"),this._debug("connect local: %s:%s remote: %s:%s",this.localAddress,this.localPort,this.remoteAddress,this.remotePort)};if(r.forEach(e=>{"transport"===e.type&&e.selectedCandidatePairId&&a(s[e.selectedCandidatePairId]),("googCandidatePair"===e.type&&"true"===e.googActiveConnection||("candidatepair"===e.type||"candidate-pair"===e.type)&&e.selected)&&a(e)}),o||Object.keys(s).length&&!Object.keys(i).length){if(this._connecting=!1,this._connected=!0,this._chunk){try{this.send(this._chunk)}catch(t){return this.destroy(f(t,"ERR_DATA_CHANNEL"))}this._chunk=null,this._debug('sent chunk from "write before connect"');var c=this._cb;this._cb=null,c(null)}"number"!==typeof this._channel.bufferedAmountLowThreshold&&(this._interval=setInterval(()=>this._onInterval(),150),this._interval.unref&&this._interval.unref()),this._debug("connect"),this.emit("connect")}else setTimeout(e,100)})};e()}_onInterval(){!this._cb||!this._channel||this._channel.bufferedAmount>c||this._onChannelBufferedAmountLow()}_onSignalingStateChange(){this.destroyed||("stable"!==this._pc.signalingState||this._firstStable||(this._isNegotiating=!1,this._debug("flushing sender queue",this._sendersAwaitingStable),this._sendersAwaitingStable.forEach(e=>{this._pc.removeTrack(e),this._queuedNegotiation=!0}),this._sendersAwaitingStable=[],this._queuedNegotiation&&(this._debug("flushing negotiation queue"),this._queuedNegotiation=!1,this._needsNegotiation()),this._debug("negotiate"),this.emit("negotiate")),this._firstStable=!1,this._debug("signalingStateChange %s",this._pc.signalingState),this.emit("signalingStateChange",this._pc.signalingState))}_onIceCandidate(e){this.destroyed||(e.candidate&&this.trickle?this.emit("signal",{candidate:{candidate:e.candidate.candidate,sdpMLineIndex:e.candidate.sdpMLineIndex,sdpMid:e.candidate.sdpMid}}):e.candidate||this._iceComplete||(this._iceComplete=!0,this.emit("_iceComplete")),e.candidate&&this._startIceCompleteTimeout())}_onChannelMessage(e){if(!this.destroyed){var r=e.data;r instanceof ArrayBuffer&&(r=t.from(r)),this.push(r)}}_onChannelBufferedAmountLow(){if(!this.destroyed&&this._cb){this._debug("ending backpressure: bufferedAmount %d",this._channel.bufferedAmount);var e=this._cb;this._cb=null,e(null)}}_onChannelOpen(){this._connected||this.destroyed||(this._debug("on channel open"),this._channelReady=!0,this._maybeReady())}_onChannelClose(){this.destroyed||(this._debug("on channel close"),this.destroy())}_onTrack(e){this.destroyed||e.streams.forEach(t=>{this._debug("on track"),this.emit("track",e.track,t),this._remoteTracks.push({track:e.track,stream:t}),this._remoteStreams.some(e=>e.id===t.id)||(this._remoteStreams.push(t),a(()=>{this.emit("stream",t)}))})}_debug(){var e=[].slice.call(arguments);e[0]="["+this._id+"] "+e[0],n.apply(null,e)}}p.WEBRTC_SUPPORT=!!i(),p.config={iceServers:[{urls:"stun:stun.l.google.com:19302"},{urls:"stun:global.stun.twilio.com:3478?transport=udp"}],sdpSemantics:"unified-plan"},p.channelConfig={},e.exports=p}).call(this,r("b639").Buffer)},"5f75":function(e,t,r){"use strict";var n=r("4ea4"),i=n(r("a34a")),s=n(r("c973")),o=n(r("f1e8")),a=n(r("427a"));function c(e){return a.default.encodeBase64(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function u(e){var t=a.default.decodeBase64(e);return(function(){var e=(0,s.default)(i.default.mark((function e(r){return i.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.abrupt("return",c(o.default.sign.detached(a.default.decodeUTF8(r),t)));case 1:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}())}e.exports=u},"5f7e":function(e,t,r){"use strict";const n=r("0503"),i=r("fd9e"),s=r("d4c4"),o=r("4bc2")("ipfs:mfs:stat"),a=r("7048"),c={withLocal:!1};e.exports=e=>async function(t,r){r=n(r,c),o(`Fetching stats for ${t}`);const{type:l,cid:h,mfsPath:f}=await i(e,t),d="ipfs"===l&&h?h:f;let p;try{p=await s(d,e.ipld)}catch(y){if("ERR_NOT_FOUND"===y.code)throw a(new Error(`${t} does not exist`),"ERR_NOT_FOUND");throw y}if(!u[p.cid.codec])throw new Error(`Cannot stat codec ${p.cid.codec}`);return u[p.cid.codec](p,r)};const u={raw:e=>({cid:e.cid,size:e.node.length,cumulativeSize:e.node.length,blocks:0,type:"file",local:void 0,sizeLocal:void 0,withLocality:!1}),"dag-pb":e=>{let t=e.node.Links.length,r=e.node.size,n=e.node.size,i=null;return e.unixfs&&(r=e.unixfs.fileSize(),i=e.unixfs.type,i.includes("directory")&&(r=0,n=e.node.size),"file"===i&&(t=e.unixfs.blockSizes.length)),{cid:e.cid,size:r,cumulativeSize:n,blocks:t,type:i,local:void 0,sizeLocal:void 0,withLocality:!1}},"dag-cbor":e=>({cid:e.cid,local:void 0,sizeLocal:void 0,withLocality:!1})}},"5f7f":function(e,t,r){"use strict";const{Buffer:n}=r("b639"),i=r("ec4e"),s=45569,o=45633,a={init:i.blake2bInit,update:i.blake2bUpdate,digest:i.blake2bFinal},c={init:i.blake2sInit,update:i.blake2sUpdate,digest:i.blake2sFinal},u=(e,t)=>async r=>{const i=t.init(e,null);return t.update(i,r),n.from(t.digest(i))};e.exports=e=>{for(let t=0;t<64;t++)e[s+t]=u(t+1,a);for(let t=0;t<32;t++)e[o+t]=u(t+1,c)}},"5fb1":function(e,t,r){"use strict";(function(n){const i=r("f106"),s=i(r("437b"));r("91bb"),r("8942"),r("5904");const o=r("918b");t=e.exports;const a={rsa:r("793e"),ed25519:r("173c"),secp256k1:r("b694")(s,r("8c79"))};function c(e){const t=a[e.toLowerCase()];return void 0!==t}t.supportedKeys=a,t.keysPBM=s,t.keyStretcher=r("d05d"),t.generateEphemeralKeyPair=r("edb7"),t.generateKeyPair=(e,t,r)=>{const n=a[e.toLowerCase()];if(!n)return r(new Error("invalid or unsupported key type"));n.generateKeyPair(t,r)},t.generateKeyPairFromSeed=(e,t,r,n)=>{const i=a[e.toLowerCase()];return i?"ed25519"!==e.toLowerCase()?n(new Error("Seed key derivation is unimplemented for RSA or secp256k1")):void i.generateKeyPairFromSeed(t,r,n):n(new Error("invalid or unsupported key type"))},t.unmarshalPublicKey=e=>{const t=s.PublicKey.decode(e),r=t.Data;switch(t.Type){case s.KeyType.RSA:return a.rsa.unmarshalRsaPublicKey(r);case s.KeyType.Ed25519:return a.ed25519.unmarshalEd25519PublicKey(r);case s.KeyType.Secp256k1:if(a.secp256k1)return a.secp256k1.unmarshalSecp256k1PublicKey(r);throw new Error("secp256k1 support requires libp2p-crypto-secp256k1 package");default:throw new Error("invalid or unsupported key type")}},t.marshalPublicKey=(e,t)=>{if(t=(t||"rsa").toLowerCase(),!c(t))throw new Error("invalid or unsupported key type");return e.bytes},t.unmarshalPrivateKey=(e,t)=>{let r;try{r=s.PrivateKey.decode(e)}catch(i){return t(i)}const n=r.Data;switch(r.Type){case s.KeyType.RSA:return a.rsa.unmarshalRsaPrivateKey(n,t);case s.KeyType.Ed25519:return a.ed25519.unmarshalEd25519PrivateKey(n,t);case s.KeyType.Secp256k1:return a.secp256k1?a.secp256k1.unmarshalSecp256k1PrivateKey(n,t):t(new Error("secp256k1 support requires libp2p-crypto-secp256k1 package"));default:t(new Error("invalid or unsupported key type"))}},t.marshalPrivateKey=(e,t)=>{if(t=(t||"rsa").toLowerCase(),!c(t))throw new Error("invalid or unsupported key type");return e.bytes},t.import=(e,t,r)=>{try{const i=o.pki.decryptRsaPrivateKey(e,t);if(null===i)throw new Error("Cannot read the key, most likely the password is wrong or not a RSA key");let s=o.asn1.toDer(o.pki.privateKeyToAsn1(i));return s=n.from(s.getBytes(),"binary"),a.rsa.unmarshalRsaPrivateKey(s,r)}catch(i){r(i)}}}).call(this,r("b639").Buffer)},"5fbf":function(e,t,r){"use strict";var n,i,s=r("e6e9"),o=(r("8638"),1567752802062),a=7;function c(e){var t="",r=Math.floor(.001*(Date.now()-o));return r===i?n++:(n=0,i=r),t+=s(a),t+=s(e),n>0&&(t+=s(n)),t+=s(r),t}e.exports=c},"5fc2":function(e,t,r){(function(t){var n=r("ba68").Transform,i=r("3022").inherits;function s(e){n.call(this,e),this._destroyed=!1}function o(e,t,r){r(null,e)}function a(e){return function(t,r,n){return"function"==typeof t&&(n=r,r=t,t={}),"function"!=typeof r&&(r=o),"function"!=typeof n&&(n=null),e(t,r,n)}}i(s,n),s.prototype.destroy=function(e){if(!this._destroyed){this._destroyed=!0;var r=this;t.nextTick((function(){e&&r.emit("error",e),r.emit("close")}))}},e.exports=a((function(e,t,r){var n=new s(e);return n._transform=t,r&&(n._flush=r),n})),e.exports.ctor=a((function(e,t,r){function n(t){if(!(this instanceof n))return new n(t);this.options=Object.assign({},e,t),s.call(this,this.options)}return i(n,s),n.prototype._transform=t,r&&(n.prototype._flush=r),n})),e.exports.obj=a((function(e,t,r){var n=new s(Object.assign({objectMode:!0,highWaterMark:16},e));return n._transform=t,r&&(n._flush=r),n}))}).call(this,r("4362"))},"5ffd":function(e,t,r){"use strict";const n=r("7048"),i=(e,t,r)=>{if(t||(t=0),t<0)throw n(new Error("Offset must be greater than or equal to 0"),"ERR_INVALID_PARAMS");if(t>e)throw n(new Error("Offset must be less than the file size"),"ERR_INVALID_PARAMS");if(r||0===r||(r=e-t),r<0)throw n(new Error("Length must be greater than or equal to 0"),"ERR_INVALID_PARAMS");return t+r>e&&(r=e-t),{offset:t,length:r}};e.exports=i},6:function(e,t){},6017:function(e,t,r){(function(e,t){(function(e,r){"use strict";if(!e.setImmediate){var n,i=1,s={},o=!1,a=e.document,c=Object.getPrototypeOf&&Object.getPrototypeOf(e);c=c&&c.setTimeout?c:e,"[object process]"==={}.toString.call(e.process)?d():p()?y():e.MessageChannel?g():a&&"onreadystatechange"in a.createElement("script")?m():b(),c.setImmediate=u,c.clearImmediate=l}function u(e){"function"!==typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),r=0;r{if(!e)throw new Error("No signature given");if(!t)throw new Error("Given publicKey was undefined");if(!r)throw new Error("Given input data was undefined");let n=!1;const s=i.keyPair({pub:t,pubEnc:"hex"});try{n=i.verify(r,e,s)}catch(o){}return Promise.resolve(n)}}},"609c":function(e,t,r){"use strict";const{filter:n,sortAll:i,take:s,map:o}=r("59c5"),a=r("8724"),c=r("e730");class u{constructor(){this.data={}}async open(){}async put(e,t){this.data[e.toString()]=t}async get(e){const t=await this.has(e);if(!t)throw c.notFoundError();return this.data[e.toString()]}async has(e){return void 0!==this.data[e.toString()]}async delete(e){delete this.data[e.toString()]}batch(){let e=[],t=[];return{put(t,r){e.push([t,r])},delete(e){t.push(e)},commit:async()=>{e.forEach(e=>{this.data[e[0].toString()]=e[1]}),e=[],t.forEach(e=>{delete this.data[e.toString()]}),t=[]}}}query(e){let t=Object.entries(this.data);if(t=o(t,e=>({key:new a(e[0]),value:e[1]})),null!=e.prefix&&(t=n(t,t=>t.key.toString().startsWith(e.prefix))),Array.isArray(e.filters)&&(t=e.filters.reduce((e,t)=>n(e,t),t)),Array.isArray(e.orders)&&(t=e.orders.reduce((e,t)=>i(e,t),t)),null!=e.offset){let r=0;t=n(t,()=>r++>=e.offset)}return null!=e.limit&&(t=s(t,e.limit)),!0===e.keysOnly&&(t=o(t,e=>({key:e.key}))),t}async close(){}}e.exports=u},"60b3":function(e,t,r){"use strict";const n=r("faa1"),i=r("04dcb"),s=r("8b24"),o={computeThrottleMaxQueueSize:1e3,computeThrottleTimeout:2e3,movingAverageIntervals:[6e4,3e5,9e5],maxOldPeersRetention:50},a=["dataReceived","dataSent"],c={in:"dataReceived",out:"dataSent"};e.exports=(e,t)=>{const r=Object.assign({},o,t),u=new i(a,r),l=Object.assign(new n,{start:g,stop:m,global:u,peers:()=>Array.from(f.keys()),forPeer:e=>f.get(e)||h.get(e),transports:()=>Array.from(d.keys()),forTransport:e=>d.get(e),protocols:()=>Array.from(p.keys()),forProtocol:e=>p.get(e)});u.on("update",b);const h=s(r.maxOldPeersRetention),f=new Map,d=new Map,p=new Map;return e.on("peer:closed",e=>{const t=f.get(e);t&&(t.removeListener("update",b),t.stop(),f.delete(e),h.set(e,t))}),l;function y(e,t,n,s,o){const l=c[s];if(t){u.push(l,o);let t=f.get(e);t||(t=h.get(e),t?h.delete(e):t=new i(a,r),t.on("update",b),t.start(),f.set(e,t)),t.push(l,o)}if(t){let e=d.get(t);e||(e=new i(a,r),e.on("update",b),d.set(t,e)),e.push(l,o)}if(n){let e=p.get(n);e||(e=new i(a,r),e.on("update",b),p.set(n,e)),e.push(l,o)}}function g(){e.on("message",y),u.start();for(const e of f.values())e.start();for(const e of d.values())e.start()}function m(){e.removeListener("message",y),u.stop();for(const e of f.values())e.stop();for(const e of d.values())e.stop()}function b(){l.emit("update")}}},6121:function(e,t,r){"use strict";var n=r("e0c5").Buffer;function i(e){if(e.length>=255)throw new TypeError("Alphabet too long");var t=new Uint8Array(256);t.fill(255);for(var r=0;r>>0,h=new Uint8Array(l);while(s!==c){for(var f=t[s],d=0,p=l-1;(0!==f||d>>0,h[p]=f%o>>>0,f=f/o>>>0;if(0!==f)throw new Error("Non-zero carry");i=d,s++}var y=l-i;while(y!==l&&0===h[y])y++;for(var g=a.repeat(r);y>>0,l=new Uint8Array(u);while(e[r]){var h=t[e.charCodeAt(r)];if(255===h)return;for(var f=0,d=u-1;(0!==h||f>>0,l[d]=h%256>>>0,h=h/256>>>0;if(0!==h)throw new Error("Non-zero carry");s=f,r++}if(" "!==e[r]){var p=u-s;while(p!==u&&0===l[p])p++;var y=n.allocUnsafe(i+(u-p));y.fill(0,0,i);var g=i;while(p!==u)y[g++]=l[p++];return y}}}function f(e){var t=h(e);if(t)return t;throw new Error("Non-base"+o+" character")}return{encode:l,decodeUnsafe:h,decode:f}}e.exports=i},"614f":function(e,t,r){"use strict";t.umulTo10x10=function(e,t,r){var n,i,s,o=e.words,a=t.words,c=r.words,u=0,l=0|o[0],h=8191&l,f=l>>>13,d=0|o[1],p=8191&d,y=d>>>13,g=0|o[2],m=8191&g,b=g>>>13,v=0|o[3],w=8191&v,_=v>>>13,E=0|o[4],S=8191&E,k=E>>>13,C=0|o[5],A=8191&C,I=C>>>13,T=0|o[6],x=8191&T,B=T>>>13,R=0|o[7],N=8191&R,O=R>>>13,P=0|o[8],D=8191&P,L=P>>>13,M=0|o[9],U=8191&M,j=M>>>13,K=0|a[0],F=8191&K,V=K>>>13,q=0|a[1],z=8191&q,H=q>>>13,G=0|a[2],$=8191&G,W=G>>>13,Y=0|a[3],Q=8191&Y,J=Y>>>13,X=0|a[4],Z=8191&X,ee=X>>>13,te=0|a[5],re=8191&te,ne=te>>>13,ie=0|a[6],se=8191&ie,oe=ie>>>13,ae=0|a[7],ce=8191&ae,ue=ae>>>13,le=0|a[8],he=8191&le,fe=le>>>13,de=0|a[9],pe=8191&de,ye=de>>>13;r.length=19,n=Math.imul(h,F),i=Math.imul(h,V),i+=Math.imul(f,F),s=Math.imul(f,V);var ge=u+n+((8191&i)<<13);u=s+(i>>>13)+(ge>>>26),ge&=67108863,n=Math.imul(p,F),i=Math.imul(p,V),i+=Math.imul(y,F),s=Math.imul(y,V),n+=Math.imul(h,z),i+=Math.imul(h,H),i+=Math.imul(f,z),s+=Math.imul(f,H);var me=u+n+((8191&i)<<13);u=s+(i>>>13)+(me>>>26),me&=67108863,n=Math.imul(m,F),i=Math.imul(m,V),i+=Math.imul(b,F),s=Math.imul(b,V),n+=Math.imul(p,z),i+=Math.imul(p,H),i+=Math.imul(y,z),s+=Math.imul(y,H),n+=Math.imul(h,$),i+=Math.imul(h,W),i+=Math.imul(f,$),s+=Math.imul(f,W);var be=u+n+((8191&i)<<13);u=s+(i>>>13)+(be>>>26),be&=67108863,n=Math.imul(w,F),i=Math.imul(w,V),i+=Math.imul(_,F),s=Math.imul(_,V),n+=Math.imul(m,z),i+=Math.imul(m,H),i+=Math.imul(b,z),s+=Math.imul(b,H),n+=Math.imul(p,$),i+=Math.imul(p,W),i+=Math.imul(y,$),s+=Math.imul(y,W),n+=Math.imul(h,Q),i+=Math.imul(h,J),i+=Math.imul(f,Q),s+=Math.imul(f,J);var ve=u+n+((8191&i)<<13);u=s+(i>>>13)+(ve>>>26),ve&=67108863,n=Math.imul(S,F),i=Math.imul(S,V),i+=Math.imul(k,F),s=Math.imul(k,V),n+=Math.imul(w,z),i+=Math.imul(w,H),i+=Math.imul(_,z),s+=Math.imul(_,H),n+=Math.imul(m,$),i+=Math.imul(m,W),i+=Math.imul(b,$),s+=Math.imul(b,W),n+=Math.imul(p,Q),i+=Math.imul(p,J),i+=Math.imul(y,Q),s+=Math.imul(y,J),n+=Math.imul(h,Z),i+=Math.imul(h,ee),i+=Math.imul(f,Z),s+=Math.imul(f,ee);var we=u+n+((8191&i)<<13);u=s+(i>>>13)+(we>>>26),we&=67108863,n=Math.imul(A,F),i=Math.imul(A,V),i+=Math.imul(I,F),s=Math.imul(I,V),n+=Math.imul(S,z),i+=Math.imul(S,H),i+=Math.imul(k,z),s+=Math.imul(k,H),n+=Math.imul(w,$),i+=Math.imul(w,W),i+=Math.imul(_,$),s+=Math.imul(_,W),n+=Math.imul(m,Q),i+=Math.imul(m,J),i+=Math.imul(b,Q),s+=Math.imul(b,J),n+=Math.imul(p,Z),i+=Math.imul(p,ee),i+=Math.imul(y,Z),s+=Math.imul(y,ee),n+=Math.imul(h,re),i+=Math.imul(h,ne),i+=Math.imul(f,re),s+=Math.imul(f,ne);var _e=u+n+((8191&i)<<13);u=s+(i>>>13)+(_e>>>26),_e&=67108863,n=Math.imul(x,F),i=Math.imul(x,V),i+=Math.imul(B,F),s=Math.imul(B,V),n+=Math.imul(A,z),i+=Math.imul(A,H),i+=Math.imul(I,z),s+=Math.imul(I,H),n+=Math.imul(S,$),i+=Math.imul(S,W),i+=Math.imul(k,$),s+=Math.imul(k,W),n+=Math.imul(w,Q),i+=Math.imul(w,J),i+=Math.imul(_,Q),s+=Math.imul(_,J),n+=Math.imul(m,Z),i+=Math.imul(m,ee),i+=Math.imul(b,Z),s+=Math.imul(b,ee),n+=Math.imul(p,re),i+=Math.imul(p,ne),i+=Math.imul(y,re),s+=Math.imul(y,ne),n+=Math.imul(h,se),i+=Math.imul(h,oe),i+=Math.imul(f,se),s+=Math.imul(f,oe);var Ee=u+n+((8191&i)<<13);u=s+(i>>>13)+(Ee>>>26),Ee&=67108863,n=Math.imul(N,F),i=Math.imul(N,V),i+=Math.imul(O,F),s=Math.imul(O,V),n+=Math.imul(x,z),i+=Math.imul(x,H),i+=Math.imul(B,z),s+=Math.imul(B,H),n+=Math.imul(A,$),i+=Math.imul(A,W),i+=Math.imul(I,$),s+=Math.imul(I,W),n+=Math.imul(S,Q),i+=Math.imul(S,J),i+=Math.imul(k,Q),s+=Math.imul(k,J),n+=Math.imul(w,Z),i+=Math.imul(w,ee),i+=Math.imul(_,Z),s+=Math.imul(_,ee),n+=Math.imul(m,re),i+=Math.imul(m,ne),i+=Math.imul(b,re),s+=Math.imul(b,ne),n+=Math.imul(p,se),i+=Math.imul(p,oe),i+=Math.imul(y,se),s+=Math.imul(y,oe),n+=Math.imul(h,ce),i+=Math.imul(h,ue),i+=Math.imul(f,ce),s+=Math.imul(f,ue);var Se=u+n+((8191&i)<<13);u=s+(i>>>13)+(Se>>>26),Se&=67108863,n=Math.imul(D,F),i=Math.imul(D,V),i+=Math.imul(L,F),s=Math.imul(L,V),n+=Math.imul(N,z),i+=Math.imul(N,H),i+=Math.imul(O,z),s+=Math.imul(O,H),n+=Math.imul(x,$),i+=Math.imul(x,W),i+=Math.imul(B,$),s+=Math.imul(B,W),n+=Math.imul(A,Q),i+=Math.imul(A,J),i+=Math.imul(I,Q),s+=Math.imul(I,J),n+=Math.imul(S,Z),i+=Math.imul(S,ee),i+=Math.imul(k,Z),s+=Math.imul(k,ee),n+=Math.imul(w,re),i+=Math.imul(w,ne),i+=Math.imul(_,re),s+=Math.imul(_,ne),n+=Math.imul(m,se),i+=Math.imul(m,oe),i+=Math.imul(b,se),s+=Math.imul(b,oe),n+=Math.imul(p,ce),i+=Math.imul(p,ue),i+=Math.imul(y,ce),s+=Math.imul(y,ue),n+=Math.imul(h,he),i+=Math.imul(h,fe),i+=Math.imul(f,he),s+=Math.imul(f,fe);var ke=u+n+((8191&i)<<13);u=s+(i>>>13)+(ke>>>26),ke&=67108863,n=Math.imul(U,F),i=Math.imul(U,V),i+=Math.imul(j,F),s=Math.imul(j,V),n+=Math.imul(D,z),i+=Math.imul(D,H),i+=Math.imul(L,z),s+=Math.imul(L,H),n+=Math.imul(N,$),i+=Math.imul(N,W),i+=Math.imul(O,$),s+=Math.imul(O,W),n+=Math.imul(x,Q),i+=Math.imul(x,J),i+=Math.imul(B,Q),s+=Math.imul(B,J),n+=Math.imul(A,Z),i+=Math.imul(A,ee),i+=Math.imul(I,Z),s+=Math.imul(I,ee),n+=Math.imul(S,re),i+=Math.imul(S,ne),i+=Math.imul(k,re),s+=Math.imul(k,ne),n+=Math.imul(w,se),i+=Math.imul(w,oe),i+=Math.imul(_,se),s+=Math.imul(_,oe),n+=Math.imul(m,ce),i+=Math.imul(m,ue),i+=Math.imul(b,ce),s+=Math.imul(b,ue),n+=Math.imul(p,he),i+=Math.imul(p,fe),i+=Math.imul(y,he),s+=Math.imul(y,fe),n+=Math.imul(h,pe),i+=Math.imul(h,ye),i+=Math.imul(f,pe),s+=Math.imul(f,ye);var Ce=u+n+((8191&i)<<13);u=s+(i>>>13)+(Ce>>>26),Ce&=67108863,n=Math.imul(U,z),i=Math.imul(U,H),i+=Math.imul(j,z),s=Math.imul(j,H),n+=Math.imul(D,$),i+=Math.imul(D,W),i+=Math.imul(L,$),s+=Math.imul(L,W),n+=Math.imul(N,Q),i+=Math.imul(N,J),i+=Math.imul(O,Q),s+=Math.imul(O,J),n+=Math.imul(x,Z),i+=Math.imul(x,ee),i+=Math.imul(B,Z),s+=Math.imul(B,ee),n+=Math.imul(A,re),i+=Math.imul(A,ne),i+=Math.imul(I,re),s+=Math.imul(I,ne),n+=Math.imul(S,se),i+=Math.imul(S,oe),i+=Math.imul(k,se),s+=Math.imul(k,oe),n+=Math.imul(w,ce),i+=Math.imul(w,ue),i+=Math.imul(_,ce),s+=Math.imul(_,ue),n+=Math.imul(m,he),i+=Math.imul(m,fe),i+=Math.imul(b,he),s+=Math.imul(b,fe),n+=Math.imul(p,pe),i+=Math.imul(p,ye),i+=Math.imul(y,pe),s+=Math.imul(y,ye);var Ae=u+n+((8191&i)<<13);u=s+(i>>>13)+(Ae>>>26),Ae&=67108863,n=Math.imul(U,$),i=Math.imul(U,W),i+=Math.imul(j,$),s=Math.imul(j,W),n+=Math.imul(D,Q),i+=Math.imul(D,J),i+=Math.imul(L,Q),s+=Math.imul(L,J),n+=Math.imul(N,Z),i+=Math.imul(N,ee),i+=Math.imul(O,Z),s+=Math.imul(O,ee),n+=Math.imul(x,re),i+=Math.imul(x,ne),i+=Math.imul(B,re),s+=Math.imul(B,ne),n+=Math.imul(A,se),i+=Math.imul(A,oe),i+=Math.imul(I,se),s+=Math.imul(I,oe),n+=Math.imul(S,ce),i+=Math.imul(S,ue),i+=Math.imul(k,ce),s+=Math.imul(k,ue),n+=Math.imul(w,he),i+=Math.imul(w,fe),i+=Math.imul(_,he),s+=Math.imul(_,fe),n+=Math.imul(m,pe),i+=Math.imul(m,ye),i+=Math.imul(b,pe),s+=Math.imul(b,ye);var Ie=u+n+((8191&i)<<13);u=s+(i>>>13)+(Ie>>>26),Ie&=67108863,n=Math.imul(U,Q),i=Math.imul(U,J),i+=Math.imul(j,Q),s=Math.imul(j,J),n+=Math.imul(D,Z),i+=Math.imul(D,ee),i+=Math.imul(L,Z),s+=Math.imul(L,ee),n+=Math.imul(N,re),i+=Math.imul(N,ne),i+=Math.imul(O,re),s+=Math.imul(O,ne),n+=Math.imul(x,se),i+=Math.imul(x,oe),i+=Math.imul(B,se),s+=Math.imul(B,oe),n+=Math.imul(A,ce),i+=Math.imul(A,ue),i+=Math.imul(I,ce),s+=Math.imul(I,ue),n+=Math.imul(S,he),i+=Math.imul(S,fe),i+=Math.imul(k,he),s+=Math.imul(k,fe),n+=Math.imul(w,pe),i+=Math.imul(w,ye),i+=Math.imul(_,pe),s+=Math.imul(_,ye);var Te=u+n+((8191&i)<<13);u=s+(i>>>13)+(Te>>>26),Te&=67108863,n=Math.imul(U,Z),i=Math.imul(U,ee),i+=Math.imul(j,Z),s=Math.imul(j,ee),n+=Math.imul(D,re),i+=Math.imul(D,ne),i+=Math.imul(L,re),s+=Math.imul(L,ne),n+=Math.imul(N,se),i+=Math.imul(N,oe),i+=Math.imul(O,se),s+=Math.imul(O,oe),n+=Math.imul(x,ce),i+=Math.imul(x,ue),i+=Math.imul(B,ce),s+=Math.imul(B,ue),n+=Math.imul(A,he),i+=Math.imul(A,fe),i+=Math.imul(I,he),s+=Math.imul(I,fe),n+=Math.imul(S,pe),i+=Math.imul(S,ye),i+=Math.imul(k,pe),s+=Math.imul(k,ye);var xe=u+n+((8191&i)<<13);u=s+(i>>>13)+(xe>>>26),xe&=67108863,n=Math.imul(U,re),i=Math.imul(U,ne),i+=Math.imul(j,re),s=Math.imul(j,ne),n+=Math.imul(D,se),i+=Math.imul(D,oe),i+=Math.imul(L,se),s+=Math.imul(L,oe),n+=Math.imul(N,ce),i+=Math.imul(N,ue),i+=Math.imul(O,ce),s+=Math.imul(O,ue),n+=Math.imul(x,he),i+=Math.imul(x,fe),i+=Math.imul(B,he),s+=Math.imul(B,fe),n+=Math.imul(A,pe),i+=Math.imul(A,ye),i+=Math.imul(I,pe),s+=Math.imul(I,ye);var Be=u+n+((8191&i)<<13);u=s+(i>>>13)+(Be>>>26),Be&=67108863,n=Math.imul(U,se),i=Math.imul(U,oe),i+=Math.imul(j,se),s=Math.imul(j,oe),n+=Math.imul(D,ce),i+=Math.imul(D,ue),i+=Math.imul(L,ce),s+=Math.imul(L,ue),n+=Math.imul(N,he),i+=Math.imul(N,fe),i+=Math.imul(O,he),s+=Math.imul(O,fe),n+=Math.imul(x,pe),i+=Math.imul(x,ye),i+=Math.imul(B,pe),s+=Math.imul(B,ye);var Re=u+n+((8191&i)<<13);u=s+(i>>>13)+(Re>>>26),Re&=67108863,n=Math.imul(U,ce),i=Math.imul(U,ue),i+=Math.imul(j,ce),s=Math.imul(j,ue),n+=Math.imul(D,he),i+=Math.imul(D,fe),i+=Math.imul(L,he),s+=Math.imul(L,fe),n+=Math.imul(N,pe),i+=Math.imul(N,ye),i+=Math.imul(O,pe),s+=Math.imul(O,ye);var Ne=u+n+((8191&i)<<13);u=s+(i>>>13)+(Ne>>>26),Ne&=67108863,n=Math.imul(U,he),i=Math.imul(U,fe),i+=Math.imul(j,he),s=Math.imul(j,fe),n+=Math.imul(D,pe),i+=Math.imul(D,ye),i+=Math.imul(L,pe),s+=Math.imul(L,ye);var Oe=u+n+((8191&i)<<13);u=s+(i>>>13)+(Oe>>>26),Oe&=67108863,n=Math.imul(U,pe),i=Math.imul(U,ye),i+=Math.imul(j,pe),s=Math.imul(j,ye);var Pe=u+n+((8191&i)<<13);return u=s+(i>>>13)+(Pe>>>26),Pe&=67108863,c[0]=ge,c[1]=me,c[2]=be,c[3]=ve,c[4]=we,c[5]=_e,c[6]=Ee,c[7]=Se,c[8]=ke,c[9]=Ce,c[10]=Ae,c[11]=Ie,c[12]=Te,c[13]=xe,c[14]=Be,c[15]=Re,c[16]=Ne,c[17]=Oe,c[18]=Pe,0!==u&&(c[19]=u,r.length++),r}},6158:function(e,t,r){"use strict";(function(t){const n=r("2e53"),{fromB58String:i,toB58String:s}=r("e782"),o=r("8eda"),a=r("87dd"),c=r("7048"),u=r("4bc2"),l=u("ipfs:ipns:pubsub");l.error=u("ipfs:ipns:pubsub:error");class h{constructor(e,t,r){this._pubsub=e,this._subscriptions={},this._handleSubscriptionKey=this._handleSubscriptionKey.bind(this),this._pubsubDs=new o(e,t,r,n.validator,this._handleSubscriptionKey)}async put(e,t){return this._pubsubDs.put(e,t)}async get(e){let t,r;try{t=await this._pubsubDs.get(e)}catch(o){r=o}const i=e.slice(0,n.namespaceLength);if(i.toString()===n.namespace){const t=s(e),r=s(e.slice(n.namespaceLength));this._subscriptions[t]=r,l(`subscribed to pubsub topic ${t}, id ${r}`)}if(r)throw r;return t}_handleSubscriptionKey(e){t.isBuffer(e)&&(e=s(e));const r=this._subscriptions[e];if(!r)throw c(new Error(`key ${e} does not correspond to a subscription`),"ERR_INVALID_KEY");let o;try{o=n.getIdKeys(i(r))}catch(a){throw l.error(a),a}return o.routingKey.toBuffer()}getSubscriptions(){const e=Object.values(this._subscriptions).filter(Boolean);return e.map(e=>`${n.namespace}${e}`)}async cancel(e){if("string"!==typeof e)throw c(new Error("invalid subscription name"),"ERR_INVALID_SUBSCRIPTION_NAME");e.startsWith(n.namespace)&&(e=e.substring(n.namespaceLength));const r=Object.keys(this._subscriptions).find(t=>this._subscriptions[t]===e);if(!r)return{canceled:!1};const i=t.from(r);return this._pubsubDs.unsubscribe(i),this._subscriptions[r]=void 0,l(`unsubscribed pubsub ${r}: ${e}`),{canceled:!0}}}e.exports=a(h,{className:"IpnsPubsubDatastore",symbolName:"@js-ipfs/ipns/IpnsPubsubDatastore"})}).call(this,r("b639").Buffer)},6166:function(e,t,r){"use strict";const n=r("c59f"),i=r("b1aa"),s=r("20b8"),o=r("9941"),a=r("1421"),c=r("e24c").Connection,u=r("bcc7"),l=r("f8c9"),h=r("4bc2"),f=h("libp2p:circuit:dialer");f.err=h("libp2p:circuit:error:dialer");const d=r("8ffa"),p=r("6c8b");class y{constructor(e,t){this.swarm=e,this.relayPeers=new Map,this.relayConns=new Map,this.options=t,this.utils=u(e)}_dialRelayHelper(e,t){return this.relayConns.has(e.id.toB58String())?t(null,this.relayConns.get(e.id.toB58String())):this._dialRelay(e,t)}dial(e,t){t=t||(()=>{});const r=e.toString();if(!r.includes("/p2p-circuit"))return f.err("invalid circuit address"),t(new Error("invalid circuit address"));const n=r.split("p2p-circuit"),i="/"===n[0]?null:a(n[0]),s=a(n[1]||n[0]),u=new c;return o(this._dialPeer.bind(this),s,i,(e,r)=>{if(e)return f.err(e),t(e);u.setInnerConn(r),t(null,u)}),u}canHop(e,t){t=n(t||(()=>{})),this._dialRelayHelper(e,(r,n)=>{if(r)return t(r);const i=new l(n);s([e=>i.write(p.CircuitRelay.encode({type:p.CircuitRelay.Type.CAN_HOP}),e),e=>i.read(e)],(r,n)=>{if(r)return t(r);const s=p.CircuitRelay.decode(n);if(s.code!==p.CircuitRelay.Status.SUCCESS){const r=new Error(`HOP not supported, skipping - ${this.utils.getB58String(e)}`);return f(r),t(r)}f("HOP supported adding as relay - %s",this.utils.getB58String(e)),this.relayPeers.set(this.utils.getB58String(e),e),i.close(),t()})})}_dialPeer(e,t,r){if("function"===typeof t&&(r=t,t=null),r||(r=()=>{}),e=a(e),t)return this._negotiateRelay(t,e,(e,t)=>e?(f.err("An error has occurred negotiating the relay connection",e),r(e)):r(null,t));{const t=Array.from(this.relayPeers.values()),n=i=>{if(!i){const e="no relay peers were found or all relays failed to dial";return f.err(e),r(e)}return this._negotiateRelay(i,e,(e,i)=>{if(e)return f.err(e),n(t.shift());r(null,i)})};n(t.shift())}}_negotiateRelay(e,t,r){t=a(t),e=this.utils.peerInfoFromMa(e);const n=this.swarm._peerInfo.multiaddrs.toArray();this._dialRelayHelper(e,(e,o)=>{if(e)return f.err(e),r(e);const a=new l(o);s([r=>{let s;f("negotiating relay for peer %s",t.getPeerId());try{s=i.createFromB58String(t.getPeerId()).id}catch(e){return r(e)}a.write(p.CircuitRelay.encode({type:p.CircuitRelay.Type.HOP,srcPeer:{id:this.swarm._peerInfo.id.id,addrs:n.map(e=>e.buffer)},dstPeer:{id:s,addrs:[t.buffer]}}),r)},e=>a.read(e)],(e,t)=>{if(e)return r(e);const n=p.CircuitRelay.decode(t);return n.type!==p.CircuitRelay.Type.STATUS?r(new Error("Got invalid message type - "+`expected ${p.CircuitRelay.Type.STATUS} got ${n.type}`)):n.code!==p.CircuitRelay.Status.SUCCESS?r(new Error(`Got ${n.code} error code trying to dial over relay`)):void r(null,new c(a.rest()))})})}_dialRelay(e,t){t=n(t||(()=>{})),this.swarm.dial(e,d.relay,n((e,r)=>{if(e)return f.err(e),t(e);t(null,r)}))}}e.exports=y},"61a0":function(e,t,r){t.AbstractLevelDOWN=r("13b0"),t.AbstractIterator=r("46be"),t.AbstractChainedBatch=r("7804")},"61d3":function(e,t,r){"use strict";var n=r("4ea4");Object.defineProperty(t,"__esModule",{value:!0}),t.toSignatureObject=l,t.verifyES256K=h,t.verifyRecoverableES256K=f,t.verifyEd25519=d;var i=r("3337"),s=r("d0cf"),o=n(r("fb4d")),a=n(r("f1e8")),c=n(r("427a")),u=new i.ec("secp256k1");function l(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=o.default.toBuffer(e);if(r.length!==(t?65:64))throw new Error("wrong signature length");var n=r.slice(0,32).toString("hex"),i=r.slice(32,64).toString("hex"),s={r:n,s:i};return t&&(s.recoveryParam=r[64]),s}function h(e,t,r){var n=(0,s.sha256)(e),i=l(t),o=r.find((function(e){var t=e.publicKeyHex;return u.keyFromPublic(t,"hex").verify(n,i)}));if(!o)throw new Error("Signature invalid for JWT");return o}function f(e,t,r){var n=l(t,!0),i=(0,s.sha256)(e),o=u.recoverPubKey(i,n,n.recoveryParam),a=o.encode("hex"),c=o.encode("hex",!0),h=(0,s.toEthereumAddress)(a),f=r.find((function(e){var t=e.publicKeyHex,r=e.ethereumAddress;return t===a||t===c||r===h}));if(!f)throw new Error("Signature invalid for JWT");return f}function d(e,t,r){var n=c.default.decodeUTF8(e),i=c.default.decodeBase64(o.default.toBase64(t)),s=r.find((function(e){var t=e.publicKeyBase64;return a.default.sign.detached.verify(n,i,c.default.decodeBase64(t))}));if(!s)throw new Error("Signature invalid for JWT");return s}var p={ES256K:h,"ES256K-R":f,Ed25519:d};function y(e){var t=p[e];if(!t)throw new Error("Unsupported algorithm ".concat(e));return t}y.toSignatureObject=l,e.exports=y},"61f1":function(e,t){var r=Math.pow(2,7),n=Math.pow(2,14),i=Math.pow(2,21),s=Math.pow(2,28),o=Math.pow(2,35),a=Math.pow(2,42),c=Math.pow(2,49),u=Math.pow(2,56),l=Math.pow(2,63);e.exports=function(e){return e{n(i.subtle.sign({name:"HMAC"},t,r).then(t=>e.from(t)),s)};t.create=function(e,t,r){const c=o[e];n(i.subtle.importKey("raw",t,{name:"HMAC",hash:{name:c}},!1,["sign"]).then(t=>({digest(e,r){a(t,e,r)},length:s[e]})),r)}}).call(this,r("b639").Buffer)},6223:function(e,t,r){var n=r("64f1");function i(e){return e}e.exports=function(e){return"object"===typeof e&&"function"===typeof e.test?function(t){return e.test(t)}:n(e)||i}},6225:function(e,t,r){"use strict";var n=r("e567");e.exports=function(e){return n(Object.keys(e))}},6266:function(e,t,r){var n=r("918b");r("dbd5"),r("5ee0");var i=e.exports=n.sha256=n.sha256||{};n.md.sha256=n.md.algorithms.sha256=i,i.create=function(){o||c();var e=null,t=n.util.createBuffer(),r=new Array(64),i={algorithm:"sha256",blockLength:64,digestLength:32,messageLength:0,fullMessageLength:null,messageLengthSize:8,start:function(){i.messageLength=0,i.fullMessageLength=i.messageLength64=[];for(var r=i.messageLengthSize/4,s=0;s>>0,a>>>0];for(var c=i.fullMessageLength.length-1;c>=0;--c)i.fullMessageLength[c]+=a[1],a[1]=a[0]+(i.fullMessageLength[c]/4294967296>>>0),i.fullMessageLength[c]=i.fullMessageLength[c]>>>0,a[0]=a[1]/4294967296>>>0;return t.putBytes(s),u(e,r,t),(t.read>2048||0===t.length())&&t.compact(),i},i.digest=function(){var o=n.util.createBuffer();o.putBytes(t.bytes());var a,c,l=i.fullMessageLength[i.fullMessageLength.length-1]+i.messageLengthSize,h=l&i.blockLength-1;o.putBytes(s.substr(0,i.blockLength-h));for(var f=8*i.fullMessageLength[0],d=0;d>>0,f+=c,o.putInt32(f>>>0),f=a>>>0;o.putInt32(f);var p={h0:e.h0,h1:e.h1,h2:e.h2,h3:e.h3,h4:e.h4,h5:e.h5,h6:e.h6,h7:e.h7};u(p,r,o);var y=n.util.createBuffer();return y.putInt32(p.h0),y.putInt32(p.h1),y.putInt32(p.h2),y.putInt32(p.h3),y.putInt32(p.h4),y.putInt32(p.h5),y.putInt32(p.h6),y.putInt32(p.h7),y},i};var s=null,o=!1,a=null;function c(){s=String.fromCharCode(128),s+=n.util.fillString(String.fromCharCode(0),64),a=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],o=!0}function u(e,t,r){var n,i,s,o,c,u,l,h,f,d,p,y,g,m,b,v=r.length();while(v>=64){for(l=0;l<16;++l)t[l]=r.getInt32();for(;l<64;++l)n=t[l-2],n=(n>>>17|n<<15)^(n>>>19|n<<13)^n>>>10,i=t[l-15],i=(i>>>7|i<<25)^(i>>>18|i<<14)^i>>>3,t[l]=n+t[l-7]+i+t[l-16]|0;for(h=e.h0,f=e.h1,d=e.h2,p=e.h3,y=e.h4,g=e.h5,m=e.h6,b=e.h7,l=0;l<64;++l)o=(y>>>6|y<<26)^(y>>>11|y<<21)^(y>>>25|y<<7),c=m^y&(g^m),s=(h>>>2|h<<30)^(h>>>13|h<<19)^(h>>>22|h<<10),u=h&f|d&(h^f),n=b+o+c+a[l]+t[l],i=s+u,b=m,m=g,g=y,y=p+n>>>0,p=d,d=f,f=h,h=n+i>>>0;e.h0=e.h0+h|0,e.h1=e.h1+f|0,e.h2=e.h2+d|0,e.h3=e.h3+p|0,e.h4=e.h4+y|0,e.h5=e.h5+g|0,e.h6=e.h6+m|0,e.h7=e.h7+b|0,v-=64}}},"627f":function(e,t,r){"use strict";const{Buffer:n}=r("b639"),i=r("c8f6"),s=45569,o=45633,a={init:i.blake2bInit,update:i.blake2bUpdate,digest:i.blake2bFinal},c={init:i.blake2sInit,update:i.blake2sUpdate,digest:i.blake2sFinal},u=(e,t)=>async r=>{const i=t.init(e,null);return t.update(i,r),n.from(t.digest(i))};e.exports=e=>{for(let t=0;t<64;t++)e[s+t]=u(t+1,a);for(let t=0;t<32;t++)e[o+t]=u(t+1,c)}},"62a7":function(e,t,r){"use strict";const n=r("4bc2"),i=n("libp2p:floodsub");i.err=n("libp2p:floodsub:error"),e.exports={log:i,multicodec:"/floodsub/1.0.0"}},"62fc":function(e,t,r){"use strict";e.exports=e=>{if("[object Object]"!==Object.prototype.toString.call(e))return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}},6307:function(e,t,r){"use strict";function n(e,t){t|=0;for(var r=Math.max(e.length-t,0),n=Array(r),i=0;i{this.switch.emit("peer-mux-established",e.theirPeerInfo),this.switch.dialer.clearDenylist(e.theirPeerInfo)}))}get(e){if(!this.connections[e.theirB58Id])return null;for(let t=0;t{const s=e.listener(r);return s.on("stream",this.switch.protocolMuxer(null)),this.switch.identify&&r.getPeerInfo((e,t)=>{!e&&t||o("crypto peerInfo wasnt found"),r.getPeerInfo=async r=>{const o=s.newStream(),c=new i.Dialer;let f;r=a(r);try{await u(c,o);const e=await l(c,n.multicodec);f=await h(e,t)}catch(e){return s.end(()=>{r(e,null)})}const{peerInfo:d}=f;d&&o.setPeerInfo(d),r(null,d)},r.getPeerInfo((e,t)=>{if(e)return o("identify not successful");const n=t.id.toB58String();t=this.switch._peerBook.put(t);const i=new c({_switch:this.switch,peerInfo:t,muxer:s,conn:r,type:"inc"});this.switch.connection.add(i),t.isConnected()||(t.multiaddrs.size>0?t.connect(t.multiaddrs.toArray()[0]):t.connect(`/ipfs/${n}`)),s.once("close",()=>{i.close()})})}),r})}crypto(e,t){e||t||(e=d.tag,t=d.encrypt),this.switch.crypto={tag:e,encrypt:t}}enableCircuitRelay(e){e=e||{},e.enabled&&(e.hop||Object.assign(e,{hop:{enabled:!1,active:!1}}),this.switch.transport.add(f.tag,new f(this.switch,e)))}reuse(){this.switch.identify=!0,this.switch.handle(n.multicodec,(e,t)=>{n.listener(t,this.switch._peerInfo)})}}e.exports=p},6338:function(e,t,r){"use strict";var n=r("5e55");e.exports=function(e){return n(Object.keys(e))}},6341:function(e,t,r){(function(t){var r="Expected a function",n="__lodash_hash_undefined__",i=1/0,s=9007199254740991,o="[object Arguments]",a="[object Function]",c="[object GeneratorFunction]",u="[object Symbol]",l=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,h=/^\w*$/,f=/^\./,d=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,p=/[\\^$.*+?()[\]{}|]/g,y=/\\(\\)?/g,g=/^\[object .+?Constructor\]$/,m=/^(?:0|[1-9]\d*)$/,b="object"==typeof t&&t&&t.Object===Object&&t,v="object"==typeof self&&self&&self.Object===Object&&self,w=b||v||Function("return this")();function _(e,t){return null==e?void 0:e[t]}function E(e){var t=!1;if(null!=e&&"function"!=typeof e.toString)try{t=!!(e+"")}catch(r){}return t}var S=Array.prototype,k=Function.prototype,C=Object.prototype,A=w["__core-js_shared__"],I=function(){var e=/[^.]+$/.exec(A&&A.keys&&A.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),T=k.toString,x=C.hasOwnProperty,B=C.toString,R=RegExp("^"+T.call(x).replace(p,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),N=w.Symbol,O=C.propertyIsEnumerable,P=S.splice,D=ue(w,"Map"),L=ue(Object,"create"),M=N?N.prototype:void 0,U=M?M.toString:void 0;function j(e){var t=-1,r=e?e.length:0;this.clear();while(++t-1}function Q(e,t){var r=this.__data__,n=ne(r,e);return n<0?r.push([e,t]):r[n][1]=t,this}function J(e){var t=-1,r=e?e.length:0;this.clear();while(++t-1&&e%1==0&&e-1&&e%1==0&&e<=s}function Ae(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function Ie(e){return!!e&&"object"==typeof e}function Te(e){return"symbol"==typeof e||Ie(e)&&B.call(e)==u}function xe(e){return null==e?"":oe(e)}function Be(e,t){return null!=e&&le(e,t,ie)}e.exports=Be}).call(this,r("c8ba"))},"63a5":function(e,t,r){"use strict";const n=r("c4bf"),i=r("df87"),s=r("4bc2"),o=s("libp2p:switch:protocol-muxer");o.error=s("libp2p:switch:protocol-muxer:error"),e.exports=function(e,t){return r=>(s,a)=>{const c=a||new n.Listener;let u;u=r&&!a?i(r,null,s,t):s,Object.keys(e).forEach(r=>{if(!r)return;const n=(r,n)=>{o("registering handler with protocol %s",r);const s=e[r];if(s){const e=s&&s.handlerFunc;if(e){const o=i(null,r,n,t);e(s,o)}}};c.addHandler(r,n,e[r].matchFunc)}),c.handle(u,e=>{e&&o.error("multistream handshake failed",e)})}}},"63a7":function(e,t,r){(function(e){var n=r("f64a"),i=t&&!t.nodeType&&t,s=i&&"object"==typeof e&&e&&!e.nodeType&&e,o=s&&s.exports===i,a=o&&n.process,c=function(){try{var e=s&&s.require&&s.require("util").types;return e||a&&a.binding&&a.binding("util")}catch(t){}}();e.exports=c}).call(this,r("62e4")(e))},"63e1":function(e,t,r){"use strict";const{Buffer:n}=r("b639"),i=r("7048"),s=r("e782"),o=r("d8cf");async function a(e,t,r){const n=await a.digest(e,t,r);return s.encode(n,t,r)}a.Buffer=n,a.multihash=s,a.digest=async(e,t,r)=>{const n=a.createHash(t),i=await n(e);return r?i.slice(0,r):i},a.createHash=function(e){if(!e)throw i(new Error("hash algorithm must be specified"),"ERR_HASH_ALGORITHM_NOT_SPECIFIED");if(e=s.coerceCode(e),!a.functions[e])throw i(new Error(`multihash function '${e}' not yet supported`),"ERR_HASH_ALGORITHM_NOT_SUPPORTED");return a.functions[e]},a.functions={0:o.identity,17:o.sha1,18:o.sha2256,19:o.sha2512,20:o.sha3512,21:o.sha3384,22:o.sha3256,23:o.sha3224,24:o.shake128,25:o.shake256,26:o.keccak224,27:o.keccak256,28:o.keccak384,29:o.keccak512,34:o.murmur3128,35:o.murmur332,86:o.dblSha2256},o.addBlake(a.functions),a.validate=async(e,t)=>{const r=await a(e,s.decode(t).name);return 0===n.compare(t,r)},e.exports=a},"640a":function(e,t,r){(function(e){var n=r("0937"),i=r("c4ae"),s=t&&!t.nodeType&&t,o=s&&"object"==typeof e&&e&&!e.nodeType&&e,a=o&&o.exports===s,c=a?n.Buffer:void 0,u=c?c.isBuffer:void 0,l=u||i;e.exports=l}).call(this,r("62e4")(e))},6415:function(e,t,r){(function(t){const n=r("c449"),i=r("e03c"),s="base58btc",o=e=>e?Array.isArray(e)?e.map(o):new n(e):e,a=(e,t)=>{if(!e)return e;if(Array.isArray(e))return e.map(a);if(e["/"])return e["/"];const r=t.base||s;return e.toBaseEncodedString(r)},c=async(e,r)=>{const n=t.from(JSON.stringify(r)),s=i.DAGNode.create(n),o=await e.dag.put(s,{format:"dag-pb",hashAlg:"sha2-256"});return o.toV0().toBaseEncodedString()},u=async(e,t)=>{const r=await e.dag.get(t),n=r.value;return JSON.parse(n.toJSON().data)},l=async(e,t,r)=>{const n=Object.assign({},t),i=r.links||[];i.forEach(e=>{n[e]=o(n[e])});const a=r.base||s,c=r.onlyHash||!1,u=await e.dag.put(n,{onlyHash:c});return u.toBaseEncodedString(a)},h=async(e,t,r)=>{const n=await e.dag.get(t),i=n.value,s=r.links||[];return s.forEach(e=>{i[e]=a(i[e],r)}),i},f=async(e,t,r)=>{const n=r.onlyHash||!1,o=r.base||s,a=Object.assign({},{onlyHash:n},r.format?{format:r.format,hashAlg:"sha2-256"}:{});"dag-pb"===a.format&&(t=i.DAGNode.create(t));const c=await e.dag.put(t,a);return c.toBaseEncodedString(o)},d={"dag-pb":{read:u,write:c},"dag-cbor":{write:l,read:h},raw:{write:f}},p=(e,t,r,n={})=>{const i=d[t];if(!i)throw new Error("Unsupported codec");return i.write(e,r,n)},y=(e,t,r={})=>{t=new n(t);const i=d[t.codec];if(!i)throw new Error("Unsupported codec");return i.read(e,t,r)};e.exports={read:y,write:p}}).call(this,r("b639").Buffer)},"641e":function(e,t){function r(e,t,r,i){return JSON.stringify(e,n(t,i),r)}function n(e,t){var r=[],n=[];return null==t&&(t=function(e,t){return r[0]===t?"[Circular ~]":"[Circular ~."+n.slice(0,r.indexOf(t)).join(".")+"]"}),function(i,s){if(r.length>0){var o=r.indexOf(this);~o?r.splice(o+1):r.push(this),~o?n.splice(o,1/0,i):n.push(i),~r.indexOf(s)&&(s=t.call(this,i,s))}else r.push(s);return null==e?s:e.call(this,i,s)}}t=e.exports=r,t.getSerialize=n},6429:function(e,t,r){"use strict";const n=r("fb92").utils,i=n.map;class s{constructor(e,t){this.child=e,this.transform=t}open(){return this.child.open()}put(e,t){return this.child.put(this.transform.convert(e),t)}get(e){return this.child.get(this.transform.convert(e))}has(e){return this.child.has(this.transform.convert(e))}delete(e){return this.child.delete(this.transform.convert(e))}batch(){const e=this.child.batch();return{put:(t,r)=>{e.put(this.transform.convert(t),r)},delete:t=>{e.delete(this.transform.convert(t))},commit:()=>e.commit()}}query(e){return i(this.child.query(e),e=>(e.key=this.transform.invert(e.key),e))}close(){return this.child.close()}}e.exports=s},"647f":function(e,t,r){"use strict";const n=r("d9ea"),i=r("000a"),s=r("fa4d");e.exports=e=>{const t=e._modules.peerRouting||[];return e._dht&&t.unshift(e._dht),{findPeer:s((e,r,s)=>{"function"===typeof r&&(s=r,r={}),t.length||s(i(new Error("No peer routers available"),"NO_ROUTERS_AVAILABLE"));const o=t.map(t=>n=>t.findPeer(e,r,(e,t)=>e?n(e):t&&0!==Object.keys(t).length?void n(null,t):n(i(new Error("not found"),"NOT_FOUND"),null)));n(o,(e,t)=>{if(e)return s(e);t=t||[],s(null,t)})})}}},"649d":function(e,t,r){"use strict";const n=r("b2f0").TYPES;e.exports=e=>{const t={[n.GET_VALUE]:r("649dc")(e),[n.PUT_VALUE]:r("eac8")(e),[n.FIND_NODE]:r("a5f0")(e),[n.ADD_PROVIDER]:r("9394")(e),[n.GET_PROVIDERS]:r("2d4b")(e),[n.PING]:r("5721")(e)};return function(e){return t[e]}}},"649dc":function(e,t,r){"use strict";const n=r("4a0d"),i=r("b4a2").Record,s=r("4514"),o=r("b2f0"),a=r("8945");e.exports=e=>{const t=a.logger(e.peerInfo.id,"rpc:get-value");return function(r,c,u){const l=c.key;if(t("key: %b",l),!l||0===l.length)return u(s(new Error("Invalid key"),"ERR_INVALID_KEY"));const h=new o(o.TYPES.GET_VALUE,l,c.clusterLevel);if(a.isPublicKeyKey(l)){t("is public key");const r=a.fromPublicKeyKey(l);let n;if(e._isSelf(r)?n=e.peerInfo:e.peerBook.has(r)&&(n=e.peerBook.get(r)),n&&n.id.pubKey)return t("returning found public key"),h.record=new i(l,n.id.pubKey.bytes),u(null,h)}n([t=>e._checkLocalDatastore(l,t),t=>e._betterPeersToQuery(c,r,t)],(e,r)=>{if(e)return u(e);const n=r[0],i=r[1];n&&(t("got record"),h.record=n),i.length>0&&(t("got closer %s",i.length),h.closerPeers=i),u(null,h)})}}},"64b8":function(e,t,r){"use strict";(function(e){t.test=function(){return"document"in e&&"onreadystatechange"in e.document.createElement("script")},t.install=function(t){return function(){var r=e.document.createElement("script");return r.onreadystatechange=function(){t(),r.onreadystatechange=null,r.parentNode.removeChild(r),r=null},e.document.documentElement.appendChild(r),t}}}).call(this,r("c8ba"))},"64d4":function(e,t,r){"use strict";const n=r("1c7ef"),i=n.cloneLinks,s=n.cloneData,o=r("70cf");function a(e){const t=s(e),r=i(e);return o(t,r)}e.exports=a},"64f1":function(e,t){e.exports=function(e){return e&&("string"==typeof e?function(t){return t[e]}:"object"===typeof e&&"function"===typeof e.exec?function(t){var r=e.exec(t);return r&&r[0]}:e)}},"64f9":function(e,t){function r(e,t,r){"string"==typeof t&&(t=t.split(".")),"symbol"==typeof t&&(t=[t]);var n,i=t.pop();if(!i)return!1;while(n=t.shift())if("undefined"==typeof e[n]&&(e[n]={}),e=e[n],!e||"object"!=typeof e)return!1;return e[i]=r,!0}e.exports=r},6547:function(e,t,r){var n=r("a691"),i=r("1d80"),s=function(e){return function(t,r){var s,o,a=String(i(t)),c=n(r),u=a.length;return c<0||c>=u?e?"":void 0:(s=a.charCodeAt(c),s<55296||s>56319||c+1===u||(o=a.charCodeAt(c+1))<56320||o>57343?e?a.charAt(c):s:e?a.slice(c,c+2):o-56320+(s-55296<<10)+65536)}};e.exports={codeAt:s(!1),charAt:s(!0)}},6586:function(e,t,r){(function(t){var n,i=r("11ce"),s=r("2655");function o(e,t){return"function"!==typeof t?e:e.then((function(e){n((function(){t(null,e)}))}),(function(e){n((function(){t(e)}))}))}function a(e){return o(this,e)}function c(e){if(e&&s(e)){e.nodeify=a;var t=e.then;return e.then=function(){return c(t.apply(this,arguments))},e}"function"===typeof e?e.prototype.nodeify=a:i.prototype.nodeify=a}function u(e){if(!(this instanceof u))return new u(e);i.call(this,e),c(this)}n="function"===typeof setImmediate?setImmediate:"object"===typeof t&&t&&t.nextTick?t.nextTick:function(e){setTimeout(e,0)},e.exports=o,o.extend=c,o.Promise=u,u.prototype=Object.create(i.prototype),u.prototype.constructor=u}).call(this,r("4362"))},"65b6":function(e,t,r){"use strict";var n=r("1e35");function i(e,t,r){var i=this;function s(){i._rescheduled>0?(i._scheduled=i._rescheduled-(n()-i._started),i._timer=setTimeout(s,i._scheduled),i._rescheduled=0):e.apply(null,i._args)}this._started=n(),this._rescheduled=0,this._scheduled=t,this._args=r,this._timer=setTimeout(s,t)}function s(){if("function"!==typeof arguments[0])throw new Error("callback needed");if("number"!==typeof arguments[1])throw new Error("timeout needed");var e;if(arguments.length>0){e=new Array(arguments.length-2);for(var t=0;t{const o=e=>n(()=>s(e));if(!t.isBuffer(e))return o(new Error('"key" must be a Buffer'));if(e.length<3)return o(new Error("invalid public key record"));const a=e.slice(0,4).toString();if("/pk/"!==a)return o(new Error("key was not prefixed with /pk/"));const c=e.slice(4);i(r,"sha2-256",(e,t)=>e?o(e):c.equals(t)?void o():o(new Error("public key does not match passed in key")))};e.exports={func:s,sign:!1}}).call(this,r("b639").Buffer)},"666d":function(e,t){var r=[].indexOf;e.exports=function(e,t){if(r)return e.indexOf(t);for(var n=0;n{if(e)throw e;this.kb=new n({localNodeId:r,numberOfNodesPerKBucket:t,numberOfNodesToPing:1}),this.kb.on("ping",this._onPing)})}_onPing(e,t){const r=e[0];this.kb.remove(r.id),this.kb.add(t)}get size(){return this.kb.count()}find(e,t){i.convertPeerId(e,(r,n)=>{if(r)return t(r);const i=this.closestPeer(n);if(i&&i.isEqual(e))return t(null,i);t()})}closestPeer(e,t){const r=this.closestPeers(e,1);if(r.length>0)return r[0]}closestPeers(e,t){return this.kb.closest(e,t).map(e=>e.peer)}add(e,t){i.convertPeerId(e,(r,n)=>{if(r)return t(r);this.kb.add({id:n,peer:e}),t()})}remove(e,t){i.convertPeerId(e,(e,r)=>{if(e)return t(e);this.kb.remove(r),t()})}}e.exports=s},"66e8":function(e,t,r){var n=r("010f");function i(e){if(!(this instanceof i))return new i(e);this.opts=e||{},this.encodings=n}e.exports=i,i.prototype._encoding=function(e){return"string"===typeof e&&(e=n[e]),e||(e=n.id),e},i.prototype._keyEncoding=function(e,t){return this._encoding(t&&t.keyEncoding||e&&e.keyEncoding||this.opts.keyEncoding)},i.prototype._valueEncoding=function(e,t){return this._encoding(t&&(t.valueEncoding||t.encoding)||e&&(e.valueEncoding||e.encoding)||this.opts.valueEncoding||this.opts.encoding)},i.prototype.encodeKey=function(e,t,r){return this._keyEncoding(t,r).encode(e)},i.prototype.encodeValue=function(e,t,r){return this._valueEncoding(t,r).encode(e)},i.prototype.decodeKey=function(e,t){return this._keyEncoding(t).decode(e)},i.prototype.decodeValue=function(e,t){return this._valueEncoding(t).decode(e)},i.prototype.encodeBatch=function(e,t){var r=this;return e.map((function(e){var n={type:e.type,key:r.encodeKey(e.key,t,e)};return r.keyAsBuffer(t,e)&&(n.keyEncoding="binary"),e.prefix&&(n.prefix=e.prefix),"value"in e&&(n.value=r.encodeValue(e.value,t,e),r.valueAsBuffer(t,e)&&(n.valueEncoding="binary")),n}))};var s=["lt","gt","lte","gte","start","end"];i.prototype.encodeLtgt=function(e){var t=this,r={};return Object.keys(e).forEach((function(n){r[n]=s.indexOf(n)>-1?t.encodeKey(e[n],e):e[n]})),r},i.prototype.createStreamDecoder=function(e){var t=this;return e.keys&&e.values?function(r,n){return{key:t.decodeKey(r,e),value:t.decodeValue(n,e)}}:e.keys?function(r){return t.decodeKey(r,e)}:e.values?function(r,n){return t.decodeValue(n,e)}:function(){}},i.prototype.keyAsBuffer=function(e){return this._keyEncoding(e).buffer},i.prototype.valueAsBuffer=function(e){return this._valueEncoding(e).buffer}},"66f0":function(e,t,r){"use strict";const n=r("b1aa"),{Key:i,Errors:s}=r("7b6d"),o=r("7048"),a=r("fa4d"),c=r("4bc2"),u=c("ipfs:ipns:publisher");u.error=c("ipfs:ipns:publisher:error");const l=r("2e53"),h=s.notFoundError().code,f=36e5;class d{constructor(e,t){this._routing=e,this._datastore=t}async publishWithEOL(e,t,r){if(!e||!e.bytes)throw o(new Error("invalid private key"),"ERR_INVALID_PRIVATE_KEY");const i=await a(n.createFromPrivKey)(e.bytes),s=await this._updateOrCreateRecord(e,t,r,i);return this._putRecordToRouting(s,i)}async publish(e,t){return this.publishWithEOL(e,t,f)}async _putRecordToRouting(e,t){if(!n.isPeerId(t)){const e="peerId received is not valid";throw u.error(e),o(new Error(e),"ERR_INVALID_PEER_ID")}const r=t._pubKey,i=await l.embedPublicKey(r,e),s=l.getIdKeys(t.toBytes());return await this._publishEntry(s.routingKey,i||e,t),await this._publishPublicKey(s.routingPubKey,r),i||e}async _publishEntry(e,t){if(!i.isKey(e)){const e="datastore key does not have a valid format";throw u.error(e),o(new Error(e),"ERR_INVALID_DATASTORE_KEY")}let r;try{r=l.marshal(t)}catch(n){throw u.error(n),n}try{const t=await this._routing.put(e.toBuffer(),r);return u(`ipns record for ${e.toString("base64")} was stored in the routing`),t}catch(n){const t=`ipns record for ${e.toString("base64")} could not be stored in the routing`;throw u.error(t),u.error(n),o(new Error(t),"ERR_PUTTING_TO_ROUTING")}}async _publishPublicKey(e,t){if(!i.isKey(e)){const e="datastore key does not have a valid format";throw u.error(e),o(new Error(e),"ERR_INVALID_DATASTORE_KEY")}if(!t||!t.bytes){const e="one or more of the provided parameters are not defined";throw u.error(e),o(new Error(e),"ERR_UNDEFINED_PARAMETER")}try{const r=await this._routing.put(e.toBuffer(),t.bytes);return u(`public key for ${e.toString("base64")} was stored in the routing`),r}catch(r){const t=`public key for ${e.toString("base64")} could not be stored in the routing`;throw u.error(t),u.error(r),o(new Error(t),"ERR_PUTTING_TO_ROUTING")}}async _getPublished(e,t){if(!n.isPeerId(e)){const e="peerId received is not valid";throw u.error(e),o(new Error(e),"ERR_INVALID_PEER_ID")}t=t||{};const r=!1!==t.checkRouting;try{const t=await this._datastore.get(l.getLocalKey(e.id));return this._unmarshalData(t)}catch(i){if(i.code!==h){const t=`unexpected error getting the ipns record ${e.id} from datastore`;throw u.error(t),o(new Error(t),"ERR_UNEXPECTED_DATASTORE_RESPONSE")}if(!r)throw o(i);try{const t=l.getIdKeys(e.toBytes()),r=await this._routing.get(t.routingKey.toBuffer());return this._unmarshalData(r)}catch(i){throw u.error(i),i}}}_unmarshalData(e){try{return l.unmarshal(e)}catch(t){throw o(t,"ERR_INVALID_RECORD_DATA")}}async _updateOrCreateRecord(e,t,r,i){if(!n.isPeerId(i)){const e="peerId received is not valid";throw u.error(e),o(new Error(e),"ERR_INVALID_PEER_ID")}const s={checkRouting:!0};let a;try{a=await this._getPublished(i,s)}catch(d){if(d.code!==h){const e=`unexpected error when determining the last published IPNS record for ${i.id}`;throw u.error(e),o(new Error(e),"ERR_DETERMINING_PUBLISHED_RECORD")}}let c,f=0;a&&void 0!==a.sequence&&(f=a.value.toString()!==t?a.sequence+1:a.sequence);try{c=await l.create(e,t,f,r)}catch(d){const e=`ipns record for ${t} could not be created`;throw u.error(d),o(new Error(e),"ERR_CREATING_IPNS_RECORD")}try{const e=l.marshal(c);return await this._datastore.put(l.getLocalKey(i.id),e),u(`ipns record for ${t} was stored in the datastore`),c}catch(d){const e=`ipns record for ${t} could not be stored in the datastore`;throw u.error(e),o(new Error(e),"ERR_STORING_IN_DATASTORE")}}}d.defaultRecordLifetime=f,e.exports=d},"670b":function(e,t,r){"use strict";(function(t,n){const i=r("cf7a"),s=r("26a6").BigNumber,o=r("1c1d"),a=r("c14d"),c=r("d3e5"),u=r("99a6"),l=r("a041"),{URL:h}=r("e2a8");class f{constructor(e){e=e||{},!e.size||e.size<65536?e.size=65536:e.size=a.nextPowerOf2(e.size),this._heap=new ArrayBuffer(e.size),this._heap8=new Uint8Array(this._heap),this._buffer=t.from(this._heap),this._reset(),this._knownTags=Object.assign({0:e=>new Date(e),1:e=>new Date(1e3*e),2:e=>a.arrayBufferToBignumber(e),3:e=>c.NEG_ONE.minus(a.arrayBufferToBignumber(e)),4:e=>c.TEN.pow(e[0]).times(e[1]),5:e=>c.TWO.pow(e[0]).times(e[1]),32:e=>new h(e),35:e=>new RegExp(e)},e.tags),this.parser=o(n,{log:console.log.bind(console),pushInt:this.pushInt.bind(this),pushInt32:this.pushInt32.bind(this),pushInt32Neg:this.pushInt32Neg.bind(this),pushInt64:this.pushInt64.bind(this),pushInt64Neg:this.pushInt64Neg.bind(this),pushFloat:this.pushFloat.bind(this),pushFloatSingle:this.pushFloatSingle.bind(this),pushFloatDouble:this.pushFloatDouble.bind(this),pushTrue:this.pushTrue.bind(this),pushFalse:this.pushFalse.bind(this),pushUndefined:this.pushUndefined.bind(this),pushNull:this.pushNull.bind(this),pushInfinity:this.pushInfinity.bind(this),pushInfinityNeg:this.pushInfinityNeg.bind(this),pushNaN:this.pushNaN.bind(this),pushNaNNeg:this.pushNaNNeg.bind(this),pushArrayStart:this.pushArrayStart.bind(this),pushArrayStartFixed:this.pushArrayStartFixed.bind(this),pushArrayStartFixed32:this.pushArrayStartFixed32.bind(this),pushArrayStartFixed64:this.pushArrayStartFixed64.bind(this),pushObjectStart:this.pushObjectStart.bind(this),pushObjectStartFixed:this.pushObjectStartFixed.bind(this),pushObjectStartFixed32:this.pushObjectStartFixed32.bind(this),pushObjectStartFixed64:this.pushObjectStartFixed64.bind(this),pushByteString:this.pushByteString.bind(this),pushByteStringStart:this.pushByteStringStart.bind(this),pushUtf8String:this.pushUtf8String.bind(this),pushUtf8StringStart:this.pushUtf8StringStart.bind(this),pushSimpleUnassigned:this.pushSimpleUnassigned.bind(this),pushTagUnassigned:this.pushTagUnassigned.bind(this),pushTagStart:this.pushTagStart.bind(this),pushTagStart4:this.pushTagStart4.bind(this),pushTagStart8:this.pushTagStart8.bind(this),pushBreak:this.pushBreak.bind(this)},this._heap)}get _depth(){return this._parents.length}get _currentParent(){return this._parents[this._depth-1]}get _ref(){return this._currentParent.ref}_closeParent(){var e=this._parents.pop();if(e.length>0)throw new Error(`Missing ${e.length} elements`);switch(e.type){case c.PARENT.TAG:this._push(this.createTag(e.ref[0],e.ref[1]));break;case c.PARENT.BYTE_STRING:this._push(this.createByteString(e.ref,e.length));break;case c.PARENT.UTF8_STRING:this._push(this.createUtf8String(e.ref,e.length));break;case c.PARENT.MAP:if(e.values%2>0)throw new Error("Odd number of elements in the map");this._push(this.createMap(e.ref,e.length));break;case c.PARENT.OBJECT:if(e.values%2>0)throw new Error("Odd number of elements in the map");this._push(this.createObject(e.ref,e.length));break;case c.PARENT.ARRAY:this._push(this.createArray(e.ref,e.length));break;default:break}this._currentParent&&this._currentParent.type===c.PARENT.TAG&&this._dec()}_dec(){const e=this._currentParent;e.length<0||(e.length--,0===e.length&&this._closeParent())}_push(e,t){const r=this._currentParent;switch(r.values++,r.type){case c.PARENT.ARRAY:case c.PARENT.BYTE_STRING:case c.PARENT.UTF8_STRING:r.length>-1?this._ref[this._ref.length-r.length]=e:this._ref.push(e),this._dec();break;case c.PARENT.OBJECT:null!=r.tmpKey?(this._ref[r.tmpKey]=e,r.tmpKey=null,this._dec()):(r.tmpKey=e,"string"!==typeof r.tmpKey&&(r.type=c.PARENT.MAP,r.ref=a.buildMap(r.ref)));break;case c.PARENT.MAP:null!=r.tmpKey?(this._ref.set(r.tmpKey,e),r.tmpKey=null,this._dec()):r.tmpKey=e;break;case c.PARENT.TAG:this._ref.push(e),t||this._dec();break;default:throw new Error("Unknown parent type")}}_createParent(e,t,r){this._parents[this._depth]={type:t,length:r,ref:e,values:0,tmpKey:null}}_reset(){this._res=[],this._parents=[{type:c.PARENT.ARRAY,length:-1,ref:this._res,values:0,tmpKey:null}]}createTag(e,t){const r=this._knownTags[e];return r?r(t):new l(e,t)}createMap(e,t){return e}createObject(e,t){return e}createArray(e,t){return e}createByteString(e,r){return t.concat(e)}createByteStringFromHeap(e,r){return e===r?t.alloc(0):t.from(this._heap.slice(e,r))}createInt(e){return e}createInt32(e,t){return a.buildInt32(e,t)}createInt64(e,t,r,n){return a.buildInt64(e,t,r,n)}createFloat(e){return e}createFloatSingle(e,t,r,n){return i.read([e,t,r,n],0,!1,23,4)}createFloatDouble(e,t,r,n,s,o,a,c){return i.read([e,t,r,n,s,o,a,c],0,!1,52,8)}createInt32Neg(e,t){return-1-a.buildInt32(e,t)}createInt64Neg(e,t,r,n){const i=a.buildInt32(e,t),o=a.buildInt32(r,n);return i>c.MAX_SAFE_HIGH?c.NEG_ONE.minus(new s(i).times(c.SHIFT32).plus(o)):-1-(i*c.SHIFT32+o)}createTrue(){return!0}createFalse(){return!1}createNull(){return null}createUndefined(){}createInfinity(){return 1/0}createInfinityNeg(){return-1/0}createNaN(){return NaN}createNaNNeg(){return NaN}createUtf8String(e,t){return e.join("")}createUtf8StringFromHeap(e,t){return e===t?"":this._buffer.toString("utf8",e,t)}createSimpleUnassigned(e){return new u(e)}pushInt(e){this._push(this.createInt(e))}pushInt32(e,t){this._push(this.createInt32(e,t))}pushInt64(e,t,r,n){this._push(this.createInt64(e,t,r,n))}pushFloat(e){this._push(this.createFloat(e))}pushFloatSingle(e,t,r,n){this._push(this.createFloatSingle(e,t,r,n))}pushFloatDouble(e,t,r,n,i,s,o,a){this._push(this.createFloatDouble(e,t,r,n,i,s,o,a))}pushInt32Neg(e,t){this._push(this.createInt32Neg(e,t))}pushInt64Neg(e,t,r,n){this._push(this.createInt64Neg(e,t,r,n))}pushTrue(){this._push(this.createTrue())}pushFalse(){this._push(this.createFalse())}pushNull(){this._push(this.createNull())}pushUndefined(){this._push(this.createUndefined())}pushInfinity(){this._push(this.createInfinity())}pushInfinityNeg(){this._push(this.createInfinityNeg())}pushNaN(){this._push(this.createNaN())}pushNaNNeg(){this._push(this.createNaNNeg())}pushArrayStart(){this._createParent([],c.PARENT.ARRAY,-1)}pushArrayStartFixed(e){this._createArrayStartFixed(e)}pushArrayStartFixed32(e,t){const r=a.buildInt32(e,t);this._createArrayStartFixed(r)}pushArrayStartFixed64(e,t,r,n){const i=a.buildInt64(e,t,r,n);this._createArrayStartFixed(i)}pushObjectStart(){this._createObjectStartFixed(-1)}pushObjectStartFixed(e){this._createObjectStartFixed(e)}pushObjectStartFixed32(e,t){const r=a.buildInt32(e,t);this._createObjectStartFixed(r)}pushObjectStartFixed64(e,t,r,n){const i=a.buildInt64(e,t,r,n);this._createObjectStartFixed(i)}pushByteStringStart(){this._parents[this._depth]={type:c.PARENT.BYTE_STRING,length:-1,ref:[],values:0,tmpKey:null}}pushByteString(e,t){this._push(this.createByteStringFromHeap(e,t))}pushUtf8StringStart(){this._parents[this._depth]={type:c.PARENT.UTF8_STRING,length:-1,ref:[],values:0,tmpKey:null}}pushUtf8String(e,t){this._push(this.createUtf8StringFromHeap(e,t))}pushSimpleUnassigned(e){this._push(this.createSimpleUnassigned(e))}pushTagStart(e){this._parents[this._depth]={type:c.PARENT.TAG,length:1,ref:[e]}}pushTagStart4(e,t){this.pushTagStart(a.buildInt32(e,t))}pushTagStart8(e,t,r,n){this.pushTagStart(a.buildInt64(e,t,r,n))}pushTagUnassigned(e){this._push(this.createTag(e))}pushBreak(){if(this._currentParent.length>-1)throw new Error("Unexpected break");this._closeParent()}_createObjectStartFixed(e){0!==e?this._createParent({},c.PARENT.OBJECT,e):this._push(this.createObject({}))}_createArrayStartFixed(e){0!==e?this._createParent(new Array(e),c.PARENT.ARRAY,e):this._push(this.createArray([]))}_decode(e){if(0===e.byteLength)throw new Error("Input too short");this._reset(),this._heap8.set(e);const t=this.parser.parse(e.byteLength);if(this._depth>1){while(0===this._currentParent.length)this._closeParent();if(this._depth>1)throw new Error("Undeterminated nesting")}if(t>0)throw new Error("Failed to parse");if(0===this._res.length)throw new Error("No valid result")}decodeFirst(e){return this._decode(e),this._res[0]}decodeAll(e){return this._decode(e),this._res}static decode(e,r){"string"===typeof e&&(e=t.from(e,r||"hex"));const n=new f({size:e.length});return n.decodeFirst(e)}static decodeAll(e,r){"string"===typeof e&&(e=t.from(e,r||"hex"));const n=new f({size:e.length});return n.decodeAll(e)}}f.decodeFirst=f.decode,e.exports=f}).call(this,r("b639").Buffer,r("c8ba"))},"670f":function(e,t,r){"use strict";function n(e,t,r){var n;if(!(e instanceof Error))throw new TypeError("Please pass an Error to err-code");if("object"===typeof t?r=t:null!=t&&(e.code=t),r)for(n in r)e[n]=r[n];return e}e.exports=n},6719:function(e,t,r){(function(t){var r={};e.exports=r;var n={};function i(e,t){var r=0,n=t.length,i=t.charAt(0),s=[0];for(r=0;r0)s.push(a%n),a=a/n|0}var c="";for(r=0;0===e.at(r)&&r=0;--r)c+=t[s[r]];return c}r.encode=function(e,t,r){if("string"!==typeof t)throw new TypeError('"alphabet" must be a string.');if(void 0!==r&&"number"!==typeof r)throw new TypeError('"maxline" must be a number.');var n="";if(e instanceof Uint8Array){var s=0,o=t.length,a=t.charAt(0),c=[0];for(s=0;s0)c.push(l%o),l=l/o|0}for(s=0;0===e[s]&&s=0;--s)n+=t[c[s]]}else n=i(e,t);if(r){var h=new RegExp(".{1,"+r+"}","g");n=n.match(h).join("\r\n")}return n},r.decode=function(e,r){if("string"!==typeof e)throw new TypeError('"input" must be a string.');if("string"!==typeof r)throw new TypeError('"alphabet" must be a string.');var i=n[r];if(!i){i=n[r]=[];for(var s=0;s>=8;while(h>0)c.push(255&h),h>>=8}for(var f=0;e[f]===a&&fi(null,e),i)}}},"67e0":function(e,t,r){"use strict";const n=t;n.Reporter=r("4a8a").Reporter,n.DecoderBuffer=r("999a").DecoderBuffer,n.EncoderBuffer=r("999a").EncoderBuffer,n.Node=r("0c77")},"680e":function(e,t,r){"use strict";(function(t){const{URL:n}=r("e2a8"),i=r("cb90"),{default:s}=r("2424");e.exports=e=>{const r=async(r,i)=>{i=i||{};const o=await s.get(r),a=decodeURIComponent(new n(o.url).pathname.split("/").pop()),c=t.from(await o.arrayBuffer());return e.add({content:c,path:a},i)};return(e,t,n)=>("function"===typeof t&&(n=t,t={}),i(r(e,t),n))}}).call(this,r("b639").Buffer)},"682d":function(e,t,r){"use strict";e.exports=function(e,t){return e.then(e=>{t(null,e)},e=>{t(e)})}},"686e":function(e,t,r){"use strict";const n=r("c3bb"),i=r("b639").Buffer,s=r("9e80");function o(e){s.call(this,e),this.enc="pem"}n(o,s),e.exports=o,o.prototype.decode=function(e,t){const r=e.toString().split(/[\r\n]+/g),n=t.label.toUpperCase(),o=/^-----(BEGIN|END) ([^-]+)-----$/;let a=-1,c=-1;for(let i=0;ithis.addPeerToQuery(e))),await this.run.workerQueue(this)}async addPeerToQuery(e){this.run.query.dht._isSelf(e)||this.run.peersSeen.has(e)||await this.peersToQuery.enqueue(e)}}e.exports=o},"68f6":function(e,t,r){"use strict";var n=r("e0c5").Buffer,i=r("bce7"),s=r("1972"),o=r("c627");function a(){this.x=i.fromBuffer(n.from("79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798","hex")),this.y=i.fromBuffer(n.from("483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8","hex")),this.inf=!1,this._precompute()}a.prototype._precompute=function(){for(var e=new s(this.x,this.y),t=4,r=new Array(1+Math.ceil(257/t)),n=r[0]=e,i=1;i=u;h--)l=(l<<1)+i[h];c.push(l)}for(var f=new o(null,null,null),d=new o(null,null,null),p=a;p>0;p--){for(var y=0;y=0;l--){for(var h=0;l>=0;++h,--l)if(u[0]=0|a[0][l],u[1]=0|a[1][l],0!==u[0]||0!==u[1])break;if(l>=0&&(h+=1),c=c.dblp(h),l<0)break;for(var f=0;f<2;f++){var d,p=u[f];0!==p&&(p>0?d=s[f][p>>1]:p<0&&(d=s[f][-p>>1].neg()),c=void 0===d.z?c.mixedAdd(d):c.add(d))}}return c},e.exports=new a},"691e":function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isAsync=void 0;var n=r("e7ab"),i=s(n);function s(e){return e&&e.__esModule?e:{default:e}}var o="function"===typeof Symbol;function a(e){return o&&"AsyncFunction"===e[Symbol.toStringTag]}function c(e){return a(e)?(0,i.default)(e):e}t.default=c,t.isAsync=a},"694c":function(e,t,r){"use strict";const n=r("e0c5").Buffer;e.exports=s;const i=10240;function s(e){e=Object.assign({fixed:!1},e||{});const t=r("9efb");let i=e.fixed?null:o(),s=0,a=!1;return r=>(c,u)=>{if(c&&(a=c),a)return u(a);r(null,(r,c)=>{if(r&&(a=r),a)return u(a);if(!a&&!n.isBuffer(c))return a=new Error("data must be a buffer"),u(a);const l=a?0:c.length;let h;if(e.fixed?(h=n.alloc(4),h.writeInt32BE(l,0)):(t.encode(l,i,s),s+=t.encode.bytes,h=i.slice(s-t.encode.bytes,s),i.length-s<100&&(i=o(),s=0)),a)return u(null,h);u(null,n.concat([h,c],(e.fixed?4:t.encode.bytes)+l))})}}function o(){return n.alloc(i)}},"694d":function(e,t,r){"use strict";var n=r("0a86");e.exports=function(e){return n(e,!0)}},6966:function(e,t,r){"use strict";(function(t){var n;function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var s=r("b307"),o=Symbol("lastResolve"),a=Symbol("lastReject"),c=Symbol("error"),u=Symbol("ended"),l=Symbol("lastPromise"),h=Symbol("handlePromise"),f=Symbol("stream");function d(e,t){return{value:e,done:t}}function p(e){var t=e[o];if(null!==t){var r=e[f].read();null!==r&&(e[l]=null,e[o]=null,e[a]=null,t(d(r,!1)))}}function y(e){t.nextTick(p,e)}function g(e,t){return function(r,n){e.then((function(){t[u]?r(d(void 0,!0)):t[h](r,n)}),n)}}var m=Object.getPrototypeOf((function(){})),b=Object.setPrototypeOf((n={get stream(){return this[f]},next:function(){var e=this,r=this[c];if(null!==r)return Promise.reject(r);if(this[u])return Promise.resolve(d(void 0,!0));if(this[f].destroyed)return new Promise((function(r,n){t.nextTick((function(){e[c]?n(e[c]):r(d(void 0,!0))}))}));var n,i=this[l];if(i)n=new Promise(g(i,this));else{var s=this[f].read();if(null!==s)return Promise.resolve(d(s,!1));n=new Promise(this[h])}return this[l]=n,n}},i(n,Symbol.asyncIterator,(function(){return this})),i(n,"return",(function(){var e=this;return new Promise((function(t,r){e[f].destroy(null,(function(e){e?r(e):t(d(void 0,!0))}))}))})),n),m),v=function(e){var t,r=Object.create(b,(t={},i(t,f,{value:e,writable:!0}),i(t,o,{value:null,writable:!0}),i(t,a,{value:null,writable:!0}),i(t,c,{value:null,writable:!0}),i(t,u,{value:e._readableState.endEmitted,writable:!0}),i(t,h,{value:function(e,t){var n=r[f].read();n?(r[l]=null,r[o]=null,r[a]=null,e(d(n,!1))):(r[o]=e,r[a]=t)},writable:!0}),t));return r[l]=null,s(e,(function(e){if(e&&"ERR_STREAM_PREMATURE_CLOSE"!==e.code){var t=r[a];return null!==t&&(r[l]=null,r[o]=null,r[a]=null,t(e)),void(r[c]=e)}var n=r[o];null!==n&&(r[l]=null,r[o]=null,r[a]=null,n(d(void 0,!0))),r[u]=!0})),e.on("readable",y.bind(null,r)),r};e.exports=v}).call(this,r("4362"))},"69b6":function(e,t,r){(function(t){e.exports=function(){var e=[],r=0;return{length:r,data:this,add:function(n){if(!t.isBuffer(n))throw new Error("data must be a buffer, was: "+JSON.stringify(n));return this.length=r+=n.length,e.push(n),this},has:function(e){return null==e?r>0:r>=e},get:function(n){var i;if(null==n||n===r){r=0;var s=e;return e=[],1==s.length?s[0]:t.concat(s)}if(e.length>1&&n<=(i=e[0].length)){var o=e[0].slice(0,n);return n===i?e.shift():e[0]=e[0].slice(n,i),r-=n,o}if(n(r=r||{},e._keychain.createKey(t,r.type,r.size))),info:n(async t=>e._keychain.findKeyByName(t)),list:n(async()=>e._keychain.listKeys()),rm:n(async t=>e._keychain.removeKey(t)),rename:n(async(t,r)=>{const n=await e._keychain.renameKey(t,r);return{was:t,now:n.name,id:n.id,overwrite:!1}}),import:n(async(t,r,n)=>e._keychain.importKey(t,r,n)),export:n(async(t,r)=>e._keychain.exportKey(t,r))}}},"69d0":function(e,t){var r="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof window.msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto);if(r){var n=new Uint8Array(16);e.exports=function(){return r(n),n}}else{var i=new Array(16);e.exports=function(){for(var e,t=0;t<16;t++)0===(3&t)&&(e=4294967296*Math.random()),i[t]=e>>>((3&t)<<3)&255;return i}}},"69e7":function(e,t,r){"use strict";(function(t){const n=r("1c7ef"),i=n.cloneLinks,s=n.cloneData,o=r("70cf"),a=r("c449"),c=(e,r)=>{const n=s(e);let c=i(e);if("string"===typeof r)c=c.filter(e=>e.Name!==r);else{if(!t.isBuffer(r)&&!a.isCID(r))throw new Error("second arg needs to be a name or CID");c=c.filter(e=>!e.Hash.equals(r))}return o(n,c)};e.exports=c}).call(this,r("b639").Buffer)},"6a27":function(e,t,r){var n=r("6b4e");e.exports=function(e){return(new n).update(e).digest()}},"6a63":function(e,t,r){function n(e){if(e)return i(e)}function i(e){for(var t in n.prototype)e[t]=n.prototype[t];return e}e.exports=n,n.prototype.on=n.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},n.prototype.once=function(e,t){function r(){this.off(e,r),t.apply(this,arguments)}return r.fn=t,this.on(e,r),this},n.prototype.off=n.prototype.removeListener=n.prototype.removeAllListeners=n.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var r,n=this._callbacks["$"+e];if(!n)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var i=0;i(r||(r=Promise.resolve())).then(e).catch(e=>setTimeout(()=>{throw e},0))},"6ad2":function(e,t,r){"use strict";(function(n){function i(e){return i="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function s(){return!("undefined"===typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"===typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!==typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!==typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!==typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!==typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))}function o(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),this.useColors){var r="color: "+this.color;t.splice(1,0,r,"color: inherit");var n=0,i=0;t[0].replace(/%[a-zA-Z%]/g,(function(e){"%%"!==e&&(n++,"%c"===e&&(i=n))})),t.splice(i,0,r)}}function a(){var e;return"object"===("undefined"===typeof console?"undefined":i(console))&&console.log&&(e=console).log.apply(e,arguments)}function c(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(r){}}function u(){var e;try{e=t.storage.getItem("debug")}catch(r){}return!e&&"undefined"!==typeof n&&"env"in n&&(e=Object({NODE_ENV:"production",BASE_URL:"/"}).DEBUG),e}function l(){try{return localStorage}catch(e){}}t.log=a,t.formatArgs=o,t.save=c,t.load=u,t.useColors=s,t.storage=l(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],e.exports=r("8922")(t);var h=e.exports.formatters;h.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}}).call(this,r("4362"))},"6b25":function(e,t,r){"use strict";const n=r("247b");e.exports=(e,t)=>{n.generateEphmeralKeyPair(e,t)}},"6b4e":function(e,t,r){"use strict";var n=r("c3bb"),i=r("a254"),s=r("e0c5").Buffer,o=new Array(16);function a(){i.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878}function c(e,t){return e<>>32-t}function u(e,t,r,n,i,s,o){return c(e+(t&r|~t&n)+i+s|0,o)+t|0}function l(e,t,r,n,i,s,o){return c(e+(t&n|r&~n)+i+s|0,o)+t|0}function h(e,t,r,n,i,s,o){return c(e+(t^r^n)+i+s|0,o)+t|0}function f(e,t,r,n,i,s,o){return c(e+(r^(t|~n))+i+s|0,o)+t|0}n(a,i),a.prototype._update=function(){for(var e=o,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);var r=this._a,n=this._b,i=this._c,s=this._d;r=u(r,n,i,s,e[0],3614090360,7),s=u(s,r,n,i,e[1],3905402710,12),i=u(i,s,r,n,e[2],606105819,17),n=u(n,i,s,r,e[3],3250441966,22),r=u(r,n,i,s,e[4],4118548399,7),s=u(s,r,n,i,e[5],1200080426,12),i=u(i,s,r,n,e[6],2821735955,17),n=u(n,i,s,r,e[7],4249261313,22),r=u(r,n,i,s,e[8],1770035416,7),s=u(s,r,n,i,e[9],2336552879,12),i=u(i,s,r,n,e[10],4294925233,17),n=u(n,i,s,r,e[11],2304563134,22),r=u(r,n,i,s,e[12],1804603682,7),s=u(s,r,n,i,e[13],4254626195,12),i=u(i,s,r,n,e[14],2792965006,17),n=u(n,i,s,r,e[15],1236535329,22),r=l(r,n,i,s,e[1],4129170786,5),s=l(s,r,n,i,e[6],3225465664,9),i=l(i,s,r,n,e[11],643717713,14),n=l(n,i,s,r,e[0],3921069994,20),r=l(r,n,i,s,e[5],3593408605,5),s=l(s,r,n,i,e[10],38016083,9),i=l(i,s,r,n,e[15],3634488961,14),n=l(n,i,s,r,e[4],3889429448,20),r=l(r,n,i,s,e[9],568446438,5),s=l(s,r,n,i,e[14],3275163606,9),i=l(i,s,r,n,e[3],4107603335,14),n=l(n,i,s,r,e[8],1163531501,20),r=l(r,n,i,s,e[13],2850285829,5),s=l(s,r,n,i,e[2],4243563512,9),i=l(i,s,r,n,e[7],1735328473,14),n=l(n,i,s,r,e[12],2368359562,20),r=h(r,n,i,s,e[5],4294588738,4),s=h(s,r,n,i,e[8],2272392833,11),i=h(i,s,r,n,e[11],1839030562,16),n=h(n,i,s,r,e[14],4259657740,23),r=h(r,n,i,s,e[1],2763975236,4),s=h(s,r,n,i,e[4],1272893353,11),i=h(i,s,r,n,e[7],4139469664,16),n=h(n,i,s,r,e[10],3200236656,23),r=h(r,n,i,s,e[13],681279174,4),s=h(s,r,n,i,e[0],3936430074,11),i=h(i,s,r,n,e[3],3572445317,16),n=h(n,i,s,r,e[6],76029189,23),r=h(r,n,i,s,e[9],3654602809,4),s=h(s,r,n,i,e[12],3873151461,11),i=h(i,s,r,n,e[15],530742520,16),n=h(n,i,s,r,e[2],3299628645,23),r=f(r,n,i,s,e[0],4096336452,6),s=f(s,r,n,i,e[7],1126891415,10),i=f(i,s,r,n,e[14],2878612391,15),n=f(n,i,s,r,e[5],4237533241,21),r=f(r,n,i,s,e[12],1700485571,6),s=f(s,r,n,i,e[3],2399980690,10),i=f(i,s,r,n,e[10],4293915773,15),n=f(n,i,s,r,e[1],2240044497,21),r=f(r,n,i,s,e[8],1873313359,6),s=f(s,r,n,i,e[15],4264355552,10),i=f(i,s,r,n,e[6],2734768916,15),n=f(n,i,s,r,e[13],1309151649,21),r=f(r,n,i,s,e[4],4149444226,6),s=f(s,r,n,i,e[11],3174756917,10),i=f(i,s,r,n,e[2],718787259,15),n=f(n,i,s,r,e[9],3951481745,21),this._a=this._a+r|0,this._b=this._b+n|0,this._c=this._c+i|0,this._d=this._d+s|0},a.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=s.allocUnsafe(16);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e},e.exports=a},"6b4f":function(e,t,r){var n=r("0937"),i=n.Symbol;e.exports=i},"6b58":function(e,t,r){var n=r("7037"),i=r("3c96");function s(e,t){return!t||"object"!==n(t)&&"function"!==typeof t?i(e):t}e.exports=s},"6b6e":function(e,t,r){"use strict";e.exports=e=>{const t={add:r("67ce")(e),addFromFs:r("3bf8")(e),addFromStream:r("a47a")(e),addFromURL:r("680e")(e),addPullStream:r("b6713")(e),addReadableStream:r("84b3")(e),_addAsyncIterator:r("cb3e")(e),cat:r("2632")(e),catPullStream:r("5036")(e),catReadableStream:r("74c8")(e),_catAsyncIterator:r("cf23")(e),get:r("eb0c")(e),getPullStream:r("005a")(e),getReadableStream:r("363c")(e),_getAsyncIterator:r("d8a0")(e),ls:r("a808")(e),lsPullStream:r("4784")(e),lsReadableStream:r("5571")(e),_lsAsyncIterator:r("f99c")(e),refs:r("12dd")(e),refsReadableStream:r("516c")(e),refsPullStream:r("a02c")(e),_refsAsyncIterator:r("3902")(e)};return t.refs.local=r("477c")(e),t.refs.localReadableStream=r("2f57")(e),t.refs.localPullStream=r("a62b")(e),t.refs._localAsyncIterator=r("e115")(e),t}},"6bf2":function(e,t,r){"use strict";(function(n){const i=r("d733"),s=r("0c9a"),o=r("efc9"),a=r("e3d5"),c=r("17e5"),u=42;function l(e){return"string"===typeof e?e=new a(e).buffer:a.isCID(e)&&(e=e.buffer),new i.Tagged(u,n.concat([n.from("00","hex"),e]))}function h(e){let t;try{t=c(e)}catch(i){t=!1}if(t)throw new Error("The object passed has circular references");function r(e){if(!e||n.isBuffer(e)||"string"===typeof e)return e;if(Array.isArray(e))return e.map(r);if(a.isCID(e))return l(e);const t=Object.keys(e);if(t.length>0){const n={};return t.forEach(t=>{"object"===typeof e[t]?n[t]=r(e[t]):n[t]=e[t]}),n}return e}return r(e)}t=e.exports,t.codec=s.DAG_CBOR,t.defaultHashAlg=s.SHA2_256;const f={[u]:e=>(e=e.slice(1),new a(e))},d=65536;let p=d;const y=67108864;let g=y,m=null;t.configureDecoder=e=>{let t=f;e?("number"===typeof e.size&&(p=e.size),"number"===typeof e.maxSize&&(g=e.maxSize),e.tags&&(t=Object.assign({},f,e&&e.tags))):(p=d,g=y);let r={tags:t,size:p};m=new i.Decoder(r),p=r.size},t.configureDecoder(),t.serialize=e=>{const t=h(e),r=i.encode(t);return r},t.deserialize=e=>{if(e.length>p&&e.length<=g&&t.configureDecoder({size:e.length}),e.length>p)throw new Error("Data is too large to deserialize with current decoder");const r=m.decodeFirst(e);return r},t.cid=async(e,r)=>{const n={cidVersion:1,hashAlg:t.defaultHashAlg},i=Object.assign(n,r),c=await o(e,i.hashAlg),u=s.print[t.codec],l=new a(i.cidVersion,u,c);return l}}).call(this,r("b639").Buffer)},"6bf6":function(e,t,r){"use strict";e.exports={Spec:{type:"mount",mounts:[{mountpoint:"/blocks",type:"measure",prefix:"flatfs.datastore",child:{type:"flatfs",path:"blocks",sync:!0,shardFunc:"/repo/flatfs/shard/v1/next-to-last/2"}},{mountpoint:"/",type:"measure",prefix:"leveldb.datastore",child:{type:"levelds",path:"datastore",compression:"none"}}]}}},"6c0a":function(e,t,r){var n=r("e0c5").Buffer;function i(e){if(e.length<8)return!1;if(e.length>72)return!1;if(48!==e[0])return!1;if(e[1]!==e.length-2)return!1;if(2!==e[2])return!1;var t=e[3];if(0===t)return!1;if(5+t>=e.length)return!1;if(2!==e[4+t])return!1;var r=e[5+t];return 0!==r&&(6+t+r===e.length&&(!(128&e[4])&&(!(t>1&&0===e[4]&&!(128&e[5]))&&(!(128&e[t+6])&&!(r>1&&0===e[t+6]&&!(128&e[t+7]))))))}function s(e){if(e.length<8)throw new Error("DER sequence length is too short");if(e.length>72)throw new Error("DER sequence length is too long");if(48!==e[0])throw new Error("Expected DER sequence");if(e[1]!==e.length-2)throw new Error("DER sequence length is invalid");if(2!==e[2])throw new Error("Expected DER integer");var t=e[3];if(0===t)throw new Error("R length is zero");if(5+t>=e.length)throw new Error("R length is too long");if(2!==e[4+t])throw new Error("Expected DER integer (2)");var r=e[5+t];if(0===r)throw new Error("S length is zero");if(6+t+r!==e.length)throw new Error("S length is invalid");if(128&e[4])throw new Error("R value is negative");if(t>1&&0===e[4]&&!(128&e[5]))throw new Error("R value excessively padded");if(128&e[t+6])throw new Error("S value is negative");if(r>1&&0===e[t+6]&&!(128&e[t+7]))throw new Error("S value excessively padded");return{r:e.slice(4,4+t),s:e.slice(6+t)}}function o(e,t){var r=e.length,i=t.length;if(0===r)throw new Error("R length is zero");if(0===i)throw new Error("S length is zero");if(r>33)throw new Error("R length is too long");if(i>33)throw new Error("S length is too long");if(128&e[0])throw new Error("R value is negative");if(128&t[0])throw new Error("S value is negative");if(r>1&&0===e[0]&&!(128&e[1]))throw new Error("R value excessively padded");if(i>1&&0===t[0]&&!(128&t[1]))throw new Error("S value excessively padded");var s=n.allocUnsafe(6+r+i);return s[0]=48,s[1]=s.length-2,s[2]=2,s[3]=e.length,e.copy(s,4),s[4+r]=2,s[5+r]=t.length,t.copy(s,6+r),s}e.exports={check:i,decode:s,encode:o}},"6c12":function(e,t,r){"use strict";e.exports=function(e,t){t=t||{};var r=t.last||!1,n=!1;if("number"===typeof e){r=!0;var i=e;e=function(){return--i}}return function(t){function i(e){t(!0,(function(t){r=!1,e(t||!0)}))}return function(s,o){n&&!s?r?i(o):o(n):(n=s)?t(n,o):t(null,(function(t,s){(n=n||t)?o(n):e(s)?o(null,s):(n=!0,r?o(null,s):i(o))}))}}}},"6c27":function(module,exports,__webpack_require__){(function(process,global){var __WEBPACK_AMD_DEFINE_RESULT__; +/** + * [js-sha256]{@link https://github.com/emn178/js-sha256} + * + * @version 0.9.0 + * @author Chen, Yi-Cyuan [emn178@gmail.com] + * @copyright Chen, Yi-Cyuan 2014-2017 + * @license MIT + */(function(){"use strict";var ERROR="input is invalid type",WINDOW="object"===typeof window,root=WINDOW?window:{};root.JS_SHA256_NO_WINDOW&&(WINDOW=!1);var WEB_WORKER=!WINDOW&&"object"===typeof self,NODE_JS=!root.JS_SHA256_NO_NODE_JS&&"object"===typeof process&&process.versions&&process.versions.node;NODE_JS?root=global:WEB_WORKER&&(root=self);var COMMON_JS=!root.JS_SHA256_NO_COMMON_JS&&"object"===typeof module&&module.exports,AMD=__webpack_require__("3c35"),ARRAY_BUFFER=!root.JS_SHA256_NO_ARRAY_BUFFER&&"undefined"!==typeof ArrayBuffer,HEX_CHARS="0123456789abcdef".split(""),EXTRA=[-2147483648,8388608,32768,128],SHIFT=[24,16,8,0],K=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],OUTPUT_TYPES=["hex","array","digest","arrayBuffer"],blocks=[];!root.JS_SHA256_NO_NODE_JS&&Array.isArray||(Array.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),!ARRAY_BUFFER||!root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(e){return"object"===typeof e&&e.buffer&&e.buffer.constructor===ArrayBuffer});var createOutputMethod=function(e,t){return function(r){return new Sha256(t,!0).update(r)[e]()}},createMethod=function(e){var t=createOutputMethod("hex",e);NODE_JS&&(t=nodeWrap(t,e)),t.create=function(){return new Sha256(e)},t.update=function(e){return t.create().update(e)};for(var r=0;r>6,o[c++]=128|63&s):s<55296||s>=57344?(o[c++]=224|s>>12,o[c++]=128|s>>6&63,o[c++]=128|63&s):(s=65536+((1023&s)<<10|1023&e.charCodeAt(++n)),o[c++]=240|s>>18,o[c++]=128|s>>12&63,o[c++]=128|s>>6&63,o[c++]=128|63&s);e=o}else{if("object"!==i)throw new Error(ERROR);if(null===e)throw new Error(ERROR);if(ARRAY_BUFFER&&e.constructor===ArrayBuffer)e=new Uint8Array(e);else if(!Array.isArray(e)&&(!ARRAY_BUFFER||!ArrayBuffer.isView(e)))throw new Error(ERROR)}e.length>64&&(e=new Sha256(t,!0).update(e).array());var u=[],l=[];for(n=0;n<64;++n){var h=e[n]||0;u[n]=92^h,l[n]=54^h}Sha256.call(this,t,r),this.update(l),this.oKeyPad=u,this.inner=!0,this.sharedMemory=r}Sha256.prototype.update=function(e){if(!this.finalized){var t,r=typeof e;if("string"!==r){if("object"!==r)throw new Error(ERROR);if(null===e)throw new Error(ERROR);if(ARRAY_BUFFER&&e.constructor===ArrayBuffer)e=new Uint8Array(e);else if(!Array.isArray(e)&&(!ARRAY_BUFFER||!ArrayBuffer.isView(e)))throw new Error(ERROR);t=!0}var n,i,s=0,o=e.length,a=this.blocks;while(s>2]|=e[s]<>2]|=n<>2]|=(192|n>>6)<>2]|=(128|63&n)<=57344?(a[i>>2]|=(224|n>>12)<>2]|=(128|n>>6&63)<>2]|=(128|63&n)<>2]|=(240|n>>18)<>2]|=(128|n>>12&63)<>2]|=(128|n>>6&63)<>2]|=(128|63&n)<=64?(this.block=a[16],this.start=i-64,this.hash(),this.hashed=!0):this.start=i}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296<<0,this.bytes=this.bytes%4294967296),this}},Sha256.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var e=this.blocks,t=this.lastByteIndex;e[16]=this.block,e[t>>2]|=EXTRA[3&t],this.block=e[16],t>=56&&(this.hashed||this.hash(),e[0]=this.block,e[16]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=e[9]=e[10]=e[11]=e[12]=e[13]=e[14]=e[15]=0),e[14]=this.hBytes<<3|this.bytes>>>29,e[15]=this.bytes<<3,this.hash()}},Sha256.prototype.hash=function(){var e,t,r,n,i,s,o,a,c,u,l,h=this.h0,f=this.h1,d=this.h2,p=this.h3,y=this.h4,g=this.h5,m=this.h6,b=this.h7,v=this.blocks;for(e=16;e<64;++e)i=v[e-15],t=(i>>>7|i<<25)^(i>>>18|i<<14)^i>>>3,i=v[e-2],r=(i>>>17|i<<15)^(i>>>19|i<<13)^i>>>10,v[e]=v[e-16]+t+v[e-7]+r<<0;for(l=f&d,e=0;e<64;e+=4)this.first?(this.is224?(a=300032,i=v[0]-1413257819,b=i-150054599<<0,p=i+24177077<<0):(a=704751109,i=v[0]-210244248,b=i-1521486534<<0,p=i+143694565<<0),this.first=!1):(t=(h>>>2|h<<30)^(h>>>13|h<<19)^(h>>>22|h<<10),r=(y>>>6|y<<26)^(y>>>11|y<<21)^(y>>>25|y<<7),a=h&f,n=a^h&d^l,o=y&g^~y&m,i=b+r+o+K[e]+v[e],s=t+n,b=p+i<<0,p=i+s<<0),t=(p>>>2|p<<30)^(p>>>13|p<<19)^(p>>>22|p<<10),r=(b>>>6|b<<26)^(b>>>11|b<<21)^(b>>>25|b<<7),c=p&h,n=c^p&f^a,o=b&y^~b&g,i=m+r+o+K[e+1]+v[e+1],s=t+n,m=d+i<<0,d=i+s<<0,t=(d>>>2|d<<30)^(d>>>13|d<<19)^(d>>>22|d<<10),r=(m>>>6|m<<26)^(m>>>11|m<<21)^(m>>>25|m<<7),u=d&p,n=u^d&h^c,o=m&b^~m&y,i=g+r+o+K[e+2]+v[e+2],s=t+n,g=f+i<<0,f=i+s<<0,t=(f>>>2|f<<30)^(f>>>13|f<<19)^(f>>>22|f<<10),r=(g>>>6|g<<26)^(g>>>11|g<<21)^(g>>>25|g<<7),l=f&d,n=l^f&p^u,o=g&m^~g&b,i=y+r+o+K[e+3]+v[e+3],s=t+n,y=h+i<<0,h=i+s<<0;this.h0=this.h0+h<<0,this.h1=this.h1+f<<0,this.h2=this.h2+d<<0,this.h3=this.h3+p<<0,this.h4=this.h4+y<<0,this.h5=this.h5+g<<0,this.h6=this.h6+m<<0,this.h7=this.h7+b<<0},Sha256.prototype.hex=function(){this.finalize();var e=this.h0,t=this.h1,r=this.h2,n=this.h3,i=this.h4,s=this.h5,o=this.h6,a=this.h7,c=HEX_CHARS[e>>28&15]+HEX_CHARS[e>>24&15]+HEX_CHARS[e>>20&15]+HEX_CHARS[e>>16&15]+HEX_CHARS[e>>12&15]+HEX_CHARS[e>>8&15]+HEX_CHARS[e>>4&15]+HEX_CHARS[15&e]+HEX_CHARS[t>>28&15]+HEX_CHARS[t>>24&15]+HEX_CHARS[t>>20&15]+HEX_CHARS[t>>16&15]+HEX_CHARS[t>>12&15]+HEX_CHARS[t>>8&15]+HEX_CHARS[t>>4&15]+HEX_CHARS[15&t]+HEX_CHARS[r>>28&15]+HEX_CHARS[r>>24&15]+HEX_CHARS[r>>20&15]+HEX_CHARS[r>>16&15]+HEX_CHARS[r>>12&15]+HEX_CHARS[r>>8&15]+HEX_CHARS[r>>4&15]+HEX_CHARS[15&r]+HEX_CHARS[n>>28&15]+HEX_CHARS[n>>24&15]+HEX_CHARS[n>>20&15]+HEX_CHARS[n>>16&15]+HEX_CHARS[n>>12&15]+HEX_CHARS[n>>8&15]+HEX_CHARS[n>>4&15]+HEX_CHARS[15&n]+HEX_CHARS[i>>28&15]+HEX_CHARS[i>>24&15]+HEX_CHARS[i>>20&15]+HEX_CHARS[i>>16&15]+HEX_CHARS[i>>12&15]+HEX_CHARS[i>>8&15]+HEX_CHARS[i>>4&15]+HEX_CHARS[15&i]+HEX_CHARS[s>>28&15]+HEX_CHARS[s>>24&15]+HEX_CHARS[s>>20&15]+HEX_CHARS[s>>16&15]+HEX_CHARS[s>>12&15]+HEX_CHARS[s>>8&15]+HEX_CHARS[s>>4&15]+HEX_CHARS[15&s]+HEX_CHARS[o>>28&15]+HEX_CHARS[o>>24&15]+HEX_CHARS[o>>20&15]+HEX_CHARS[o>>16&15]+HEX_CHARS[o>>12&15]+HEX_CHARS[o>>8&15]+HEX_CHARS[o>>4&15]+HEX_CHARS[15&o];return this.is224||(c+=HEX_CHARS[a>>28&15]+HEX_CHARS[a>>24&15]+HEX_CHARS[a>>20&15]+HEX_CHARS[a>>16&15]+HEX_CHARS[a>>12&15]+HEX_CHARS[a>>8&15]+HEX_CHARS[a>>4&15]+HEX_CHARS[15&a]),c},Sha256.prototype.toString=Sha256.prototype.hex,Sha256.prototype.digest=function(){this.finalize();var e=this.h0,t=this.h1,r=this.h2,n=this.h3,i=this.h4,s=this.h5,o=this.h6,a=this.h7,c=[e>>24&255,e>>16&255,e>>8&255,255&e,t>>24&255,t>>16&255,t>>8&255,255&t,r>>24&255,r>>16&255,r>>8&255,255&r,n>>24&255,n>>16&255,n>>8&255,255&n,i>>24&255,i>>16&255,i>>8&255,255&i,s>>24&255,s>>16&255,s>>8&255,255&s,o>>24&255,o>>16&255,o>>8&255,255&o];return this.is224||c.push(a>>24&255,a>>16&255,a>>8&255,255&a),c},Sha256.prototype.array=Sha256.prototype.digest,Sha256.prototype.arrayBuffer=function(){this.finalize();var e=new ArrayBuffer(this.is224?28:32),t=new DataView(e);return t.setUint32(0,this.h0),t.setUint32(4,this.h1),t.setUint32(8,this.h2),t.setUint32(12,this.h3),t.setUint32(16,this.h4),t.setUint32(20,this.h5),t.setUint32(24,this.h6),this.is224||t.setUint32(28,this.h7),e},HmacSha256.prototype=new Sha256,HmacSha256.prototype.finalize=function(){if(Sha256.prototype.finalize.call(this),this.inner){this.inner=!1;var e=this.array();Sha256.call(this,this.is224,this.sharedMemory),this.update(this.oKeyPad),this.update(e),Sha256.prototype.finalize.call(this)}};var exports=createMethod();exports.sha256=exports,exports.sha224=createMethod(!0),exports.sha256.hmac=createHmacMethod(),exports.sha224.hmac=createHmacMethod(!0),COMMON_JS?module.exports=exports:(root.sha256=exports.sha256,root.sha224=exports.sha224,AMD&&(__WEBPACK_AMD_DEFINE_RESULT__=function(){return exports}.call(exports,__webpack_require__,exports,module),void 0===__WEBPACK_AMD_DEFINE_RESULT__||(module.exports=__WEBPACK_AMD_DEFINE_RESULT__)))})()}).call(this,__webpack_require__("4362"),__webpack_require__("c8ba"))},"6c29":function(e,t,r){"use strict";function n(e,t,r){let n=0,i=e.length;while(i>0){const s=i/2|0;let o=n+s;r(e[o],t)<=0?(n=++o,i-=s+1):i=s}return n}Object.defineProperty(t,"__esModule",{value:!0}),t.default=n},"6c8b":function(e,t,r){"use strict";const n=r("f106");e.exports=n("\nmessage CircuitRelay {\n\n enum Status {\n SUCCESS = 100;\n HOP_SRC_ADDR_TOO_LONG = 220;\n HOP_DST_ADDR_TOO_LONG = 221;\n HOP_SRC_MULTIADDR_INVALID = 250;\n HOP_DST_MULTIADDR_INVALID = 251;\n HOP_NO_CONN_TO_DST = 260;\n HOP_CANT_DIAL_DST = 261;\n HOP_CANT_OPEN_DST_STREAM = 262;\n HOP_CANT_SPEAK_RELAY = 270;\n HOP_CANT_RELAY_TO_SELF = 280;\n STOP_SRC_ADDR_TOO_LONG = 320;\n STOP_DST_ADDR_TOO_LONG = 321;\n STOP_SRC_MULTIADDR_INVALID = 350;\n STOP_DST_MULTIADDR_INVALID = 351;\n STOP_RELAY_REFUSED = 390;\n MALFORMED_MESSAGE = 400;\n }\n\n enum Type { // RPC identifier, either HOP, STOP or STATUS\n HOP = 1;\n STOP = 2;\n STATUS = 3;\n CAN_HOP = 4;\n }\n\n message Peer {\n required bytes id = 1; // peer id\n repeated bytes addrs = 2; // peer's known addresses\n }\n\n optional Type type = 1; // Type of the message\n\n optional Peer srcPeer = 2; // srcPeer and dstPeer are used when Type is HOP or STATUS\n optional Peer dstPeer = 3;\n\n optional Status code = 4; // Status code, used when Type is STATUS\n}\n")},"6cf0":function(e,t){function r(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}e.exports=r,r.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),r=Math.floor(t*this.jitter*e);e=0==(1&Math.floor(10*t))?e-r:e+r}return 0|Math.min(e,this.max)},r.prototype.reset=function(){this.attempts=0},r.prototype.setMin=function(e){this.ms=e},r.prototype.setMax=function(e){this.max=e},r.prototype.setJitter=function(e){this.jitter=e}},"6d36":function(e,t,r){"use strict";const n=r("4bc2"),i=r("727b"),s=r("df87");function o(e){const t=n("libp2p:switch:listener");return function(r,n){return function(o){t("received incoming connection for transport %s",r),o.getPeerInfo((a,c)=>{const u=r?s(r,null,o,e.observer):o,l=new i({connection:u,_switch:e,transportKey:r,peerInfo:c});l.once("error",e=>t(e)),l.once("private",e=>{if(n)return n(e);l.encrypt()}),l.once("encrypted",()=>l.upgrade()),l.protect()})}}}e.exports=o},"6d3e":function(e,t,r){"use strict";const n=r("ddda");class i{constructor(e,t,r,i,s,o){if(!n(e))throw new Error("Identity id is required");if(!n(t))throw new Error("Invalid public key");if(!n(r))throw new Error("Signature of the id (idSignature) is required");if(!n(i))throw new Error("Signature of (publicKey + idSignature) is required");if(!n(s))throw new Error("Identity type is required");if(!n(o))throw new Error("Identity provider is required");this._id=e,this._publicKey=t,this._signatures=Object.assign({},{id:r},{publicKey:i}),this._type=s,this._provider=o}get id(){return this._id}get publicKey(){return this._publicKey}get signatures(){return this._signatures}get type(){return this._type}get provider(){return this._provider}toJSON(){return{id:this.id,publicKey:this.publicKey,signatures:this.signatures,type:this.type}}static isIdentity(e){return void 0!==e.id&&void 0!==e.publicKey&&void 0!==e.signatures&&void 0!==e.signatures.id&&void 0!==e.signatures.publicKey&&void 0!==e.type}static toJSON(e){return{id:e.id,publicKey:e.publicKey,signatures:e.signatures,type:e.type}}}e.exports=i},"6d68":function(e,t,r){var n=r("2007"),i="Expected a function";function s(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError(i);var r=function(){var n=arguments,i=t?t.apply(this,n):n[0],s=r.cache;if(s.has(i))return s.get(i);var o=e.apply(this,n);return r.cache=s.set(i,o)||s,o};return r.cache=new(s.Cache||n),r}s.Cache=n,e.exports=s},"6d6a":function(e,t,r){"use strict";e.exports=e=>(e.id&&"function"===typeof e.id.toB58String&&(e=e.id),e.toB58String())},"6da9":function(e,t,r){"use strict";const n=r("c9b5"),i=r("5f7e"),s=r("4bc2")("ipfs:mfs:cp"),o=r("7048"),a=r("4bc9"),c=r("13d9"),u=r("8648"),l=r("0503"),h=r("fd9e"),f=r("cef2"),d=r("56ad"),p={parents:!1,flush:!0,format:"dag-pb",hashAlg:"sha2-256",cidVersion:0,shardSplitThreshold:1e3};e.exports=e=>async function(...t){const r=l(t,p);let{sources:a,destination:c}=await f(e,t);if(!a.length)throw o(new Error("Please supply at least one source"),"ERR_INVALID_PARAMS");if(!c)throw o(new Error("Please supply a destination"),"ERR_INVALID_PARAMS");r.parents=r.p||r.parents;const u=a.find(e=>!e.exists);if(u)throw o(new Error(`${u.path} does not exist`),"ERR_INVALID_PARAMS");const b=y(c);if(c.exists){if(s("Destination exists"),1===a.length&&!b)throw o(new Error("directory already has entry by that name"),"ERR_ALREADY_EXISTS")}else if(s("Destination does not exist"),a.length>1){if(!r.parents)throw o(new Error("destination did not exist, pass -p to create intermediate directories"),"ERR_INVALID_PARAMS");await n(e)(c.path,r),c=await h(e,c.path)}else if(c.parts.length>1){const t=`/${c.parts.slice(0,-1).join("/")}`;try{await i(e)(t,r)}catch(_){if("ERR_NOT_FOUND"!==_.code)throw _;if(!r.parents)throw o(new Error("destination did not exist, pass -p to create intermediate directories"),"ERR_INVALID_PARAMS");await n(e)(t,r),c=await h(e,c.path)}}const v=y(c)?c.mfsPath:c.mfsDirectory,w=await d(e,v,r);if(1===a.length){const t=a.pop(),n=b?t.name:c.name;return s(`Only one source, copying to destination ${b?"directory":"file"} ${n}`),g(e,t,n,w,r)}return s("Multiple sources, wrapping in a directory"),m(e,a,c,w,r)};const y=e=>e.unixfs&&e.unixfs.type&&e.unixfs.type.includes("directory"),g=async(e,t,r,n,i)=>{let s=n.pop();s=await b(e,t,r,s,i),n.push(s);const o=await a(e,n,i);await c(e,o)},m=async(e,t,r,n,i)=>{for(let o=0;o{const s=await e.repo.blocks.get(t.cid),{node:o,cid:a}=await u(e,{parentCid:n.cid,size:s.data.length,cid:t.cid,name:r,format:i.format,hashAlg:i.hashAlg,cidVersion:i.cidVersion});return n.node=o,n.cid=a,n.size=o.size,n}},"6daa":function(e,t,r){"use strict";const n=r("7048"),{Buffer:i}=r("b639"),s=r("c2b1"),{isSource:o}=r("477b"),a=r("6757"),{Readable:c}=r("d485"),u=r("ba68");function l(e){const t={path:e.path||""};return e.content?t.content=h(e.content):e.path||(t.content=h(e)),t}function h(e){if(p(e)||"string"===typeof e)return async function*(){yield d(e)}();if(y(e))return b(e);if(f(e)&&(e=m(e)),e[Symbol.iterator])return async function*(){const t=e[Symbol.iterator](),r=t.next();if(r.done)return t;if(Number.isInteger(r.value))yield d(Array.from(function*(){yield r.value,yield*t}()));else{if(!p(r.value))throw n(new Error("Unexpected input: "+typeof e),"ERR_UNEXPECTED_INPUT");yield d(r.value);for(const e of t)yield d(e)}}();if(e[Symbol.asyncIterator])return async function*(){for await(const t of e)yield d(t)}();if(o(e))return s(e);throw n(new Error(`Unexpected input: ${e}`,"ERR_UNEXPECTED_INPUT"))}function f(e){return!e[Symbol.iterator]&&!e[Symbol.asyncIterator]&&Boolean(e.readable)}function d(e){return p(e)?e:i.from(e)}function p(e){return i.isBuffer(e)||ArrayBuffer.isView(e)||e instanceof ArrayBuffer}function y(e){return"undefined"!==typeof a.Blob&&e instanceof a.Blob}function g(e){return"object"===typeof e&&(e.path||e.content)}function m(e){return e[Symbol.asyncIterator]||e[Symbol.iterator]?e:(e[Symbol.asyncIterator]=c.prototype[Symbol.asyncIterator]||u.prototype[Symbol.asyncIterator],e)}function b(e){return"function"===typeof e.stream?v(e):w(e)}async function*v(e){const t=e.stream().getReader();while(1){const e=await t.read();if(e.done)return;yield e.value}}async function*w(e,t){t=t||{};const r=new a.FileReader,n=t.chunkSize||1048576;let s=t.offset||0;const o=()=>new Promise((t,i)=>{r.onloadend=e=>{const r=e.target.result;t(0===r.byteLength?null:r)},r.onerror=i;const o=s+n,a=e.slice(s,o);r.readAsArrayBuffer(a),s=o});while(1){const e=await o();if(null==e)return;yield i.from(e)}}e.exports=function(e){if(null===e||void 0===e)throw n(new Error(`Unexpected input: ${e}`,"ERR_UNEXPECTED_INPUT"));if("string"===typeof e||e instanceof String)return async function*(){yield l(e)}();if(p(e)||y(e))return async function*(){yield l(e)}();if(f(e)&&(e=m(e)),e[Symbol.iterator])return async function*(){const t=e[Symbol.iterator](),r=t.next();if(r.done)return t;if(Number.isInteger(r.value)||p(r.value))yield l(function*(){yield r.value,yield*t}());else{if(!g(r.value)&&!y(r.value)&&"string"!==typeof r.value)throw n(new Error("Unexpected input: "+typeof e),"ERR_UNEXPECTED_INPUT");yield l(r.value);for(const e of t)yield l(e)}}();if(e[Symbol.asyncIterator])return async function*(){const t=e[Symbol.asyncIterator](),r=await t.next();if(r.done)return t;if(p(r.value))yield l(async function*(){yield r.value,yield*t}());else{if(!g(r.value)&&!y(r.value)&&"string"!==typeof r.value)throw n(new Error("Unexpected input: "+typeof e),"ERR_UNEXPECTED_INPUT");yield l(r.value);for await(const e of t)yield l(e)}}();if(g(e))return async function*(){yield l(e)}();if(o(e))return async function*(){const t=s(e)[Symbol.asyncIterator](),r=await t.next();if(r.done)return t;if(p(r.value))yield l(async function*(){yield r.value,yield*t}());else{if(!g(r.value)&&!y(r.value)&&"string"!==typeof r.value)throw n(new Error("Unexpected input: "+typeof e),"ERR_UNEXPECTED_INPUT");yield l(r.value);for await(const e of t)yield l(e)}}();throw n(new Error("Unexpected input: "+typeof e),"ERR_UNEXPECTED_INPUT")}},"6dd4":function(e,t,r){"use strict";(function(t){const n=r("e3d5"),i=r("f654"),s=r("87dd");class o{constructor(e,t,r){i(r,"A link requires a cid to point to"),this._name=e||"",this._nameBuf=null,this._size=t,this._cid=new n(r)}toString(){return`DAGLink <${this._cid.toBaseEncodedString()} - name: "${this.Name}", size: ${this.Tsize}>`}toJSON(){return this._json||(this._json=Object.freeze({name:this.Name,size:this.Tsize,cid:this.Hash.toBaseEncodedString()})),Object.assign({},this._json)}get Name(){return this._name}get nameAsBuffer(){return null!==this._nameBuf?this._nameBuf:(this._nameBuf=t.from(this._name),this._nameBuf)}set Name(e){throw new Error("Can't set property: 'name' is immutable")}get Tsize(){return this._size}set Tsize(e){throw new Error("Can't set property: 'size' is immutable")}get Hash(){return this._cid}set Hash(e){throw new Error("Can't set property: 'cid' is immutable")}}e.exports=s(o,{className:"DAGLink",symbolName:"@ipld/js-ipld-dag-pb/daglink"})}).call(this,r("b639").Buffer)},"6e30":function(e,t,r){"use strict";e.exports={SHA1:20,SHA256:32,SHA512:64}},"6e62":function(e,t,r){(function(e){(function(e,t){"use strict";function n(e,t){if(!e)throw new Error(t||"Assertion failed")}function i(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}function s(e,t,r){if(s.isBN(e))return e;this.negative=0,this.words=null,this.length=0,this.red=null,null!==e&&("le"!==t&&"be"!==t||(r=t,t=10),this._init(e||0,t||10,r||"be"))}var o;"object"===typeof e?e.exports=s:t.BN=s,s.BN=s,s.wordSize=26;try{o=r(8).Buffer}catch(A){}function a(e,t,r){for(var n=0,i=Math.min(e.length,r),s=t;s=49&&o<=54?o-49+10:o>=17&&o<=22?o-17+10:15&o}return n}function c(e,t,r,n){for(var i=0,s=Math.min(e.length,r),o=t;o=49?a-49+10:a>=17?a-17+10:a}return i}s.isBN=function(e){return e instanceof s||null!==e&&"object"===typeof e&&e.constructor.wordSize===s.wordSize&&Array.isArray(e.words)},s.max=function(e,t){return e.cmp(t)>0?e:t},s.min=function(e,t){return e.cmp(t)<0?e:t},s.prototype._init=function(e,t,r){if("number"===typeof e)return this._initNumber(e,t,r);if("object"===typeof e)return this._initArray(e,t,r);"hex"===t&&(t=16),n(t===(0|t)&&t>=2&&t<=36),e=e.toString().replace(/\s+/g,"");var i=0;"-"===e[0]&&i++,16===t?this._parseHex(e,i):this._parseBase(e,t,i),"-"===e[0]&&(this.negative=1),this.strip(),"le"===r&&this._initArray(this.toArray(),t,r)},s.prototype._initNumber=function(e,t,r){e<0&&(this.negative=1,e=-e),e<67108864?(this.words=[67108863&e],this.length=1):e<4503599627370496?(this.words=[67108863&e,e/67108864&67108863],this.length=2):(n(e<9007199254740992),this.words=[67108863&e,e/67108864&67108863,1],this.length=3),"le"===r&&this._initArray(this.toArray(),t,r)},s.prototype._initArray=function(e,t,r){if(n("number"===typeof e.length),e.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(e.length/3),this.words=new Array(this.length);for(var i=0;i=0;i-=3)o=e[i]|e[i-1]<<8|e[i-2]<<16,this.words[s]|=o<>>26-a&67108863,a+=24,a>=26&&(a-=26,s++);else if("le"===r)for(i=0,s=0;i>>26-a&67108863,a+=24,a>=26&&(a-=26,s++);return this.strip()},s.prototype._parseHex=function(e,t){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var r=0;r=t;r-=6)i=a(e,r,r+6),this.words[n]|=i<>>26-s&4194303,s+=24,s>=26&&(s-=26,n++);r+6!==t&&(i=a(e,t,r+6),this.words[n]|=i<>>26-s&4194303),this.strip()},s.prototype._parseBase=function(e,t,r){this.words=[0],this.length=1;for(var n=0,i=1;i<=67108863;i*=t)n++;n--,i=i/t|0;for(var s=e.length-r,o=s%n,a=Math.min(s,s-o)+r,u=0,l=r;l1&&0===this.words[this.length-1])this.length--;return this._normSign()},s.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},s.prototype.inspect=function(){return(this.red?""};var u=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],l=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],h=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function f(e){for(var t=new Array(e.bitLength()),r=0;r>>i}return t}function d(e,t,r){r.negative=t.negative^e.negative;var n=e.length+t.length|0;r.length=n,n=n-1|0;var i=0|e.words[0],s=0|t.words[0],o=i*s,a=67108863&o,c=o/67108864|0;r.words[0]=a;for(var u=1;u>>26,h=67108863&c,f=Math.min(u,t.length-1),d=Math.max(0,u-e.length+1);d<=f;d++){var p=u-d|0;i=0|e.words[p],s=0|t.words[d],o=i*s+h,l+=o/67108864|0,h=67108863&o}r.words[u]=0|h,c=0|l}return 0!==c?r.words[u]=0|c:r.length--,r.strip()}s.prototype.toString=function(e,t){var r;if(e=e||10,t=0|t||1,16===e||"hex"===e){r="";for(var i=0,s=0,o=0;o>>24-i&16777215,r=0!==s||o!==this.length-1?u[6-c.length]+c+r:c+r,i+=2,i>=26&&(i-=26,o--)}0!==s&&(r=s.toString(16)+r);while(r.length%t!==0)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(e===(0|e)&&e>=2&&e<=36){var f=l[e],d=h[e];r="";var p=this.clone();p.negative=0;while(!p.isZero()){var y=p.modn(d).toString(e);p=p.idivn(d),r=p.isZero()?y+r:u[f-y.length]+y+r}this.isZero()&&(r="0"+r);while(r.length%t!==0)r="0"+r;return 0!==this.negative&&(r="-"+r),r}n(!1,"Base should be between 2 and 36")},s.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&n(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},s.prototype.toJSON=function(){return this.toString(16)},s.prototype.toBuffer=function(e,t){return n("undefined"!==typeof o),this.toArrayLike(o,e,t)},s.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},s.prototype.toArrayLike=function(e,t,r){var i=this.byteLength(),s=r||Math.max(1,i);n(i<=s,"byte array longer than desired length"),n(s>0,"Requested array length <= 0"),this.strip();var o,a,c="le"===t,u=new e(s),l=this.clone();if(c){for(a=0;!l.isZero();a++)o=l.andln(255),l.iushrn(8),u[a]=o;for(;a=4096&&(r+=13,t>>>=13),t>=64&&(r+=7,t>>>=7),t>=8&&(r+=4,t>>>=4),t>=2&&(r+=2,t>>>=2),r+t},s.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,r=0;return 0===(8191&t)&&(r+=13,t>>>=13),0===(127&t)&&(r+=7,t>>>=7),0===(15&t)&&(r+=4,t>>>=4),0===(3&t)&&(r+=2,t>>>=2),0===(1&t)&&r++,r},s.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},s.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},s.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},s.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var r=0;re.length?this.clone().iand(e):e.clone().iand(this)},s.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},s.prototype.iuxor=function(e){var t,r;this.length>e.length?(t=this,r=e):(t=e,r=this);for(var n=0;ne.length?this.clone().ixor(e):e.clone().ixor(this)},s.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},s.prototype.inotn=function(e){n("number"===typeof e&&e>=0);var t=0|Math.ceil(e/26),r=e%26;this._expand(t),r>0&&t--;for(var i=0;i0&&(this.words[i]=~this.words[i]&67108863>>26-r),this.strip()},s.prototype.notn=function(e){return this.clone().inotn(e)},s.prototype.setn=function(e,t){n("number"===typeof e&&e>=0);var r=e/26|0,i=e%26;return this._expand(r+1),this.words[r]=t?this.words[r]|1<e.length?(r=this,n=e):(r=e,n=this);for(var i=0,s=0;s>>26;for(;0!==i&&s>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;se.length?this.clone().iadd(e):e.clone().iadd(this)},s.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var r,n,i=this.cmp(e);if(0===i)return this.negative=0,this.length=1,this.words[0]=0,this;i>0?(r=this,n=e):(r=e,n=this);for(var s=0,o=0;o>26,this.words[o]=67108863&t;for(;0!==s&&o>26,this.words[o]=67108863&t;if(0===s&&o>>13,d=0|o[1],p=8191&d,y=d>>>13,g=0|o[2],m=8191&g,b=g>>>13,v=0|o[3],w=8191&v,_=v>>>13,E=0|o[4],S=8191&E,k=E>>>13,C=0|o[5],A=8191&C,I=C>>>13,T=0|o[6],x=8191&T,B=T>>>13,R=0|o[7],N=8191&R,O=R>>>13,P=0|o[8],D=8191&P,L=P>>>13,M=0|o[9],U=8191&M,j=M>>>13,K=0|a[0],F=8191&K,V=K>>>13,q=0|a[1],z=8191&q,H=q>>>13,G=0|a[2],$=8191&G,W=G>>>13,Y=0|a[3],Q=8191&Y,J=Y>>>13,X=0|a[4],Z=8191&X,ee=X>>>13,te=0|a[5],re=8191&te,ne=te>>>13,ie=0|a[6],se=8191&ie,oe=ie>>>13,ae=0|a[7],ce=8191&ae,ue=ae>>>13,le=0|a[8],he=8191&le,fe=le>>>13,de=0|a[9],pe=8191&de,ye=de>>>13;r.negative=e.negative^t.negative,r.length=19,n=Math.imul(h,F),i=Math.imul(h,V),i=i+Math.imul(f,F)|0,s=Math.imul(f,V);var ge=(u+n|0)+((8191&i)<<13)|0;u=(s+(i>>>13)|0)+(ge>>>26)|0,ge&=67108863,n=Math.imul(p,F),i=Math.imul(p,V),i=i+Math.imul(y,F)|0,s=Math.imul(y,V),n=n+Math.imul(h,z)|0,i=i+Math.imul(h,H)|0,i=i+Math.imul(f,z)|0,s=s+Math.imul(f,H)|0;var me=(u+n|0)+((8191&i)<<13)|0;u=(s+(i>>>13)|0)+(me>>>26)|0,me&=67108863,n=Math.imul(m,F),i=Math.imul(m,V),i=i+Math.imul(b,F)|0,s=Math.imul(b,V),n=n+Math.imul(p,z)|0,i=i+Math.imul(p,H)|0,i=i+Math.imul(y,z)|0,s=s+Math.imul(y,H)|0,n=n+Math.imul(h,$)|0,i=i+Math.imul(h,W)|0,i=i+Math.imul(f,$)|0,s=s+Math.imul(f,W)|0;var be=(u+n|0)+((8191&i)<<13)|0;u=(s+(i>>>13)|0)+(be>>>26)|0,be&=67108863,n=Math.imul(w,F),i=Math.imul(w,V),i=i+Math.imul(_,F)|0,s=Math.imul(_,V),n=n+Math.imul(m,z)|0,i=i+Math.imul(m,H)|0,i=i+Math.imul(b,z)|0,s=s+Math.imul(b,H)|0,n=n+Math.imul(p,$)|0,i=i+Math.imul(p,W)|0,i=i+Math.imul(y,$)|0,s=s+Math.imul(y,W)|0,n=n+Math.imul(h,Q)|0,i=i+Math.imul(h,J)|0,i=i+Math.imul(f,Q)|0,s=s+Math.imul(f,J)|0;var ve=(u+n|0)+((8191&i)<<13)|0;u=(s+(i>>>13)|0)+(ve>>>26)|0,ve&=67108863,n=Math.imul(S,F),i=Math.imul(S,V),i=i+Math.imul(k,F)|0,s=Math.imul(k,V),n=n+Math.imul(w,z)|0,i=i+Math.imul(w,H)|0,i=i+Math.imul(_,z)|0,s=s+Math.imul(_,H)|0,n=n+Math.imul(m,$)|0,i=i+Math.imul(m,W)|0,i=i+Math.imul(b,$)|0,s=s+Math.imul(b,W)|0,n=n+Math.imul(p,Q)|0,i=i+Math.imul(p,J)|0,i=i+Math.imul(y,Q)|0,s=s+Math.imul(y,J)|0,n=n+Math.imul(h,Z)|0,i=i+Math.imul(h,ee)|0,i=i+Math.imul(f,Z)|0,s=s+Math.imul(f,ee)|0;var we=(u+n|0)+((8191&i)<<13)|0;u=(s+(i>>>13)|0)+(we>>>26)|0,we&=67108863,n=Math.imul(A,F),i=Math.imul(A,V),i=i+Math.imul(I,F)|0,s=Math.imul(I,V),n=n+Math.imul(S,z)|0,i=i+Math.imul(S,H)|0,i=i+Math.imul(k,z)|0,s=s+Math.imul(k,H)|0,n=n+Math.imul(w,$)|0,i=i+Math.imul(w,W)|0,i=i+Math.imul(_,$)|0,s=s+Math.imul(_,W)|0,n=n+Math.imul(m,Q)|0,i=i+Math.imul(m,J)|0,i=i+Math.imul(b,Q)|0,s=s+Math.imul(b,J)|0,n=n+Math.imul(p,Z)|0,i=i+Math.imul(p,ee)|0,i=i+Math.imul(y,Z)|0,s=s+Math.imul(y,ee)|0,n=n+Math.imul(h,re)|0,i=i+Math.imul(h,ne)|0,i=i+Math.imul(f,re)|0,s=s+Math.imul(f,ne)|0;var _e=(u+n|0)+((8191&i)<<13)|0;u=(s+(i>>>13)|0)+(_e>>>26)|0,_e&=67108863,n=Math.imul(x,F),i=Math.imul(x,V),i=i+Math.imul(B,F)|0,s=Math.imul(B,V),n=n+Math.imul(A,z)|0,i=i+Math.imul(A,H)|0,i=i+Math.imul(I,z)|0,s=s+Math.imul(I,H)|0,n=n+Math.imul(S,$)|0,i=i+Math.imul(S,W)|0,i=i+Math.imul(k,$)|0,s=s+Math.imul(k,W)|0,n=n+Math.imul(w,Q)|0,i=i+Math.imul(w,J)|0,i=i+Math.imul(_,Q)|0,s=s+Math.imul(_,J)|0,n=n+Math.imul(m,Z)|0,i=i+Math.imul(m,ee)|0,i=i+Math.imul(b,Z)|0,s=s+Math.imul(b,ee)|0,n=n+Math.imul(p,re)|0,i=i+Math.imul(p,ne)|0,i=i+Math.imul(y,re)|0,s=s+Math.imul(y,ne)|0,n=n+Math.imul(h,se)|0,i=i+Math.imul(h,oe)|0,i=i+Math.imul(f,se)|0,s=s+Math.imul(f,oe)|0;var Ee=(u+n|0)+((8191&i)<<13)|0;u=(s+(i>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,n=Math.imul(N,F),i=Math.imul(N,V),i=i+Math.imul(O,F)|0,s=Math.imul(O,V),n=n+Math.imul(x,z)|0,i=i+Math.imul(x,H)|0,i=i+Math.imul(B,z)|0,s=s+Math.imul(B,H)|0,n=n+Math.imul(A,$)|0,i=i+Math.imul(A,W)|0,i=i+Math.imul(I,$)|0,s=s+Math.imul(I,W)|0,n=n+Math.imul(S,Q)|0,i=i+Math.imul(S,J)|0,i=i+Math.imul(k,Q)|0,s=s+Math.imul(k,J)|0,n=n+Math.imul(w,Z)|0,i=i+Math.imul(w,ee)|0,i=i+Math.imul(_,Z)|0,s=s+Math.imul(_,ee)|0,n=n+Math.imul(m,re)|0,i=i+Math.imul(m,ne)|0,i=i+Math.imul(b,re)|0,s=s+Math.imul(b,ne)|0,n=n+Math.imul(p,se)|0,i=i+Math.imul(p,oe)|0,i=i+Math.imul(y,se)|0,s=s+Math.imul(y,oe)|0,n=n+Math.imul(h,ce)|0,i=i+Math.imul(h,ue)|0,i=i+Math.imul(f,ce)|0,s=s+Math.imul(f,ue)|0;var Se=(u+n|0)+((8191&i)<<13)|0;u=(s+(i>>>13)|0)+(Se>>>26)|0,Se&=67108863,n=Math.imul(D,F),i=Math.imul(D,V),i=i+Math.imul(L,F)|0,s=Math.imul(L,V),n=n+Math.imul(N,z)|0,i=i+Math.imul(N,H)|0,i=i+Math.imul(O,z)|0,s=s+Math.imul(O,H)|0,n=n+Math.imul(x,$)|0,i=i+Math.imul(x,W)|0,i=i+Math.imul(B,$)|0,s=s+Math.imul(B,W)|0,n=n+Math.imul(A,Q)|0,i=i+Math.imul(A,J)|0,i=i+Math.imul(I,Q)|0,s=s+Math.imul(I,J)|0,n=n+Math.imul(S,Z)|0,i=i+Math.imul(S,ee)|0,i=i+Math.imul(k,Z)|0,s=s+Math.imul(k,ee)|0,n=n+Math.imul(w,re)|0,i=i+Math.imul(w,ne)|0,i=i+Math.imul(_,re)|0,s=s+Math.imul(_,ne)|0,n=n+Math.imul(m,se)|0,i=i+Math.imul(m,oe)|0,i=i+Math.imul(b,se)|0,s=s+Math.imul(b,oe)|0,n=n+Math.imul(p,ce)|0,i=i+Math.imul(p,ue)|0,i=i+Math.imul(y,ce)|0,s=s+Math.imul(y,ue)|0,n=n+Math.imul(h,he)|0,i=i+Math.imul(h,fe)|0,i=i+Math.imul(f,he)|0,s=s+Math.imul(f,fe)|0;var ke=(u+n|0)+((8191&i)<<13)|0;u=(s+(i>>>13)|0)+(ke>>>26)|0,ke&=67108863,n=Math.imul(U,F),i=Math.imul(U,V),i=i+Math.imul(j,F)|0,s=Math.imul(j,V),n=n+Math.imul(D,z)|0,i=i+Math.imul(D,H)|0,i=i+Math.imul(L,z)|0,s=s+Math.imul(L,H)|0,n=n+Math.imul(N,$)|0,i=i+Math.imul(N,W)|0,i=i+Math.imul(O,$)|0,s=s+Math.imul(O,W)|0,n=n+Math.imul(x,Q)|0,i=i+Math.imul(x,J)|0,i=i+Math.imul(B,Q)|0,s=s+Math.imul(B,J)|0,n=n+Math.imul(A,Z)|0,i=i+Math.imul(A,ee)|0,i=i+Math.imul(I,Z)|0,s=s+Math.imul(I,ee)|0,n=n+Math.imul(S,re)|0,i=i+Math.imul(S,ne)|0,i=i+Math.imul(k,re)|0,s=s+Math.imul(k,ne)|0,n=n+Math.imul(w,se)|0,i=i+Math.imul(w,oe)|0,i=i+Math.imul(_,se)|0,s=s+Math.imul(_,oe)|0,n=n+Math.imul(m,ce)|0,i=i+Math.imul(m,ue)|0,i=i+Math.imul(b,ce)|0,s=s+Math.imul(b,ue)|0,n=n+Math.imul(p,he)|0,i=i+Math.imul(p,fe)|0,i=i+Math.imul(y,he)|0,s=s+Math.imul(y,fe)|0,n=n+Math.imul(h,pe)|0,i=i+Math.imul(h,ye)|0,i=i+Math.imul(f,pe)|0,s=s+Math.imul(f,ye)|0;var Ce=(u+n|0)+((8191&i)<<13)|0;u=(s+(i>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,n=Math.imul(U,z),i=Math.imul(U,H),i=i+Math.imul(j,z)|0,s=Math.imul(j,H),n=n+Math.imul(D,$)|0,i=i+Math.imul(D,W)|0,i=i+Math.imul(L,$)|0,s=s+Math.imul(L,W)|0,n=n+Math.imul(N,Q)|0,i=i+Math.imul(N,J)|0,i=i+Math.imul(O,Q)|0,s=s+Math.imul(O,J)|0,n=n+Math.imul(x,Z)|0,i=i+Math.imul(x,ee)|0,i=i+Math.imul(B,Z)|0,s=s+Math.imul(B,ee)|0,n=n+Math.imul(A,re)|0,i=i+Math.imul(A,ne)|0,i=i+Math.imul(I,re)|0,s=s+Math.imul(I,ne)|0,n=n+Math.imul(S,se)|0,i=i+Math.imul(S,oe)|0,i=i+Math.imul(k,se)|0,s=s+Math.imul(k,oe)|0,n=n+Math.imul(w,ce)|0,i=i+Math.imul(w,ue)|0,i=i+Math.imul(_,ce)|0,s=s+Math.imul(_,ue)|0,n=n+Math.imul(m,he)|0,i=i+Math.imul(m,fe)|0,i=i+Math.imul(b,he)|0,s=s+Math.imul(b,fe)|0,n=n+Math.imul(p,pe)|0,i=i+Math.imul(p,ye)|0,i=i+Math.imul(y,pe)|0,s=s+Math.imul(y,ye)|0;var Ae=(u+n|0)+((8191&i)<<13)|0;u=(s+(i>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,n=Math.imul(U,$),i=Math.imul(U,W),i=i+Math.imul(j,$)|0,s=Math.imul(j,W),n=n+Math.imul(D,Q)|0,i=i+Math.imul(D,J)|0,i=i+Math.imul(L,Q)|0,s=s+Math.imul(L,J)|0,n=n+Math.imul(N,Z)|0,i=i+Math.imul(N,ee)|0,i=i+Math.imul(O,Z)|0,s=s+Math.imul(O,ee)|0,n=n+Math.imul(x,re)|0,i=i+Math.imul(x,ne)|0,i=i+Math.imul(B,re)|0,s=s+Math.imul(B,ne)|0,n=n+Math.imul(A,se)|0,i=i+Math.imul(A,oe)|0,i=i+Math.imul(I,se)|0,s=s+Math.imul(I,oe)|0,n=n+Math.imul(S,ce)|0,i=i+Math.imul(S,ue)|0,i=i+Math.imul(k,ce)|0,s=s+Math.imul(k,ue)|0,n=n+Math.imul(w,he)|0,i=i+Math.imul(w,fe)|0,i=i+Math.imul(_,he)|0,s=s+Math.imul(_,fe)|0,n=n+Math.imul(m,pe)|0,i=i+Math.imul(m,ye)|0,i=i+Math.imul(b,pe)|0,s=s+Math.imul(b,ye)|0;var Ie=(u+n|0)+((8191&i)<<13)|0;u=(s+(i>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,n=Math.imul(U,Q),i=Math.imul(U,J),i=i+Math.imul(j,Q)|0,s=Math.imul(j,J),n=n+Math.imul(D,Z)|0,i=i+Math.imul(D,ee)|0,i=i+Math.imul(L,Z)|0,s=s+Math.imul(L,ee)|0,n=n+Math.imul(N,re)|0,i=i+Math.imul(N,ne)|0,i=i+Math.imul(O,re)|0,s=s+Math.imul(O,ne)|0,n=n+Math.imul(x,se)|0,i=i+Math.imul(x,oe)|0,i=i+Math.imul(B,se)|0,s=s+Math.imul(B,oe)|0,n=n+Math.imul(A,ce)|0,i=i+Math.imul(A,ue)|0,i=i+Math.imul(I,ce)|0,s=s+Math.imul(I,ue)|0,n=n+Math.imul(S,he)|0,i=i+Math.imul(S,fe)|0,i=i+Math.imul(k,he)|0,s=s+Math.imul(k,fe)|0,n=n+Math.imul(w,pe)|0,i=i+Math.imul(w,ye)|0,i=i+Math.imul(_,pe)|0,s=s+Math.imul(_,ye)|0;var Te=(u+n|0)+((8191&i)<<13)|0;u=(s+(i>>>13)|0)+(Te>>>26)|0,Te&=67108863,n=Math.imul(U,Z),i=Math.imul(U,ee),i=i+Math.imul(j,Z)|0,s=Math.imul(j,ee),n=n+Math.imul(D,re)|0,i=i+Math.imul(D,ne)|0,i=i+Math.imul(L,re)|0,s=s+Math.imul(L,ne)|0,n=n+Math.imul(N,se)|0,i=i+Math.imul(N,oe)|0,i=i+Math.imul(O,se)|0,s=s+Math.imul(O,oe)|0,n=n+Math.imul(x,ce)|0,i=i+Math.imul(x,ue)|0,i=i+Math.imul(B,ce)|0,s=s+Math.imul(B,ue)|0,n=n+Math.imul(A,he)|0,i=i+Math.imul(A,fe)|0,i=i+Math.imul(I,he)|0,s=s+Math.imul(I,fe)|0,n=n+Math.imul(S,pe)|0,i=i+Math.imul(S,ye)|0,i=i+Math.imul(k,pe)|0,s=s+Math.imul(k,ye)|0;var xe=(u+n|0)+((8191&i)<<13)|0;u=(s+(i>>>13)|0)+(xe>>>26)|0,xe&=67108863,n=Math.imul(U,re),i=Math.imul(U,ne),i=i+Math.imul(j,re)|0,s=Math.imul(j,ne),n=n+Math.imul(D,se)|0,i=i+Math.imul(D,oe)|0,i=i+Math.imul(L,se)|0,s=s+Math.imul(L,oe)|0,n=n+Math.imul(N,ce)|0,i=i+Math.imul(N,ue)|0,i=i+Math.imul(O,ce)|0,s=s+Math.imul(O,ue)|0,n=n+Math.imul(x,he)|0,i=i+Math.imul(x,fe)|0,i=i+Math.imul(B,he)|0,s=s+Math.imul(B,fe)|0,n=n+Math.imul(A,pe)|0,i=i+Math.imul(A,ye)|0,i=i+Math.imul(I,pe)|0,s=s+Math.imul(I,ye)|0;var Be=(u+n|0)+((8191&i)<<13)|0;u=(s+(i>>>13)|0)+(Be>>>26)|0,Be&=67108863,n=Math.imul(U,se),i=Math.imul(U,oe),i=i+Math.imul(j,se)|0,s=Math.imul(j,oe),n=n+Math.imul(D,ce)|0,i=i+Math.imul(D,ue)|0,i=i+Math.imul(L,ce)|0,s=s+Math.imul(L,ue)|0,n=n+Math.imul(N,he)|0,i=i+Math.imul(N,fe)|0,i=i+Math.imul(O,he)|0,s=s+Math.imul(O,fe)|0,n=n+Math.imul(x,pe)|0,i=i+Math.imul(x,ye)|0,i=i+Math.imul(B,pe)|0,s=s+Math.imul(B,ye)|0;var Re=(u+n|0)+((8191&i)<<13)|0;u=(s+(i>>>13)|0)+(Re>>>26)|0,Re&=67108863,n=Math.imul(U,ce),i=Math.imul(U,ue),i=i+Math.imul(j,ce)|0,s=Math.imul(j,ue),n=n+Math.imul(D,he)|0,i=i+Math.imul(D,fe)|0,i=i+Math.imul(L,he)|0,s=s+Math.imul(L,fe)|0,n=n+Math.imul(N,pe)|0,i=i+Math.imul(N,ye)|0,i=i+Math.imul(O,pe)|0,s=s+Math.imul(O,ye)|0;var Ne=(u+n|0)+((8191&i)<<13)|0;u=(s+(i>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,n=Math.imul(U,he),i=Math.imul(U,fe),i=i+Math.imul(j,he)|0,s=Math.imul(j,fe),n=n+Math.imul(D,pe)|0,i=i+Math.imul(D,ye)|0,i=i+Math.imul(L,pe)|0,s=s+Math.imul(L,ye)|0;var Oe=(u+n|0)+((8191&i)<<13)|0;u=(s+(i>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,n=Math.imul(U,pe),i=Math.imul(U,ye),i=i+Math.imul(j,pe)|0,s=Math.imul(j,ye);var Pe=(u+n|0)+((8191&i)<<13)|0;return u=(s+(i>>>13)|0)+(Pe>>>26)|0,Pe&=67108863,c[0]=ge,c[1]=me,c[2]=be,c[3]=ve,c[4]=we,c[5]=_e,c[6]=Ee,c[7]=Se,c[8]=ke,c[9]=Ce,c[10]=Ae,c[11]=Ie,c[12]=Te,c[13]=xe,c[14]=Be,c[15]=Re,c[16]=Ne,c[17]=Oe,c[18]=Pe,0!==u&&(c[19]=u,r.length++),r};function y(e,t,r){r.negative=t.negative^e.negative,r.length=e.length+t.length;for(var n=0,i=0,s=0;s>>26)|0,i+=o>>>26,o&=67108863}r.words[s]=a,n=o,o=i}return 0!==n?r.words[s]=n:r.length--,r.strip()}function g(e,t,r){var n=new m;return n.mulp(e,t,r)}function m(e,t){this.x=e,this.y=t}Math.imul||(p=d),s.prototype.mulTo=function(e,t){var r,n=this.length+e.length;return r=10===this.length&&10===e.length?p(this,e,t):n<63?d(this,e,t):n<1024?y(this,e,t):g(this,e,t),r},m.prototype.makeRBT=function(e){for(var t=new Array(e),r=s.prototype._countBits(e)-1,n=0;n>=1;return n},m.prototype.permute=function(e,t,r,n,i,s){for(var o=0;o>>=1)i++;return 1<>>=13,r[2*o+1]=8191&s,s>>>=13;for(o=2*t;o>=26,t+=i/67108864|0,t+=s>>>26,this.words[r]=67108863&s}return 0!==t&&(this.words[r]=t,this.length++),this},s.prototype.muln=function(e){return this.clone().imuln(e)},s.prototype.sqr=function(){return this.mul(this)},s.prototype.isqr=function(){return this.imul(this.clone())},s.prototype.pow=function(e){var t=f(e);if(0===t.length)return new s(1);for(var r=this,n=0;n=0);var t,r=e%26,i=(e-r)/26,s=67108863>>>26-r<<26-r;if(0!==r){var o=0;for(t=0;t>>26-r}o&&(this.words[t]=o,this.length++)}if(0!==i){for(t=this.length-1;t>=0;t--)this.words[t+i]=this.words[t];for(t=0;t=0),i=t?(t-t%26)/26:0;var s=e%26,o=Math.min((e-s)/26,this.length),a=67108863^67108863>>>s<o)for(this.length-=o,u=0;u=0&&(0!==l||u>=i);u--){var h=0|this.words[u];this.words[u]=l<<26-s|h>>>s,l=h&a}return c&&0!==l&&(c.words[c.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},s.prototype.ishrn=function(e,t,r){return n(0===this.negative),this.iushrn(e,t,r)},s.prototype.shln=function(e){return this.clone().ishln(e)},s.prototype.ushln=function(e){return this.clone().iushln(e)},s.prototype.shrn=function(e){return this.clone().ishrn(e)},s.prototype.ushrn=function(e){return this.clone().iushrn(e)},s.prototype.testn=function(e){n("number"===typeof e&&e>=0);var t=e%26,r=(e-t)/26,i=1<=0);var t=e%26,r=(e-t)/26;if(n(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==t&&r++,this.length=Math.min(r,this.length),0!==t){var i=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},s.prototype.isubn=function(e){if(n("number"===typeof e),n(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(c/67108864|0),this.words[i+r]=67108863&s}for(;i>26,this.words[i+r]=67108863&s;if(0===a)return this.strip();for(n(-1===a),a=0,i=0;i>26,this.words[i]=67108863&s;return this.negative=1,this.strip()},s.prototype._wordDiv=function(e,t){var r=this.length-e.length,n=this.clone(),i=e,o=0|i.words[i.length-1],a=this._countBits(o);r=26-a,0!==r&&(i=i.ushln(r),n.iushln(r),o=0|i.words[i.length-1]);var c,u=n.length-i.length;if("mod"!==t){c=new s(null),c.length=u+1,c.words=new Array(c.length);for(var l=0;l=0;f--){var d=67108864*(0|n.words[i.length+f])+(0|n.words[i.length+f-1]);d=Math.min(d/o|0,67108863),n._ishlnsubmul(i,d,f);while(0!==n.negative)d--,n.negative=0,n._ishlnsubmul(i,1,f),n.isZero()||(n.negative^=1);c&&(c.words[f]=d)}return c&&c.strip(),n.strip(),"div"!==t&&0!==r&&n.iushrn(r),{div:c||null,mod:n}},s.prototype.divmod=function(e,t,r){return n(!e.isZero()),this.isZero()?{div:new s(0),mod:new s(0)}:0!==this.negative&&0===e.negative?(a=this.neg().divmod(e,t),"mod"!==t&&(i=a.div.neg()),"div"!==t&&(o=a.mod.neg(),r&&0!==o.negative&&o.iadd(e)),{div:i,mod:o}):0===this.negative&&0!==e.negative?(a=this.divmod(e.neg(),t),"mod"!==t&&(i=a.div.neg()),{div:i,mod:a.mod}):0!==(this.negative&e.negative)?(a=this.neg().divmod(e.neg(),t),"div"!==t&&(o=a.mod.neg(),r&&0!==o.negative&&o.isub(e)),{div:a.div,mod:o}):e.length>this.length||this.cmp(e)<0?{div:new s(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new s(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new s(this.modn(e.words[0]))}:this._wordDiv(e,t);var i,o,a},s.prototype.div=function(e){return this.divmod(e,"div",!1).div},s.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},s.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},s.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var r=0!==t.div.negative?t.mod.isub(e):t.mod,n=e.ushrn(1),i=e.andln(1),s=r.cmp(n);return s<0||1===i&&0===s?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},s.prototype.modn=function(e){n(e<=67108863);for(var t=(1<<26)%e,r=0,i=this.length-1;i>=0;i--)r=(t*r+(0|this.words[i]))%e;return r},s.prototype.idivn=function(e){n(e<=67108863);for(var t=0,r=this.length-1;r>=0;r--){var i=(0|this.words[r])+67108864*t;this.words[r]=i/e|0,t=i%e}return this.strip()},s.prototype.divn=function(e){return this.clone().idivn(e)},s.prototype.egcd=function(e){n(0===e.negative),n(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();var i=new s(1),o=new s(0),a=new s(0),c=new s(1),u=0;while(t.isEven()&&r.isEven())t.iushrn(1),r.iushrn(1),++u;var l=r.clone(),h=t.clone();while(!t.isZero()){for(var f=0,d=1;0===(t.words[0]&d)&&f<26;++f,d<<=1);if(f>0){t.iushrn(f);while(f-- >0)(i.isOdd()||o.isOdd())&&(i.iadd(l),o.isub(h)),i.iushrn(1),o.iushrn(1)}for(var p=0,y=1;0===(r.words[0]&y)&&p<26;++p,y<<=1);if(p>0){r.iushrn(p);while(p-- >0)(a.isOdd()||c.isOdd())&&(a.iadd(l),c.isub(h)),a.iushrn(1),c.iushrn(1)}t.cmp(r)>=0?(t.isub(r),i.isub(a),o.isub(c)):(r.isub(t),a.isub(i),c.isub(o))}return{a:a,b:c,gcd:r.iushln(u)}},s.prototype._invmp=function(e){n(0===e.negative),n(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();var i,o=new s(1),a=new s(0),c=r.clone();while(t.cmpn(1)>0&&r.cmpn(1)>0){for(var u=0,l=1;0===(t.words[0]&l)&&u<26;++u,l<<=1);if(u>0){t.iushrn(u);while(u-- >0)o.isOdd()&&o.iadd(c),o.iushrn(1)}for(var h=0,f=1;0===(r.words[0]&f)&&h<26;++h,f<<=1);if(h>0){r.iushrn(h);while(h-- >0)a.isOdd()&&a.iadd(c),a.iushrn(1)}t.cmp(r)>=0?(t.isub(r),o.isub(a)):(r.isub(t),a.isub(o))}return i=0===t.cmpn(1)?o:a,i.cmpn(0)<0&&i.iadd(e),i},s.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),r=e.clone();t.negative=0,r.negative=0;for(var n=0;t.isEven()&&r.isEven();n++)t.iushrn(1),r.iushrn(1);do{while(t.isEven())t.iushrn(1);while(r.isEven())r.iushrn(1);var i=t.cmp(r);if(i<0){var s=t;t=r,r=s}else if(0===i||0===r.cmpn(1))break;t.isub(r)}while(1);return r.iushln(n)},s.prototype.invm=function(e){return this.egcd(e).a.umod(e)},s.prototype.isEven=function(){return 0===(1&this.words[0])},s.prototype.isOdd=function(){return 1===(1&this.words[0])},s.prototype.andln=function(e){return this.words[0]&e},s.prototype.bincn=function(e){n("number"===typeof e);var t=e%26,r=(e-t)/26,i=1<>>26,a&=67108863,this.words[o]=a}return 0!==s&&(this.words[o]=s,this.length++),this},s.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},s.prototype.cmpn=function(e){var t,r=e<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)t=1;else{r&&(e=-e),n(e<=67108863,"Number is too big");var i=0|this.words[0];t=i===e?0:ie.length)return 1;if(this.length=0;r--){var n=0|this.words[r],i=0|e.words[r];if(n!==i){ni&&(t=1);break}}return t},s.prototype.gtn=function(e){return 1===this.cmpn(e)},s.prototype.gt=function(e){return 1===this.cmp(e)},s.prototype.gten=function(e){return this.cmpn(e)>=0},s.prototype.gte=function(e){return this.cmp(e)>=0},s.prototype.ltn=function(e){return-1===this.cmpn(e)},s.prototype.lt=function(e){return-1===this.cmp(e)},s.prototype.lten=function(e){return this.cmpn(e)<=0},s.prototype.lte=function(e){return this.cmp(e)<=0},s.prototype.eqn=function(e){return 0===this.cmpn(e)},s.prototype.eq=function(e){return 0===this.cmp(e)},s.red=function(e){return new k(e)},s.prototype.toRed=function(e){return n(!this.red,"Already a number in reduction context"),n(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},s.prototype.fromRed=function(){return n(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},s.prototype._forceRed=function(e){return this.red=e,this},s.prototype.forceRed=function(e){return n(!this.red,"Already a number in reduction context"),this._forceRed(e)},s.prototype.redAdd=function(e){return n(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},s.prototype.redIAdd=function(e){return n(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},s.prototype.redSub=function(e){return n(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},s.prototype.redISub=function(e){return n(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},s.prototype.redShl=function(e){return n(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},s.prototype.redMul=function(e){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},s.prototype.redIMul=function(e){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},s.prototype.redSqr=function(){return n(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},s.prototype.redISqr=function(){return n(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},s.prototype.redSqrt=function(){return n(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},s.prototype.redInvm=function(){return n(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},s.prototype.redNeg=function(){return n(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},s.prototype.redPow=function(e){return n(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var b={k256:null,p224:null,p192:null,p25519:null};function v(e,t){this.name=e,this.p=new s(t,16),this.n=this.p.bitLength(),this.k=new s(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function w(){v.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function _(){v.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function E(){v.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function S(){v.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function k(e){if("string"===typeof e){var t=s._prime(e);this.m=t.p,this.prime=t}else n(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function C(e){k.call(this,e),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new s(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}v.prototype._tmp=function(){var e=new s(null);return e.words=new Array(Math.ceil(this.n/13)),e},v.prototype.ireduce=function(e){var t,r=e;do{this.split(r,this.tmp),r=this.imulK(r),r=r.iadd(this.tmp),t=r.bitLength()}while(t>this.n);var n=t0?r.isub(this.p):r.strip(),r},v.prototype.split=function(e,t){e.iushrn(this.n,0,t)},v.prototype.imulK=function(e){return e.imul(this.k)},i(w,v),w.prototype.split=function(e,t){for(var r=4194303,n=Math.min(e.length,9),i=0;i>>22,s=o}s>>>=22,e.words[i-10]=s,0===s&&e.length>10?e.length-=10:e.length-=9},w.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,r=0;r>>=26,e.words[r]=i,t=n}return 0!==t&&(e.words[e.length++]=t),e},s._prime=function(e){if(b[e])return b[e];var t;if("k256"===e)t=new w;else if("p224"===e)t=new _;else if("p192"===e)t=new E;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new S}return b[e]=t,t},k.prototype._verify1=function(e){n(0===e.negative,"red works only with positives"),n(e.red,"red works only with red numbers")},k.prototype._verify2=function(e,t){n(0===(e.negative|t.negative),"red works only with positives"),n(e.red&&e.red===t.red,"red works only with red numbers")},k.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},k.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},k.prototype.add=function(e,t){this._verify2(e,t);var r=e.add(t);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},k.prototype.iadd=function(e,t){this._verify2(e,t);var r=e.iadd(t);return r.cmp(this.m)>=0&&r.isub(this.m),r},k.prototype.sub=function(e,t){this._verify2(e,t);var r=e.sub(t);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},k.prototype.isub=function(e,t){this._verify2(e,t);var r=e.isub(t);return r.cmpn(0)<0&&r.iadd(this.m),r},k.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},k.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},k.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},k.prototype.isqr=function(e){return this.imul(e,e.clone())},k.prototype.sqr=function(e){return this.mul(e,e)},k.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(n(t%2===1),3===t){var r=this.m.add(new s(1)).iushrn(2);return this.pow(e,r)}var i=this.m.subn(1),o=0;while(!i.isZero()&&0===i.andln(1))o++,i.iushrn(1);n(!i.isZero());var a=new s(1).toRed(this),c=a.redNeg(),u=this.m.subn(1).iushrn(1),l=this.m.bitLength();l=new s(2*l*l).toRed(this);while(0!==this.pow(l,u).cmp(c))l.redIAdd(c);var h=this.pow(l,i),f=this.pow(e,i.addn(1).iushrn(1)),d=this.pow(e,i),p=o;while(0!==d.cmp(a)){for(var y=d,g=0;0!==y.cmp(a);g++)y=y.redSqr();n(g=0;i--){for(var l=t.words[i],h=u-1;h>=0;h--){var f=l>>h&1;o!==n[0]&&(o=this.sqr(o)),0!==f||0!==a?(a<<=1,a|=f,c++,(c===r||0===i&&0===h)&&(o=this.mul(o,n[a]),c=0,a=0)):c=0}u=26}return o},k.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},k.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},s.mont=function(e){return new C(e)},i(C,k),C.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},C.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},C.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var r=e.imul(t),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),s=i;return i.cmp(this.m)>=0?s=i.isub(this.m):i.cmpn(0)<0&&(s=i.iadd(this.m)),s._forceRed(this)},C.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new s(0)._forceRed(this);var r=e.mul(t),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},C.prototype.invm=function(e){var t=this.imod(e._invmp(this.m).mul(this.r2));return t._forceRed(this)}})(e,this)}).call(this,r("62e4")(e))},"6e64":function(e,t,r){"use strict";const n=r("6429"),i=r("3e4c"),s=r("3580"),o=r("086c"),a=r("c2c9"),c=r("7178");t.KeytransformDatastore=n,t.ShardingDatastore=i,t.MountDatastore=s,t.TieredDatastore=o,t.NamespaceDatastore=a,t.shard=c},"6e6a":function(e,t,r){"use strict";const{filter:n,sortAll:i,take:s,map:o}=r("545b"),a=r("42b7"),c=r("fed0");class u{constructor(){this.data={}}async open(){}async put(e,t){this.data[e.toString()]=t}async get(e){const t=await this.has(e);if(!t)throw c.notFoundError();return this.data[e.toString()]}async has(e){return void 0!==this.data[e.toString()]}async delete(e){delete this.data[e.toString()]}batch(){let e=[],t=[];return{put(t,r){e.push([t,r])},delete(e){t.push(e)},commit:async()=>{e.forEach(e=>{this.data[e[0].toString()]=e[1]}),e=[],t.forEach(e=>{delete this.data[e.toString()]}),t=[]}}}query(e){let t=Object.entries(this.data);if(t=o(t,e=>({key:new a(e[0]),value:e[1]})),null!=e.prefix&&(t=n(t,t=>t.key.toString().startsWith(e.prefix))),Array.isArray(e.filters)&&(t=e.filters.reduce((e,t)=>n(e,t),t)),Array.isArray(e.orders)&&(t=e.orders.reduce((e,t)=>i(e,t),t)),null!=e.offset){let r=0;t=n(t,()=>r++>=e.offset)}return null!=e.limit&&(t=s(t,e.limit)),!0===e.keysOnly&&(t=o(t,e=>({key:e.key}))),t}async close(){}}e.exports=u},"6ecd":function(e,t,r){const n=r("d177"),i=r("8707").Buffer,s=r("9440").default,o="legacy-ipfs-3box",a=async e=>{const t=await s(e);return t.publicKey.find(e=>{const r=e.id.split("#");return r[0]===t.id&&("subSigningKey"===r[1]||"signingKey"===r[1])}).publicKeyHex};class c{constructor(e,t){this._ipfs=e,this._write=Array.from(t.write||[])}static get type(){return o}get write(){return this._write}async canAppend(e,t){const r=0===e.v?e.key:await a(e.identity.id);return!(!this.write.includes(r)&&!this.write.includes("*"))&&(0===e.v||await t.verifyIdentity(e.identity))}async load(e){0===e.indexOf("/ipfs")&&(e=e.split("/")[2]);try{const t=await n.read(this._ipfs,e);this._write=t.write}catch(t){console.log("LegacyIPFS3BoxAccessController.load ERROR:",t)}}async save(e){let t;const r={admin:[],write:this.write,read:[]};try{t=await n.write(this._ipfs,"raw",i.from(JSON.stringify(r,null,2)),{format:"dag-pb"})}catch(s){console.log("LegacyIPFS3BoxAccessController.save ERROR:",s)}return{address:t,skipManifest:!0}}static async create(e,t={}){return t={...t,write:t.write||[e.identity.publicKey]},new c(e._ipfs,t)}}e.exports=c},"6f12":function(e,t,r){"use strict";const n=async e=>{const t=[];for await(const r of e)t.push(r);return t};e.exports=n},"6f2b":function(e,t,r){"use strict";const n=r("83fd").utils,i=n.map;class s{constructor(e,t){this.child=e,this.transform=t}open(){return this.child.open()}put(e,t){return this.child.put(this.transform.convert(e),t)}get(e){return this.child.get(this.transform.convert(e))}has(e){return this.child.has(this.transform.convert(e))}delete(e){return this.child.delete(this.transform.convert(e))}batch(){const e=this.child.batch();return{put:(t,r)=>{e.put(this.transform.convert(t),r)},delete:t=>{e.delete(this.transform.convert(t))},commit:()=>e.commit()}}query(e){return i(this.child.query(e),e=>(e.key=this.transform.invert(e.key),e))}close(){return this.child.close()}}e.exports=s},"6f32":function(e,t,r){"use strict";const n=r("4ed1"),i=r("5b398");class s{constructor(e){this.gossipsub=e}start(e){if(this._heartbeatTimer){const t="Heartbeat timer is already running";return this.gossipsub.log(t),e(i(new Error(t),"ERR_HEARTBEAT_ALREADY_RUNNING"))}const t={_onCancel:null,_timeoutId:null,runPeriodically:(e,r)=>{t._timeoutId=setInterval(e,r)},cancel:e=>{clearTimeout(t._timeoutId),e()}},r=this._heartbeat.bind(this);setTimeout(()=>{r(),t.runPeriodically(r,n.GossipSubHeartbeatInterval)},n.GossipSubHeartbeatInitialDelay),this._heartbeatTimer=t,e()}stop(e){if(!this._heartbeatTimer){const t="Heartbeat timer is not running";return this.gossipsub.log(t),e(i(new Error(t),"ERR_HEARTBEAT_NO_RUNNING"))}this._heartbeatTimer.cancel(()=>{this._heartbeatTimer=null,e()})}_heartbeat(){this.gossipsub._flush();const e=new Map,t=new Map;this.gossipsub.mesh.forEach((r,i)=>{if(r.size{if(r.has(t))return;this.gossipsub.log("HEARTBEAT: Add mesh link to %s in %s",t.info.id.toB58String(),i),r.add(t);const n=e.get(t);n?n.push(i):e.set(t,[i])})}if(r.size>n.GossipSubDhi){const e=r.size-n.GossipSubD;let s=Array.from(r);s=this.gossipsub._shufflePeers(s),s=s.slice(0,e),s.forEach(e=>{this.gossipsub.log("HEARTBEAT: Remove mesh link to %s in %s",e.info.id.toB58String(),i),r.delete(e);const n=t.get(e);n?n.push(i):t.set(e,[i])})}this.gossipsub._emitGossip(i,r)});const r=this.gossipsub._now();this.gossipsub.lastpub.forEach((e,t)=>{e+n.GossipSubFanoutTTL{if(e.forEach(t=>{this.gossipsub.topics.has(t)&&e.delete(t)}),e.size{e.has(t)&&e.add(t)})}this.gossipsub._emitGossip(t,e)}),this.gossipsub._sendGraftPrune(e,t),this.gossipsub.messageCache.shift(),this.gossipsub.emit("gossipsub:heartbeat")}}e.exports=s},"6f55":function(e,t){function r(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}e.exports=r},"6f5a":function(e,t,r){"use strict";r.d(t,"a",(function(){return o}));var n=r("bbf9"),i=r.n(n),s=r("549e");function o(e){return"0x"+i.a.keccak_256(Object(s["arrayify"])(e))}},"6f71":function(e,t,r){"use strict";const n=r("c368"),i=r("2e81"),s=r("5e27"),o=r("4547");t.Key=n,t.MemoryDatastore=i,t.utils=s,t.Errors=o},"6f76":function(e,t,r){"use strict";(function(t){ +/*! + * @description Recursive object extending + * @author Viacheslav Lotsmanov + * @license MIT + * + * The MIT License (MIT) + * + * Copyright (c) 2013-2018 Viacheslav Lotsmanov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +function r(e){return e instanceof t||e instanceof Date||e instanceof RegExp}function n(e){if(e instanceof t){var r=t.alloc?t.alloc(e.length):new t(e.length);return e.copy(r),r}if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp)return new RegExp(e);throw new Error("Unexpected situation")}function i(e){var t=[];return e.forEach((function(e,s){"object"===typeof e&&null!==e?Array.isArray(e)?t[s]=i(e):r(e)?t[s]=n(e):t[s]=o({},e):t[s]=e})),t}function s(e,t){return"__proto__"===t?void 0:e[t]}var o=e.exports=function(){if(arguments.length<1||"object"!==typeof arguments[0])return!1;if(arguments.length<2)return arguments[0];var e,t,a=arguments[0],c=Array.prototype.slice.call(arguments,1);return c.forEach((function(c){"object"!==typeof c||null===c||Array.isArray(c)||Object.keys(c).forEach((function(u){return t=s(a,u),e=s(c,u),e===a?void 0:"object"!==typeof e||null===e?void(a[u]=e):Array.isArray(e)?void(a[u]=i(e)):r(e)?void(a[u]=n(e)):"object"!==typeof t||null===t||Array.isArray(t)?void(a[u]=o({},e)):void(a[u]=o(t,e))}))})),a}}).call(this,r("b639").Buffer)},"6fee":function(e,t,r){"use strict";function n(e,t){return function(r,n,i){return e(r,t,n,i)}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=n,e.exports=t["default"]},7:function(e,t){},7028:function(e){e.exports=JSON.parse('{"identity":0,"ip4":4,"tcp":6,"sha1":17,"sha2-256":18,"sha2-512":19,"sha3-512":20,"sha3-384":21,"sha3-256":22,"sha3-224":23,"shake-128":24,"shake-256":25,"keccak-224":26,"keccak-256":27,"keccak-384":28,"keccak-512":29,"dccp":33,"murmur3-128":34,"murmur3-32":35,"ip6":41,"ip6zone":42,"path":47,"multicodec":48,"multihash":49,"multiaddr":50,"multibase":51,"dns":53,"dns4":54,"dns6":55,"dnsaddr":56,"protobuf":80,"cbor":81,"raw":85,"dbl-sha2-256":86,"rlp":96,"bencode":99,"dag-pb":112,"dag-cbor":113,"libp2p-key":114,"git-raw":120,"torrent-info":123,"torrent-file":124,"leofcoin-block":129,"leofcoin-tx":130,"leofcoin-pr":131,"sctp":132,"eth-block":144,"eth-block-list":145,"eth-tx-trie":146,"eth-tx":147,"eth-tx-receipt-trie":148,"eth-tx-receipt":149,"eth-state-trie":150,"eth-account-snapshot":151,"eth-storage-trie":152,"bitcoin-block":176,"bitcoin-tx":177,"zcash-block":192,"zcash-tx":193,"stellar-block":208,"stellar-tx":209,"md4":212,"md5":213,"bmt":214,"decred-block":224,"decred-tx":225,"ipld-ns":226,"ipfs-ns":227,"swarm-ns":228,"ipns-ns":229,"zeronet":230,"ed25519-pub":237,"dash-block":240,"dash-tx":241,"swarm-manifest":250,"swarm-feed":251,"udp":273,"p2p-webrtc-star":275,"p2p-webrtc-direct":276,"p2p-stardust":277,"p2p-circuit":290,"dag-json":297,"udt":301,"utp":302,"unix":400,"p2p":421,"ipfs":421,"https":443,"onion":444,"onion3":445,"garlic64":446,"garlic32":447,"tls":448,"quic":460,"ws":477,"wss":478,"p2p-websocket-star":479,"http":480,"json":512,"messagepack":513,"x11":4352,"blake2b-8":45569,"blake2b-16":45570,"blake2b-24":45571,"blake2b-32":45572,"blake2b-40":45573,"blake2b-48":45574,"blake2b-56":45575,"blake2b-64":45576,"blake2b-72":45577,"blake2b-80":45578,"blake2b-88":45579,"blake2b-96":45580,"blake2b-104":45581,"blake2b-112":45582,"blake2b-120":45583,"blake2b-128":45584,"blake2b-136":45585,"blake2b-144":45586,"blake2b-152":45587,"blake2b-160":45588,"blake2b-168":45589,"blake2b-176":45590,"blake2b-184":45591,"blake2b-192":45592,"blake2b-200":45593,"blake2b-208":45594,"blake2b-216":45595,"blake2b-224":45596,"blake2b-232":45597,"blake2b-240":45598,"blake2b-248":45599,"blake2b-256":45600,"blake2b-264":45601,"blake2b-272":45602,"blake2b-280":45603,"blake2b-288":45604,"blake2b-296":45605,"blake2b-304":45606,"blake2b-312":45607,"blake2b-320":45608,"blake2b-328":45609,"blake2b-336":45610,"blake2b-344":45611,"blake2b-352":45612,"blake2b-360":45613,"blake2b-368":45614,"blake2b-376":45615,"blake2b-384":45616,"blake2b-392":45617,"blake2b-400":45618,"blake2b-408":45619,"blake2b-416":45620,"blake2b-424":45621,"blake2b-432":45622,"blake2b-440":45623,"blake2b-448":45624,"blake2b-456":45625,"blake2b-464":45626,"blake2b-472":45627,"blake2b-480":45628,"blake2b-488":45629,"blake2b-496":45630,"blake2b-504":45631,"blake2b-512":45632,"blake2s-8":45633,"blake2s-16":45634,"blake2s-24":45635,"blake2s-32":45636,"blake2s-40":45637,"blake2s-48":45638,"blake2s-56":45639,"blake2s-64":45640,"blake2s-72":45641,"blake2s-80":45642,"blake2s-88":45643,"blake2s-96":45644,"blake2s-104":45645,"blake2s-112":45646,"blake2s-120":45647,"blake2s-128":45648,"blake2s-136":45649,"blake2s-144":45650,"blake2s-152":45651,"blake2s-160":45652,"blake2s-168":45653,"blake2s-176":45654,"blake2s-184":45655,"blake2s-192":45656,"blake2s-200":45657,"blake2s-208":45658,"blake2s-216":45659,"blake2s-224":45660,"blake2s-232":45661,"blake2s-240":45662,"blake2s-248":45663,"blake2s-256":45664,"skein256-8":45825,"skein256-16":45826,"skein256-24":45827,"skein256-32":45828,"skein256-40":45829,"skein256-48":45830,"skein256-56":45831,"skein256-64":45832,"skein256-72":45833,"skein256-80":45834,"skein256-88":45835,"skein256-96":45836,"skein256-104":45837,"skein256-112":45838,"skein256-120":45839,"skein256-128":45840,"skein256-136":45841,"skein256-144":45842,"skein256-152":45843,"skein256-160":45844,"skein256-168":45845,"skein256-176":45846,"skein256-184":45847,"skein256-192":45848,"skein256-200":45849,"skein256-208":45850,"skein256-216":45851,"skein256-224":45852,"skein256-232":45853,"skein256-240":45854,"skein256-248":45855,"skein256-256":45856,"skein512-8":45857,"skein512-16":45858,"skein512-24":45859,"skein512-32":45860,"skein512-40":45861,"skein512-48":45862,"skein512-56":45863,"skein512-64":45864,"skein512-72":45865,"skein512-80":45866,"skein512-88":45867,"skein512-96":45868,"skein512-104":45869,"skein512-112":45870,"skein512-120":45871,"skein512-128":45872,"skein512-136":45873,"skein512-144":45874,"skein512-152":45875,"skein512-160":45876,"skein512-168":45877,"skein512-176":45878,"skein512-184":45879,"skein512-192":45880,"skein512-200":45881,"skein512-208":45882,"skein512-216":45883,"skein512-224":45884,"skein512-232":45885,"skein512-240":45886,"skein512-248":45887,"skein512-256":45888,"skein512-264":45889,"skein512-272":45890,"skein512-280":45891,"skein512-288":45892,"skein512-296":45893,"skein512-304":45894,"skein512-312":45895,"skein512-320":45896,"skein512-328":45897,"skein512-336":45898,"skein512-344":45899,"skein512-352":45900,"skein512-360":45901,"skein512-368":45902,"skein512-376":45903,"skein512-384":45904,"skein512-392":45905,"skein512-400":45906,"skein512-408":45907,"skein512-416":45908,"skein512-424":45909,"skein512-432":45910,"skein512-440":45911,"skein512-448":45912,"skein512-456":45913,"skein512-464":45914,"skein512-472":45915,"skein512-480":45916,"skein512-488":45917,"skein512-496":45918,"skein512-504":45919,"skein512-512":45920,"skein1024-8":45921,"skein1024-16":45922,"skein1024-24":45923,"skein1024-32":45924,"skein1024-40":45925,"skein1024-48":45926,"skein1024-56":45927,"skein1024-64":45928,"skein1024-72":45929,"skein1024-80":45930,"skein1024-88":45931,"skein1024-96":45932,"skein1024-104":45933,"skein1024-112":45934,"skein1024-120":45935,"skein1024-128":45936,"skein1024-136":45937,"skein1024-144":45938,"skein1024-152":45939,"skein1024-160":45940,"skein1024-168":45941,"skein1024-176":45942,"skein1024-184":45943,"skein1024-192":45944,"skein1024-200":45945,"skein1024-208":45946,"skein1024-216":45947,"skein1024-224":45948,"skein1024-232":45949,"skein1024-240":45950,"skein1024-248":45951,"skein1024-256":45952,"skein1024-264":45953,"skein1024-272":45954,"skein1024-280":45955,"skein1024-288":45956,"skein1024-296":45957,"skein1024-304":45958,"skein1024-312":45959,"skein1024-320":45960,"skein1024-328":45961,"skein1024-336":45962,"skein1024-344":45963,"skein1024-352":45964,"skein1024-360":45965,"skein1024-368":45966,"skein1024-376":45967,"skein1024-384":45968,"skein1024-392":45969,"skein1024-400":45970,"skein1024-408":45971,"skein1024-416":45972,"skein1024-424":45973,"skein1024-432":45974,"skein1024-440":45975,"skein1024-448":45976,"skein1024-456":45977,"skein1024-464":45978,"skein1024-472":45979,"skein1024-480":45980,"skein1024-488":45981,"skein1024-496":45982,"skein1024-504":45983,"skein1024-512":45984,"skein1024-520":45985,"skein1024-528":45986,"skein1024-536":45987,"skein1024-544":45988,"skein1024-552":45989,"skein1024-560":45990,"skein1024-568":45991,"skein1024-576":45992,"skein1024-584":45993,"skein1024-592":45994,"skein1024-600":45995,"skein1024-608":45996,"skein1024-616":45997,"skein1024-624":45998,"skein1024-632":45999,"skein1024-640":46000,"skein1024-648":46001,"skein1024-656":46002,"skein1024-664":46003,"skein1024-672":46004,"skein1024-680":46005,"skein1024-688":46006,"skein1024-696":46007,"skein1024-704":46008,"skein1024-712":46009,"skein1024-720":46010,"skein1024-728":46011,"skein1024-736":46012,"skein1024-744":46013,"skein1024-752":46014,"skein1024-760":46015,"skein1024-768":46016,"skein1024-776":46017,"skein1024-784":46018,"skein1024-792":46019,"skein1024-800":46020,"skein1024-808":46021,"skein1024-816":46022,"skein1024-824":46023,"skein1024-832":46024,"skein1024-840":46025,"skein1024-848":46026,"skein1024-856":46027,"skein1024-864":46028,"skein1024-872":46029,"skein1024-880":46030,"skein1024-888":46031,"skein1024-896":46032,"skein1024-904":46033,"skein1024-912":46034,"skein1024-920":46035,"skein1024-928":46036,"skein1024-936":46037,"skein1024-944":46038,"skein1024-952":46039,"skein1024-960":46040,"skein1024-968":46041,"skein1024-976":46042,"skein1024-984":46043,"skein1024-992":46044,"skein1024-1000":46045,"skein1024-1008":46046,"skein1024-1016":46047,"skein1024-1024":46048,"holochain-adr-v0":8417572,"holochain-adr-v1":8483108,"holochain-key-v0":9728292,"holochain-key-v1":9793828,"holochain-sig-v0":10645796,"holochain-sig-v1":10711332}')},7037:function(e,t,r){function n(t){return"function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?e.exports=n=function(e){return typeof e}:e.exports=n=function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(t)}r("a4d3"),r("e01a"),r("d28b"),r("e260"),r("d3b7"),r("3ca3"),r("ddb0"),e.exports=n},7048:function(e,t,r){"use strict";function n(e,t,r){var n;if(!(e instanceof Error))throw new TypeError("Please pass an Error to err-code");if("object"===typeof t?r=t:null!=t&&(e.code=t),r)for(n in r)e[n]=r[n];return e}e.exports=n},7066:function(e,t,r){e.exports=r("708a")},"708a":function(e,t,r){"use strict";(function(t){const n=r("e0b9"),i=r("cc26"),s=r("aea9"),o=s.create("pubsub",{color:s.Colors.Yellow});s.setLogLevel("ERROR");const a=256;let c=0;class u{constructor(e,t){this._ipfs=e,this._id=t,this._subscriptions={},null===this._ipfs.pubsub&&o.error("The provided version of ipfs doesn't have pubsub support. Messages will not be exchanged."),this._handleMessage=this._handleMessage.bind(this),this._ipfs.setMaxListeners&&this._ipfs.setMaxListeners(a)}async subscribe(e,t,r){if(!this._subscriptions[e]&&this._ipfs.pubsub){await this._ipfs.pubsub.subscribe(e,this._handleMessage);const n=new i(this._ipfs.pubsub,e);n.on("join",t=>{o.debug(`Peer joined ${e}:`),o.debug(t),this._subscriptions[e]?r(e,t):(o.warn("Peer joined a room we don't have a subscription for"),o.warn(e,t))}),n.on("leave",t=>o.debug(`Peer ${t} left ${e}`)),n.on("error",e=>o.error(e)),this._subscriptions[e]={topicMonitor:n,onMessage:t,onNewPeer:r},c++,o.debug("Topics open:",c)}}async unsubscribe(e){this._subscriptions[e]&&(await this._ipfs.pubsub.unsubscribe(e,this._handleMessage),this._subscriptions[e].topicMonitor.stop(),delete this._subscriptions[e],o.debug(`Unsubscribed from '${e}'`),c--,o.debug("Topics open:",c))}publish(e,r){this._subscriptions[e]&&this._ipfs.pubsub&&this._ipfs.pubsub.publish(e,t.from(JSON.stringify(r)))}async disconnect(){const e=Object.keys(this._subscriptions);await n(e.map(e=>this.unsubscribe.bind(this,e))),this._subscriptions={}}async _handleMessage(e){if(e.from===this._id)return;let t,r,n;try{n=e.topicIDs[0],t=JSON.parse(e.data),r=this._subscriptions[n]}catch(i){o.error(i),o.error("Couldn't parse pubsub message:",e)}r&&r.onMessage&&t&&await r.onMessage(n,t,e.from)}}e.exports=u}).call(this,r("b639").Buffer)},"708c":function(e,t,r){"use strict";e.exports=()=>({Addresses:{Swarm:[],API:"",Gateway:"",Delegates:[]},Discovery:{MDNS:{Enabled:!1,Interval:10},webRTCStar:{Enabled:!0}},Bootstrap:["/dns4/ams-1.bootstrap.libp2p.io/tcp/443/wss/ipfs/QmSoLer265NRgSp2LA3dPaeykiS1J6DifTC88f5uVQKNAd","/dns4/lon-1.bootstrap.libp2p.io/tcp/443/wss/ipfs/QmSoLMeWqB7YGVLJN3pNLQpmmEk35v6wYtsMGLzSr5QBU3","/dns4/sfo-3.bootstrap.libp2p.io/tcp/443/wss/ipfs/QmSoLPppuBtQSGwKDZT2M73ULpjvfd3aZ6ha4oFGL1KrGM","/dns4/sgp-1.bootstrap.libp2p.io/tcp/443/wss/ipfs/QmSoLSafTMBsPKadTEgaXctDQVcqN88CNLHXMkTNwMKPnu","/dns4/nyc-1.bootstrap.libp2p.io/tcp/443/wss/ipfs/QmSoLueR4xBeUbY9WZ9xGUUxunbKWcrNFTDAadQJmocnWm","/dns4/nyc-2.bootstrap.libp2p.io/tcp/443/wss/ipfs/QmSoLV4Bbm51jM9C4gDYZQ9Cy3U6aXMJDAbzgu2fzaDs64","/dns4/node0.preload.ipfs.io/tcp/443/wss/ipfs/QmZMxNdpMkewiVZLMRxaNxUeZpDUb34pWjZ1kZvsd16Zic","/dns4/node1.preload.ipfs.io/tcp/443/wss/ipfs/Qmbut9Ywz9YEDrz8ySBSgWyJk41Uvm2QJPhwDJzJyGFsD6"],Pubsub:{Enabled:!0},Swarm:{ConnMgr:{LowWater:200,HighWater:500}}})},"70c8":function(e,t,r){var n=r("918b");r("5ee0"),n.cipher=n.cipher||{};var i=e.exports=n.cipher.modes=n.cipher.modes||{};function s(e,t){if("string"===typeof e&&(e=n.util.createBuffer(e)),n.util.isArray(e)&&e.length>4){var r=e;e=n.util.createBuffer();for(var i=0;i0))return!0;for(var n=0;n0))return!0;for(var n=0;n0)return!1;var r=e.length(),n=e.at(r-1);return!(n>this.blockSize<<2)&&(e.truncate(n),!0)},i.cbc=function(e){e=e||{},this.name="CBC",this.cipher=e.cipher,this.blockSize=e.blockSize||16,this._ints=this.blockSize/4,this._inBlock=new Array(this._ints),this._outBlock=new Array(this._ints)},i.cbc.prototype.start=function(e){if(null===e.iv){if(!this._prev)throw new Error("Invalid IV parameter.");this._iv=this._prev.slice(0)}else{if(!("iv"in e))throw new Error("Invalid IV parameter.");this._iv=s(e.iv,this.blockSize),this._prev=this._iv.slice(0)}},i.cbc.prototype.encrypt=function(e,t,r){if(e.length()0))return!0;for(var n=0;n0))return!0;for(var n=0;n0)return!1;var r=e.length(),n=e.at(r-1);return!(n>this.blockSize<<2)&&(e.truncate(n),!0)},i.cfb=function(e){e=e||{},this.name="CFB",this.cipher=e.cipher,this.blockSize=e.blockSize||16,this._ints=this.blockSize/4,this._inBlock=null,this._outBlock=new Array(this._ints),this._partialBlock=new Array(this._ints),this._partialOutput=n.util.createBuffer(),this._partialBytes=0},i.cfb.prototype.start=function(e){if(!("iv"in e))throw new Error("Invalid IV parameter.");this._iv=s(e.iv,this.blockSize),this._inBlock=this._iv.slice(0),this._partialBytes=0},i.cfb.prototype.encrypt=function(e,t,r){var n=e.length();if(0===n)return!0;if(this.cipher.encrypt(this._inBlock,this._outBlock),0===this._partialBytes&&n>=this.blockSize)for(var i=0;i0&&(s=this.blockSize-s),this._partialOutput.clear();for(i=0;i0)e.read-=this.blockSize;else for(i=0;i0&&this._partialOutput.getBytes(this._partialBytes),s>0&&!r)return t.putBytes(this._partialOutput.getBytes(s-this._partialBytes)),this._partialBytes=s,!0;t.putBytes(this._partialOutput.getBytes(n-this._partialBytes)),this._partialBytes=0}},i.cfb.prototype.decrypt=function(e,t,r){var n=e.length();if(0===n)return!0;if(this.cipher.encrypt(this._inBlock,this._outBlock),0===this._partialBytes&&n>=this.blockSize)for(var i=0;i0&&(s=this.blockSize-s),this._partialOutput.clear();for(i=0;i0)e.read-=this.blockSize;else for(i=0;i0&&this._partialOutput.getBytes(this._partialBytes),s>0&&!r)return t.putBytes(this._partialOutput.getBytes(s-this._partialBytes)),this._partialBytes=s,!0;t.putBytes(this._partialOutput.getBytes(n-this._partialBytes)),this._partialBytes=0}},i.ofb=function(e){e=e||{},this.name="OFB",this.cipher=e.cipher,this.blockSize=e.blockSize||16,this._ints=this.blockSize/4,this._inBlock=null,this._outBlock=new Array(this._ints),this._partialOutput=n.util.createBuffer(),this._partialBytes=0},i.ofb.prototype.start=function(e){if(!("iv"in e))throw new Error("Invalid IV parameter.");this._iv=s(e.iv,this.blockSize),this._inBlock=this._iv.slice(0),this._partialBytes=0},i.ofb.prototype.encrypt=function(e,t,r){var n=e.length();if(0===e.length())return!0;if(this.cipher.encrypt(this._inBlock,this._outBlock),0===this._partialBytes&&n>=this.blockSize)for(var i=0;i0&&(s=this.blockSize-s),this._partialOutput.clear();for(i=0;i0)e.read-=this.blockSize;else for(i=0;i0&&this._partialOutput.getBytes(this._partialBytes),s>0&&!r)return t.putBytes(this._partialOutput.getBytes(s-this._partialBytes)),this._partialBytes=s,!0;t.putBytes(this._partialOutput.getBytes(n-this._partialBytes)),this._partialBytes=0}},i.ofb.prototype.decrypt=i.ofb.prototype.encrypt,i.ctr=function(e){e=e||{},this.name="CTR",this.cipher=e.cipher,this.blockSize=e.blockSize||16,this._ints=this.blockSize/4,this._inBlock=null,this._outBlock=new Array(this._ints),this._partialOutput=n.util.createBuffer(),this._partialBytes=0},i.ctr.prototype.start=function(e){if(!("iv"in e))throw new Error("Invalid IV parameter.");this._iv=s(e.iv,this.blockSize),this._inBlock=this._iv.slice(0),this._partialBytes=0},i.ctr.prototype.encrypt=function(e,t,r){var n=e.length();if(0===n)return!0;if(this.cipher.encrypt(this._inBlock,this._outBlock),0===this._partialBytes&&n>=this.blockSize)for(var i=0;i0&&(s=this.blockSize-s),this._partialOutput.clear();for(i=0;i0&&(e.read-=this.blockSize),this._partialBytes>0&&this._partialOutput.getBytes(this._partialBytes),s>0&&!r)return t.putBytes(this._partialOutput.getBytes(s-this._partialBytes)),this._partialBytes=s,!0;t.putBytes(this._partialOutput.getBytes(n-this._partialBytes)),this._partialBytes=0}o(this._inBlock)},i.ctr.prototype.decrypt=i.ctr.prototype.encrypt,i.gcm=function(e){e=e||{},this.name="GCM",this.cipher=e.cipher,this.blockSize=e.blockSize||16,this._ints=this.blockSize/4,this._inBlock=new Array(this._ints),this._outBlock=new Array(this._ints),this._partialOutput=n.util.createBuffer(),this._partialBytes=0,this._R=3774873600},i.gcm.prototype.start=function(e){if(!("iv"in e))throw new Error("Invalid IV parameter.");var t,r=n.util.createBuffer(e.iv);if(this._cipherLength=0,t="additionalData"in e?n.util.createBuffer(e.additionalData):n.util.createBuffer(),this._tagLength="tagLength"in e?e.tagLength:128,this._tag=null,e.decrypt&&(this._tag=n.util.createBuffer(e.tag).getBytes(),this._tag.length!==this._tagLength/8))throw new Error("Authentication tag does not match tag length.");this._hashBlock=new Array(this._ints),this.tag=null,this._hashSubkey=new Array(this._ints),this.cipher.encrypt([0,0,0,0],this._hashSubkey),this.componentBits=4,this._m=this.generateHashTable(this._hashSubkey,this.componentBits);var i=r.length();if(12===i)this._j0=[r.getInt32(),r.getInt32(),r.getInt32(),1];else{this._j0=[0,0,0,0];while(r.length()>0)this._j0=this.ghash(this._hashSubkey,this._j0,[r.getInt32(),r.getInt32(),r.getInt32(),r.getInt32()]);this._j0=this.ghash(this._hashSubkey,this._j0,[0,0].concat(a(8*i)))}this._inBlock=this._j0.slice(0),o(this._inBlock),this._partialBytes=0,t=n.util.createBuffer(t),this._aDataLength=a(8*t.length());var s=t.length()%this.blockSize;s&&t.fillWithByte(0,this.blockSize-s),this._s=[0,0,0,0];while(t.length()>0)this._s=this.ghash(this._hashSubkey,this._s,[t.getInt32(),t.getInt32(),t.getInt32(),t.getInt32()])},i.gcm.prototype.encrypt=function(e,t,r){var n=e.length();if(0===n)return!0;if(this.cipher.encrypt(this._inBlock,this._outBlock),0===this._partialBytes&&n>=this.blockSize){for(var i=0;i0&&(s=this.blockSize-s),this._partialOutput.clear();for(i=0;i0&&this._partialOutput.getBytes(this._partialBytes),s>0&&!r)return e.read-=this.blockSize,t.putBytes(this._partialOutput.getBytes(s-this._partialBytes)),this._partialBytes=s,!0;t.putBytes(this._partialOutput.getBytes(n-this._partialBytes)),this._partialBytes=0}this._s=this.ghash(this._hashSubkey,this._s,this._outBlock),o(this._inBlock)},i.gcm.prototype.decrypt=function(e,t,r){var n=e.length();if(n0))return!0;this.cipher.encrypt(this._inBlock,this._outBlock),o(this._inBlock),this._hashBlock[0]=e.getInt32(),this._hashBlock[1]=e.getInt32(),this._hashBlock[2]=e.getInt32(),this._hashBlock[3]=e.getInt32(),this._s=this.ghash(this._hashSubkey,this._s,this._hashBlock);for(var i=0;i0;--n)t[n]=e[n]>>>1|(1&e[n-1])<<31;t[0]=e[0]>>>1,r&&(t[0]^=this._R)},i.gcm.prototype.tableMultiply=function(e){for(var t=[0,0,0,0],r=0;r<32;++r){var n=r/8|0,i=e[n]>>>4*(7-r%8)&15,s=this._m[r][i];t[0]^=s[0],t[1]^=s[1],t[2]^=s[2],t[3]^=s[3]}return t},i.gcm.prototype.ghash=function(e,t,r){return t[0]^=r[0],t[1]^=r[1],t[2]^=r[2],t[3]^=r[3],this.tableMultiply(t)},i.gcm.prototype.generateHashTable=function(e,t){for(var r=8/t,n=4*r,i=16*r,s=new Array(i),o=0;o>>1,i=new Array(r);i[n]=e.slice(0);var s=n>>>1;while(s>0)this.pow(i[2*s],i[s]=[]),s>>=1;s=2;while(s{if("string"===typeof e&&(e=t.from(e)),!t.isBuffer(e))throw new Error("Passed 'data' is not a buffer or a string!");r=r.map(e=>c.isDAGLink(e)?e:c.util.createDagLinkFromB58EncodedHash(e)),r=n(r,o);const s=i({Data:e,Links:r});return new a(e,r,s.length)};e.exports=u}).call(this,r("b639").Buffer)},"70cf2":function(e,t,r){"use strict";const n=r("220c"),i=r("1652"),s=r("8281"),o=r("e5c1");t.Key=n,t.MemoryDatastore=i,t.utils=s,t.Errors=o},"70e3":function(e,t,r){var n=r("2f07"),i=r("eb12"),s=r("ed4b");function o(){return Object.keys(s)}t.createCipher=t.Cipher=n.createCipher,t.createCipheriv=t.Cipheriv=n.createCipheriv,t.createDecipher=t.Decipher=i.createDecipher,t.createDecipheriv=t.Decipheriv=i.createDecipheriv,t.listCiphers=t.getCiphers=o},"70f8":function(e,t,r){"use strict";const{Buffer:n}=r("b639"),i=e=>{const t=new Array(4);for(let r=0;r<4;r++)t[r]=255&e,e>>=8;return n.from(t)};e.exports={fromNumberTo32BitBuf:i}},7107:function(e,t,r){"use strict";const n=r("1a18"),i=r("63e1"),s=r("e3d5"),o=r("09a4"),a=r("7048"),c=r("6f12"),{PinTypes:u}=r("22df");function l(e){if(s.isCID(e))return e;try{return new s(e)}catch(t){throw a(t,"ERR_INVALID_CID")}}e.exports=function(e){async function*t(t,r){r=r||{},Array.isArray(t)||(t=[t]);const n=await e._gcLock.writeLock();try{for(let n of t){n=l(n);const t={hash:n.toString()};try{const t=await e.pin.pinManager.isPinnedWithType(n,u.all);if(t.pinned){if(s.isCID(t.reason))throw a(new Error(`pinned via ${t.reason}`));throw a(new Error(`pinned: ${t.reason}`))}const r=await e._blockService._repo.blocks.has(n);if(!r)throw a(new Error("block not found"),"ERR_BLOCK_NOT_FOUND");await e._blockService.delete(n)}catch(i){r.force||(t.error=`cannot remove ${n}: ${i.message}`)}r.quiet||(yield t)}}finally{n()}}return{get:o.variadic(async(t,r)=>(r=r||{},t=l(t),!1!==r.preload&&e._preload(t),e._blockService.get(t))),put:o.variadic(async(t,r)=>{if(r=r||{},Array.isArray(t))throw new Error("Array is not supported");if(!n.isBlock(t))if(r.cid&&s.isCID(r.cid))t=new n(t,r.cid);else{const e=r.mhtype||"sha2-256",o=r.format||"dag-pb";let a;a=null==r.version?"sha2-256"===e&&"dag-pb"===o?0:1:r.version;const c=await i(t,e),u=new s(a,o,c);t=new n(t,u)}const o=await e._gcLock.readLock();try{return await e._blockService.put(t),!1!==r.preload&&e._preload(t.cid),t}finally{o()}}),rm:o.variadic(async(e,r)=>c(t(e,r))),_rmAsyncIterator:t,stat:o.variadic(async(t,r)=>{r=r||{},t=l(t),!1!==r.preload&&e._preload(t);const n=await e._blockService.get(t);return{key:t.toString(),size:n.data.length}})}}},7139:function(e,t,r){"use strict";const n=r("cd3f"),i=r("4f57")("hyperdiff"),s=r("a3b4"),o=e=>-1!==e;function a(){return{common:[],removed:[]}}function c(e,t,r){return r.every(r=>t[r]===e[r])}function u(e,t){return e.indexOf(t)}function l(e,t,r){return e.findIndex((function(e){return c(e,t,r)}))}function h(e,t){return{first:e,second:n(t)}}function f(e,t){return t?l:u}function d(e,t,r){const n=r?[].concat(r):[],{first:c,second:u}=h(e,t),l=f(n,r);i("preconditions first=%j second=%j findIndex=%s",c,u,l.name);const d=c.reduce((function(e,t,r){const a=l(u,t,n),c=o(a)?"common":"removed";return e[c].push(t),s(u,a),i("index=%s value=%s collection=%s",r,t,c),e}),a());return d.added=u,i("added=%j removed=%j common%j",d.added,d.removed,d.common),d}e.exports=d},"714a":function(e,t,r){"use strict";var n,i,s,o=[r("bba3"),r("06a1"),r("cd55"),r("856c"),r("e2a9")],a=-1,c=[],u=!1;function l(){n&&i&&(n=!1,i.length?c=i.concat(c):a=-1,c.length&&h())}function h(){if(!n){u=!1,n=!0;var e=c.length,t=setTimeout(l);while(e){i=c,c=[];while(i&&++a1)for(var r=1;r{const r=new n(e).child(new n(o)),i="function"===typeof t.getRaw?t.getRaw.bind(t):t.get.bind(t),s=await i(r);return h((s||"").toString().trim())},t.readme=i,t.parseShardFun=h,t.Prefix=c,t.Suffix=u,t.NextToLast=l},"71ad":function(e,t){function r(e,t){"function"===typeof e&&(t=e,e=!1);var r,n,i,s=[];function o(e,t){e&&(r=e,n&&l(r)),n=t,u()}function a(e){i=i||e||!0,u()}function c(e){i||(n?l(r,e):s.push(e))}return e?{push:c,end:a,source:o,buffer:s}:(o.push=c,o.end=a,o.buffer=s,o);function u(){n&&(r?l(r):!s.length&&i?l(i):s.length&&l(null,s.shift()))}function l(e,r){var i=n;if(e&&t){var s=t;t=null,s(!0===e?null:e)}n=null,i(e,r)}}e.exports=r},"71c7":function(e,t,r){var n=r("5995");r("31a0");var i=e.exports=n.pem=n.pem||{};function s(e){for(var t=e.name+": ",r=[],n=function(e,t){return" "+t},i=0;i65&&-1!==o){var a=t[o];","===a?(++o,t=t.substr(0,o)+"\r\n "+t.substr(o)):t=t.substr(0,o)+"\r\n"+a+t.substr(o+1),s=i-o-1,o=-1,++i}else" "!==t[i]&&"\t"!==t[i]&&","!==t[i]||(o=i);return t}function o(e){return e.replace(/^\s+/,"")}i.encode=function(e,t){t=t||{};var r,i="-----BEGIN "+e.type+"-----\r\n";if(e.procType&&(r={name:"Proc-Type",values:[String(e.procType.version),e.procType.type]},i+=s(r)),e.contentDomain&&(r={name:"Content-Domain",values:[e.contentDomain]},i+=s(r)),e.dekInfo&&(r={name:"DEK-Info",values:[e.dekInfo.algorithm]},e.dekInfo.parameters&&r.values.push(e.dekInfo.parameters),i+=s(r)),e.headers)for(var o=0;on[e]}},"720b":function(e,t,r){"use strict";const n=r("faa1").EventEmitter;class i extends n{static async create(e,t){}static get type(){throw new Error("'static get type ()' needs to be defined in the inheriting class")}get type(){return this.constructor.type}get address(){}async canAppend(e,t){}async grant(e,t){return!1}async revoke(e,t){return!1}async load(e){}async save(){}async close(){}}e.exports=i},"722f":function(e,t,r){"use strict";e.exports=r("f12b")},7247:function(e,t,r){"use strict";(function(t){function r(e){return parseInt(e)===e}function n(e){if(!r(e.length))return!1;for(var t=0;t255)return!1;return!0}function i(e,t){if(e.buffer&&ArrayBuffer.isView(e)&&"Uint8Array"===e.name)return t&&(e=e.slice?e.slice():Array.prototype.slice.call(e)),e;if(Array.isArray(e)){if(!n(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(r(e.length)&&n(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function s(e){return new Uint8Array(e)}function o(e,t,r,n,i){null==n&&null==i||(e=e.slice?e.slice(n,i):Array.prototype.slice.call(e,n,i)),t.set(e,r)}var a=function(){function e(e){var t=[],r=0;e=encodeURI(e);while(r191&&n<224?(t.push(String.fromCharCode((31&n)<<6|63&e[r+1])),r+=2):(t.push(String.fromCharCode((15&n)<<12|(63&e[r+1])<<6|63&e[r+2])),r+=3)}return t.join("")}return{toBytes:e,fromBytes:t}}(),c=function(){function e(e){for(var t=[],r=0;r>4]+t[15&i])}return r.join("")}return{toBytes:e,fromBytes:r}}(),u={16:10,24:12,32:14},l=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],h=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],f=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],d=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],p=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],y=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],g=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],m=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],b=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],v=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],w=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],_=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],E=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],S=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],k=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function C(e){for(var t=[],r=0;r>2,this._Ke[r][t%4]=s[t],this._Kd[e-r][t%4]=s[t];var o,a=0,c=i;while(c>16&255]<<24^h[o>>8&255]<<16^h[255&o]<<8^h[o>>24&255]^l[a]<<24,a+=1,8!=i)for(t=1;t>8&255]<<8^h[o>>16&255]<<16^h[o>>24&255]<<24;for(t=i/2+1;t>2,d=c%4,this._Ke[f][d]=s[t],this._Kd[e-f][d]=s[t++],c++}for(var f=1;f>24&255]^E[o>>16&255]^S[o>>8&255]^k[255&o]},A.prototype.encrypt=function(e){if(16!=e.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var t=this._Ke.length-1,r=[0,0,0,0],n=C(e),i=0;i<4;i++)n[i]^=this._Ke[0][i];for(var o=1;o>24&255]^p[n[(i+1)%4]>>16&255]^y[n[(i+2)%4]>>8&255]^g[255&n[(i+3)%4]]^this._Ke[o][i];n=r.slice()}var a,c=s(16);for(i=0;i<4;i++)a=this._Ke[t][i],c[4*i]=255&(h[n[i]>>24&255]^a>>24),c[4*i+1]=255&(h[n[(i+1)%4]>>16&255]^a>>16),c[4*i+2]=255&(h[n[(i+2)%4]>>8&255]^a>>8),c[4*i+3]=255&(h[255&n[(i+3)%4]]^a);return c},A.prototype.decrypt=function(e){if(16!=e.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var t=this._Kd.length-1,r=[0,0,0,0],n=C(e),i=0;i<4;i++)n[i]^=this._Kd[0][i];for(var o=1;o>24&255]^b[n[(i+3)%4]>>16&255]^v[n[(i+2)%4]>>8&255]^w[255&n[(i+1)%4]]^this._Kd[o][i];n=r.slice()}var a,c=s(16);for(i=0;i<4;i++)a=this._Kd[t][i],c[4*i]=255&(f[n[i]>>24&255]^a>>24),c[4*i+1]=255&(f[n[(i+3)%4]>>16&255]^a>>16),c[4*i+2]=255&(f[n[(i+2)%4]>>8&255]^a>>8),c[4*i+3]=255&(f[255&n[(i+1)%4]]^a);return c};var I=function(e){if(!(this instanceof I))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new A(e)};I.prototype.encrypt=function(e){if(e=i(e),e.length%16!==0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=s(e.length),r=s(16),n=0;n=0;--t)this._counter[t]=e%256,e>>=8},R.prototype.setBytes=function(e){if(e=i(e,!0),16!=e.length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},R.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var N=function(e,t){if(!(this instanceof N))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof R||(t=new R(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new A(e)};function O(e){e=i(e,!0);var t=16-e.length%16,r=s(e.length+t);o(e,r);for(var n=e.length;n16)throw new Error("PKCS#7 padding byte out of range");for(var r=e.length-t,n=0;n0===e.length?"ERROR_EMPTY":(e.forEach(e=>{if(!e.dial)return"ERR_NOT_A_TRANSPORT"}),!0),protector:e=>!!e.protect||"ERR_NOT_A_PROTECTOR"}}),l=u({connEncryption:o(a([u("object|function")])),connProtector:u("undefined|protector"),contentRouting:o(a(["object"])),dht:o(u("null|function|object")),pubsub:o(u("null|function|object")),peerDiscovery:o(a([u("object|function")])),peerRouting:o(a(["object"])),streamMuxer:o(a([u("object|function")])),transport:"transport"}),h=u({peerDiscovery:"object?",relay:"object?",dht:"object?",pubsub:"object?"}),f=u({switch:"object?",connectionManager:"object?",datastore:"object?",peerInfo:"object",peerBook:"object?",modules:l,config:h});e.exports.validate=e=>{e=n(c,e);const[t,r]=f.validate(e);if(t)throw new Error(`${t.message}${t.reason?" - "+t.reason:""}`);return(r.config.dht.enabled&&u("function|object")(r.modules.dht),r)}},"727b":function(e,t,r){"use strict";const n=r("f294"),i=r("c4bf"),s=r("87dd"),o=r("f2b9");class a extends o{constructor({connection:e,_switch:t,transportKey:r,peerInfo:s}){super({_switch:t,name:`inc:${t._peerInfo.id.toB58String().slice(0,8)}`}),this.conn=e,this.theirPeerInfo=s||null,this.theirB58Id=this.theirPeerInfo?this.theirPeerInfo.id.toB58String():null,this.ourPeerInfo=this.switch._peerInfo,this.transportKey=r,this.protocolMuxer=this.switch.protocolMuxer(this.transportKey),this.msListener=new i.Listener,this._state=n("DIALED",{DISCONNECTED:{disconnect:"DISCONNECTED"},DIALED:{privatize:"PRIVATIZING",encrypt:"ENCRYPTING"},PRIVATIZING:{done:"PRIVATIZED",disconnect:"DISCONNECTING"},PRIVATIZED:{encrypt:"ENCRYPTING"},ENCRYPTING:{done:"ENCRYPTED",disconnect:"DISCONNECTING"},ENCRYPTED:{upgrade:"UPGRADING",disconnect:"DISCONNECTING"},UPGRADING:{done:"MUXED"},MUXED:{disconnect:"DISCONNECTING"},DISCONNECTING:{done:"DISCONNECTED"}}),this._state.on("DISCONNECTED",()=>this._onDisconnected()),this._state.on("PRIVATIZING",()=>this._onPrivatizing()),this._state.on("PRIVATIZED",()=>this._onPrivatized()),this._state.on("ENCRYPTING",()=>this._onEncrypting()),this._state.on("ENCRYPTED",()=>{this.log("successfully encrypted connection to %s",this.theirB58Id||"unknown peer"),this.emit("encrypted",this.conn)}),this._state.on("UPGRADING",()=>this._onUpgrading()),this._state.on("MUXED",()=>{this.log("successfully muxed connection to %s",this.theirB58Id||"unknown peer"),this.emit("muxed",this.conn)}),this._state.on("DISCONNECTING",()=>{this._state("done")})}_onEncrypting(){this.log("encrypting connection via %s",this.switch.crypto.tag),this.msListener.addHandler(this.switch.crypto.tag,(e,t)=>{this.conn=this.switch.crypto.encrypt(this.ourPeerInfo.id,t,void 0,e=>{if(e)return this.close(e);this.conn.getPeerInfo((e,t)=>{this.theirPeerInfo=t,this._state("done")})})},null),this.msListener.handle(this.conn,e=>{e&&this.emit("crypto handshaking failed",e)})}_onUpgrading(){this.log("adding the protocol muxer to the connection"),this.protocolMuxer(this.conn,this.msListener),this._state("done")}}e.exports=s(a,{className:"IncomingConnectionFSM",symbolName:"libp2p-switch/IncomingConnectionFSM"})},"72af":function(e,t,r){"use strict";(function(n){const i=r("33fc"),s=r("5e55"),o=r("d1ae"),a=r("0841"),c=r("4bc2");function u(){return(~~(1e9*Math.random())).toString(36)}function l(e,t){i(s(n.isBuffer(e)?[e]:[n.from(e)]),a.encode(),o((e,r)=>{if(e)return t(e);t(null,r[0])}))}function h(e){const t=u();function r(e){return r=>{Array.isArray(r)&&(r=r.join(" ")),e("(%s) %s",t,r)}}const n=r(c("mss:"+e));return n.error=r(c("mss:"+e+":error")),n}t=e.exports,t.writeEncoded=(e,t,r)=>{l(t,(t,n)=>{if(t)return r(t);e.write(n)})},t.log={},t.log.dialer=()=>h("dialer\t"),t.log.listener=()=>h("listener\t")}).call(this,r("b639").Buffer)},"72e8":function(e,t){function r(e){var t,r=e.length;while(r--){if(t=e.readUInt8(r),255!==t){t++,e.writeUInt8(t,r);break}e.writeUInt8(0,r)}}e.exports=r},7328:function(e,t,r){"use strict";(function(t){const{Key:n,Errors:i,utils:s}=r("7b6d"),{filter:o,map:a,take:c,sortAll:u}=s;class l{constructor(e,t){let n;t&&t.db?(n=t.db,delete t.db):n=r("d508"),this.db=this._initDb(n,e,t)}_initDb(e,t,r){return e(t,{...r,valueEncoding:"binary",compression:!1})}async open(){try{await this.db.open()}catch(e){throw i.dbOpenFailedError(e)}}async put(e,t){try{await this.db.put(e.toString(),t)}catch(r){throw i.dbWriteFailedError(r)}}async get(e){let t;try{t=await this.db.get(e.toString())}catch(r){if(r.notFound)throw i.notFoundError(r);throw i.dbWriteFailedError(r)}return t}async has(e){try{await this.db.get(e.toString())}catch(t){if(t.notFound)return!1;throw t}return!0}async delete(e){try{await this.db.del(e.toString())}catch(t){throw i.dbDeleteFailedError(t)}}close(){return this.db.close()}batch(){const e=[];return{put:(t,r)=>{e.push({type:"put",key:t.toString(),value:r})},delete:t=>{e.push({type:"del",key:t.toString()})},commit:()=>this.db.batch(e)}}query(e){let r=!0;null!=e.keysOnly&&(r=!e.keysOnly);let i=h(this.db.db.iterator({keys:!0,values:r,keyAsBuffer:!0}));if(i=a(i,({key:e,value:i})=>{const s={key:new n(e,!1)};return r&&(s.value=t.from(i)),s}),null!=e.prefix&&(i=o(i,t=>t.key.toString().startsWith(e.prefix))),Array.isArray(e.filters)&&(i=e.filters.reduce((e,t)=>o(e,t),i)),Array.isArray(e.orders)&&(i=e.orders.reduce((e,t)=>u(e,t),i)),null!=e.offset){let t=0;i=o(i,()=>t++>=e.offset)}return null!=e.limit&&(i=c(i,e.limit)),i}}function h(e){return{next:()=>new Promise((t,r)=>{e.next((e,n,i)=>e?r(e):null==n?t({done:!0}):void t({done:!1,value:{key:n,value:i}}))}),return:()=>new Promise((t,r)=>{e.end(e=>{if(e)return r(e);t({done:!0})})}),[Symbol.asyncIterator](){return this}}}e.exports=l}).call(this,r("b639").Buffer)},7397:function(e,t,r){"use strict";const n=r("19e5"),i=r("2e53");e.exports={encodeBase32:e=>{const t=n.encode("base32",e).slice(1);return t.toString().toUpperCase()},validator:{func:(e,t,r)=>i.validator.validate(t,e,r)},selector:(e,t)=>i.validator.select(t[0],t[1])}},"73b5":function(e,t){function r(e){var t,r,n=!1,i=!1;function s(){if(e)return e(n&&!0!==n?n:i&&!0!==i?i:null)}function o(e){s();var r=t;t=null,r&&r(n||i)}function a(){i=i||!0,o(n||i),r&&r(n,(function(e){t&&t(e||n)}))}function c(e){return r=e,function(r,o){if(t=o,r&&(n=r),i)return o(i);n||(!0,e(r,(function(o,a){if(!1,n)return!r&&e(n,(function(){}));if(t){var c=t;t=null,o?(i=n||o,s(),c(n||o)):c(n||o,a)}})))}}return c.abort=function(e){i||(n=e||!0,a())},c}e.exports=r},"73bb":function(e,t,r){var n=r("5995");if(r("c882"),r("80f7"),r("84f3"),r("b3d5"),r("ce05"),r("58af"),r("71c7"),r("8f53"),r("3a70"),r("88cb"),r("31a0"),"undefined"===typeof i)var i=n.jsbn.BigInteger;var s=n.asn1,o=n.pki=n.pki||{};e.exports=o.pbe=n.pbe=n.pbe||{};var a=o.oids,c={name:"EncryptedPrivateKeyInfo",tagClass:s.Class.UNIVERSAL,type:s.Type.SEQUENCE,constructed:!0,value:[{name:"EncryptedPrivateKeyInfo.encryptionAlgorithm",tagClass:s.Class.UNIVERSAL,type:s.Type.SEQUENCE,constructed:!0,value:[{name:"AlgorithmIdentifier.algorithm",tagClass:s.Class.UNIVERSAL,type:s.Type.OID,constructed:!1,capture:"encryptionOid"},{name:"AlgorithmIdentifier.parameters",tagClass:s.Class.UNIVERSAL,type:s.Type.SEQUENCE,constructed:!0,captureAsn1:"encryptionParams"}]},{name:"EncryptedPrivateKeyInfo.encryptedData",tagClass:s.Class.UNIVERSAL,type:s.Type.OCTETSTRING,constructed:!1,capture:"encryptedData"}]},u={name:"PBES2Algorithms",tagClass:s.Class.UNIVERSAL,type:s.Type.SEQUENCE,constructed:!0,value:[{name:"PBES2Algorithms.keyDerivationFunc",tagClass:s.Class.UNIVERSAL,type:s.Type.SEQUENCE,constructed:!0,value:[{name:"PBES2Algorithms.keyDerivationFunc.oid",tagClass:s.Class.UNIVERSAL,type:s.Type.OID,constructed:!1,capture:"kdfOid"},{name:"PBES2Algorithms.params",tagClass:s.Class.UNIVERSAL,type:s.Type.SEQUENCE,constructed:!0,value:[{name:"PBES2Algorithms.params.salt",tagClass:s.Class.UNIVERSAL,type:s.Type.OCTETSTRING,constructed:!1,capture:"kdfSalt"},{name:"PBES2Algorithms.params.iterationCount",tagClass:s.Class.UNIVERSAL,type:s.Type.INTEGER,constructed:!1,capture:"kdfIterationCount"},{name:"PBES2Algorithms.params.keyLength",tagClass:s.Class.UNIVERSAL,type:s.Type.INTEGER,constructed:!1,optional:!0,capture:"keyLength"},{name:"PBES2Algorithms.params.prf",tagClass:s.Class.UNIVERSAL,type:s.Type.SEQUENCE,constructed:!0,optional:!0,value:[{name:"PBES2Algorithms.params.prf.algorithm",tagClass:s.Class.UNIVERSAL,type:s.Type.OID,constructed:!1,capture:"prfOid"}]}]}]},{name:"PBES2Algorithms.encryptionScheme",tagClass:s.Class.UNIVERSAL,type:s.Type.SEQUENCE,constructed:!0,value:[{name:"PBES2Algorithms.encryptionScheme.oid",tagClass:s.Class.UNIVERSAL,type:s.Type.OID,constructed:!1,capture:"encOid"},{name:"PBES2Algorithms.encryptionScheme.iv",tagClass:s.Class.UNIVERSAL,type:s.Type.OCTETSTRING,constructed:!1,capture:"encIv"}]}]},l={name:"pkcs-12PbeParams",tagClass:s.Class.UNIVERSAL,type:s.Type.SEQUENCE,constructed:!0,value:[{name:"pkcs-12PbeParams.salt",tagClass:s.Class.UNIVERSAL,type:s.Type.OCTETSTRING,constructed:!1,capture:"salt"},{name:"pkcs-12PbeParams.iterations",tagClass:s.Class.UNIVERSAL,type:s.Type.INTEGER,constructed:!1,capture:"iterations"}]};function h(e,t){return e.start().update(t).digest().getBytes()}function f(e){var t;if(e){if(t=o.oids[s.derToOid(e)],!t){var r=new Error("Unsupported PRF OID.");throw r.oid=e,r.supported=["hmacWithSHA1","hmacWithSHA224","hmacWithSHA256","hmacWithSHA384","hmacWithSHA512"],r}}else t="hmacWithSHA1";return d(t)}function d(e){var t=n.md;switch(e){case"hmacWithSHA224":t=n.md.sha512;case"hmacWithSHA1":case"hmacWithSHA256":case"hmacWithSHA384":case"hmacWithSHA512":e=e.substr(8).toLowerCase();break;default:var r=new Error("Unsupported PRF algorithm.");throw r.algorithm=e,r.supported=["hmacWithSHA1","hmacWithSHA224","hmacWithSHA256","hmacWithSHA384","hmacWithSHA512"],r}if(!t||!(e in t))throw new Error("Unknown hash algorithm: "+e);return t[e].create()}function p(e,t,r,i){var a=s.create(s.Class.UNIVERSAL,s.Type.SEQUENCE,!0,[s.create(s.Class.UNIVERSAL,s.Type.OCTETSTRING,!1,e),s.create(s.Class.UNIVERSAL,s.Type.INTEGER,!1,t.getBytes())]);return"hmacWithSHA1"!==i&&a.value.push(s.create(s.Class.UNIVERSAL,s.Type.INTEGER,!1,n.util.hexToBytes(r.toString(16))),s.create(s.Class.UNIVERSAL,s.Type.SEQUENCE,!0,[s.create(s.Class.UNIVERSAL,s.Type.OID,!1,s.oidToDer(o.oids[i]).getBytes()),s.create(s.Class.UNIVERSAL,s.Type.NULL,!1,"")])),a}o.encryptPrivateKeyInfo=function(e,t,r){r=r||{},r.saltSize=r.saltSize||8,r.count=r.count||2048,r.algorithm=r.algorithm||"aes128",r.prfAlgorithm=r.prfAlgorithm||"sha1";var i,c,u,l=n.random.getBytesSync(r.saltSize),h=r.count,f=s.integerToDer(h);if(0===r.algorithm.indexOf("aes")||"des"===r.algorithm){var y,g,m;switch(r.algorithm){case"aes128":i=16,y=16,g=a["aes128-CBC"],m=n.aes.createEncryptionCipher;break;case"aes192":i=24,y=16,g=a["aes192-CBC"],m=n.aes.createEncryptionCipher;break;case"aes256":i=32,y=16,g=a["aes256-CBC"],m=n.aes.createEncryptionCipher;break;case"des":i=8,y=8,g=a["desCBC"],m=n.des.createEncryptionCipher;break;default:var b=new Error("Cannot encrypt private key. Unknown encryption algorithm.");throw b.algorithm=r.algorithm,b}var v="hmacWith"+r.prfAlgorithm.toUpperCase(),w=d(v),_=n.pkcs5.pbkdf2(t,l,h,i,w),E=n.random.getBytesSync(y),S=m(_);S.start(E),S.update(s.toDer(e)),S.finish(),u=S.output.getBytes();var k=p(l,f,i,v);c=s.create(s.Class.UNIVERSAL,s.Type.SEQUENCE,!0,[s.create(s.Class.UNIVERSAL,s.Type.OID,!1,s.oidToDer(a["pkcs5PBES2"]).getBytes()),s.create(s.Class.UNIVERSAL,s.Type.SEQUENCE,!0,[s.create(s.Class.UNIVERSAL,s.Type.SEQUENCE,!0,[s.create(s.Class.UNIVERSAL,s.Type.OID,!1,s.oidToDer(a["pkcs5PBKDF2"]).getBytes()),k]),s.create(s.Class.UNIVERSAL,s.Type.SEQUENCE,!0,[s.create(s.Class.UNIVERSAL,s.Type.OID,!1,s.oidToDer(g).getBytes()),s.create(s.Class.UNIVERSAL,s.Type.OCTETSTRING,!1,E)])])])}else{if("3des"!==r.algorithm){b=new Error("Cannot encrypt private key. Unknown encryption algorithm.");throw b.algorithm=r.algorithm,b}i=24;var C=new n.util.ByteBuffer(l);_=o.pbe.generatePkcs12Key(t,C,1,h,i),E=o.pbe.generatePkcs12Key(t,C,2,h,i),S=n.des.createEncryptionCipher(_);S.start(E),S.update(s.toDer(e)),S.finish(),u=S.output.getBytes(),c=s.create(s.Class.UNIVERSAL,s.Type.SEQUENCE,!0,[s.create(s.Class.UNIVERSAL,s.Type.OID,!1,s.oidToDer(a["pbeWithSHAAnd3-KeyTripleDES-CBC"]).getBytes()),s.create(s.Class.UNIVERSAL,s.Type.SEQUENCE,!0,[s.create(s.Class.UNIVERSAL,s.Type.OCTETSTRING,!1,l),s.create(s.Class.UNIVERSAL,s.Type.INTEGER,!1,f.getBytes())])])}var A=s.create(s.Class.UNIVERSAL,s.Type.SEQUENCE,!0,[c,s.create(s.Class.UNIVERSAL,s.Type.OCTETSTRING,!1,u)]);return A},o.decryptPrivateKeyInfo=function(e,t){var r=null,i={},a=[];if(!s.validate(e,c,i,a)){var u=new Error("Cannot read encrypted private key. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw u.errors=a,u}var l=s.derToOid(i.encryptionOid),h=o.pbe.getCipher(l,i.encryptionParams,t),f=n.util.createBuffer(i.encryptedData);return h.update(f),h.finish()&&(r=s.fromDer(h.output)),r},o.encryptedPrivateKeyToPem=function(e,t){var r={type:"ENCRYPTED PRIVATE KEY",body:s.toDer(e).getBytes()};return n.pem.encode(r,{maxline:t})},o.encryptedPrivateKeyFromPem=function(e){var t=n.pem.decode(e)[0];if("ENCRYPTED PRIVATE KEY"!==t.type){var r=new Error('Could not convert encrypted private key from PEM; PEM header type is "ENCRYPTED PRIVATE KEY".');throw r.headerType=t.type,r}if(t.procType&&"ENCRYPTED"===t.procType.type)throw new Error("Could not convert encrypted private key from PEM; PEM is encrypted.");return s.fromDer(t.body)},o.encryptRsaPrivateKey=function(e,t,r){if(r=r||{},!r.legacy){var i=o.wrapRsaPrivateKey(o.privateKeyToAsn1(e));return i=o.encryptPrivateKeyInfo(i,t,r),o.encryptedPrivateKeyToPem(i)}var a,c,u,l;switch(r.algorithm){case"aes128":a="AES-128-CBC",u=16,c=n.random.getBytesSync(16),l=n.aes.createEncryptionCipher;break;case"aes192":a="AES-192-CBC",u=24,c=n.random.getBytesSync(16),l=n.aes.createEncryptionCipher;break;case"aes256":a="AES-256-CBC",u=32,c=n.random.getBytesSync(16),l=n.aes.createEncryptionCipher;break;case"3des":a="DES-EDE3-CBC",u=24,c=n.random.getBytesSync(8),l=n.des.createEncryptionCipher;break;case"des":a="DES-CBC",u=8,c=n.random.getBytesSync(8),l=n.des.createEncryptionCipher;break;default:var h=new Error('Could not encrypt RSA private key; unsupported encryption algorithm "'+r.algorithm+'".');throw h.algorithm=r.algorithm,h}var f=n.pbe.opensslDeriveBytes(t,c.substr(0,8),u),d=l(f);d.start(c),d.update(s.toDer(o.privateKeyToAsn1(e))),d.finish();var p={type:"RSA PRIVATE KEY",procType:{version:"4",type:"ENCRYPTED"},dekInfo:{algorithm:a,parameters:n.util.bytesToHex(c).toUpperCase()},body:d.output.getBytes()};return n.pem.encode(p)},o.decryptRsaPrivateKey=function(e,t){var r=null,i=n.pem.decode(e)[0];if("ENCRYPTED PRIVATE KEY"!==i.type&&"PRIVATE KEY"!==i.type&&"RSA PRIVATE KEY"!==i.type){var a=new Error('Could not convert private key from PEM; PEM header type is not "ENCRYPTED PRIVATE KEY", "PRIVATE KEY", or "RSA PRIVATE KEY".');throw a.headerType=a,a}if(i.procType&&"ENCRYPTED"===i.procType.type){var c,u;switch(i.dekInfo.algorithm){case"DES-CBC":c=8,u=n.des.createDecryptionCipher;break;case"DES-EDE3-CBC":c=24,u=n.des.createDecryptionCipher;break;case"AES-128-CBC":c=16,u=n.aes.createDecryptionCipher;break;case"AES-192-CBC":c=24,u=n.aes.createDecryptionCipher;break;case"AES-256-CBC":c=32,u=n.aes.createDecryptionCipher;break;case"RC2-40-CBC":c=5,u=function(e){return n.rc2.createDecryptionCipher(e,40)};break;case"RC2-64-CBC":c=8,u=function(e){return n.rc2.createDecryptionCipher(e,64)};break;case"RC2-128-CBC":c=16,u=function(e){return n.rc2.createDecryptionCipher(e,128)};break;default:a=new Error('Could not decrypt private key; unsupported encryption algorithm "'+i.dekInfo.algorithm+'".');throw a.algorithm=i.dekInfo.algorithm,a}var l=n.util.hexToBytes(i.dekInfo.parameters),h=n.pbe.opensslDeriveBytes(t,l.substr(0,8),c),f=u(h);if(f.start(l),f.update(n.util.createBuffer(i.body)),!f.finish())return r;r=f.output.getBytes()}else r=i.body;return r="ENCRYPTED PRIVATE KEY"===i.type?o.decryptPrivateKeyInfo(s.fromDer(r),t):s.fromDer(r),null!==r&&(r=o.privateKeyFromAsn1(r)),r},o.pbe.generatePkcs12Key=function(e,t,r,i,s,o){var a,c;if("undefined"===typeof o||null===o){if(!("sha1"in n.md))throw new Error('"sha1" hash algorithm unavailable.');o=n.md.sha1.create()}var u=o.digestLength,l=o.blockLength,h=new n.util.ByteBuffer,f=new n.util.ByteBuffer;if(null!==e&&void 0!==e){for(c=0;c=0;c--)x>>=8,x+=C.at(c)+T.at(c),T.setAt(c,255&x);I.putBuffer(T)}w=I,h.putBuffer(S)}return h.truncate(h.length()-s),h},o.pbe.getCipher=function(e,t,r){switch(e){case o.oids["pkcs5PBES2"]:return o.pbe.getCipherForPBES2(e,t,r);case o.oids["pbeWithSHAAnd3-KeyTripleDES-CBC"]:case o.oids["pbewithSHAAnd40BitRC2-CBC"]:return o.pbe.getCipherForPKCS12PBE(e,t,r);default:var n=new Error("Cannot read encrypted PBE data block. Unsupported OID.");throw n.oid=e,n.supportedOids=["pkcs5PBES2","pbeWithSHAAnd3-KeyTripleDES-CBC","pbewithSHAAnd40BitRC2-CBC"],n}},o.pbe.getCipherForPBES2=function(e,t,r){var i={},a=[];if(!s.validate(t,u,i,a)){var c=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw c.errors=a,c}if(e=s.derToOid(i.kdfOid),e!==o.oids["pkcs5PBKDF2"]){c=new Error("Cannot read encrypted private key. Unsupported key derivation function OID.");throw c.oid=e,c.supportedOids=["pkcs5PBKDF2"],c}if(e=s.derToOid(i.encOid),e!==o.oids["aes128-CBC"]&&e!==o.oids["aes192-CBC"]&&e!==o.oids["aes256-CBC"]&&e!==o.oids["des-EDE3-CBC"]&&e!==o.oids["desCBC"]){c=new Error("Cannot read encrypted private key. Unsupported encryption scheme OID.");throw c.oid=e,c.supportedOids=["aes128-CBC","aes192-CBC","aes256-CBC","des-EDE3-CBC","desCBC"],c}var l,h,d=i.kdfSalt,p=n.util.createBuffer(i.kdfIterationCount);switch(p=p.getInt(p.length()<<3),o.oids[e]){case"aes128-CBC":l=16,h=n.aes.createDecryptionCipher;break;case"aes192-CBC":l=24,h=n.aes.createDecryptionCipher;break;case"aes256-CBC":l=32,h=n.aes.createDecryptionCipher;break;case"des-EDE3-CBC":l=24,h=n.des.createDecryptionCipher;break;case"desCBC":l=8,h=n.des.createDecryptionCipher;break}var y=f(i.prfOid),g=n.pkcs5.pbkdf2(r,d,p,l,y),m=i.encIv,b=h(g);return b.start(m),b},o.pbe.getCipherForPKCS12PBE=function(e,t,r){var i={},a=[];if(!s.validate(t,l,i,a)){var c=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw c.errors=a,c}var u,h,d,p=n.util.createBuffer(i.salt),y=n.util.createBuffer(i.iterations);switch(y=y.getInt(y.length()<<3),e){case o.oids["pbeWithSHAAnd3-KeyTripleDES-CBC"]:u=24,h=8,d=n.des.startDecrypting;break;case o.oids["pbewithSHAAnd40BitRC2-CBC"]:u=5,h=8,d=function(e,t){var r=n.rc2.createDecryptionCipher(e,40);return r.start(t,null),r};break;default:c=new Error("Cannot read PKCS #12 PBE data block. Unsupported OID.");throw c.oid=e,c}var g=f(i.prfOid),m=o.pbe.generatePkcs12Key(r,p,1,y,u,g);g.start();var b=o.pbe.generatePkcs12Key(r,p,2,y,h,g);return d(m,b)},o.pbe.opensslDeriveBytes=function(e,t,r,i){if("undefined"===typeof i||null===i){if(!("md5"in n.md))throw new Error('"md5" hash algorithm unavailable.');i=n.md.md5.create()}null===t&&(t="");for(var s=[h(i,e+t)],o=16,a=1;oasync r=>{const i=t.init(e,null);return t.update(i,r),n.from(t.digest(i))};e.exports=e=>{for(let t=0;t<64;t++)e[s+t]=u(t+1,a);for(let t=0;t<32;t++)e[o+t]=u(t+1,c)}},"746f":function(e,t,r){var n=r("428f"),i=r("5135"),s=r("e538"),o=r("9bf2").f;e.exports=function(e){var t=n.Symbol||(n.Symbol={});i(t,e)||o(t,e,{value:s.f(e)})}},7483:function(e,t,r){"use strict";(function(t){const n=r("b62c"),i=r("1f47").encode,s=r("22ac"),o=r("65e3"),a=r("d58b"),c=r("c59f"),{getRequest:u}=r("ff6b"),l=r("014a"),h=r("e73e"),f=r("4bc2")("ipfs-http-client:request");function d(e){return e.headers["content-type"]&&0===e.headers["content-type"].indexOf("application/json")}function p(e,t){const r=new Error(`Server responded with ${e.statusCode}`);if(r.statusCode=e.statusCode,!d(e))return l(e,(e,n)=>{n&&n.length&&(r.message=n.toString()),t(r)});h(e,(e,n)=>{if(e)return t(e);n&&(r.code=n.Code,r.message=n.Message||n.toString(),r.type=n.Type),t(r)})}function y(e,t){return r=>{const n=Boolean(r.headers["x-stream-output"]),i=Boolean(r.headers["x-chunked-output"]),s=d(r);if(r.req?f(r.req.method,`${r.req.getHeaders().host}${r.req.path}`,r.statusCode,r.statusMessage):f(r.url,r.statusCode,r.statusMessage),r.statusCode>=400||!r.statusCode)return p(r,t);if(n&&!e)return t(null,r);if(i&&s){const e=o.parse();return a(r,e),r.on("end",()=>{let t=r.trailers["x-stream-error"];if(t){try{t=JSON.parse(t)}catch(n){t={Message:t}}e.emit("error",new Error(t.Message))}}),t(null,e)}return s?h(r,t):l(r,t)}}function g(e,r,o){o=c(o),r.qs=r.qs||{},Array.isArray(r.path)&&(r.path=r.path.join("/")),r.args&&!Array.isArray(r.args)&&(r.args=[r.args]),r.args&&(r.qs.arg=r.args),r.progress&&(r.qs.progress=!0),r.qs.r&&(r.qs.recursive=r.qs.r,delete r.qs.r),r.qs["stream-channels"]=!0,r.stream&&(r.buffer=!1),delete r.qs.followSymlinks;const a="POST",l=Object.assign({},e.headers);if(s&&(l["User-Agent"]=e["user-agent"]),r.multipart){if(!r.multipartBoundary)return o(new Error("No multipartBoundary"));l["Content-Type"]=`multipart/form-data; boundary=${r.multipartBoundary}`}const h=n.stringify(r.qs,{arrayFormat:"repeat",encoder:e=>{if(t.isBuffer(e)){let t="";for(const r of e)if(r>=65&&r<=90||r>=97&&r<=122||r>=48&&r<=57||45===r||46===r||95===r||126===r)t+=String.fromCharCode(r);else{const e=r.toString(16),n=1===e.length?`0${e}`:e;t+=`%${n}`}return t}return i(e)}}),f={hostname:e.host,path:`${e["api-path"]}${r.path}?${h}`,port:e.port,method:a,headers:l,protocol:`${e.protocol}:`},d=u(f,y(r.buffer,o));return d.on("error",e=>{o(e)}),r.stream||d.end(),d}e.exports=e=>{const t=(t,r)=>"object"!==typeof t?r(new Error("no options were passed")):g(e,t,r);return t.andTransform=(e,r,n)=>t(e,(e,t)=>{if(e)return n(e);r(t,n)}),t}}).call(this,r("b639").Buffer)},"748a":function(e,t,r){(function(e){"use strict";var t=function(e){var t,r=new Float64Array(16);if(e)for(t=0;t>24&255,e[t+1]=r>>16&255,e[t+2]=r>>8&255,e[t+3]=255&r,e[t+4]=n>>24&255,e[t+5]=n>>16&255,e[t+6]=n>>8&255,e[t+7]=255&n}function y(e,t,r,n,i){var s,o=0;for(s=0;s>>8)-1}function g(e,t,r,n){return y(e,t,r,n,16)}function m(e,t,r,n){return y(e,t,r,n,32)}function b(e,t,r,n){for(var i,s=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,o=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,a=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,c=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,u=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,l=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,h=255&t[0]|(255&t[1])<<8|(255&t[2])<<16|(255&t[3])<<24,f=255&t[4]|(255&t[5])<<8|(255&t[6])<<16|(255&t[7])<<24,d=255&t[8]|(255&t[9])<<8|(255&t[10])<<16|(255&t[11])<<24,p=255&t[12]|(255&t[13])<<8|(255&t[14])<<16|(255&t[15])<<24,y=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,g=255&r[16]|(255&r[17])<<8|(255&r[18])<<16|(255&r[19])<<24,m=255&r[20]|(255&r[21])<<8|(255&r[22])<<16|(255&r[23])<<24,b=255&r[24]|(255&r[25])<<8|(255&r[26])<<16|(255&r[27])<<24,v=255&r[28]|(255&r[29])<<8|(255&r[30])<<16|(255&r[31])<<24,w=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,_=s,E=o,S=a,k=c,C=u,A=l,I=h,T=f,x=d,B=p,R=y,N=g,O=m,P=b,D=v,L=w,M=0;M<20;M+=2)i=_+O|0,C^=i<<7|i>>>25,i=C+_|0,x^=i<<9|i>>>23,i=x+C|0,O^=i<<13|i>>>19,i=O+x|0,_^=i<<18|i>>>14,i=A+E|0,B^=i<<7|i>>>25,i=B+A|0,P^=i<<9|i>>>23,i=P+B|0,E^=i<<13|i>>>19,i=E+P|0,A^=i<<18|i>>>14,i=R+I|0,D^=i<<7|i>>>25,i=D+R|0,S^=i<<9|i>>>23,i=S+D|0,I^=i<<13|i>>>19,i=I+S|0,R^=i<<18|i>>>14,i=L+N|0,k^=i<<7|i>>>25,i=k+L|0,T^=i<<9|i>>>23,i=T+k|0,N^=i<<13|i>>>19,i=N+T|0,L^=i<<18|i>>>14,i=_+k|0,E^=i<<7|i>>>25,i=E+_|0,S^=i<<9|i>>>23,i=S+E|0,k^=i<<13|i>>>19,i=k+S|0,_^=i<<18|i>>>14,i=A+C|0,I^=i<<7|i>>>25,i=I+A|0,T^=i<<9|i>>>23,i=T+I|0,C^=i<<13|i>>>19,i=C+T|0,A^=i<<18|i>>>14,i=R+B|0,N^=i<<7|i>>>25,i=N+R|0,x^=i<<9|i>>>23,i=x+N|0,B^=i<<13|i>>>19,i=B+x|0,R^=i<<18|i>>>14,i=L+D|0,O^=i<<7|i>>>25,i=O+L|0,P^=i<<9|i>>>23,i=P+O|0,D^=i<<13|i>>>19,i=D+P|0,L^=i<<18|i>>>14;_=_+s|0,E=E+o|0,S=S+a|0,k=k+c|0,C=C+u|0,A=A+l|0,I=I+h|0,T=T+f|0,x=x+d|0,B=B+p|0,R=R+y|0,N=N+g|0,O=O+m|0,P=P+b|0,D=D+v|0,L=L+w|0,e[0]=_>>>0&255,e[1]=_>>>8&255,e[2]=_>>>16&255,e[3]=_>>>24&255,e[4]=E>>>0&255,e[5]=E>>>8&255,e[6]=E>>>16&255,e[7]=E>>>24&255,e[8]=S>>>0&255,e[9]=S>>>8&255,e[10]=S>>>16&255,e[11]=S>>>24&255,e[12]=k>>>0&255,e[13]=k>>>8&255,e[14]=k>>>16&255,e[15]=k>>>24&255,e[16]=C>>>0&255,e[17]=C>>>8&255,e[18]=C>>>16&255,e[19]=C>>>24&255,e[20]=A>>>0&255,e[21]=A>>>8&255,e[22]=A>>>16&255,e[23]=A>>>24&255,e[24]=I>>>0&255,e[25]=I>>>8&255,e[26]=I>>>16&255,e[27]=I>>>24&255,e[28]=T>>>0&255,e[29]=T>>>8&255,e[30]=T>>>16&255,e[31]=T>>>24&255,e[32]=x>>>0&255,e[33]=x>>>8&255,e[34]=x>>>16&255,e[35]=x>>>24&255,e[36]=B>>>0&255,e[37]=B>>>8&255,e[38]=B>>>16&255,e[39]=B>>>24&255,e[40]=R>>>0&255,e[41]=R>>>8&255,e[42]=R>>>16&255,e[43]=R>>>24&255,e[44]=N>>>0&255,e[45]=N>>>8&255,e[46]=N>>>16&255,e[47]=N>>>24&255,e[48]=O>>>0&255,e[49]=O>>>8&255,e[50]=O>>>16&255,e[51]=O>>>24&255,e[52]=P>>>0&255,e[53]=P>>>8&255,e[54]=P>>>16&255,e[55]=P>>>24&255,e[56]=D>>>0&255,e[57]=D>>>8&255,e[58]=D>>>16&255,e[59]=D>>>24&255,e[60]=L>>>0&255,e[61]=L>>>8&255,e[62]=L>>>16&255,e[63]=L>>>24&255}function v(e,t,r,n){for(var i,s=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,o=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,a=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,c=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,u=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,l=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,h=255&t[0]|(255&t[1])<<8|(255&t[2])<<16|(255&t[3])<<24,f=255&t[4]|(255&t[5])<<8|(255&t[6])<<16|(255&t[7])<<24,d=255&t[8]|(255&t[9])<<8|(255&t[10])<<16|(255&t[11])<<24,p=255&t[12]|(255&t[13])<<8|(255&t[14])<<16|(255&t[15])<<24,y=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,g=255&r[16]|(255&r[17])<<8|(255&r[18])<<16|(255&r[19])<<24,m=255&r[20]|(255&r[21])<<8|(255&r[22])<<16|(255&r[23])<<24,b=255&r[24]|(255&r[25])<<8|(255&r[26])<<16|(255&r[27])<<24,v=255&r[28]|(255&r[29])<<8|(255&r[30])<<16|(255&r[31])<<24,w=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,_=s,E=o,S=a,k=c,C=u,A=l,I=h,T=f,x=d,B=p,R=y,N=g,O=m,P=b,D=v,L=w,M=0;M<20;M+=2)i=_+O|0,C^=i<<7|i>>>25,i=C+_|0,x^=i<<9|i>>>23,i=x+C|0,O^=i<<13|i>>>19,i=O+x|0,_^=i<<18|i>>>14,i=A+E|0,B^=i<<7|i>>>25,i=B+A|0,P^=i<<9|i>>>23,i=P+B|0,E^=i<<13|i>>>19,i=E+P|0,A^=i<<18|i>>>14,i=R+I|0,D^=i<<7|i>>>25,i=D+R|0,S^=i<<9|i>>>23,i=S+D|0,I^=i<<13|i>>>19,i=I+S|0,R^=i<<18|i>>>14,i=L+N|0,k^=i<<7|i>>>25,i=k+L|0,T^=i<<9|i>>>23,i=T+k|0,N^=i<<13|i>>>19,i=N+T|0,L^=i<<18|i>>>14,i=_+k|0,E^=i<<7|i>>>25,i=E+_|0,S^=i<<9|i>>>23,i=S+E|0,k^=i<<13|i>>>19,i=k+S|0,_^=i<<18|i>>>14,i=A+C|0,I^=i<<7|i>>>25,i=I+A|0,T^=i<<9|i>>>23,i=T+I|0,C^=i<<13|i>>>19,i=C+T|0,A^=i<<18|i>>>14,i=R+B|0,N^=i<<7|i>>>25,i=N+R|0,x^=i<<9|i>>>23,i=x+N|0,B^=i<<13|i>>>19,i=B+x|0,R^=i<<18|i>>>14,i=L+D|0,O^=i<<7|i>>>25,i=O+L|0,P^=i<<9|i>>>23,i=P+O|0,D^=i<<13|i>>>19,i=D+P|0,L^=i<<18|i>>>14;e[0]=_>>>0&255,e[1]=_>>>8&255,e[2]=_>>>16&255,e[3]=_>>>24&255,e[4]=A>>>0&255,e[5]=A>>>8&255,e[6]=A>>>16&255,e[7]=A>>>24&255,e[8]=R>>>0&255,e[9]=R>>>8&255,e[10]=R>>>16&255,e[11]=R>>>24&255,e[12]=L>>>0&255,e[13]=L>>>8&255,e[14]=L>>>16&255,e[15]=L>>>24&255,e[16]=I>>>0&255,e[17]=I>>>8&255,e[18]=I>>>16&255,e[19]=I>>>24&255,e[20]=T>>>0&255,e[21]=T>>>8&255,e[22]=T>>>16&255,e[23]=T>>>24&255,e[24]=x>>>0&255,e[25]=x>>>8&255,e[26]=x>>>16&255,e[27]=x>>>24&255,e[28]=B>>>0&255,e[29]=B>>>8&255,e[30]=B>>>16&255,e[31]=B>>>24&255}function w(e,t,r,n){b(e,t,r,n)}function _(e,t,r,n){v(e,t,r,n)}var E=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function S(e,t,r,n,i,s,o){var a,c,u=new Uint8Array(16),l=new Uint8Array(64);for(c=0;c<16;c++)u[c]=0;for(c=0;c<8;c++)u[c]=s[c];while(i>=64){for(w(l,u,o,E),c=0;c<64;c++)e[t+c]=r[n+c]^l[c];for(a=1,c=8;c<16;c++)a=a+(255&u[c])|0,u[c]=255&a,a>>>=8;i-=64,t+=64,n+=64}if(i>0)for(w(l,u,o,E),c=0;c=64){for(w(c,a,i,E),o=0;o<64;o++)e[t+o]=c[o];for(s=1,o=8;o<16;o++)s=s+(255&a[o])|0,a[o]=255&s,s>>>=8;r-=64,t+=64}if(r>0)for(w(c,a,i,E),o=0;o>>13|r<<3),n=255&e[4]|(255&e[5])<<8,this.r[2]=7939&(r>>>10|n<<6),i=255&e[6]|(255&e[7])<<8,this.r[3]=8191&(n>>>7|i<<9),s=255&e[8]|(255&e[9])<<8,this.r[4]=255&(i>>>4|s<<12),this.r[5]=s>>>1&8190,o=255&e[10]|(255&e[11])<<8,this.r[6]=8191&(s>>>14|o<<2),a=255&e[12]|(255&e[13])<<8,this.r[7]=8065&(o>>>11|a<<5),c=255&e[14]|(255&e[15])<<8,this.r[8]=8191&(a>>>8|c<<8),this.r[9]=c>>>5&127,this.pad[0]=255&e[16]|(255&e[17])<<8,this.pad[1]=255&e[18]|(255&e[19])<<8,this.pad[2]=255&e[20]|(255&e[21])<<8,this.pad[3]=255&e[22]|(255&e[23])<<8,this.pad[4]=255&e[24]|(255&e[25])<<8,this.pad[5]=255&e[26]|(255&e[27])<<8,this.pad[6]=255&e[28]|(255&e[29])<<8,this.pad[7]=255&e[30]|(255&e[31])<<8};function T(e,t,r,n,i,s){var o=new I(s);return o.update(r,n,i),o.finish(e,t),0}function x(e,t,r,n,i,s){var o=new Uint8Array(16);return T(o,0,r,n,i,s),g(e,t,o,0)}function B(e,t,r,n,i){var s;if(r<32)return-1;for(A(e,0,t,0,r,n,i),T(e,16,e,32,r-32,e),s=0;s<16;s++)e[s]=0;return 0}function R(e,t,r,n,i){var s,o=new Uint8Array(32);if(r<32)return-1;if(C(o,0,32,n,i),0!==x(t,16,t,32,r-32,o))return-1;for(A(e,0,t,0,r,n,i),s=0;s<32;s++)e[s]=0;return 0}function N(e,t){var r;for(r=0;r<16;r++)e[r]=0|t[r]}function O(e){var t,r,n=1;for(t=0;t<16;t++)r=e[t]+n+65535,n=Math.floor(r/65536),e[t]=r-65536*n;e[0]+=n-1+37*(n-1)}function P(e,t,r){for(var n,i=~(r-1),s=0;s<16;s++)n=i&(e[s]^t[s]),e[s]^=n,t[s]^=n}function D(e,r){var n,i,s,o=t(),a=t();for(n=0;n<16;n++)a[n]=r[n];for(O(a),O(a),O(a),i=0;i<2;i++){for(o[0]=a[0]-65517,n=1;n<15;n++)o[n]=a[n]-65535-(o[n-1]>>16&1),o[n-1]&=65535;o[15]=a[15]-32767-(o[14]>>16&1),s=o[15]>>16&1,o[14]&=65535,P(a,o,1-s)}for(n=0;n<16;n++)e[2*n]=255&a[n],e[2*n+1]=a[n]>>8}function L(e,t){var r=new Uint8Array(32),n=new Uint8Array(32);return D(r,e),D(n,t),m(r,0,n,0)}function M(e){var t=new Uint8Array(32);return D(t,e),1&t[0]}function U(e,t){var r;for(r=0;r<16;r++)e[r]=t[2*r]+(t[2*r+1]<<8);e[15]&=32767}function j(e,t,r){for(var n=0;n<16;n++)e[n]=t[n]+r[n]}function K(e,t,r){for(var n=0;n<16;n++)e[n]=t[n]-r[n]}function F(e,t,r){var n,i,s=0,o=0,a=0,c=0,u=0,l=0,h=0,f=0,d=0,p=0,y=0,g=0,m=0,b=0,v=0,w=0,_=0,E=0,S=0,k=0,C=0,A=0,I=0,T=0,x=0,B=0,R=0,N=0,O=0,P=0,D=0,L=r[0],M=r[1],U=r[2],j=r[3],K=r[4],F=r[5],V=r[6],q=r[7],z=r[8],H=r[9],G=r[10],$=r[11],W=r[12],Y=r[13],Q=r[14],J=r[15];n=t[0],s+=n*L,o+=n*M,a+=n*U,c+=n*j,u+=n*K,l+=n*F,h+=n*V,f+=n*q,d+=n*z,p+=n*H,y+=n*G,g+=n*$,m+=n*W,b+=n*Y,v+=n*Q,w+=n*J,n=t[1],o+=n*L,a+=n*M,c+=n*U,u+=n*j,l+=n*K,h+=n*F,f+=n*V,d+=n*q,p+=n*z,y+=n*H,g+=n*G,m+=n*$,b+=n*W,v+=n*Y,w+=n*Q,_+=n*J,n=t[2],a+=n*L,c+=n*M,u+=n*U,l+=n*j,h+=n*K,f+=n*F,d+=n*V,p+=n*q,y+=n*z,g+=n*H,m+=n*G,b+=n*$,v+=n*W,w+=n*Y,_+=n*Q,E+=n*J,n=t[3],c+=n*L,u+=n*M,l+=n*U,h+=n*j,f+=n*K,d+=n*F,p+=n*V,y+=n*q,g+=n*z,m+=n*H,b+=n*G,v+=n*$,w+=n*W,_+=n*Y,E+=n*Q,S+=n*J,n=t[4],u+=n*L,l+=n*M,h+=n*U,f+=n*j,d+=n*K,p+=n*F,y+=n*V,g+=n*q,m+=n*z,b+=n*H,v+=n*G,w+=n*$,_+=n*W,E+=n*Y,S+=n*Q,k+=n*J,n=t[5],l+=n*L,h+=n*M,f+=n*U,d+=n*j,p+=n*K,y+=n*F,g+=n*V,m+=n*q,b+=n*z,v+=n*H,w+=n*G,_+=n*$,E+=n*W,S+=n*Y,k+=n*Q,C+=n*J,n=t[6],h+=n*L,f+=n*M,d+=n*U,p+=n*j,y+=n*K,g+=n*F,m+=n*V,b+=n*q,v+=n*z,w+=n*H,_+=n*G,E+=n*$,S+=n*W,k+=n*Y,C+=n*Q,A+=n*J,n=t[7],f+=n*L,d+=n*M,p+=n*U,y+=n*j,g+=n*K,m+=n*F,b+=n*V,v+=n*q,w+=n*z,_+=n*H,E+=n*G,S+=n*$,k+=n*W,C+=n*Y,A+=n*Q,I+=n*J,n=t[8],d+=n*L,p+=n*M,y+=n*U,g+=n*j,m+=n*K,b+=n*F,v+=n*V,w+=n*q,_+=n*z,E+=n*H,S+=n*G,k+=n*$,C+=n*W,A+=n*Y,I+=n*Q,T+=n*J,n=t[9],p+=n*L,y+=n*M,g+=n*U,m+=n*j,b+=n*K,v+=n*F,w+=n*V,_+=n*q,E+=n*z,S+=n*H,k+=n*G,C+=n*$,A+=n*W,I+=n*Y,T+=n*Q,x+=n*J,n=t[10],y+=n*L,g+=n*M,m+=n*U,b+=n*j,v+=n*K,w+=n*F,_+=n*V,E+=n*q,S+=n*z,k+=n*H,C+=n*G,A+=n*$,I+=n*W,T+=n*Y,x+=n*Q,B+=n*J,n=t[11],g+=n*L,m+=n*M,b+=n*U,v+=n*j,w+=n*K,_+=n*F,E+=n*V,S+=n*q,k+=n*z,C+=n*H,A+=n*G,I+=n*$,T+=n*W,x+=n*Y,B+=n*Q,R+=n*J,n=t[12],m+=n*L,b+=n*M,v+=n*U,w+=n*j,_+=n*K,E+=n*F,S+=n*V,k+=n*q,C+=n*z,A+=n*H,I+=n*G,T+=n*$,x+=n*W,B+=n*Y,R+=n*Q,N+=n*J,n=t[13],b+=n*L,v+=n*M,w+=n*U,_+=n*j,E+=n*K,S+=n*F,k+=n*V,C+=n*q,A+=n*z,I+=n*H,T+=n*G,x+=n*$,B+=n*W,R+=n*Y,N+=n*Q,O+=n*J,n=t[14],v+=n*L,w+=n*M,_+=n*U,E+=n*j,S+=n*K,k+=n*F,C+=n*V,A+=n*q,I+=n*z,T+=n*H,x+=n*G,B+=n*$,R+=n*W,N+=n*Y,O+=n*Q,P+=n*J,n=t[15],w+=n*L,_+=n*M,E+=n*U,S+=n*j,k+=n*K,C+=n*F,A+=n*V,I+=n*q,T+=n*z,x+=n*H,B+=n*G,R+=n*$,N+=n*W,O+=n*Y,P+=n*Q,D+=n*J,s+=38*_,o+=38*E,a+=38*S,c+=38*k,u+=38*C,l+=38*A,h+=38*I,f+=38*T,d+=38*x,p+=38*B,y+=38*R,g+=38*N,m+=38*O,b+=38*P,v+=38*D,i=1,n=s+i+65535,i=Math.floor(n/65536),s=n-65536*i,n=o+i+65535,i=Math.floor(n/65536),o=n-65536*i,n=a+i+65535,i=Math.floor(n/65536),a=n-65536*i,n=c+i+65535,i=Math.floor(n/65536),c=n-65536*i,n=u+i+65535,i=Math.floor(n/65536),u=n-65536*i,n=l+i+65535,i=Math.floor(n/65536),l=n-65536*i,n=h+i+65535,i=Math.floor(n/65536),h=n-65536*i,n=f+i+65535,i=Math.floor(n/65536),f=n-65536*i,n=d+i+65535,i=Math.floor(n/65536),d=n-65536*i,n=p+i+65535,i=Math.floor(n/65536),p=n-65536*i,n=y+i+65535,i=Math.floor(n/65536),y=n-65536*i,n=g+i+65535,i=Math.floor(n/65536),g=n-65536*i,n=m+i+65535,i=Math.floor(n/65536),m=n-65536*i,n=b+i+65535,i=Math.floor(n/65536),b=n-65536*i,n=v+i+65535,i=Math.floor(n/65536),v=n-65536*i,n=w+i+65535,i=Math.floor(n/65536),w=n-65536*i,s+=i-1+37*(i-1),i=1,n=s+i+65535,i=Math.floor(n/65536),s=n-65536*i,n=o+i+65535,i=Math.floor(n/65536),o=n-65536*i,n=a+i+65535,i=Math.floor(n/65536),a=n-65536*i,n=c+i+65535,i=Math.floor(n/65536),c=n-65536*i,n=u+i+65535,i=Math.floor(n/65536),u=n-65536*i,n=l+i+65535,i=Math.floor(n/65536),l=n-65536*i,n=h+i+65535,i=Math.floor(n/65536),h=n-65536*i,n=f+i+65535,i=Math.floor(n/65536),f=n-65536*i,n=d+i+65535,i=Math.floor(n/65536),d=n-65536*i,n=p+i+65535,i=Math.floor(n/65536),p=n-65536*i,n=y+i+65535,i=Math.floor(n/65536),y=n-65536*i,n=g+i+65535,i=Math.floor(n/65536),g=n-65536*i,n=m+i+65535,i=Math.floor(n/65536),m=n-65536*i,n=b+i+65535,i=Math.floor(n/65536),b=n-65536*i,n=v+i+65535,i=Math.floor(n/65536),v=n-65536*i,n=w+i+65535,i=Math.floor(n/65536),w=n-65536*i,s+=i-1+37*(i-1),e[0]=s,e[1]=o,e[2]=a,e[3]=c,e[4]=u,e[5]=l,e[6]=h,e[7]=f,e[8]=d,e[9]=p,e[10]=y,e[11]=g,e[12]=m,e[13]=b,e[14]=v,e[15]=w}function V(e,t){F(e,t,t)}function q(e,r){var n,i=t();for(n=0;n<16;n++)i[n]=r[n];for(n=253;n>=0;n--)V(i,i),2!==n&&4!==n&&F(i,i,r);for(n=0;n<16;n++)e[n]=i[n]}function z(e,r){var n,i=t();for(n=0;n<16;n++)i[n]=r[n];for(n=250;n>=0;n--)V(i,i),1!==n&&F(i,i,r);for(n=0;n<16;n++)e[n]=i[n]}function H(e,r,n){var i,s,o=new Uint8Array(32),a=new Float64Array(80),u=t(),l=t(),h=t(),f=t(),d=t(),p=t();for(s=0;s<31;s++)o[s]=r[s];for(o[31]=127&r[31]|64,o[0]&=248,U(a,n),s=0;s<16;s++)l[s]=a[s],f[s]=u[s]=h[s]=0;for(u[0]=f[0]=1,s=254;s>=0;--s)i=o[s>>>3]>>>(7&s)&1,P(u,l,i),P(h,f,i),j(d,u,h),K(u,u,h),j(h,l,f),K(l,l,f),V(f,d),V(p,u),F(u,h,u),F(h,l,d),j(d,u,h),K(u,u,h),V(l,u),K(h,f,p),F(u,h,c),j(u,u,f),F(h,h,u),F(u,f,p),F(f,l,a),V(l,d),P(u,l,i),P(h,f,i);for(s=0;s<16;s++)a[s+16]=u[s],a[s+32]=h[s],a[s+48]=l[s],a[s+64]=f[s];var y=a.subarray(32),g=a.subarray(16);return q(y,y),F(g,g,y),D(e,g),0}function G(e,t){return H(e,t,s)}function $(e,t){return n(t,32),G(e,t)}function W(e,t,r){var n=new Uint8Array(32);return H(n,r,t),_(e,i,n,E)}I.prototype.blocks=function(e,t,r){var n,i,s,o,a,c,u,l,h,f,d,p,y,g,m,b,v,w,_,E=this.fin?0:2048,S=this.h[0],k=this.h[1],C=this.h[2],A=this.h[3],I=this.h[4],T=this.h[5],x=this.h[6],B=this.h[7],R=this.h[8],N=this.h[9],O=this.r[0],P=this.r[1],D=this.r[2],L=this.r[3],M=this.r[4],U=this.r[5],j=this.r[6],K=this.r[7],F=this.r[8],V=this.r[9];while(r>=16)n=255&e[t+0]|(255&e[t+1])<<8,S+=8191&n,i=255&e[t+2]|(255&e[t+3])<<8,k+=8191&(n>>>13|i<<3),s=255&e[t+4]|(255&e[t+5])<<8,C+=8191&(i>>>10|s<<6),o=255&e[t+6]|(255&e[t+7])<<8,A+=8191&(s>>>7|o<<9),a=255&e[t+8]|(255&e[t+9])<<8,I+=8191&(o>>>4|a<<12),T+=a>>>1&8191,c=255&e[t+10]|(255&e[t+11])<<8,x+=8191&(a>>>14|c<<2),u=255&e[t+12]|(255&e[t+13])<<8,B+=8191&(c>>>11|u<<5),l=255&e[t+14]|(255&e[t+15])<<8,R+=8191&(u>>>8|l<<8),N+=l>>>5|E,h=0,f=h,f+=S*O,f+=k*(5*V),f+=C*(5*F),f+=A*(5*K),f+=I*(5*j),h=f>>>13,f&=8191,f+=T*(5*U),f+=x*(5*M),f+=B*(5*L),f+=R*(5*D),f+=N*(5*P),h+=f>>>13,f&=8191,d=h,d+=S*P,d+=k*O,d+=C*(5*V),d+=A*(5*F),d+=I*(5*K),h=d>>>13,d&=8191,d+=T*(5*j),d+=x*(5*U),d+=B*(5*M),d+=R*(5*L),d+=N*(5*D),h+=d>>>13,d&=8191,p=h,p+=S*D,p+=k*P,p+=C*O,p+=A*(5*V),p+=I*(5*F),h=p>>>13,p&=8191,p+=T*(5*K),p+=x*(5*j),p+=B*(5*U),p+=R*(5*M),p+=N*(5*L),h+=p>>>13,p&=8191,y=h,y+=S*L,y+=k*D,y+=C*P,y+=A*O,y+=I*(5*V),h=y>>>13,y&=8191,y+=T*(5*F),y+=x*(5*K),y+=B*(5*j),y+=R*(5*U),y+=N*(5*M),h+=y>>>13,y&=8191,g=h,g+=S*M,g+=k*L,g+=C*D,g+=A*P,g+=I*O,h=g>>>13,g&=8191,g+=T*(5*V),g+=x*(5*F),g+=B*(5*K),g+=R*(5*j),g+=N*(5*U),h+=g>>>13,g&=8191,m=h,m+=S*U,m+=k*M,m+=C*L,m+=A*D,m+=I*P,h=m>>>13,m&=8191,m+=T*O,m+=x*(5*V),m+=B*(5*F),m+=R*(5*K),m+=N*(5*j),h+=m>>>13,m&=8191,b=h,b+=S*j,b+=k*U,b+=C*M,b+=A*L,b+=I*D,h=b>>>13,b&=8191,b+=T*P,b+=x*O,b+=B*(5*V),b+=R*(5*F),b+=N*(5*K),h+=b>>>13,b&=8191,v=h,v+=S*K,v+=k*j,v+=C*U,v+=A*M,v+=I*L,h=v>>>13,v&=8191,v+=T*D,v+=x*P,v+=B*O,v+=R*(5*V),v+=N*(5*F),h+=v>>>13,v&=8191,w=h,w+=S*F,w+=k*K,w+=C*j,w+=A*U,w+=I*M,h=w>>>13,w&=8191,w+=T*L,w+=x*D,w+=B*P,w+=R*O,w+=N*(5*V),h+=w>>>13,w&=8191,_=h,_+=S*V,_+=k*F,_+=C*K,_+=A*j,_+=I*U,h=_>>>13,_&=8191,_+=T*M,_+=x*L,_+=B*D,_+=R*P,_+=N*O,h+=_>>>13,_&=8191,h=(h<<2)+h|0,h=h+f|0,f=8191&h,h>>>=13,d+=h,S=f,k=d,C=p,A=y,I=g,T=m,x=b,B=v,R=w,N=_,t+=16,r-=16;this.h[0]=S,this.h[1]=k,this.h[2]=C,this.h[3]=A,this.h[4]=I,this.h[5]=T,this.h[6]=x,this.h[7]=B,this.h[8]=R,this.h[9]=N},I.prototype.finish=function(e,t){var r,n,i,s,o=new Uint16Array(10);if(this.leftover){for(s=this.leftover,this.buffer[s++]=1;s<16;s++)this.buffer[s]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(r=this.h[1]>>>13,this.h[1]&=8191,s=2;s<10;s++)this.h[s]+=r,r=this.h[s]>>>13,this.h[s]&=8191;for(this.h[0]+=5*r,r=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=r,r=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=r,o[0]=this.h[0]+5,r=o[0]>>>13,o[0]&=8191,s=1;s<10;s++)o[s]=this.h[s]+r,r=o[s]>>>13,o[s]&=8191;for(o[9]-=8192,n=(1^r)-1,s=0;s<10;s++)o[s]&=n;for(n=~n,s=0;s<10;s++)this.h[s]=this.h[s]&n|o[s];for(this.h[0]=65535&(this.h[0]|this.h[1]<<13),this.h[1]=65535&(this.h[1]>>>3|this.h[2]<<10),this.h[2]=65535&(this.h[2]>>>6|this.h[3]<<7),this.h[3]=65535&(this.h[3]>>>9|this.h[4]<<4),this.h[4]=65535&(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14),this.h[5]=65535&(this.h[6]>>>2|this.h[7]<<11),this.h[6]=65535&(this.h[7]>>>5|this.h[8]<<8),this.h[7]=65535&(this.h[8]>>>8|this.h[9]<<5),i=this.h[0]+this.pad[0],this.h[0]=65535&i,s=1;s<8;s++)i=(this.h[s]+this.pad[s]|0)+(i>>>16)|0,this.h[s]=65535&i;e[t+0]=this.h[0]>>>0&255,e[t+1]=this.h[0]>>>8&255,e[t+2]=this.h[1]>>>0&255,e[t+3]=this.h[1]>>>8&255,e[t+4]=this.h[2]>>>0&255,e[t+5]=this.h[2]>>>8&255,e[t+6]=this.h[3]>>>0&255,e[t+7]=this.h[3]>>>8&255,e[t+8]=this.h[4]>>>0&255,e[t+9]=this.h[4]>>>8&255,e[t+10]=this.h[5]>>>0&255,e[t+11]=this.h[5]>>>8&255,e[t+12]=this.h[6]>>>0&255,e[t+13]=this.h[6]>>>8&255,e[t+14]=this.h[7]>>>0&255,e[t+15]=this.h[7]>>>8&255},I.prototype.update=function(e,t,r){var n,i;if(this.leftover){for(i=16-this.leftover,i>r&&(i=r),n=0;n=16&&(i=r-r%16,this.blocks(e,t,i),t+=i,r-=i),r){for(n=0;n=128){for(E=0;E<16;E++)S=8*E+W,B[E]=r[S+0]<<24|r[S+1]<<16|r[S+2]<<8|r[S+3],R[E]=r[S+4]<<24|r[S+5]<<16|r[S+6]<<8|r[S+7];for(E=0;E<80;E++)if(i=N,s=O,o=P,a=D,c=L,u=M,l=U,h=j,f=K,d=F,p=V,y=q,g=z,m=H,b=G,v=$,k=j,C=$,A=65535&C,I=C>>>16,T=65535&k,x=k>>>16,k=(L>>>14|z<<18)^(L>>>18|z<<14)^(z>>>9|L<<23),C=(z>>>14|L<<18)^(z>>>18|L<<14)^(L>>>9|z<<23),A+=65535&C,I+=C>>>16,T+=65535&k,x+=k>>>16,k=L&M^~L&U,C=z&H^~z&G,A+=65535&C,I+=C>>>16,T+=65535&k,x+=k>>>16,k=Z[2*E],C=Z[2*E+1],A+=65535&C,I+=C>>>16,T+=65535&k,x+=k>>>16,k=B[E%16],C=R[E%16],A+=65535&C,I+=C>>>16,T+=65535&k,x+=k>>>16,I+=A>>>16,T+=I>>>16,x+=T>>>16,w=65535&T|x<<16,_=65535&A|I<<16,k=w,C=_,A=65535&C,I=C>>>16,T=65535&k,x=k>>>16,k=(N>>>28|K<<4)^(K>>>2|N<<30)^(K>>>7|N<<25),C=(K>>>28|N<<4)^(N>>>2|K<<30)^(N>>>7|K<<25),A+=65535&C,I+=C>>>16,T+=65535&k,x+=k>>>16,k=N&O^N&P^O&P,C=K&F^K&V^F&V,A+=65535&C,I+=C>>>16,T+=65535&k,x+=k>>>16,I+=A>>>16,T+=I>>>16,x+=T>>>16,h=65535&T|x<<16,v=65535&A|I<<16,k=a,C=y,A=65535&C,I=C>>>16,T=65535&k,x=k>>>16,k=w,C=_,A+=65535&C,I+=C>>>16,T+=65535&k,x+=k>>>16,I+=A>>>16,T+=I>>>16,x+=T>>>16,a=65535&T|x<<16,y=65535&A|I<<16,O=i,P=s,D=o,L=a,M=c,U=u,j=l,N=h,F=f,V=d,q=p,z=y,H=g,G=m,$=b,K=v,E%16===15)for(S=0;S<16;S++)k=B[S],C=R[S],A=65535&C,I=C>>>16,T=65535&k,x=k>>>16,k=B[(S+9)%16],C=R[(S+9)%16],A+=65535&C,I+=C>>>16,T+=65535&k,x+=k>>>16,w=B[(S+1)%16],_=R[(S+1)%16],k=(w>>>1|_<<31)^(w>>>8|_<<24)^w>>>7,C=(_>>>1|w<<31)^(_>>>8|w<<24)^(_>>>7|w<<25),A+=65535&C,I+=C>>>16,T+=65535&k,x+=k>>>16,w=B[(S+14)%16],_=R[(S+14)%16],k=(w>>>19|_<<13)^(_>>>29|w<<3)^w>>>6,C=(_>>>19|w<<13)^(w>>>29|_<<3)^(_>>>6|w<<26),A+=65535&C,I+=C>>>16,T+=65535&k,x+=k>>>16,I+=A>>>16,T+=I>>>16,x+=T>>>16,B[S]=65535&T|x<<16,R[S]=65535&A|I<<16;k=N,C=K,A=65535&C,I=C>>>16,T=65535&k,x=k>>>16,k=e[0],C=t[0],A+=65535&C,I+=C>>>16,T+=65535&k,x+=k>>>16,I+=A>>>16,T+=I>>>16,x+=T>>>16,e[0]=N=65535&T|x<<16,t[0]=K=65535&A|I<<16,k=O,C=F,A=65535&C,I=C>>>16,T=65535&k,x=k>>>16,k=e[1],C=t[1],A+=65535&C,I+=C>>>16,T+=65535&k,x+=k>>>16,I+=A>>>16,T+=I>>>16,x+=T>>>16,e[1]=O=65535&T|x<<16,t[1]=F=65535&A|I<<16,k=P,C=V,A=65535&C,I=C>>>16,T=65535&k,x=k>>>16,k=e[2],C=t[2],A+=65535&C,I+=C>>>16,T+=65535&k,x+=k>>>16,I+=A>>>16,T+=I>>>16,x+=T>>>16,e[2]=P=65535&T|x<<16,t[2]=V=65535&A|I<<16,k=D,C=q,A=65535&C,I=C>>>16,T=65535&k,x=k>>>16,k=e[3],C=t[3],A+=65535&C,I+=C>>>16,T+=65535&k,x+=k>>>16,I+=A>>>16,T+=I>>>16,x+=T>>>16,e[3]=D=65535&T|x<<16,t[3]=q=65535&A|I<<16,k=L,C=z,A=65535&C,I=C>>>16,T=65535&k,x=k>>>16,k=e[4],C=t[4],A+=65535&C,I+=C>>>16,T+=65535&k,x+=k>>>16,I+=A>>>16,T+=I>>>16,x+=T>>>16,e[4]=L=65535&T|x<<16,t[4]=z=65535&A|I<<16,k=M,C=H,A=65535&C,I=C>>>16,T=65535&k,x=k>>>16,k=e[5],C=t[5],A+=65535&C,I+=C>>>16,T+=65535&k,x+=k>>>16,I+=A>>>16,T+=I>>>16,x+=T>>>16,e[5]=M=65535&T|x<<16,t[5]=H=65535&A|I<<16,k=U,C=G,A=65535&C,I=C>>>16,T=65535&k,x=k>>>16,k=e[6],C=t[6],A+=65535&C,I+=C>>>16,T+=65535&k,x+=k>>>16,I+=A>>>16,T+=I>>>16,x+=T>>>16,e[6]=U=65535&T|x<<16,t[6]=G=65535&A|I<<16,k=j,C=$,A=65535&C,I=C>>>16,T=65535&k,x=k>>>16,k=e[7],C=t[7],A+=65535&C,I+=C>>>16,T+=65535&k,x+=k>>>16,I+=A>>>16,T+=I>>>16,x+=T>>>16,e[7]=j=65535&T|x<<16,t[7]=$=65535&A|I<<16,W+=128,n-=128}return n}function te(e,t,r){var n,i=new Int32Array(8),s=new Int32Array(8),o=new Uint8Array(256),a=r;for(i[0]=1779033703,i[1]=3144134277,i[2]=1013904242,i[3]=2773480762,i[4]=1359893119,i[5]=2600822924,i[6]=528734635,i[7]=1541459225,s[0]=4089235720,s[1]=2227873595,s[2]=4271175723,s[3]=1595750129,s[4]=2917565137,s[5]=725511199,s[6]=4215389547,s[7]=327033209,ee(i,s,t,r),r%=128,n=0;n=0;--i)n=r[i/8|0]>>(7&i)&1,ne(e,t,n),re(t,e),re(e,e),ne(e,t,n)}function oe(e,r){var n=[t(),t(),t(),t()];N(n[0],h),N(n[1],f),N(n[2],a),F(n[3],h,f),se(e,n,r)}function ae(e,r,i){var s,o=new Uint8Array(64),a=[t(),t(),t(),t()];for(i||n(r,32),te(o,r,32),o[0]&=248,o[31]&=127,o[31]|=64,oe(a,o),ie(e,a),s=0;s<32;s++)r[s+32]=e[s];return 0}var ce=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function ue(e,t){var r,n,i,s;for(n=63;n>=32;--n){for(r=0,i=n-32,s=n-12;i>4)*ce[i],r=t[i]>>8,t[i]&=255;for(i=0;i<32;i++)t[i]-=r*ce[i];for(n=0;n<32;n++)t[n+1]+=t[n]>>8,e[n]=255&t[n]}function le(e){var t,r=new Float64Array(64);for(t=0;t<64;t++)r[t]=e[t];for(t=0;t<64;t++)e[t]=0;ue(e,r)}function he(e,r,n,i){var s,o,a=new Uint8Array(64),c=new Uint8Array(64),u=new Uint8Array(64),l=new Float64Array(64),h=[t(),t(),t(),t()];te(a,i,32),a[0]&=248,a[31]&=127,a[31]|=64;var f=n+64;for(s=0;s>7&&K(e[0],o,e[0]),F(e[3],e[0],e[1]),0)}function de(e,r,n,i){var s,o=new Uint8Array(32),a=new Uint8Array(64),c=[t(),t(),t(),t()],u=[t(),t(),t(),t()];if(n<64)return-1;if(fe(u,i))return-1;for(s=0;s=0},e.sign.keyPair=function(){var e=new Uint8Array(Ie),t=new Uint8Array(Te);return ae(e,t),{publicKey:e,secretKey:t}},e.sign.keyPair.fromSecretKey=function(e){if(Oe(e),e.length!==Te)throw new Error("bad secret key size");for(var t=new Uint8Array(Ie),r=0;rasync function*(e,r){const s=await i(r.bits,r.min,r.max,r.window),o=new n;let a=[];for await(const n of e){o.append(n),a.push(n);const e=s.fingerprint(t.concat(a));a=[];for(let t=0;ti(n=>{const i=r.init(e,null);return r.update(i,n),t.from(r.digest(i))});e.exports=e=>{for(let t=0;t<64;t++)e[s+t]=u(t+1,a);for(let t=0;t<32;t++)e[o+t]=u(t+1,c)}}).call(this,r("b639").Buffer)},"74c8":function(e,t,r){"use strict";const n=r("80f8");e.exports=function(e){return function(t,r){return n.readable(e._catAsyncIterator(t,r),{objectMode:!0})}}},"74fa":function(e,t,r){"use strict";var n=String.prototype.replace,i=/%20/g,s=r("1f47"),o={RFC1738:"RFC1738",RFC3986:"RFC3986"};e.exports=s.assign({default:o.RFC3986,formatters:{RFC1738:function(e){return n.call(e,i,"+")},RFC3986:function(e){return String(e)}}},o)},7566:function(e,t,r){"use strict";const{Buffer:n}=r("b639"),i=r("0e54e"),s=r("e782"),o=r("37bc");async function a(e,t,r){const n=await a.digest(e,t,r);return s.encode(n,t,r)}a.Buffer=n,a.multihash=s,a.digest=async(e,t,r)=>{const n=a.createHash(t),i=await n(e);return r?i.slice(0,r):i},a.createHash=function(e){if(!e)throw i("hash algorithm must be specified","ERR_HASH_ALGORITHM_NOT_SPECIFIED");if(e=s.coerceCode(e),!a.functions[e])throw i(`multihash function '${e}' not yet supported`,"ERR_HASH_ALGORITHM_NOT_SUPPORTED");return a.functions[e]},a.functions={17:o.sha1,18:o.sha2256,19:o.sha2512,20:o.sha3512,21:o.sha3384,22:o.sha3256,23:o.sha3224,24:o.shake128,25:o.shake256,26:o.keccak224,27:o.keccak256,28:o.keccak384,29:o.keccak512,34:o.murmur3128,35:o.murmur332,86:o.dblSha2256},o.addBlake(a.functions),a.validate=async(e,t)=>{const r=await a(e,s.decode(t).name);return 0===n.compare(t,r)},e.exports=a},7582:function(e,t,r){"use strict";const n=r("fa4d"),i=r("2644"),s=r("1421"),o=r("b1aa"),a=r("8911"),c=r("fd4b");e.exports=e=>n((t,r,n)=>{"function"!==typeof r||n||(n=r,r={}),"function"===typeof r&&"function"===typeof n&&(n=r,r={});const u=(e,t)=>{if(Array.isArray(e)&&(e=e.find(e=>2===e.Type)),!e||2!==e.Type){const e="key was not found (type 4)";return t(c(new Error(e),"ERR_KEY_TYPE_4_NOT_FOUND"))}const r=e.Responses[0],n=new a(o.createFromB58String(r.ID));r.Addrs.forEach(e=>{const t=s(e);n.multiaddrs.add(t)}),t(null,n)};e({path:"dht/findpeer",args:t.toString(),qs:r},(e,t)=>{if(e)return n(e);i(t,u,n)})})},7584:function(e,t,r){"use strict";const n=r("9941");e.exports={tag:"/plaintext/1.0.0",encrypt(e,t,r,i){return"function"===typeof r&&(i=r,r=void 0),n(()=>i()),t}}},7619:function(e,t,r){"use strict";const n=r("c044"),i=r("8945"),s=r("c731");class o{constructor(e,t){this.originDhtKey=e,this.capacity=t,this.peerDistances=[]}get length(){return this.peerDistances.length}get peers(){return this.peerDistances.map(e=>e.peerId)}add(e,t){if(this.peerDistances.find(t=>t.peerId.id.equals(e.id)))return t();i.convertPeerId(e,(r,i)=>{if(r)return t(r);const s={peerId:e,distance:n(this.originDhtKey,i)};this.peerDistances.push(s),this.peerDistances.sort((e,t)=>n.compare(e.distance,t.distance)),this.peerDistances=this.peerDistances.slice(0,this.capacity),t()})}anyCloser(e,t){return e.length?this.length?void s(e,(e,t)=>i.convertPeerId(e,t),(e,r)=>{if(e)return t(e);const i=this.peerDistances[this.peerDistances.length-1].distance;for(const s of r){const e=n(this.originDhtKey,s);if(n.compare(e,i)<0)return t(null,!0)}return t(null,!1)}):t(null,!0):t(null,!1)}}e.exports=o},7686:function(e,t){function r(e){if("object"!==typeof e||null===e)throw new TypeError("First argument must be an abstract-leveldown compliant store");this.db=e,this._operations=[],this._written=!1}r.prototype._checkWritten=function(){if(this._written)throw new Error("write() already called on this batch")},r.prototype.put=function(e,t){this._checkWritten();var r=this.db._checkKey(e)||this.db._checkValue(t);if(r)throw r;return e=this.db._serializeKey(e),t=this.db._serializeValue(t),this._put(e,t),this},r.prototype._put=function(e,t){this._operations.push({type:"put",key:e,value:t})},r.prototype.del=function(e){this._checkWritten();var t=this.db._checkKey(e);if(t)throw t;return e=this.db._serializeKey(e),this._del(e),this},r.prototype._del=function(e){this._operations.push({type:"del",key:e})},r.prototype.clear=function(){return this._checkWritten(),this._clear(),this},r.prototype._clear=function(){this._operations=[]},r.prototype.write=function(e,t){if(this._checkWritten(),"function"===typeof e&&(t=e),"function"!==typeof t)throw new Error("write() requires a callback argument");"object"===typeof e&&null!==e||(e={}),this._written=!0,this._write(e,t)},r.prototype._write=function(e,t){this.db._batch(this._operations,e,t)},e.exports=r},"76a0":function(e,t,r){"use strict";const n=r("c61d");e.exports=async(e,t,{concurrency:r=1/0,stopOnError:i=!0}={})=>new Promise((s,o)=>{if("function"!==typeof t)throw new TypeError("Mapper function is required");if(!("number"===typeof r&&r>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${r}\` (${typeof r})`);const a=[],c=[],u=e[Symbol.iterator]();let l=!1,h=!1,f=0,d=0;const p=()=>{if(l)return;const e=u.next(),r=d;if(d++,e.done)return h=!0,void(0===f&&(i||0===c.length?s(a):o(new n(c))));f++,(async()=>{try{const n=await e.value;a[r]=await t(n,r),f--,p()}catch(n){i?(l=!0,o(n)):(c.push(n),f--,p())}})()};for(let e=0;e>16-t},a=function(e,t){return(65535&e)>>t|e<<16-t&65535};e.exports=n.rc2=n.rc2||{},n.rc2.expandKey=function(e,t){"string"===typeof e&&(e=n.util.createBuffer(e)),t=t||128;var r,s=e,o=e.length(),a=t,c=Math.ceil(a/8),u=255>>(7&a);for(r=o;r<128;r++)s.putByte(i[s.at(r-1)+s.at(r-o)&255]);for(s.setAt(128-c,i[s.at(128-c)&u]),r=127-c;r>=0;r--)s.setAt(r,i[s.at(r+1)^s.at(r+c)]);return s};var c=function(e,t,r){var i,c,u,l,h=!1,f=null,d=null,p=null,y=[];for(e=n.rc2.expandKey(e,t),u=0;u<64;u++)y.push(e.getInt16Le());r?(i=function(e){for(u=0;u<4;u++)e[u]+=y[l]+(e[(u+3)%4]&e[(u+2)%4])+(~e[(u+3)%4]&e[(u+1)%4]),e[u]=o(e[u],s[u]),l++},c=function(e){for(u=0;u<4;u++)e[u]+=y[63&e[(u+3)%4]]}):(i=function(e){for(u=3;u>=0;u--)e[u]=a(e[u],s[u]),e[u]-=y[l]+(e[(u+3)%4]&e[(u+2)%4])+(~e[(u+3)%4]&e[(u+1)%4]),l--},c=function(e){for(u=3;u>=0;u--)e[u]-=y[63&e[(u+3)%4]]});var g=function(e){var t=[];for(u=0;u<4;u++){var n=f.getInt16Le();null!==p&&(r?n^=p.getInt16Le():p.putInt16Le(n)),t.push(65535&n)}l=r?0:63;for(var i=0;i=8)g([[5,i],[1,c],[6,i],[1,c],[5,i]])},finish:function(e){var t=!0;if(r)if(e)t=e(8,f,!r);else{var n=8===f.length()?8:8-f.length();f.fillWithByte(n,n)}if(t&&(h=!0,m.update()),!r&&(t=0===f.length(),t))if(e)t=e(8,d,!r);else{var i=d.length(),s=d.at(i-1);s>i?t=!1:d.truncate(s)}return t}},m};n.rc2.startEncrypting=function(e,t,r){var i=n.rc2.createEncryptionCipher(e,128);return i.start(t,r),i},n.rc2.createEncryptionCipher=function(e,t){return c(e,t,!0)},n.rc2.startDecrypting=function(e,t,r){var i=n.rc2.createDecryptionCipher(e,128);return i.start(t,r),i},n.rc2.createDecryptionCipher=function(e,t){return c(e,t,!1)}},"76a7":function(e,t,r){e.exports=r("d307")},"76bf":function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isAsync=void 0;var n=r("7e5f"),i=s(n);function s(e){return e&&e.__esModule?e:{default:e}}var o="function"===typeof Symbol;function a(e){return o&&"AsyncFunction"===e[Symbol.toStringTag]}function c(e){return a(e)?(0,i.default)(e):e}t.default=c,t.isAsync=a},"76c0":function(e,t,r){"use strict";var n=r("27f0");e.exports=function(e){return e=n(e),function(t){return function r(n,i){var s,o=!0;while(o)o=!1,s=!0,t(n,(function(t,n){if(!t&&!e(n))return s?o=!0:r(t,i);i(t,n)})),s=!1}}}},"76d6":function(e,t){function r(e,t){"function"===typeof e&&(t=e,e=!1);var r,n,i,s=[];function o(e,t){e&&(r=e,n&&l(r)),n=t,u()}function a(e){i=i||e||!0,u()}function c(e){i||(n?l(r,e):s.push(e))}return e?{push:c,end:a,source:o,buffer:s}:(o.push=c,o.end=a,o.buffer=s,o);function u(){n&&(r?l(r):!s.length&&i?l(i):s.length&&l(null,s.shift()))}function l(e,r){var i=n;if(e&&t){var s=t;t=null,s(!0===e?null:e)}n=null,i(e,r)}}e.exports=r},"76d9":function(e,t,r){"use strict";const n=r("9f2e"),i=r("000a"),s=r("fa4d"),{messages:o,codes:a}=r("a41c");e.exports=e=>({put:s((t,r,s)=>{if(!e._dht)return n(s,i(new Error(o.DHT_DISABLED),a.DHT_DISABLED));e._dht.put(t,r,s)}),get:s((t,r,s)=>{if("function"===typeof r&&(s=r,r={}),!e._dht)return n(s,i(new Error(o.DHT_DISABLED),a.DHT_DISABLED));e._dht.get(t,r,s)}),getMany:s((t,r,s,c)=>{if("function"===typeof s&&(c=s,s={}),!e._dht)return n(c,i(new Error(o.DHT_DISABLED),a.DHT_DISABLED));e._dht.getMany(t,r,s,c)})})},"76e2":function(e,t,r){(function(t){const n=r("2c93"),i=r("0580"),{default:s}=r("10d9"),{timeout:o}=r("f769"),a=r("c275"),c={};let u;function l(e,t){let r;const n=new Promise(e=>{r=e});return e.add(()=>o((()=>new Promise(e=>{r(()=>{e()})}))(),t.timeout)),n}const h=(e,t)=>{if(u.isWorker)return{readLock:u.readLock(e,t),writeLock:u.writeLock(e,t)};const r=new s({concurrency:1});let n=null;return{readLock:()=>{if(n)return l(n,t);n=new s({concurrency:t.concurrency,autoStart:!1});const e=n,i=l(n,t);return r.add(()=>(e.start(),e.onIdle().then(()=>{n===e&&(n=null)}))),i},writeLock:()=>(n=null,l(r,t))}},f={concurrency:1/0,timeout:846e5,global:t,singleProcess:!1};e.exports=(e,t)=>(t||(t={}),"object"===typeof e&&(t=e,e="lock"),e||(e="lock"),t=Object.assign({},f,t),u||(u=n(t)||i(t),u.isWorker||(u.on("requestReadLock",(e,t)=>{c[e]&&c[e].readLock().then(e=>t().finally(()=>e()))}),u.on("requestWriteLock",async(e,t)=>{c[e]&&c[e].writeLock().then(e=>t().finally(()=>e()))}))),c[e]||(c[e]=h(e,t)),c[e]),e.exports.Worker=function(e,r){let n;r=r||t.Worker;try{n=new r(e)}catch(i){i.message.includes("not a constructor")&&(n=r(e))}if(!n)throw new Error("Could not create Worker from",r);return a(n),n}}).call(this,r("c8ba"))},"770a":function(e,t,r){"use strict";const n=r("76e2");let i;e.exports=e=>{if(i)return i;const t=n({singleProcess:e});return i={readLock:e=>async(...r)=>{const n=await t.readLock();try{return await e.apply(null,r)}finally{n()}},writeLock:e=>async(...r)=>{const n=await t.writeLock();try{return await e.apply(null,r)}finally{n()}}},i}},7715:function(e,t,r){const{instantiateStreaming:n}=r("49ba");function i(e={}){if(!i.supported)return null;var t=new Uint8Array([0,97,115,109,1,0,0,0,1,90,16,96,0,0,96,2,127,127,1,127,96,4,127,127,127,127,0,96,1,127,1,127,96,3,127,127,127,0,96,1,126,1,127,96,2,126,126,1,126,96,5,127,127,127,127,127,1,127,96,3,127,127,126,0,96,2,127,127,1,126,96,3,127,127,127,1,127,96,1,127,0,96,2,127,127,0,96,1,127,1,126,96,2,127,126,0,96,0,1,127,2,13,1,3,101,110,118,5,97,98,111,114,116,0,2,3,57,56,3,3,12,3,3,15,5,6,1,8,4,1,9,11,7,4,10,10,11,0,0,0,3,12,3,12,3,12,13,14,13,14,13,14,13,14,13,14,13,14,13,14,13,14,13,14,13,14,13,14,13,14,13,14,13,14,4,4,1,112,0,1,5,3,1,0,1,6,26,5,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,127,1,65,0,11,7,253,6,44,6,109,101,109,111,114,121,2,0,5,116,97,98,108,101,1,0,6,100,101,103,114,101,101,0,7,3,109,111,100,0,8,16,82,97,98,105,110,35,103,101,116,58,119,105,110,100,111,119,0,23,16,82,97,98,105,110,35,115,101,116,58,119,105,110,100,111,119,0,24,21,82,97,98,105,110,35,103,101,116,58,119,105,110,100,111,119,95,115,105,122,101,0,25,21,82,97,98,105,110,35,115,101,116,58,119,105,110,100,111,119,95,115,105,122,101,0,26,14,82,97,98,105,110,35,103,101,116,58,119,112,111,115,0,27,14,82,97,98,105,110,35,115,101,116,58,119,112,111,115,0,28,15,82,97,98,105,110,35,103,101,116,58,99,111,117,110,116,0,29,15,82,97,98,105,110,35,115,101,116,58,99,111,117,110,116,0,30,13,82,97,98,105,110,35,103,101,116,58,112,111,115,0,31,13,82,97,98,105,110,35,115,101,116,58,112,111,115,0,32,15,82,97,98,105,110,35,103,101,116,58,115,116,97,114,116,0,33,15,82,97,98,105,110,35,115,101,116,58,115,116,97,114,116,0,34,16,82,97,98,105,110,35,103,101,116,58,100,105,103,101,115,116,0,35,16,82,97,98,105,110,35,115,101,116,58,100,105,103,101,115,116,0,36,21,82,97,98,105,110,35,103,101,116,58,99,104,117,110,107,95,115,116,97,114,116,0,37,21,82,97,98,105,110,35,115,101,116,58,99,104,117,110,107,95,115,116,97,114,116,0,38,22,82,97,98,105,110,35,103,101,116,58,99,104,117,110,107,95,108,101,110,103,116,104,0,39,22,82,97,98,105,110,35,115,101,116,58,99,104,117,110,107,95,108,101,110,103,116,104,0,40,31,82,97,98,105,110,35,103,101,116,58,99,104,117,110,107,95,99,117,116,95,102,105,110,103,101,114,112,114,105,110,116,0,41,31,82,97,98,105,110,35,115,101,116,58,99,104,117,110,107,95,99,117,116,95,102,105,110,103,101,114,112,114,105,110,116,0,42,20,82,97,98,105,110,35,103,101,116,58,112,111,108,121,110,111,109,105,97,108,0,43,20,82,97,98,105,110,35,115,101,116,58,112,111,108,121,110,111,109,105,97,108,0,44,27,82,97,98,105,110,35,103,101,116,58,112,111,108,121,110,111,109,105,97,108,95,100,101,103,114,101,101,0,45,27,82,97,98,105,110,35,115,101,116,58,112,111,108,121,110,111,109,105,97,108,95,100,101,103,114,101,101,0,46,26,82,97,98,105,110,35,103,101,116,58,112,111,108,121,110,111,109,105,97,108,95,115,104,105,102,116,0,47,26,82,97,98,105,110,35,115,101,116,58,112,111,108,121,110,111,109,105,97,108,95,115,104,105,102,116,0,48,22,82,97,98,105,110,35,103,101,116,58,97,118,101,114,97,103,101,95,98,105,116,115,0,49,22,82,97,98,105,110,35,115,101,116,58,97,118,101,114,97,103,101,95,98,105,116,115,0,50,17,82,97,98,105,110,35,103,101,116,58,109,105,110,115,105,122,101,0,51,17,82,97,98,105,110,35,115,101,116,58,109,105,110,115,105,122,101,0,52,17,82,97,98,105,110,35,103,101,116,58,109,97,120,115,105,122,101,0,53,17,82,97,98,105,110,35,115,101,116,58,109,97,120,115,105,122,101,0,54,14,82,97,98,105,110,35,103,101,116,58,109,97,115,107,0,55,14,82,97,98,105,110,35,115,101,116,58,109,97,115,107,0,56,17,82,97,98,105,110,35,99,111,110,115,116,114,117,99,116,111,114,0,15,17,82,97,98,105,110,35,102,105,110,103,101,114,112,114,105,110,116,0,16,14,109,101,109,111,114,121,46,99,111,109,112,97,114,101,0,18,15,109,101,109,111,114,121,46,97,108,108,111,99,97,116,101,0,4,11,109,101,109,111,114,121,46,102,114,101,101,0,19,12,109,101,109,111,114,121,46,114,101,115,101,116,0,20,8,1,21,9,7,1,0,65,0,11,1,22,10,188,30,56,104,1,3,127,32,0,65,128,128,128,128,4,75,4,64,0,11,35,1,34,1,32,0,65,1,32,0,65,1,75,27,106,65,7,106,65,120,113,34,0,63,0,34,2,65,16,116,75,4,64,32,2,32,0,32,1,107,65,255,255,3,106,65,128,128,124,113,65,16,118,34,3,32,2,32,3,74,27,64,0,65,0,72,4,64,32,3,64,0,65,0,72,4,64,0,11,11,11,32,0,36,1,32,1,11,51,1,1,127,32,0,65,248,255,255,255,3,75,4,64,65,0,65,200,0,65,26,65,2,16,0,0,11,65,1,65,32,32,0,65,7,106,103,107,116,16,1,34,1,32,0,54,2,0,32,1,11,145,3,1,1,127,32,1,69,4,64,15,11,32,0,65,0,58,0,0,32,0,32,1,106,65,1,107,65,0,58,0,0,32,1,65,2,77,4,64,15,11,32,0,65,1,106,65,0,58,0,0,32,0,65,2,106,65,0,58,0,0,32,0,32,1,106,34,2,65,2,107,65,0,58,0,0,32,2,65,3,107,65,0,58,0,0,32,1,65,6,77,4,64,15,11,32,0,65,3,106,65,0,58,0,0,32,0,32,1,106,65,4,107,65,0,58,0,0,32,1,65,8,77,4,64,15,11,65,0,32,0,107,65,3,113,34,2,32,0,106,34,0,65,0,54,2,0,32,1,32,2,107,65,124,113,34,1,32,0,106,65,4,107,65,0,54,2,0,32,1,65,8,77,4,64,15,11,32,0,65,4,106,65,0,54,2,0,32,0,65,8,106,65,0,54,2,0,32,0,32,1,106,34,2,65,12,107,65,0,54,2,0,32,2,65,8,107,65,0,54,2,0,32,1,65,24,77,4,64,15,11,32,0,65,12,106,65,0,54,2,0,32,0,65,16,106,65,0,54,2,0,32,0,65,20,106,65,0,54,2,0,32,0,65,24,106,65,0,54,2,0,32,0,32,1,106,34,2,65,28,107,65,0,54,2,0,32,2,65,24,107,65,0,54,2,0,32,2,65,20,107,65,0,54,2,0,32,2,65,16,107,65,0,54,2,0,32,0,65,4,113,65,24,106,34,2,32,0,106,33,0,32,1,32,2,107,33,1,3,64,32,1,65,32,79,4,64,32,0,66,0,55,3,0,32,0,65,8,106,66,0,55,3,0,32,0,65,16,106,66,0,55,3,0,32,0,65,24,106,66,0,55,3,0,32,1,65,32,107,33,1,32,0,65,32,106,33,0,12,1,11,11,11,6,0,32,0,16,1,11,76,1,1,127,65,128,16,16,2,34,1,65,8,106,65,128,16,16,3,32,0,69,4,64,65,12,16,1,33,0,11,32,0,65,0,54,2,0,32,0,65,0,54,2,4,32,0,65,0,54,2,8,32,0,32,1,54,2,0,32,0,65,0,54,2,4,32,0,65,128,16,54,2,8,32,0,11,8,0,65,12,16,1,16,5,11,70,2,1,127,1,126,66,128,128,128,128,128,128,128,128,128,127,33,2,3,64,2,64,32,1,65,192,0,78,13,0,32,0,32,2,131,66,0,86,4,64,65,63,32,1,107,15,5,32,2,66,1,136,33,2,32,1,65,1,106,33,1,12,2,11,0,11,11,65,127,11,175,2,2,1,127,2,126,3,64,2,127,66,128,128,128,128,128,128,128,128,128,127,33,3,65,0,33,2,3,64,2,64,32,2,65,192,0,78,13,0,65,63,32,2,107,32,0,32,3,131,66,0,86,13,2,26,32,3,66,1,136,33,3,32,2,65,1,106,33,2,12,1,11,11,65,127,11,2,127,32,1,33,4,66,128,128,128,128,128,128,128,128,128,127,33,3,65,0,33,2,3,64,2,64,32,2,65,192,0,78,13,0,65,63,32,2,107,32,3,32,4,131,66,0,86,13,2,26,32,3,66,1,136,33,3,32,2,65,1,106,33,2,12,1,11,11,65,127,11,78,4,64,32,1,2,127,66,128,128,128,128,128,128,128,128,128,127,33,3,65,0,33,2,3,64,2,64,32,2,65,192,0,78,13,0,65,63,32,2,107,32,0,32,3,131,66,0,86,13,2,26,32,3,66,1,136,33,3,32,2,65,1,106,33,2,12,1,11,11,65,127,11,2,127,66,128,128,128,128,128,128,128,128,128,127,33,3,65,0,33,2,3,64,2,64,32,2,65,192,0,78,13,0,65,63,32,2,107,32,1,32,3,131,66,0,86,13,2,26,32,3,66,1,136,33,3,32,2,65,1,106,33,2,12,1,11,11,65,127,11,107,172,134,32,0,133,33,0,12,1,11,11,32,0,11,96,1,1,127,32,1,65,248,255,255,255,3,75,4,64,65,0,65,8,65,23,65,34,16,0,0,11,32,1,16,2,34,2,65,8,106,32,1,16,3,32,0,69,4,64,65,12,16,1,33,0,11,32,0,65,0,54,2,0,32,0,65,0,54,2,4,32,0,65,0,54,2,8,32,0,32,2,54,2,0,32,0,65,0,54,2,4,32,0,32,1,54,2,8,32,0,11,49,0,32,1,32,0,40,2,8,65,3,118,79,4,64,65,0,65,8,65,50,65,63,16,0,0,11,32,0,40,2,4,32,0,40,2,0,32,1,65,3,116,106,106,32,2,55,3,8,11,43,0,32,1,32,0,40,2,8,79,4,64,65,0,65,8,65,50,65,63,16,0,0,11,32,0,40,2,4,32,1,32,0,40,2,0,106,106,32,2,58,0,8,11,41,0,32,1,32,0,40,2,8,79,4,64,65,0,65,8,65,39,65,63,16,0,0,11,32,0,40,2,4,32,1,32,0,40,2,0,106,106,45,0,8,11,47,0,32,1,32,0,40,2,8,65,3,118,79,4,64,65,0,65,8,65,39,65,63,16,0,0,11,32,0,40,2,4,32,0,40,2,0,32,1,65,3,116,106,106,41,3,8,11,166,10,2,3,127,5,126,35,2,69,4,64,3,64,32,2,65,128,2,72,4,64,32,2,65,255,1,113,173,33,4,32,0,41,3,72,33,6,3,64,2,127,32,4,33,5,66,128,128,128,128,128,128,128,128,128,127,33,4,65,0,33,1,3,64,32,1,65,192,0,72,4,64,65,63,32,1,107,32,4,32,5,131,66,0,86,13,2,26,32,4,66,1,136,33,4,32,1,65,1,106,33,1,12,1,11,11,65,127,11,2,127,32,6,33,7,66,128,128,128,128,128,128,128,128,128,127,33,4,65,0,33,1,3,64,32,1,65,192,0,72,4,64,65,63,32,1,107,32,4,32,7,131,66,0,86,13,2,26,32,4,66,1,136,33,4,32,1,65,1,106,33,1,12,1,11,11,65,127,11,78,4,64,32,6,2,127,66,128,128,128,128,128,128,128,128,128,127,33,4,65,0,33,1,3,64,32,1,65,192,0,72,4,64,65,63,32,1,107,32,4,32,5,131,66,0,86,13,2,26,32,4,66,1,136,33,4,32,1,65,1,106,33,1,12,1,11,11,65,127,11,2,127,66,128,128,128,128,128,128,128,128,128,127,33,4,65,0,33,1,3,64,32,1,65,192,0,72,4,64,65,63,32,1,107,32,4,32,6,131,66,0,86,13,2,26,32,4,66,1,136,33,4,32,1,65,1,106,33,1,12,1,11,11,65,127,11,107,172,134,32,5,133,33,4,12,1,11,11,65,0,33,1,3,64,32,1,32,0,40,2,4,65,1,107,72,4,64,32,5,66,8,134,33,4,32,0,41,3,72,33,6,3,64,2,127,32,4,33,5,66,128,128,128,128,128,128,128,128,128,127,33,4,65,0,33,3,3,64,32,3,65,192,0,72,4,64,65,63,32,3,107,32,4,32,5,131,66,0,86,13,2,26,32,4,66,1,136,33,4,32,3,65,1,106,33,3,12,1,11,11,65,127,11,2,127,32,6,33,7,66,128,128,128,128,128,128,128,128,128,127,33,4,65,0,33,3,3,64,32,3,65,192,0,72,4,64,65,63,32,3,107,32,4,32,7,131,66,0,86,13,2,26,32,4,66,1,136,33,4,32,3,65,1,106,33,3,12,1,11,11,65,127,11,78,4,64,32,6,2,127,66,128,128,128,128,128,128,128,128,128,127,33,4,65,0,33,3,3,64,32,3,65,192,0,72,4,64,65,63,32,3,107,32,4,32,5,131,66,0,86,13,2,26,32,4,66,1,136,33,4,32,3,65,1,106,33,3,12,1,11,11,65,127,11,2,127,66,128,128,128,128,128,128,128,128,128,127,33,4,65,0,33,3,3,64,32,3,65,192,0,72,4,64,65,63,32,3,107,32,4,32,6,131,66,0,86,13,2,26,32,4,66,1,136,33,4,32,3,65,1,106,33,3,12,1,11,11,65,127,11,107,172,134,32,5,133,33,4,12,1,11,11,32,1,65,1,106,33,1,12,1,11,11,35,4,32,2,32,5,16,10,32,2,65,1,106,33,2,12,1,11,11,2,127,32,0,41,3,72,33,4,66,128,128,128,128,128,128,128,128,128,127,33,5,65,0,33,2,3,64,32,2,65,192,0,72,4,64,65,63,32,2,107,32,4,32,5,131,66,0,86,13,2,26,32,5,66,1,136,33,5,32,2,65,1,106,33,2,12,1,11,11,65,127,11,172,33,8,65,0,33,2,3,64,32,2,65,128,2,72,4,64,35,3,33,3,32,2,172,32,8,134,33,5,32,0,41,3,72,33,6,3,64,2,127,66,128,128,128,128,128,128,128,128,128,127,33,4,65,0,33,1,3,64,32,1,65,192,0,72,4,64,65,63,32,1,107,32,4,32,5,131,66,0,86,13,2,26,32,4,66,1,136,33,4,32,1,65,1,106,33,1,12,1,11,11,65,127,11,2,127,32,6,33,7,66,128,128,128,128,128,128,128,128,128,127,33,4,65,0,33,1,3,64,32,1,65,192,0,72,4,64,65,63,32,1,107,32,4,32,7,131,66,0,86,13,2,26,32,4,66,1,136,33,4,32,1,65,1,106,33,1,12,1,11,11,65,127,11,78,4,64,32,6,2,127,66,128,128,128,128,128,128,128,128,128,127,33,4,65,0,33,1,3,64,32,1,65,192,0,72,4,64,65,63,32,1,107,32,4,32,5,131,66,0,86,13,2,26,32,4,66,1,136,33,4,32,1,65,1,106,33,1,12,1,11,11,65,127,11,2,127,66,128,128,128,128,128,128,128,128,128,127,33,4,65,0,33,1,3,64,32,1,65,192,0,72,4,64,65,63,32,1,107,32,4,32,6,131,66,0,86,13,2,26,32,4,66,1,136,33,4,32,1,65,1,106,33,1,12,1,11,11,65,127,11,107,172,134,32,5,133,33,5,12,1,11,11,32,3,32,2,32,2,172,32,8,134,32,5,132,16,10,32,2,65,1,106,33,2,12,1,11,11,65,1,36,2,11,32,0,66,0,55,3,24,32,0,66,0,55,3,32,65,0,33,2,3,64,32,2,32,0,40,2,4,72,4,64,32,0,40,2,0,32,2,65,0,16,11,32,2,65,1,106,33,2,12,1,11,11,32,0,66,0,55,3,40,32,0,65,0,54,2,8,32,0,66,0,55,3,16,32,0,66,0,55,3,40,32,0,40,2,0,32,0,40,2,8,16,12,33,1,32,0,40,2,0,32,0,40,2,8,65,1,16,11,32,0,32,0,41,3,40,35,4,32,1,65,255,1,113,16,13,133,55,3,40,32,0,32,0,40,2,8,65,1,106,32,0,40,2,4,111,54,2,8,32,0,41,3,40,32,0,41,3,88,136,167,33,1,32,0,32,0,41,3,40,66,8,134,55,3,40,32,0,32,0,41,3,40,66,1,132,55,3,40,32,0,32,0,41,3,40,35,3,32,1,65,255,1,113,16,13,133,55,3,40,11,234,1,0,32,0,69,4,64,65,128,1,16,1,33,0,11,32,0,65,0,54,2,0,32,0,65,0,54,2,4,32,0,65,0,54,2,8,32,0,66,0,55,3,16,32,0,66,0,55,3,24,32,0,66,0,55,3,32,32,0,66,0,55,3,40,32,0,66,0,55,3,48,32,0,66,0,55,3,56,32,0,66,0,55,3,64,32,0,66,0,55,3,72,32,0,66,0,55,3,80,32,0,66,0,55,3,88,32,0,66,0,55,3,96,32,0,66,0,55,3,104,32,0,66,0,55,3,112,32,0,66,0,55,3,120,32,0,32,1,173,55,3,96,32,0,32,2,173,55,3,104,32,0,32,3,173,55,3,112,32,0,65,12,16,1,32,4,16,9,54,2,0,32,0,32,4,54,2,4,32,0,66,1,32,0,41,3,96,134,66,1,125,55,3,120,32,0,66,243,130,183,218,216,230,232,30,55,3,72,32,0,66,53,55,3,80,32,0,32,0,41,3,80,66,8,125,55,3,88,32,0,16,14,32,0,11,206,4,1,5,127,32,1,40,2,8,33,4,32,1,40,2,0,65,8,106,33,5,3,64,2,127,65,0,33,3,3,64,32,3,32,4,72,4,64,32,3,32,5,106,45,0,0,33,1,32,0,40,2,0,32,0,40,2,8,16,12,33,6,32,0,40,2,0,32,0,40,2,8,32,1,16,11,32,0,32,0,41,3,40,35,4,32,6,65,255,1,113,16,13,133,55,3,40,32,0,32,0,40,2,8,65,1,106,32,0,40,2,4,111,54,2,8,32,0,41,3,40,32,0,41,3,88,136,167,33,6,32,0,32,0,41,3,40,66,8,134,55,3,40,32,0,32,0,41,3,40,32,1,173,132,55,3,40,32,0,32,0,41,3,40,35,3,32,6,65,255,1,113,16,13,133,55,3,40,32,0,32,0,41,3,16,66,1,124,55,3,16,32,0,32,0,41,3,24,66,1,124,55,3,24,2,127,32,0,41,3,16,32,0,41,3,104,90,34,1,4,64,32,0,41,3,40,32,0,41,3,120,131,66,0,81,33,1,11,32,1,69,11,4,127,32,0,41,3,16,32,0,41,3,112,90,5,32,1,11,4,64,32,0,32,0,41,3,32,55,3,48,32,0,32,0,41,3,16,55,3,56,32,0,32,0,41,3,40,55,3,64,65,0,33,1,3,64,32,1,32,0,40,2,4,72,4,64,32,0,40,2,0,32,1,65,0,16,11,32,1,65,1,106,33,1,12,1,11,11,32,0,66,0,55,3,40,32,0,65,0,54,2,8,32,0,66,0,55,3,16,32,0,66,0,55,3,40,32,0,40,2,0,32,0,40,2,8,16,12,33,1,32,0,40,2,0,32,0,40,2,8,65,1,16,11,32,0,32,0,41,3,40,35,4,32,1,65,255,1,113,16,13,133,55,3,40,32,0,32,0,40,2,8,65,1,106,32,0,40,2,4,111,54,2,8,32,0,41,3,40,32,0,41,3,88,136,167,33,1,32,0,32,0,41,3,40,66,8,134,55,3,40,32,0,32,0,41,3,40,66,1,132,55,3,40,32,0,32,0,41,3,40,35,3,32,1,65,255,1,113,16,13,133,55,3,40,32,3,65,1,106,12,3,5,32,3,65,1,106,33,3,12,2,11,0,11,11,65,127,11,34,1,65,0,78,4,64,32,4,32,1,107,33,4,32,1,32,5,106,33,5,32,7,34,1,65,1,106,33,7,32,2,40,2,4,32,2,40,2,0,32,1,65,2,116,106,106,32,0,41,3,56,62,2,8,32,2,40,2,4,32,2,40,2,0,32,1,65,2,116,106,106,40,2,8,26,12,1,11,11,11,88,1,1,127,32,0,32,1,70,4,64,65,0,15,11,3,64,32,2,65,0,71,34,3,4,64,32,0,45,0,0,32,1,45,0,0,70,33,3,11,32,3,4,64,32,2,65,1,107,33,2,32,0,65,1,106,33,0,32,1,65,1,106,33,1,12,1,11,11,32,2,4,127,32,0,45,0,0,32,1,45,0,0,107,5,65,0,11,11,10,0,32,0,32,1,32,2,16,17,11,3,0,1,11,6,0,35,0,36,1,11,19,0,65,136,1,36,0,35,0,36,1,16,6,36,3,16,6,36,4,11,3,0,1,11,7,0,32,0,40,2,0,11,9,0,32,0,32,1,54,2,0,11,7,0,32,0,40,2,4,11,9,0,32,0,32,1,54,2,4,11,7,0,32,0,40,2,8,11,9,0,32,0,32,1,54,2,8,11,7,0,32,0,41,3,16,11,9,0,32,0,32,1,55,3,16,11,7,0,32,0,41,3,24,11,9,0,32,0,32,1,55,3,24,11,7,0,32,0,41,3,32,11,9,0,32,0,32,1,55,3,32,11,7,0,32,0,41,3,40,11,9,0,32,0,32,1,55,3,40,11,7,0,32,0,41,3,48,11,9,0,32,0,32,1,55,3,48,11,7,0,32,0,41,3,56,11,9,0,32,0,32,1,55,3,56,11,7,0,32,0,41,3,64,11,9,0,32,0,32,1,55,3,64,11,7,0,32,0,41,3,72,11,9,0,32,0,32,1,55,3,72,11,7,0,32,0,41,3,80,11,9,0,32,0,32,1,55,3,80,11,7,0,32,0,41,3,88,11,9,0,32,0,32,1,55,3,88,11,7,0,32,0,41,3,96,11,9,0,32,0,32,1,55,3,96,11,7,0,32,0,41,3,104,11,9,0,32,0,32,1,55,3,104,11,7,0,32,0,41,3,112,11,9,0,32,0,32,1,55,3,112,11,7,0,32,0,41,3,120,11,9,0,32,0,32,1,55,3,120,11,11,128,1,2,0,65,8,11,57,27,0,0,0,126,0,108,0,105,0,98,0,47,0,105,0,110,0,116,0,101,0,114,0,110,0,97,0,108,0,47,0,116,0,121,0,112,0,101,0,100,0,97,0,114,0,114,0,97,0,121,0,46,0,116,0,115,0,65,200,0,11,59,28,0,0,0,126,0,108,0,105,0,98,0,47,0,105,0,110,0,116,0,101,0,114,0,110,0,97,0,108,0,47,0,97,0,114,0,114,0,97,0,121,0,98,0,117,0,102,0,102,0,101,0,114,0,46,0,116,0,115,0,32,16,115,111,117,114,99,101,77,97,112,112,105,110,103,85,82,76,14,114,97,98,105,110,46,119,97,115,109,46,109,97,112]);return n(new Response(new Blob([t],{type:"application/wasm"})),e)}i.supported="undefined"!==typeof WebAssembly,e.exports=i},7799:function(e,t,r){var n=r("54fb"),i=r("3d38");e.exports=n,e.exports.parse=n,e.exports.stringify=i},"77be":function(e,t,r){"use strict";(function(t){const n=r("7139"),i=r("faa1"),s=r("5118"),o=r("cd3f"),a=r("83f1"),c=r("44bd"),u=r("f5be"),l=r("52b2"),h=r("d7fa"),f={pollInterval:1e3};e.exports=(e,t,r)=>new d(e,t,r);class d extends i{constructor(e,t,r){if(super(),this._ipfs=e,this._topic=t,this._options=Object.assign({},o(f),o(r)),this._peers=[],this._connections={},this._handleDirectMessage=this._handleDirectMessage.bind(this),!this._ipfs.pubsub)throw new Error("This IPFS node does not have pubsub.");this._ipfs.isOnline()?this._start():this._ipfs.on("ready",this._start.bind(this)),this._ipfs.on("stop",this.leave.bind(this))}getPeers(){return this._peers.slice(0)}hasPeer(e){return this._peers.indexOf(e)>=0}leave(){return new Promise((e,t)=>{s.clearInterval(this._interval),Object.keys(this._connections).forEach(e=>{this._connections[e].stop()}),l.emitter.removeListener(this._topic,this._handleDirectMessage),this.once("stopped",()=>e()),this.emit("stopping")})}broadcast(e){let t=u(e);this._ipfs.pubsub.publish(this._topic,t,e=>{e&&this.emit("error",e)})}sendTo(e,r){let n=this._connections[e];n||(n=new c(e,this._ipfs,this),n.on("error",e=>this.emit("error",e)),this._connections[e]=n,n.once("disconnect",()=>{delete this._connections[e],this._peers=this._peers.filter(t=>t!==e),this.emit("peer left",e)}));const i=t.from([0]),s={to:e,from:this._ipfs._peerInfo.id.toB58String(),data:t.from(r).toString("hex"),seqno:i.toString("hex"),topicIDs:[this._topic],topicCIDs:[this._topic]};n.push(t.from(JSON.stringify(s)))}_start(){this._interval=s.setInterval(this._pollPeers.bind(this),this._options.pollInterval);const e=this._onMessage.bind(this);this._ipfs.pubsub.subscribe(this._topic,e,{},e=>{e?this.emit("error",e):this.emit("subscribed",this._topic)}),this.once("stopping",()=>{this._ipfs.pubsub.unsubscribe(this._topic,e,e=>{e?this.emit("error",e):this.emit("stopped")})}),h(this._ipfs).handle(a,l.handler),l.emitter.on(this._topic,this._handleDirectMessage)}_pollPeers(){this._ipfs.pubsub.peers(this._topic,(e,t)=>{if(e)return void this.emit("error",e);const r=t.sort();this._emitChanges(r)&&(this._peers=r)})}_emitChanges(e){const t=n(this._peers,e);return t.added.forEach(e=>this.emit("peer joined",e)),t.removed.forEach(e=>this.emit("peer left",e)),t.added.length>0||t.removed.length>0}_onMessage(e){this.emit("message",e)}_handleDirectMessage(e){if(e.to===this._ipfs._peerInfo.id.toB58String()){const t=Object.assign({},e);delete t.to,this.emit("message",t)}}}}).call(this,r("b639").Buffer)},"77e5":function(e,t,r){"use strict";const{Buffer:n}=r("b639"),i=e=>{const t=new Array(4);for(let r=0;r<4;r++)t[r]=255&e,e>>=8;return n.from(t)};e.exports={fromNumberTo32BitBuf:i}},7804:function(e,t){function r(e){if("object"!==typeof e||null===e)throw new TypeError("First argument must be an abstract-leveldown compliant store");this.db=e,this._operations=[],this._written=!1}r.prototype._checkWritten=function(){if(this._written)throw new Error("write() already called on this batch")},r.prototype.put=function(e,t){this._checkWritten();var r=this.db._checkKey(e)||this.db._checkValue(t);if(r)throw r;return e=this.db._serializeKey(e),t=this.db._serializeValue(t),this._put(e,t),this},r.prototype._put=function(e,t){this._operations.push({type:"put",key:e,value:t})},r.prototype.del=function(e){this._checkWritten();var t=this.db._checkKey(e);if(t)throw t;return e=this.db._serializeKey(e),this._del(e),this},r.prototype._del=function(e){this._operations.push({type:"del",key:e})},r.prototype.clear=function(){return this._checkWritten(),this._clear(),this},r.prototype._clear=function(){this._operations=[]},r.prototype.write=function(e,t){if(this._checkWritten(),"function"===typeof e&&(t=e),"function"!==typeof t)throw new Error("write() requires a callback argument");"object"===typeof e&&null!==e||(e={}),this._written=!0,this._write(e,t)},r.prototype._write=function(e,t){this.db._batch(this._operations,e,t)},e.exports=r},7849:function(e,t,r){"use strict";(function(t){const n=r("09a4"),i=r("c75d"),s=i.DAGNode,o=i.DAGLink,a=r("e3d5"),c=r("e782"),u=r("0c9a"),l=r("2091e"),h=r("7048");function f(e,r){if("string"===typeof e)return"base58"!==r&&r?t.from(e,r):e;if(t.isBuffer(e))return e;if(a.isCID(e))return e.buffer;throw new Error("unsupported multihash")}function d(e,t){switch(t){case"json":return p(e);case"protobuf":return y(e);default:throw new Error(`unkown encoding: ${t}`)}}function p(e){let r,n;try{const i=JSON.parse(e.toString());n=(i.Links||[]).map(e=>new o(e.Name||e.name,e.Size||e.size,c.fromB58String(e.Hash||e.hash||e.multihash))),r=t.from(i.Data)}catch(i){throw new Error("failed to parse JSON: "+i)}return new s(r,n)}function y(e){return i.util.deserialize(e)}function g(e,t=[]){for(const n in e){const i=e[n];if("/"===n&&1===Object.keys(e).length)try{t.push(new o("",0,new a(i)));continue}catch(r){}a.isCID(i)?t.push(new o("",0,i)):(Array.isArray(i)&&g(i,t),"object"!==typeof i||i instanceof String||g(i,t))}return t}e.exports=function(e){async function r(t,r,n){n=n||{};const i=await e.object.get(t,n),s=await e._ipld.put(r(i),u.DAG_PB,{cidVersion:0,hashAlg:u.SHA2_256});return!1!==n.preload&&e._preload(s),s}return{new:n.variadic(async(r,n)=>{let i;if(n=n||{},r&&"string"!==typeof r&&(n=r,r=null),r){if("unixfs-dir"!==r)throw new Error("unknown template");i=new l("directory").marshal()}else i=t.alloc(0);const o=new s(i),a=await e._ipld.put(o,u.DAG_PB,{cidVersion:0,hashAlg:u.SHA2_256});return!1!==n.preload&&e._preload(a),a}),put:n.variadic(async(r,n)=>{n=n||{};const i=n.enc;let o;if(t.isBuffer(r))o=i?await d(r,i):new s(r);else if(s.isDAGNode(r))o=r;else{if("object"!==typeof r)throw new Error("obj not recognized");o=new s(r.Data,r.Links)}const a=await e._gcLock.readLock();try{const t=await e._ipld.put(o,u.DAG_PB,{cidVersion:0,hashAlg:u.SHA2_256});return!1!==n.preload&&e._preload(t),t}finally{a()}}),get:n.variadic(async(t,r)=>{let n,i;r=r||{};try{n=f(t,r.enc)}catch(s){throw h(s,"ERR_INVALID_MULTIHASH")}try{i=new a(n)}catch(s){throw h(s,"ERR_INVALID_CID")}return 1===r.cidVersion&&(i=i.toV1()),!1!==r.preload&&e._preload(i),e._ipld.get(i)}),data:n.variadic(async(t,r)=>{r=r||{};const n=await e.object.get(t,r);return n.Data}),links:n.variadic(async(t,r)=>{r=r||{};const n=new a(t),i=await e.dag.get(n,r);if("raw"===n.codec)return[];if("dag-pb"===n.codec)return i.value.Links;if("dag-cbor"===n.codec)return g(i);throw new Error(`Cannot resolve links from codec ${n.codec}`)}),stat:n.variadic(async(t,r)=>{r=r||{};const n=await e.object.get(t,r),s=i.util.serialize(n),o=await i.util.cid(s,{cidVersion:0}),a=s.length,c=n.Links.reduce((e,t)=>e+t.Tsize,0);return{Hash:o.toBaseEncodedString(),NumLinks:n.Links.length,BlockSize:a,LinksSize:a-n.Data.length,DataSize:n.Data.length,CumulativeSize:a+c}}),patch:{addLink:n.variadic(async(e,t,n)=>r(e,e=>(e.addLink(t),e),n)),rmLink:n.variadic(async(e,t,n)=>r(e,e=>(e.rmLink(t.Name||t.name),e),n)),appendData:n.variadic(async(e,n,i)=>r(e,e=>{const r=t.concat([e.Data,n]);return new s(r,e.Links)},i)),setData:n.variadic(async(e,t,n)=>r(e,e=>new s(t,e.Links),n))}}}}).call(this,r("b639").Buffer)},7852:function(e,t,r){"use strict";const n=r("f106"),i="\nmessage Identify {\n // protocolVersion determines compatibility between peers\n optional string protocolVersion = 5; // e.g. ipfs/1.0.0\n\n // agentVersion is like a UserAgent string in browsers, or client version in bittorrent\n // includes the client name and client.\n optional string agentVersion = 6; // e.g. go-ipfs/0.1.0\n\n // publicKey is this node's public key (which also gives its node.ID)\n // - may not need to be sent, as secure channel implies it has been sent.\n // - then again, if we change / disable secure channel, may still want it.\n optional bytes publicKey = 1;\n\n // listenAddrs are the multiaddrs the sender node listens for open connections on\n repeated bytes listenAddrs = 2;\n\n // oservedAddr is the multiaddr of the remote endpoint that the sender node perceives\n // this is useful information to convey to the other side, as it helps the remote endpoint\n // determine whether its connection to the local peer goes through NAT.\n optional bytes observedAddr = 4;\n\n repeated string protocols = 3;\n}\n";e.exports=n(i).Identify},"78e1":function(e,t,r){(function(t){var n=r("c0ed"),i=r("b85d");e.exports=l;var s,o=/\n/g,a=/\\n/g;function c(){}function u(){return"undefined"!==typeof self?self:"undefined"!==typeof window?window:"undefined"!==typeof t?t:{}}function l(e){if(n.call(this,e),this.query=this.query||{},!s){var t=u();s=t.___eio=t.___eio||[]}this.index=s.length;var r=this;s.push((function(e){r.onData(e)})),this.query.j=this.index,"function"===typeof addEventListener&&addEventListener("beforeunload",(function(){r.script&&(r.script.onerror=c)}),!1)}i(l,n),l.prototype.supportsBinary=!1,l.prototype.doClose=function(){this.script&&(this.script.parentNode.removeChild(this.script),this.script=null),this.form&&(this.form.parentNode.removeChild(this.form),this.form=null,this.iframe=null),n.prototype.doClose.call(this)},l.prototype.doPoll=function(){var e=this,t=document.createElement("script");this.script&&(this.script.parentNode.removeChild(this.script),this.script=null),t.async=!0,t.src=this.uri(),t.onerror=function(t){e.onError("jsonp poll error",t)};var r=document.getElementsByTagName("script")[0];r?r.parentNode.insertBefore(t,r):(document.head||document.body).appendChild(t),this.script=t;var n="undefined"!==typeof navigator&&/gecko/i.test(navigator.userAgent);n&&setTimeout((function(){var e=document.createElement("iframe");document.body.appendChild(e),document.body.removeChild(e)}),100)},l.prototype.doWrite=function(e,t){var r=this;if(!this.form){var n,i=document.createElement("form"),s=document.createElement("textarea"),c=this.iframeId="eio_iframe_"+this.index;i.className="socketio",i.style.position="absolute",i.style.top="-1000px",i.style.left="-1000px",i.target=c,i.method="POST",i.setAttribute("accept-charset","utf-8"),s.name="d",i.appendChild(s),document.body.appendChild(i),this.form=i,this.area=s}function u(){l(),t()}function l(){if(r.iframe)try{r.form.removeChild(r.iframe)}catch(t){r.onError("jsonp polling iframe removal error",t)}try{var e='')\n\t\tstorageContainer.close()\n\t\tstorageOwner = storageContainer.w.frames[0].document\n\t\tstorageEl = storageOwner.createElement('div')\n\t} catch(e) {\n\t\t// somehow ActiveXObject instantiation failed (perhaps some special\n\t\t// security settings or otherwse), fall back to per-path storage\n\t\tstorageEl = doc.createElement('div')\n\t\tstorageOwner = doc.body\n\t}\n\n\treturn function(storeFunction) {\n\t\tvar args = [].slice.call(arguments, 0)\n\t\targs.unshift(storageEl)\n\t\t// See http://msdn.microsoft.com/en-us/library/ms531081(v=VS.85).aspx\n\t\t// and http://msdn.microsoft.com/en-us/library/ms531424(v=VS.85).aspx\n\t\tstorageOwner.appendChild(storageEl)\n\t\tstorageEl.addBehavior('#default#userData')\n\t\tstorageEl.load(storageName)\n\t\tstoreFunction.apply(this, args)\n\t\tstorageOwner.removeChild(storageEl)\n\t\treturn\n\t}\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar pad_string_1 = require(\"./pad-string\");\nfunction encode(input, encoding) {\n if (encoding === void 0) { encoding = \"utf8\"; }\n if (Buffer.isBuffer(input)) {\n return fromBase64(input.toString(\"base64\"));\n }\n return fromBase64(Buffer.from(input, encoding).toString(\"base64\"));\n}\n;\nfunction decode(base64url, encoding) {\n if (encoding === void 0) { encoding = \"utf8\"; }\n return Buffer.from(toBase64(base64url), \"base64\").toString(encoding);\n}\nfunction toBase64(base64url) {\n base64url = base64url.toString();\n return pad_string_1.default(base64url)\n .replace(/\\-/g, \"+\")\n .replace(/_/g, \"/\");\n}\nfunction fromBase64(base64) {\n return base64\n .replace(/=/g, \"\")\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\");\n}\nfunction toBuffer(base64url) {\n return Buffer.from(toBase64(base64url), \"base64\");\n}\nvar base64url = encode;\nbase64url.encode = encode;\nbase64url.decode = decode;\nbase64url.toBase64 = toBase64;\nbase64url.fromBase64 = fromBase64;\nbase64url.toBuffer = toBuffer;\nexports.default = base64url;\n","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","'use strict'\n\nconst pull = require('pull-stream')\nconst pushable = require('pull-pushable')\nconst through = require('pull-through')\nconst looper = require('looper')\nconst nextTick = require('async/nextTick')\nconst EE = require('events')\nconst debug = require('debug')\n\nconst { emitError, emitStream } = require('./util')\nconst { Types, MAX_MSG_SIZE } = require('./consts')\nconst Channel = require('./channel')\nconst coder = require('./coder')\n\nconst log = debug('pull-plex')\nlog.err = debug('pull-plex:err')\n\n/**\n * @typedef {Object} Message\n * @property {number} id\n * @property {MessageType} type\n * @property {Buffer} data\n */\n\n/**\n * @fires Mplex#close Emitted when Mplex closes\n * @fires Mplex#error Emitted when an error occurs\n * @fires Mplex#stream Emitted when a new stream is opened\n */\nclass Mplex extends EE {\n /**\n * @constructor\n * @param {Object} opts\n * @param {boolean} opts.initiator Is this starting the stream. Default: `true`\n * @param {function(Channel, number)} opts.onChan A handler for new streams. Can be used instead of `.on('stream')`\n * @param {number} opts.maxChannels Maximum number of channels to have open. Default: `10000`\n * @param {number} opts.maxMsgSize Maximum size messages are allowed to be. Default: `1 << 20` (1MB)\n * @param {boolean} opts.lazy Should channels be opened lazily? If false, channels will be opened when they are created. Default: `false`\n */\n constructor (opts) {\n super()\n\n if (typeof opts === 'boolean') {\n opts = { initiator: opts }\n }\n\n opts = {\n initiator: true,\n onChan: null,\n maxChannels: 10000,\n maxMsgSize: MAX_MSG_SIZE,\n lazy: false,\n ...opts\n }\n\n this._maxChannels = opts.maxChannels\n this._maxMsgSize = opts.maxMsgSize\n this._lazy = opts.lazy\n\n this._initiator = Boolean(opts.initiator)\n this._chanId = 0\n this._inChannels = new Array(this._maxChannels / 2)\n this._outChannels = new Array(this._maxChannels / 2)\n this._endedRemote = false // remote stream ended\n this._endedLocal = false // local stream ended\n\n this._chandata = pushable((err) => {\n this._log('mplex ended')\n this._endedRemote = true\n this.close(err)\n })\n\n if (opts.onChan) {\n this.on('stream', (chan) => opts.onChan(chan, chan.id))\n }\n\n this.source = pull(\n this._chandata,\n coder.encode()\n )\n\n const self = this\n this.sink = pull(\n through(function (data) {\n // ensure data is within our max size requirement\n if (data && data.length >= self._maxMsgSize) {\n nextTick(emitError, self, new Error('message too large!'))\n return this.queue(null)\n }\n this.queue(data)\n }),\n coder.decode(),\n (read) => {\n const next = looper(() => {\n read(null, (end, data) => {\n if (self._endedLocal) { return }\n if (end === true) { return self.close() }\n if (end) { return self.destroy(end) }\n self._handle(data)\n next()\n })\n })\n next()\n })\n }\n\n /**\n * A convenience wrapper for the log that adds useful metadata to logs\n * @private\n * @param {string} name The name of the operation being logged\n * @param {Buffer|string} data Logged with the metadata. Must be `.toString` capable. Default: `''`\n */\n _log (name, data) {\n log({\n op: name,\n initiator: this._initiator,\n endedLocal: this._endedLocal,\n endedRemote: this._endedRemote,\n data: (data && data.toString()) || ''\n })\n }\n\n get initiator () {\n return this._initiator\n }\n\n /**\n * Closes all open channels\n * @param {Error} err Optional error\n */\n close (err) {\n this._log('close', err)\n\n if (this.destroyed) { return }\n\n if (err) {\n nextTick(emitError, this, err)\n }\n\n err = err || 'Underlying stream has been closed'\n this._endedLocal = true\n\n // propagate close to channels\n const chans = Array.prototype.concat(this._outChannels, this._inChannels)\n for (let chan of chans) {\n if (chan) {\n chan.close(err)\n }\n }\n\n this.emit('close')\n }\n\n get destroyed () {\n return this._endedRemote && this._endedLocal\n }\n\n /**\n * Destroys the parent stream and closes Mplex\n * @param {Error} err\n */\n destroy (err) {\n err = err || new Error('Underlying stream has been closed')\n this._chandata.end(err)\n this.close(err)\n }\n\n /**\n * Pushes data to the stream\n * @param {Buffer} data\n */\n push (data) {\n if (data.data &&\n Buffer.byteLength(data.data) > this._maxMsgSize) {\n this._chandata.end(new Error('message too large!'))\n }\n\n this._chandata.push(data)\n }\n\n /**\n * Creates a new Channel (stream). If Mplex was created with `opts.lazy` set to true,\n * the channel will not automatically be opened.\n *\n * @param {string} name The name of the channel/stream to create\n * @returns {Channel}\n */\n createStream (name) {\n if (typeof name === 'number') { name = name.toString() }\n const chan = this._newStream(null, true, false, name, this._outChannels)\n if (!this._lazy) { chan.openChan(name) }\n return chan\n }\n\n /**\n * Attempts to create a channel if it doesn't already exist.\n * If a channel already exists for `id`, `Mplex#error` will be emitted.\n *\n * @private\n * @param {number} id The id of the channel. If `null` it will be auto incremented from `Mplex._chanId`\n * @param {boolean} initiator Is the channel creating the connection\n * @param {boolean} open Should the channel be opened when created\n * @param {string} name The name of the channel\n * @param {Array} list The channel list to add the channel to\n * @returns {Channel}\n */\n _newStream (id, initiator, open, name, list) {\n if (this.chanSize >= this._maxChannels) {\n this.emit('error', new Error('max channels exceeded'))\n return\n }\n\n if (typeof initiator === 'string') {\n name = initiator\n initiator = false\n open = false\n }\n\n if (typeof open === 'string') {\n name = open\n open = false\n }\n\n id = typeof id === 'number' ? id : this._chanId++\n if (list[id]) {\n this.emit('error', new Error(`channel with id ${id} already exist!`))\n return\n }\n const chan = new Channel({\n id,\n name,\n plex: this,\n initiator,\n open: open || false\n })\n\n return this._addChan(id, chan, list)\n }\n\n /**\n * A convenience method for setting the `chan` up to be tracked.\n * @private\n * @param {number} id The id of the channel\n * @param {Channel} chan The channel to track\n * @param {Array} list The channel list to add the channel to\n * @returns {Channel} `chan`\n */\n _addChan (id, chan, list) {\n chan.once('close', () => {\n list[id] = null\n })\n chan.once('error', (err) => {\n log.err('channel error', err)\n })\n\n list[id] = chan\n return chan\n }\n\n get chanSize () {\n return this._inChannels.size + this._outChannels.size\n }\n\n /**\n * Takes the appropriate course of action based on `msg.type`.\n * If `msg.type` is not recognized `Mplex#error` will be emitted.\n * @param {Message} msg\n */\n _handle (msg) {\n this._log('_handle', msg)\n const { id, type, data } = msg\n switch (type) {\n // Create a new stream\n case Types.NEW: {\n const chan = this._newStream(id, false, true, data.toString(), this._inChannels)\n nextTick(emitStream, this, chan, id)\n break\n }\n\n // Push the data into the channel with the matching id if it exists\n case Types.OUT_MESSAGE:\n case Types.IN_MESSAGE: {\n const list = type & 1 ? this._outChannels : this._inChannels\n const chan = list[id]\n if (chan) {\n chan.push(data)\n }\n break\n }\n\n // Close the channel with the matching id\n case Types.OUT_CLOSE:\n case Types.IN_CLOSE: {\n const list = type & 1 ? this._outChannels : this._inChannels\n const chan = list[id]\n if (chan) {\n chan.close()\n }\n break\n }\n\n // Destroys the channel with the matching id\n case Types.OUT_RESET:\n case Types.IN_RESET: {\n const list = type & 1 ? this._outChannels : this._inChannels\n const chan = list[id]\n if (chan) {\n chan.destroy()\n }\n break\n }\n\n default:\n nextTick(emitError, this, new Error('Invalid message type'))\n }\n }\n}\n\nmodule.exports = Mplex\n","'use strict'\n\nconst EventEmitter = require('events')\nconst pull = require('pull-stream')\nconst Pushable = require('pull-pushable')\n\nconst PROTOCOL = require('./protocol')\nconst encoding = require('./encoding')\nconst getPeerId = require('./peer-id')\nconst libp2p = require('./libp2p')\n\nmodule.exports = class Connection extends EventEmitter {\n constructor (id, ipfs, room) {\n super()\n this._id = id\n this._ipfs = ipfs\n this._room = room\n this._connection = null\n this._connecting = false\n }\n\n push (message) {\n if (this._connection) {\n this._connection.push(encoding(message))\n } else {\n this.once('connect', () => this.push(message))\n if (!this._connecting) {\n this._getConnection()\n }\n }\n }\n\n stop () {\n if (this._connection) {\n this._connection.end()\n }\n }\n\n _getConnection () {\n this._connecting = true\n this._getPeerAddresses(this._id, (err, peerAddresses) => {\n if (err) {\n this.emit('error', err)\n return // early\n }\n\n if (!peerAddresses.length) {\n this.emit('disconnect')\n return // early\n }\n\n libp2p(this._ipfs).dialProtocol(peerAddresses[0], PROTOCOL, (err, conn) => {\n if (err) {\n this.emit('disconnect')\n return // early\n }\n this._connecting = false\n const pushable = Pushable()\n this._connection = pushable\n pull(\n pushable,\n conn,\n pull.onEnd(() => {\n delete this._connection\n this.emit('disconnect')\n })\n )\n this.emit('connect', pushable)\n })\n })\n }\n\n _getPeerAddresses (peerId, callback) {\n this._ipfs.swarm.peers((err, peersAddresses) => {\n if (err) {\n callback(err)\n return // early\n }\n\n callback(\n null,\n peersAddresses\n .filter((peerAddress) => getPeerId(peerAddress.peer) === peerId)\n .map(peerAddress => peerAddress.peer))\n })\n }\n}\n","'use strict';\nmodule.exports = function (arr) {\n\tif (!Array.isArray(arr)) {\n\t\tthrow new TypeError('Expected Array, got ' + typeof arr);\n\t}\n\n\tvar rand;\n\tvar tmp;\n\tvar len = arr.length;\n\tvar ret = arr.slice();\n\n\twhile (len) {\n\t\trand = Math.floor(Math.random() * len--);\n\t\ttmp = ret[len];\n\t\tret[len] = ret[rand];\n\t\tret[rand] = tmp;\n\t}\n\n\treturn ret;\n};\n","'use strict';\n\nfunction createError(msg, code, props) {\n var err = msg instanceof Error ? msg : new Error(msg);\n var key;\n\n if (typeof code === 'object') {\n props = code;\n } else if (code != null) {\n err.code = code;\n }\n\n if (props) {\n for (key in props) {\n err[key] = props[key];\n }\n }\n\n return err;\n}\n\nmodule.exports = createError;\n","'use strict'\n\nconst errcode = require('err-code')\n\nmodule.exports.dbOpenFailedError = (err) => {\n err = err || new Error('Cannot open database')\n return errcode(err, 'ERR_DB_OPEN_FAILED')\n}\n\nmodule.exports.dbDeleteFailedError = (err) => {\n err = err || new Error('Delete failed')\n return errcode(err, 'ERR_DB_DELETE_FAILED')\n}\n\nmodule.exports.dbWriteFailedError = (err) => {\n err = err || new Error('Write failed')\n return errcode(err, 'ERR_DB_WRITE_FAILED')\n}\n\nmodule.exports.notFoundError = (err) => {\n err = err || new Error('Not Found')\n return errcode(err, 'ERR_NOT_FOUND')\n}\n","'use strict'\n\nconst moduleConfig = require('../utils/module-config')\n\nmodule.exports = (arg) => {\n const send = moduleConfig(arg)\n\n return {\n get: require('./get')(send),\n put: require('./put')(send),\n findProvs: require('./findprovs')(send),\n findPeer: require('./findpeer')(send),\n provide: require('./provide')(send),\n // find closest peerId to given peerId\n query: require('./query')(send)\n }\n}\n","'use strict'\n\nconst ConsumableBuffer = require('./consumable-buffer')\n\nmodule.exports = function wrapHash (hashFn) {\n return function hashing (value) {\n if (value instanceof InfiniteHash) {\n // already a hash. return it\n return value\n } else {\n return new InfiniteHash(value, hashFn)\n }\n }\n}\n\nclass InfiniteHash {\n constructor (value, hashFn) {\n if ((typeof value) !== 'string' && !Buffer.isBuffer(value)) {\n throw new Error('can only hash strings or buffers')\n }\n this._value = value\n this._hashFn = hashFn\n this._depth = -1\n this._availableBits = 0\n this._currentBufferIndex = 0\n this._buffers = []\n }\n\n async take (bits) {\n let pendingBits = bits\n\n while (this._availableBits < pendingBits) {\n await this._produceMoreBits()\n }\n\n let result = 0\n\n while (pendingBits > 0) {\n const hash = this._buffers[this._currentBufferIndex]\n const available = Math.min(hash.availableBits(), pendingBits)\n const took = hash.take(available)\n result = (result << available) + took\n pendingBits -= available\n this._availableBits -= available\n\n if (hash.availableBits() === 0) {\n this._currentBufferIndex++\n }\n }\n\n return result\n }\n\n untake (bits) {\n let pendingBits = bits\n\n while (pendingBits > 0) {\n const hash = this._buffers[this._currentBufferIndex]\n const availableForUntake = Math.min(hash.totalBits() - hash.availableBits(), pendingBits)\n hash.untake(availableForUntake)\n pendingBits -= availableForUntake\n this._availableBits += availableForUntake\n\n if (this._currentBufferIndex > 0 && hash.totalBits() === hash.availableBits()) {\n this._depth--\n this._currentBufferIndex--\n }\n }\n }\n\n async _produceMoreBits () {\n this._depth++\n\n const value = this._depth ? this._value + this._depth : this._value\n const hashValue = await this._hashFn(value)\n const buffer = new ConsumableBuffer(hashValue)\n\n this._buffers.push(buffer)\n this._availableBits += buffer.availableBits()\n }\n}\n","/* eslint max-nested-callbacks: [\"error\", 8] */\n'use strict'\n\nconst callbackify = require('callbackify')\nconst errCode = require('err-code')\nconst multibase = require('multibase')\nconst { resolvePath } = require('../utils')\nconst PinManager = require('./pin/pin-manager')\nconst PinTypes = PinManager.PinTypes\n\nmodule.exports = (self) => {\n const dag = self.dag\n const pinManager = new PinManager(self._repo, dag)\n\n const pin = {\n add: callbackify.variadic(async (paths, options) => {\n options = options || {}\n\n const recursive = options.recursive !== false\n const cids = await resolvePath(self.object, paths)\n const pinAdd = async () => {\n const results = []\n\n // verify that each hash can be pinned\n for (const cid of cids) {\n const key = cid.toBaseEncodedString()\n\n if (recursive) {\n if (pinManager.recursivePins.has(key)) {\n // it's already pinned recursively\n results.push(key)\n\n continue\n }\n\n // entire graph of nested links should be pinned,\n // so make sure we have all the objects\n await pinManager.fetchCompleteDag(key, { preload: options.preload })\n\n // found all objects, we can add the pin\n results.push(key)\n } else {\n if (pinManager.recursivePins.has(key)) {\n // recursive supersedes direct, can't have both\n throw new Error(`${key} already pinned recursively`)\n }\n\n if (!pinManager.directPins.has(key)) {\n // make sure we have the object\n await dag.get(cid, { preload: options.preload })\n }\n\n results.push(key)\n }\n }\n\n // update the pin sets in memory\n const pinset = recursive ? pinManager.recursivePins : pinManager.directPins\n results.forEach(key => pinset.add(key))\n\n // persist updated pin sets to datastore\n await pinManager.flushPins()\n\n return results.map(hash => ({ hash }))\n }\n\n // When adding a file, we take a lock that gets released after pinning\n // is complete, so don't take a second lock here\n const lock = Boolean(options.lock)\n\n if (!lock) {\n return pinAdd()\n }\n\n const release = await self._gcLock.readLock()\n\n try {\n await pinAdd()\n } finally {\n release()\n }\n }),\n\n rm: callbackify.variadic(async (paths, options) => {\n options = options || {}\n\n const recursive = options.recursive == null ? true : options.recursive\n\n if (options.cidBase && !multibase.names.includes(options.cidBase)) {\n throw errCode(new Error('invalid multibase'), 'ERR_INVALID_MULTIBASE')\n }\n\n const cids = await resolvePath(self.object, paths)\n const release = await self._gcLock.readLock()\n const results = []\n\n try {\n // verify that each hash can be unpinned\n for (const cid of cids) {\n const res = await pinManager.isPinnedWithType(cid, PinTypes.all)\n\n const { pinned, reason } = res\n const key = cid.toBaseEncodedString()\n\n if (!pinned) {\n throw new Error(`${key} is not pinned`)\n }\n\n switch (reason) {\n case (PinTypes.recursive):\n if (!recursive) {\n throw new Error(`${key} is pinned recursively`)\n }\n\n results.push(key)\n\n break\n case (PinTypes.direct):\n results.push(key)\n\n break\n default:\n throw new Error(`${key} is pinned indirectly under ${reason}`)\n }\n }\n\n // update the pin sets in memory\n results.forEach(key => {\n if (recursive && pinManager.recursivePins.has(key)) {\n pinManager.recursivePins.delete(key)\n } else {\n pinManager.directPins.delete(key)\n }\n })\n\n // persist updated pin sets to datastore\n await pinManager.flushPins()\n\n self.log(`Removed pins: ${results}`)\n\n return results.map(hash => ({ hash }))\n } finally {\n release()\n }\n }),\n\n ls: callbackify.variadic(async (paths, options) => {\n options = options || {}\n\n let type = PinTypes.all\n\n if (paths && paths.type) {\n options = paths\n paths = null\n }\n\n if (options.type) {\n type = options.type\n if (typeof options.type === 'string') {\n type = options.type.toLowerCase()\n }\n const err = PinManager.checkPinType(type)\n if (err) {\n throw err\n }\n }\n\n if (paths) {\n // check the pinned state of specific hashes\n const cids = await resolvePath(self.object, paths)\n const results = []\n\n for (const cid of cids) {\n const { key, reason, pinned } = await pinManager.isPinnedWithType(cid, type)\n\n if (pinned) {\n switch (reason) {\n case PinTypes.direct:\n case PinTypes.recursive:\n results.push({\n hash: key,\n type: reason\n })\n break\n default:\n results.push({\n hash: key,\n type: `${PinTypes.indirect} through ${reason}`\n })\n }\n }\n }\n\n if (!results.length) {\n throw new Error(`path '${paths}' is not pinned`)\n }\n\n return results\n }\n\n // show all pinned items of type\n let pins = []\n\n if (type === PinTypes.direct || type === PinTypes.all) {\n pins = pins.concat(\n Array.from(pinManager.directPins).map(hash => ({\n type: PinTypes.direct,\n hash\n }))\n )\n }\n\n if (type === PinTypes.recursive || type === PinTypes.all) {\n pins = pins.concat(\n Array.from(pinManager.recursivePins).map(hash => ({\n type: PinTypes.recursive,\n hash\n }))\n )\n }\n\n if (type === PinTypes.indirect || type === PinTypes.all) {\n const indirects = await pinManager.getIndirectKeys(options)\n\n pins = pins\n // if something is pinned both directly and indirectly,\n // report the indirect entry\n .filter(({ hash }) =>\n !indirects.includes(hash) ||\n (indirects.includes(hash) && !pinManager.directPins.has(hash))\n )\n .concat(indirects.map(hash => ({\n type: PinTypes.indirect,\n hash\n })))\n\n return pins\n }\n\n return pins\n }),\n\n // used by tests\n pinManager\n }\n\n return pin\n}\n","const FixedFIFO = require('./fixed-size')\n\nmodule.exports = class FastFIFO {\n constructor (hwm) {\n this.hwm = hwm || 16\n this.head = new FixedFIFO(this.hwm)\n this.tail = this.head\n }\n\n push (val) {\n if (!this.head.push(val)) {\n const prev = this.head\n this.head = prev.next = new FixedFIFO(2 * this.head.buffer.length)\n this.head.push(val)\n }\n }\n\n shift () {\n const val = this.tail.shift()\n if (val === undefined && this.tail.next) {\n const next = this.tail.next\n this.tail.next = null\n this.tail = next\n return this.tail.shift()\n }\n return val\n }\n\n isEmpty () {\n return this.head.isEmpty()\n }\n}\n","'use strict'\n\nconst path = require('path')\nconst os = require('os')\nconst uuid = require('uuid/v4')\n\nexports.filter = (iterable, filterer) => {\n return (async function * () {\n for await (const value of iterable) {\n const keep = await filterer(value)\n if (!keep) continue\n yield value\n }\n })()\n}\n\n// Not just sort, because the sorter is given all the values and should return\n// them all sorted\nexports.sortAll = (iterable, sorter) => {\n return (async function * () {\n let values = []\n for await (const value of iterable) values.push(value)\n values = await sorter(values)\n for (const value of values) yield value\n })()\n}\n\nexports.take = (iterable, n) => {\n return (async function * () {\n if (n <= 0) return\n let i = 0\n for await (const value of iterable) {\n yield value\n i++\n if (i >= n) return\n }\n })()\n}\n\nexports.map = (iterable, mapper) => {\n return (async function * () {\n for await (const value of iterable) {\n yield mapper(value)\n }\n })()\n}\n\nexports.replaceStartWith = function (s, r) {\n const matcher = new RegExp('^' + r)\n return s.replace(matcher, '')\n}\n\nexports.tmpdir = () => {\n return path.join(os.tmpdir(), uuid())\n}\n","'use strict'\n\nmodule.exports = function count (max) {\n var i = 0; max = max || Infinity\n return function (end, cb) {\n if(end) return cb && cb(end)\n if(i > max)\n return cb(true)\n cb(null, i++)\n }\n}\n\n\n","var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n","'use strict'\n\nconst { Key, Errors, utils } = require('interface-datastore')\nconst { filter, map, take, sortAll } = utils\n\n/**\n * A datastore backed by leveldb.\n */\nclass LevelDatastore {\n constructor (path, opts) {\n let database\n\n if (opts && opts.db) {\n database = opts.db\n delete opts.db\n } else {\n database = require('level')\n }\n\n this.db = database(path, {\n ...opts,\n valueEncoding: 'binary',\n compression: false // same default as go\n })\n }\n\n async open () {\n try {\n await this.db.open()\n } catch (err) {\n throw Errors.dbOpenFailedError(err)\n }\n }\n\n async put (key, value) {\n try {\n await this.db.put(key.toString(), value)\n } catch (err) {\n throw Errors.dbWriteFailedError(err)\n }\n }\n\n async get (key) {\n let data\n try {\n data = await this.db.get(key.toString())\n } catch (err) {\n if (err.notFound) throw Errors.notFoundError(err)\n throw Errors.dbWriteFailedError(err)\n }\n return data\n }\n\n async has (key) {\n try {\n await this.db.get(key.toString())\n } catch (err) {\n if (err.notFound) return false\n throw err\n }\n return true\n }\n\n async delete (key) {\n try {\n await this.db.del(key.toString())\n } catch (err) {\n throw Errors.dbDeleteFailedError(err)\n }\n }\n\n close () {\n return this.db.close()\n }\n\n batch () {\n const ops = []\n return {\n put: (key, value) => {\n ops.push({\n type: 'put',\n key: key.toString(),\n value: value\n })\n },\n delete: (key) => {\n ops.push({\n type: 'del',\n key: key.toString()\n })\n },\n commit: () => {\n return this.db.batch(ops)\n }\n }\n }\n\n query (q) {\n let values = true\n if (q.keysOnly != null) {\n values = !q.keysOnly\n }\n\n let it = levelIteratorToIterator(\n this.db.db.iterator({\n keys: true,\n values: values,\n keyAsBuffer: true\n })\n )\n\n it = map(it, ({ key, value }) => {\n const res = { key: new Key(key, false) }\n if (values) {\n res.value = Buffer.from(value)\n }\n return res\n })\n\n if (q.prefix != null) {\n it = filter(it, e => e.key.toString().startsWith(q.prefix))\n }\n\n if (Array.isArray(q.filters)) {\n it = q.filters.reduce((it, f) => filter(it, f), it)\n }\n\n if (Array.isArray(q.orders)) {\n it = q.orders.reduce((it, f) => sortAll(it, f), it)\n }\n\n if (q.offset != null) {\n let i = 0\n it = filter(it, () => i++ >= q.offset)\n }\n\n if (q.limit != null) {\n it = take(it, q.limit)\n }\n\n return it\n }\n}\n\nfunction levelIteratorToIterator (li) {\n return {\n next: () => new Promise((resolve, reject) => {\n li.next((err, key, value) => {\n if (err) return reject(err)\n if (key == null) return resolve({ done: true })\n resolve({ done: false, value: { key, value } })\n })\n }),\n return: () => new Promise((resolve, reject) => {\n li.end(err => {\n if (err) return reject(err)\n resolve({ done: true })\n })\n }),\n [Symbol.asyncIterator] () {\n return this\n }\n }\n}\n\nmodule.exports = LevelDatastore\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","'use strict'\n\nconst { createFromPrivKey } = require('peer-id')\nconst promisify = require('promisify-es6')\n\nconst errcode = require('err-code')\nconst debug = require('debug')\nconst log = debug('ipfs:ipns')\nlog.error = debug('ipfs:ipns:error')\n\nconst IpnsPublisher = require('./publisher')\nconst IpnsRepublisher = require('./republisher')\nconst IpnsResolver = require('./resolver')\nconst path = require('./path')\nconst { normalizePath } = require('../utils')\nconst TLRU = require('../../utils/tlru')\nconst defaultRecordTtl = 60 * 1000\n\nclass IPNS {\n constructor (routing, datastore, peerInfo, keychain, options) {\n this.publisher = new IpnsPublisher(routing, datastore)\n this.republisher = new IpnsRepublisher(this.publisher, datastore, peerInfo, keychain, options)\n this.resolver = new IpnsResolver(routing)\n this.cache = new TLRU(1000)\n this.routing = routing\n }\n\n // Publish\n async publish (privKey, value, lifetime = IpnsPublisher.defaultRecordLifetime) {\n try {\n value = normalizePath(value)\n\n const peerId = await promisify(createFromPrivKey)(privKey.bytes)\n await this.publisher.publishWithEOL(privKey, value, lifetime)\n\n log(`IPNS value ${value} was published correctly`)\n\n // // Add to cache\n const id = peerId.toB58String()\n const ttEol = parseFloat(lifetime)\n const ttl = (ttEol < defaultRecordTtl) ? ttEol : defaultRecordTtl\n\n this.cache.set(id, value, ttl)\n\n log(`IPNS value ${value} was cached correctly`)\n\n return {\n name: id,\n value: value\n }\n } catch (err) {\n log.error(err)\n\n throw err\n }\n }\n\n // Resolve\n async resolve (name, options) {\n if (typeof name !== 'string') {\n throw errcode(new Error('name received is not valid'), 'ERR_INVALID_NAME')\n }\n\n options = options || {}\n\n // If recursive, we should not try to get the cached value\n if (!options.nocache && !options.recursive) {\n // Try to get the record from cache\n const id = name.split('/')[2]\n const result = this.cache.get(id)\n\n if (result) {\n return result\n }\n }\n\n try {\n const result = await this.resolver.resolve(name, options)\n\n log(`IPNS record from ${name} was resolved correctly`)\n\n return result\n } catch (err) {\n log.error(err)\n\n throw err\n }\n }\n\n // Initialize keyspace\n // sets the ipns record for the given key to point to an empty directory\n async initializeKeyspace (privKey, value) { // eslint-disable-line require-await\n return this.publish(privKey, value, IpnsPublisher.defaultRecordLifetime)\n }\n}\n\nIPNS.path = path\n\nmodule.exports = IPNS\n","/**\n * Define a struct error.\n *\n * @type {StructError}\n */\n\nclass StructError extends TypeError {\n static format(attrs) {\n const { type, path, value } = attrs;\n const message = `Expected a value of type \\`${type}\\`${path.length ? ` for \\`${path.join('.')}\\`` : ''} but received \\`${JSON.stringify(value)}\\`.`;\n return message;\n }\n\n constructor(attrs) {\n const message = StructError.format(attrs);\n super(message);\n\n const { data, path, value, reason, type, errors = [] } = attrs;\n this.data = data;\n this.path = path;\n this.value = value;\n this.reason = reason;\n this.type = type;\n this.errors = errors;\n\n if (!errors.length) {\n errors.push(this);\n }\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = new Error().stack;\n }\n }\n}\n\nvar toString = Object.prototype.toString;\n\nvar kindOf = function kindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n\n var type = typeof val;\n if (type === 'boolean') return 'boolean';\n if (type === 'string') return 'string';\n if (type === 'number') return 'number';\n if (type === 'symbol') return 'symbol';\n if (type === 'function') {\n return isGeneratorFn(val) ? 'generatorfunction' : 'function';\n }\n\n if (isArray(val)) return 'array';\n if (isBuffer(val)) return 'buffer';\n if (isArguments(val)) return 'arguments';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n if (isRegexp(val)) return 'regexp';\n\n switch (ctorName(val)) {\n case 'Symbol': return 'symbol';\n case 'Promise': return 'promise';\n\n // Set, Map, WeakSet, WeakMap\n case 'WeakMap': return 'weakmap';\n case 'WeakSet': return 'weakset';\n case 'Map': return 'map';\n case 'Set': return 'set';\n\n // 8-bit typed arrays\n case 'Int8Array': return 'int8array';\n case 'Uint8Array': return 'uint8array';\n case 'Uint8ClampedArray': return 'uint8clampedarray';\n\n // 16-bit typed arrays\n case 'Int16Array': return 'int16array';\n case 'Uint16Array': return 'uint16array';\n\n // 32-bit typed arrays\n case 'Int32Array': return 'int32array';\n case 'Uint32Array': return 'uint32array';\n case 'Float32Array': return 'float32array';\n case 'Float64Array': return 'float64array';\n }\n\n if (isGeneratorObj(val)) {\n return 'generator';\n }\n\n // Non-plain objects\n type = toString.call(val);\n switch (type) {\n case '[object Object]': return 'object';\n // iterators\n case '[object Map Iterator]': return 'mapiterator';\n case '[object Set Iterator]': return 'setiterator';\n case '[object String Iterator]': return 'stringiterator';\n case '[object Array Iterator]': return 'arrayiterator';\n }\n\n // other\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n};\n\nfunction ctorName(val) {\n return val.constructor ? val.constructor.name : null;\n}\n\nfunction isArray(val) {\n if (Array.isArray) return Array.isArray(val);\n return val instanceof Array;\n}\n\nfunction isError(val) {\n return val instanceof Error || (typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number');\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function'\n && typeof val.getDate === 'function'\n && typeof val.setDate === 'function';\n}\n\nfunction isRegexp(val) {\n if (val instanceof RegExp) return true;\n return typeof val.flags === 'string'\n && typeof val.ignoreCase === 'boolean'\n && typeof val.multiline === 'boolean'\n && typeof val.global === 'boolean';\n}\n\nfunction isGeneratorFn(name, val) {\n return ctorName(name) === 'GeneratorFunction';\n}\n\nfunction isGeneratorObj(val) {\n return typeof val.throw === 'function'\n && typeof val.return === 'function'\n && typeof val.next === 'function';\n}\n\nfunction isArguments(val) {\n try {\n if (typeof val.length === 'number' && typeof val.callee === 'function') {\n return true;\n }\n } catch (err) {\n if (err.message.indexOf('callee') !== -1) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * If you need to support Safari 5-7 (8-10 yr-old browser),\n * take a look at https://github.com/feross/is-buffer\n */\n\nfunction isBuffer(val) {\n if (val.constructor && typeof val.constructor.isBuffer === 'function') {\n return val.constructor.isBuffer(val);\n }\n return false;\n}\n\n/**\n * A private string to identify structs by.\n *\n * @type {String}\n */\n\nconst IS_STRUCT = '@@__STRUCT__@@';\n\n/**\n * A private string to refer to a struct's kind.\n *\n * @type {String}\n */\n\nconst KIND = '@@__KIND__@@';\n\n/**\n * Check if a `value` is a struct.\n *\n * @param {Any} value\n * @return {Boolean}\n */\n\nfunction isStruct(value) {\n return !!(value && value[IS_STRUCT]);\n}\n\n/**\n * Resolve `defaults`, for an optional `value`.\n *\n * @param {Function|Any} defaults\n * @param {Any} value\n * @return {Any}\n */\n\nfunction resolveDefaults(defaults, value) {\n return typeof defaults === 'function' ? defaults(value) : defaults;\n}\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Kind.\n *\n * @type {Kind}\n */\n\nclass Kind {\n constructor(name, type, validate) {\n this.name = name;\n this.type = type;\n this.validate = validate;\n }\n}\n\n/**\n * Any.\n *\n * @param {Array|Function|Object|String} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction any(schema, defaults$$1, options) {\n if (isStruct(schema)) {\n return schema[KIND];\n }\n\n if (schema instanceof Kind) {\n return schema;\n }\n\n switch (kindOf(schema)) {\n case 'array':\n {\n return schema.length > 1 ? tuple(schema, defaults$$1, options) : list(schema, defaults$$1, options);\n }\n\n case 'function':\n {\n return func(schema, defaults$$1, options);\n }\n\n case 'object':\n {\n return object(schema, defaults$$1, options);\n }\n\n case 'string':\n {\n let required = true;\n let type;\n\n if (schema.endsWith('?')) {\n required = false;\n schema = schema.slice(0, -1);\n }\n\n if (schema.includes('|')) {\n const scalars = schema.split(/\\s*\\|\\s*/g);\n type = union(scalars, defaults$$1, options);\n } else if (schema.includes('&')) {\n const scalars = schema.split(/\\s*&\\s*/g);\n type = intersection(scalars, defaults$$1, options);\n } else {\n type = scalar(schema, defaults$$1, options);\n }\n\n if (!required) {\n type = optional(type, undefined, options);\n }\n\n return type;\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`A schema definition must be an object, array, string or function, but you passed: ${schema}`);\n } else {\n throw new Error(`Invalid schema: ${schema}`);\n }\n}\n\n/**\n * Dict.\n *\n * @param {Array} schema\n * @param {Object} defaults\n * @param {Object} options\n */\n\nfunction dict(schema, defaults$$1, options) {\n if (kindOf(schema) !== 'array' || schema.length !== 2) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Dict structs must be defined as an array with two elements, but you passed: ${schema}`);\n } else {\n throw new Error(`Invalid schema: ${schema}`);\n }\n }\n\n const obj = scalar('object', undefined, options);\n const keys = any(schema[0], undefined, options);\n const values = any(schema[1], undefined, options);\n const name = 'dict';\n const type = `dict<${keys.type},${values.type}>`;\n const validate = value => {\n const resolved = resolveDefaults(defaults$$1);\n value = resolved ? _extends({}, resolved, value) : value;\n const [error] = obj.validate(value);\n\n if (error) {\n error.type = type;\n return [error];\n }\n\n const ret = {};\n const errors = [];\n\n for (let k in value) {\n const v = value[k];\n const [e, r] = keys.validate(k);\n\n if (e) {\n const allE = e.errors || [e];\n allE.forEach(singleE => {\n singleE.path = [k].concat(singleE.path);\n singleE.data = value;\n errors.push(singleE);\n });\n continue;\n }\n\n k = r;\n const [e2, r2] = values.validate(v);\n\n if (e2) {\n const allE2 = e2.errors || [e2];\n allE2.forEach(singleE => {\n singleE.path = [k].concat(singleE.path);\n singleE.data = value;\n errors.push(singleE);\n });\n continue;\n }\n\n ret[k] = r2;\n }\n\n return errors.length ? [_extends({}, errors[0], { errors })] : [undefined, ret];\n };\n\n return new Kind(name, type, validate);\n}\n\n/**\n * Enum.\n *\n * @param {Array} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction en(schema, defaults$$1, options) {\n if (kindOf(schema) !== 'array') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Enum structs must be defined as an array, but you passed: ${schema}`);\n } else {\n throw new Error(`Invalid schema: ${schema}`);\n }\n }\n\n const name = 'enum';\n const type = schema.map(s => {\n try {\n return JSON.stringify(s);\n } catch (e) {\n return String(s);\n }\n }).join(' | ');\n\n const validate = (value = resolveDefaults(defaults$$1)) => {\n return schema.includes(value) ? [undefined, value] : [{ data: value, path: [], value, type }];\n };\n\n return new Kind(name, type, validate);\n}\n\n/**\n * Enums.\n *\n * @param {Array} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction enums(schema, defaults$$1, options) {\n const e = en(schema, undefined, options);\n const l = list([e], defaults$$1, options);\n return l;\n}\n\n/**\n * Function.\n *\n * @param {Function} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction func(schema, defaults$$1, options) {\n if (kindOf(schema) !== 'function') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Function structs must be defined as a function, but you passed: ${schema}`);\n } else {\n throw new Error(`Invalid schema: ${schema}`);\n }\n }\n\n const name = 'function';\n const type = '';\n const validate = (value = resolveDefaults(defaults$$1), data) => {\n const result = schema(value, data);\n let failure = { path: [], reason: null };\n let isValid;\n\n switch (kindOf(result)) {\n case 'boolean':\n {\n isValid = result;\n break;\n }\n case 'string':\n {\n isValid = false;\n failure.reason = result;\n break;\n }\n case 'object':\n {\n isValid = false;\n failure = _extends({}, failure, result);\n break;\n }\n default:\n {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Validator functions must return a boolean, an error reason string or an error reason object, but you passed: ${schema}`);\n } else {\n throw new Error(`Invalid result: ${result}`);\n }\n }\n }\n\n return isValid ? [undefined, value] : [_extends({ type, value, data: value }, failure)];\n };\n\n return new Kind(name, type, validate);\n}\n\n/**\n * Instance.\n *\n * @param {Array} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction instance(schema, defaults$$1, options) {\n const name = 'instance';\n const type = `instance<${schema.name}>`;\n const validate = (value = resolveDefaults(defaults$$1)) => {\n return value instanceof schema ? [undefined, value] : [{ data: value, path: [], value, type }];\n };\n\n return new Kind(name, type, validate);\n}\n\n/**\n * Interface.\n *\n * @param {Object} schema\n * @param {Object} defaults\n * @param {Object} options\n */\n\nfunction inter(schema, defaults$$1, options) {\n if (kindOf(schema) !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Interface structs must be defined as an object, but you passed: ${schema}`);\n } else {\n throw new Error(`Invalid schema: ${schema}`);\n }\n }\n\n const obj = scalar('object', undefined, options);\n const ks = [];\n const properties = {};\n\n for (const key in schema) {\n ks.push(key);\n const s = schema[key];\n const kind = any(s, undefined, options);\n properties[key] = kind;\n }\n\n const name = 'interface';\n const type = `{${ks.join()}}`;\n const validate = (value = resolveDefaults(defaults$$1)) => {\n const [error] = obj.validate(value);\n\n if (error) {\n error.type = type;\n return [error];\n }\n\n const errors = [];\n const ret = value;\n\n for (const key in properties) {\n let v = value[key];\n const kind = properties[key];\n\n if (v === undefined) {\n const d = defaults$$1 && defaults$$1[key];\n v = resolveDefaults(d, value);\n }\n\n const [e, r] = kind.validate(v, value);\n\n if (e) {\n const allE = e.errors || [e];\n allE.forEach(singleE => {\n singleE.path = [key].concat(singleE.path);\n singleE.data = value;\n errors.push(singleE);\n });\n continue;\n }\n\n if (key in value || r !== undefined) {\n ret[key] = r;\n }\n }\n\n return errors.length ? [_extends({}, errors[0], { errors })] : [undefined, ret];\n };\n\n return new Kind(name, type, validate);\n}\n\n/**\n * Lazy.\n *\n * @param {Function} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction lazy(schema, defaults$$1, options) {\n if (kindOf(schema) !== 'function') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Lazy structs must be defined as an function that returns a schema, but you passed: ${schema}`);\n } else {\n throw new Error(`Invalid schema: ${schema}`);\n }\n }\n\n let kind;\n let struct;\n const name = 'lazy';\n const type = `lazy...`;\n const compile = value => {\n struct = schema();\n kind.name = struct.kind;\n kind.type = struct.type;\n kind.validate = struct.validate;\n return kind.validate(value);\n };\n\n kind = new Kind(name, type, compile);\n return kind;\n}\n\n/**\n * Dynamic.\n *\n * @param {Function} createSchema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction dynamic(createSchema, defaults$$1, options) {\n if (kindOf(createSchema) !== 'function') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Dynamic structs must be defined as a function, but you passed: ${createSchema}`);\n } else {\n throw new Error(`Invalid schema: ${createSchema}`);\n }\n }\n\n const name = 'dynamic';\n const type = 'dynamic...';\n const validate = (value = resolveDefaults(defaults$$1), data) => {\n const schema = createSchema(value, data);\n\n if (kindOf(schema) !== 'function') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Dynamic structs must return a schema, but you passed: ${schema}`);\n } else {\n throw new Error(`Invalid schema: ${schema}`);\n }\n }\n\n const [error, result] = schema.validate(value);\n\n if (error) {\n return [error];\n }\n\n return [undefined, result];\n };\n\n return new Kind(name, type, validate);\n}\n\n/**\n * List.\n *\n * @param {Array} schema\n * @param {Array} defaults\n * @param {Object} options\n */\n\nfunction list(schema, defaults$$1, options) {\n if (kindOf(schema) !== 'array' || schema.length !== 1) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`List structs must be defined as an array with a single element, but you passed: ${schema}`);\n } else {\n throw new Error(`Invalid schema: ${schema}`);\n }\n }\n\n const array = scalar('array', undefined, options);\n const element = any(schema[0], undefined, options);\n const name = 'list';\n const type = `[${element.type}]`;\n const validate = (value = resolveDefaults(defaults$$1)) => {\n const [error, result] = array.validate(value);\n\n if (error) {\n error.type = type;\n return [error];\n }\n\n value = result;\n const errors = [];\n const ret = [];\n\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n const [e, r] = element.validate(v);\n\n if (e) {\n const allE = e.errors || [e];\n allE.forEach(singleE => {\n singleE.path = [i].concat(singleE.path);\n singleE.data = value;\n errors.push(singleE);\n });\n continue;\n }\n\n ret[i] = r;\n }\n\n return errors.length ? [_extends({}, errors[0], { errors })] : [undefined, ret];\n };\n\n return new Kind(name, type, validate);\n}\n\n/**\n * Literal.\n *\n * @param {Array} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction literal(schema, defaults$$1, options) {\n const name = 'literal';\n const type = `literal: ${JSON.stringify(schema)}`;\n const validate = (value = resolveDefaults(defaults$$1)) => {\n return value === schema ? [undefined, value] : [{ data: value, path: [], value, type }];\n };\n\n return new Kind(name, type, validate);\n}\n\n/**\n * Object.\n *\n * @param {Object} schema\n * @param {Object} defaults\n * @param {Object} options\n */\n\nfunction object(schema, defaults$$1, options) {\n if (kindOf(schema) !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Object structs must be defined as an object, but you passed: ${schema}`);\n } else {\n throw new Error(`Invalid schema: ${schema}`);\n }\n }\n\n const obj = scalar('object', undefined, options);\n const ks = [];\n const properties = {};\n\n for (const key in schema) {\n ks.push(key);\n const s = schema[key];\n const kind = any(s, undefined, options);\n properties[key] = kind;\n }\n\n const name = 'object';\n const type = `{${ks.join()}}`;\n const validate = (value = resolveDefaults(defaults$$1)) => {\n const [error] = obj.validate(value);\n\n if (error) {\n error.type = type;\n return [error];\n }\n\n const errors = [];\n const ret = {};\n const valueKeys = Object.keys(value);\n const propertiesKeys = Object.keys(properties);\n const keys = new Set(valueKeys.concat(propertiesKeys));\n\n keys.forEach(key => {\n let v = value[key];\n const kind = properties[key];\n\n if (v === undefined) {\n const d = defaults$$1 && defaults$$1[key];\n v = resolveDefaults(d, value);\n }\n\n if (!kind) {\n const e = { data: value, path: [key], value: v };\n errors.push(e);\n return;\n }\n\n const [e, r] = kind.validate(v, value);\n\n if (e) {\n const allE = e.errors || [e];\n allE.forEach(singleE => {\n singleE.path = [key].concat(singleE.path);\n singleE.data = value;\n errors.push(singleE);\n });\n return;\n }\n\n if (key in value || r !== undefined) {\n ret[key] = r;\n }\n });\n\n return errors.length ? [_extends({}, errors[0], { errors })] : [undefined, ret];\n };\n\n return new Kind(name, type, validate);\n}\n\n/**\n * Optional.\n *\n * @param {Any} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction optional(schema, defaults$$1, options) {\n return union([schema, 'undefined'], defaults$$1, options);\n}\n\n/**\n * Partial.\n *\n * @param {Object} schema\n * @param {Object} defaults\n * @param {Object} options\n */\n\nfunction partial(schema, defaults$$1, options) {\n if (kindOf(schema) !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Partial structs must be defined as an object, but you passed: ${schema}`);\n } else {\n throw new Error(`Invalid schema: ${schema}`);\n }\n }\n\n const obj = scalar('object', undefined, options);\n const ks = [];\n const properties = {};\n\n for (const key in schema) {\n ks.push(key);\n const s = schema[key];\n const kind = any(s, undefined, options);\n properties[key] = kind;\n }\n\n const name = 'partial';\n const type = `{${ks.join()},...}`;\n const validate = (value = resolveDefaults(defaults$$1)) => {\n const [error] = obj.validate(value);\n\n if (error) {\n error.type = type;\n return [error];\n }\n\n const errors = [];\n const ret = {};\n\n for (const key in properties) {\n let v = value[key];\n const kind = properties[key];\n\n if (v === undefined) {\n const d = defaults$$1 && defaults$$1[key];\n v = resolveDefaults(d, value);\n }\n\n const [e, r] = kind.validate(v, value);\n\n if (e) {\n const allE = e.errors || [e];\n allE.forEach(singleE => {\n singleE.path = [key].concat(singleE.path);\n singleE.data = value;\n errors.push(singleE);\n });\n continue;\n }\n\n if (key in value || r !== undefined) {\n ret[key] = r;\n }\n }\n\n return errors.length ? [_extends({}, errors[0], { errors })] : [undefined, ret];\n };\n\n return new Kind(name, type, validate);\n}\n\n/**\n * Scalar.\n *\n * @param {String} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction scalar(schema, defaults$$1, options) {\n if (kindOf(schema) !== 'string') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Scalar structs must be defined as a string, but you passed: ${schema}`);\n } else {\n throw new Error(`Invalid schema: ${schema}`);\n }\n }\n\n const { types } = options;\n const fn = types[schema];\n\n if (kindOf(fn) !== 'function') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`No struct validator function found for type \"${schema}\".`);\n } else {\n throw new Error(`Invalid type: ${schema}`);\n }\n }\n\n const kind = func(fn, defaults$$1, options);\n const name = 'scalar';\n const type = schema;\n const validate = value => {\n const [error, result] = kind.validate(value);\n\n if (error) {\n error.type = type;\n return [error];\n }\n\n return [undefined, result];\n };\n\n return new Kind(name, type, validate);\n}\n\n/**\n * Tuple.\n *\n * @param {Array} schema\n * @param {Array} defaults\n * @param {Object} options\n */\n\nfunction tuple(schema, defaults$$1, options) {\n if (kindOf(schema) !== 'array') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Tuple structs must be defined as an array, but you passed: ${schema}`);\n } else {\n throw new Error(`Invalid schema: ${schema}`);\n }\n }\n\n const kinds = schema.map(s => any(s, undefined, options));\n const array = scalar('array', undefined, options);\n const name = 'tuple';\n const type = `[${kinds.map(k => k.type).join()}]`;\n const validate = (value = resolveDefaults(defaults$$1)) => {\n const [error] = array.validate(value);\n\n if (error) {\n error.type = type;\n return [error];\n }\n\n const ret = [];\n const errors = [];\n const length = Math.max(value.length, kinds.length);\n\n for (let i = 0; i < length; i++) {\n const kind = kinds[i];\n const v = value[i];\n\n if (!kind) {\n const e = { data: value, path: [i], value: v };\n errors.push(e);\n continue;\n }\n\n const [e, r] = kind.validate(v);\n\n if (e) {\n const allE = e.errors || [e];\n allE.forEach(singleE => {\n singleE.path = [i].concat(singleE.path);\n singleE.data = value;\n errors.push(singleE);\n });\n continue;\n }\n\n ret[i] = r;\n }\n\n return errors.length ? [_extends({}, errors[0], { errors })] : [undefined, ret];\n };\n\n return new Kind(name, type, validate);\n}\n\n/**\n * Union.\n *\n * @param {Array} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction union(schema, defaults$$1, options) {\n if (kindOf(schema) !== 'array') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Union structs must be defined as an array, but you passed: ${schema}`);\n } else {\n throw new Error(`Invalid schema: ${schema}`);\n }\n }\n\n const kinds = schema.map(s => any(s, undefined, options));\n const name = 'union';\n const type = kinds.map(k => k.type).join(' | ');\n const validate = (value = resolveDefaults(defaults$$1)) => {\n const errors = [];\n\n for (const k of kinds) {\n const [e, r] = k.validate(value);\n\n if (!e) {\n return [undefined, r];\n }\n\n errors.push(e);\n }\n errors[0].type = type;\n return errors;\n };\n\n return new Kind(name, type, validate);\n}\n\n/**\n * Intersection.\n *\n * @param {Array} schema\n * @param {Any} defaults\n * @param {Object} options\n */\n\nfunction intersection(schema, defaults$$1, options) {\n if (kindOf(schema) !== 'array') {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`Intersection structs must be defined as an array, but you passed: ${schema}`);\n } else {\n throw new Error(`Invalid schema: ${schema}`);\n }\n }\n\n const types = schema.map(s => any(s, undefined, options));\n const name = 'intersection';\n const type = types.map(t => t.type).join(' & ');\n const validate = (value = resolveDefaults(defaults$$1)) => {\n let v = value;\n\n for (const t of types) {\n const [e, r] = t.validate(v);\n\n if (e) {\n e.type = type;\n return [e];\n }\n\n v = r;\n }\n\n return [undefined, v];\n };\n\n return new Kind(name, type, validate);\n}\n\n/**\n * Kinds.\n *\n * @type {Object}\n */\n\nconst Kinds = {\n any,\n dict,\n enum: en,\n enums,\n function: func,\n instance,\n interface: inter,\n lazy,\n list,\n literal,\n object,\n optional,\n partial,\n scalar,\n tuple,\n union,\n intersection,\n dynamic\n\n /**\n * Export.\n *\n * @type {Object}\n */\n\n};\n\n/**\n * The types that `kind-of` supports.\n *\n * @type {Array}\n */\n\nconst TYPES = ['arguments', 'array', 'boolean', 'buffer', 'error', 'float32array', 'float64array', 'function', 'generatorfunction', 'int16array', 'int32array', 'int8array', 'map', 'null', 'number', 'object', 'promise', 'regexp', 'set', 'string', 'symbol', 'uint16array', 'uint32array', 'uint8array', 'uint8clampedarray', 'undefined', 'weakmap', 'weakset'];\n\n/**\n * The default types that Superstruct ships with.\n *\n * @type {Object}\n */\n\nconst Types = {\n any: value => value !== undefined\n};\n\nTYPES.forEach(type => {\n Types[type] = value => kindOf(value) === type;\n});\n\n/**\n * Handle the 'date' case specially, to throw out invalid `Date` objects.\n *\n * @param {Mixed} value\n * @return {Boolean}\n */\n\nTypes.date = value => kindOf(value) === 'date' && !isNaN(value);\n\n/**\n * Create a struct factory with a `config`.\n *\n * @param {Object} config\n * @return {Function}\n */\n\nfunction superstruct(config = {}) {\n const types = _extends({}, Types, config.types || {});\n\n /**\n * Create a `kind` struct with `schema`, `defaults` and `options`.\n *\n * @param {Any} schema\n * @param {Any} defaults\n * @param {Object} options\n * @return {Function}\n */\n\n function struct(schema, defaults$$1, options = {}) {\n if (isStruct(schema)) {\n schema = schema.schema;\n }\n\n const kind = Kinds.any(schema, defaults$$1, _extends({}, options, { types }));\n\n function Struct(data) {\n if (this instanceof Struct) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error('The `Struct` creation function should not be used with the `new` keyword.');\n } else {\n throw new Error('Invalid `new` keyword!');\n }\n }\n\n return Struct.assert(data);\n }\n\n Object.defineProperty(Struct, IS_STRUCT, { value: true });\n Object.defineProperty(Struct, KIND, { value: kind });\n\n Struct.kind = kind.name;\n Struct.type = kind.type;\n Struct.schema = schema;\n Struct.defaults = defaults$$1;\n Struct.options = options;\n\n Struct.assert = value => {\n const [error, result] = kind.validate(value);\n\n if (error) {\n throw new StructError(error);\n }\n\n return result;\n };\n\n Struct.test = value => {\n const [error] = kind.validate(value);\n return !error;\n };\n\n Struct.validate = value => {\n const [error, result] = kind.validate(value);\n\n if (error) {\n return [new StructError(error)];\n }\n\n return [undefined, result];\n };\n\n return Struct;\n }\n\n /**\n * Mix in a factory for each specific kind of struct.\n */\n\n Object.keys(Kinds).forEach(name => {\n const kind = Kinds[name];\n\n struct[name] = (schema, defaults$$1, options) => {\n const type = kind(schema, defaults$$1, _extends({}, options, { types }));\n const s = struct(type, defaults$$1, options);\n return s;\n };\n });\n\n /**\n * Return the struct factory.\n */\n\n return struct;\n}\n\n/**\n * Create a convenience `struct` factory for the default types.\n *\n * @type {Function}\n */\n\nconst struct = superstruct();\n\nexport { struct, superstruct, isStruct, StructError };\n//# sourceMappingURL=index.es.js.map\n","function AbstractIterator (db) {\n if (typeof db !== 'object' || db === null) {\n throw new TypeError('First argument must be an abstract-leveldown compliant store')\n }\n\n this.db = db\n this._ended = false\n this._nexting = false\n}\n\nAbstractIterator.prototype.next = function (callback) {\n var self = this\n\n if (typeof callback !== 'function') {\n throw new Error('next() requires a callback argument')\n }\n\n if (self._ended) {\n process.nextTick(callback, new Error('cannot call next() after end()'))\n return self\n }\n\n if (self._nexting) {\n process.nextTick(callback, new Error('cannot call next() before previous next() has completed'))\n return self\n }\n\n self._nexting = true\n self._next(function () {\n self._nexting = false\n callback.apply(null, arguments)\n })\n\n return self\n}\n\nAbstractIterator.prototype._next = function (callback) {\n process.nextTick(callback)\n}\n\nAbstractIterator.prototype.seek = function (target) {\n if (this._ended) {\n throw new Error('cannot call seek() after end()')\n }\n if (this._nexting) {\n throw new Error('cannot call seek() before next() has completed')\n }\n\n target = this.db._serializeKey(target)\n this._seek(target)\n}\n\nAbstractIterator.prototype._seek = function (target) {}\n\nAbstractIterator.prototype.end = function (callback) {\n if (typeof callback !== 'function') {\n throw new Error('end() requires a callback argument')\n }\n\n if (this._ended) {\n return process.nextTick(callback, new Error('end() already called on iterator'))\n }\n\n this._ended = true\n this._end(callback)\n}\n\nAbstractIterator.prototype._end = function (callback) {\n process.nextTick(callback)\n}\n\nmodule.exports = AbstractIterator\n","'use strict'\n\nvar AbstractLevelDOWN = require('abstract-leveldown').AbstractLevelDOWN\nvar AbstractChainedBatch = require('abstract-leveldown').AbstractChainedBatch\nvar AbstractIterator = require('abstract-leveldown').AbstractIterator\nvar inherits = require('inherits')\nvar Codec = require('level-codec')\nvar EncodingError = require('level-errors').EncodingError\nvar rangeMethods = ['approximateSize', 'compactRange']\n\nmodule.exports = DB.default = DB\n\nfunction DB (db, opts) {\n if (!(this instanceof DB)) return new DB(db, opts)\n\n var manifest = db.supports || {}\n var additionalMethods = manifest.additionalMethods || {}\n\n AbstractLevelDOWN.call(this, manifest)\n\n this.supports.encodings = true\n this.supports.additionalMethods = {}\n\n rangeMethods.forEach(function (m) {\n // TODO (future major): remove this fallback\n var fallback = typeof db[m] === 'function'\n\n if (additionalMethods[m] || fallback) {\n this.supports.additionalMethods[m] = true\n\n this[m] = function (start, end, opts, cb) {\n start = this.codec.encodeKey(start, opts)\n end = this.codec.encodeKey(end, opts)\n return this.db[m](start, end, opts, cb)\n }\n }\n }, this)\n\n opts = opts || {}\n if (typeof opts.keyEncoding === 'undefined') opts.keyEncoding = 'utf8'\n if (typeof opts.valueEncoding === 'undefined') opts.valueEncoding = 'utf8'\n\n this.db = db\n this.codec = new Codec(opts)\n}\n\ninherits(DB, AbstractLevelDOWN)\n\nDB.prototype.type = 'encoding-down'\n\nDB.prototype._serializeKey =\nDB.prototype._serializeValue = function (datum) {\n return datum\n}\n\nDB.prototype._open = function (opts, cb) {\n this.db.open(opts, cb)\n}\n\nDB.prototype._close = function (cb) {\n this.db.close(cb)\n}\n\nDB.prototype._put = function (key, value, opts, cb) {\n key = this.codec.encodeKey(key, opts)\n value = this.codec.encodeValue(value, opts)\n this.db.put(key, value, opts, cb)\n}\n\nDB.prototype._get = function (key, opts, cb) {\n var self = this\n key = this.codec.encodeKey(key, opts)\n opts.asBuffer = this.codec.valueAsBuffer(opts)\n this.db.get(key, opts, function (err, value) {\n if (err) return cb(err)\n try {\n value = self.codec.decodeValue(value, opts)\n } catch (err) {\n return cb(new EncodingError(err))\n }\n cb(null, value)\n })\n}\n\nDB.prototype._del = function (key, opts, cb) {\n key = this.codec.encodeKey(key, opts)\n this.db.del(key, opts, cb)\n}\n\nDB.prototype._chainedBatch = function () {\n return new Batch(this)\n}\n\nDB.prototype._batch = function (ops, opts, cb) {\n ops = this.codec.encodeBatch(ops, opts)\n this.db.batch(ops, opts, cb)\n}\n\nDB.prototype._iterator = function (opts) {\n opts.keyAsBuffer = this.codec.keyAsBuffer(opts)\n opts.valueAsBuffer = this.codec.valueAsBuffer(opts)\n return new Iterator(this, opts)\n}\n\nDB.prototype._clear = function (opts, callback) {\n opts = this.codec.encodeLtgt(opts)\n this.db.clear(opts, callback)\n}\n\nfunction Iterator (db, opts) {\n AbstractIterator.call(this, db)\n this.codec = db.codec\n this.keys = opts.keys\n this.values = opts.values\n this.opts = this.codec.encodeLtgt(opts)\n this.it = db.db.iterator(this.opts)\n}\n\ninherits(Iterator, AbstractIterator)\n\nIterator.prototype._next = function (cb) {\n var self = this\n this.it.next(function (err, key, value) {\n if (err) return cb(err)\n try {\n if (self.keys && typeof key !== 'undefined') {\n key = self.codec.decodeKey(key, self.opts)\n } else {\n key = undefined\n }\n\n if (self.values && typeof value !== 'undefined') {\n value = self.codec.decodeValue(value, self.opts)\n } else {\n value = undefined\n }\n } catch (err) {\n return cb(new EncodingError(err))\n }\n cb(null, key, value)\n })\n}\n\nIterator.prototype._seek = function (key) {\n key = this.codec.encodeKey(key, this.opts)\n this.it.seek(key)\n}\n\nIterator.prototype._end = function (cb) {\n this.it.end(cb)\n}\n\nfunction Batch (db, codec) {\n AbstractChainedBatch.call(this, db)\n this.codec = db.codec\n this.batch = db.db.batch()\n}\n\ninherits(Batch, AbstractChainedBatch)\n\nBatch.prototype._put = function (key, value) {\n key = this.codec.encodeKey(key)\n value = this.codec.encodeValue(value)\n this.batch.put(key, value)\n}\n\nBatch.prototype._del = function (key) {\n key = this.codec.encodeKey(key)\n this.batch.del(key)\n}\n\nBatch.prototype._clear = function () {\n this.batch.clear()\n}\n\nBatch.prototype._write = function (opts, cb) {\n this.batch.write(opts, cb)\n}\n","'use strict'\n\nconst sortLinks = require('./sortLinks')\nconst DAGLink = require('../dag-link')\n\nconst asDAGLink = (link) => {\n if (DAGLink.isDAGLink(link)) {\n // It's a DAGLink instance\n // no need to do anything\n return link\n }\n\n // DAGNode.isDagNode() would be more appropriate here, but it can't be used\n // as it would lead to circular dependencies as `addLink` is called from\n // within the DAGNode object.\n if (!('cid' in link ||\n 'hash' in link ||\n 'Hash' in link ||\n 'multihash' in link)) {\n throw new Error('Link must be a DAGLink or DAGLink-like. Convert the DAGNode into a DAGLink via `node.toDAGLink()`.')\n }\n\n // It's a Object with name, multihash/hash/cid and size\n return new DAGLink(link.Name || link.name, link.Tsize || link.size, link.Hash || link.multihash || link.hash || link.cid)\n}\n\nconst addLink = (node, link) => {\n const dagLink = asDAGLink(link)\n node._links.push(dagLink)\n node._links = sortLinks(node._links)\n}\n\nmodule.exports = addLink\n","\nmodule.exports = isBuf;\n\nvar withNativeBuffer = typeof Buffer === 'function' && typeof Buffer.isBuffer === 'function';\nvar withNativeArrayBuffer = typeof ArrayBuffer === 'function';\n\nvar isView = function (obj) {\n return typeof ArrayBuffer.isView === 'function' ? ArrayBuffer.isView(obj) : (obj.buffer instanceof ArrayBuffer);\n};\n\n/**\n * Returns true if obj is a buffer or an arraybuffer.\n *\n * @api private\n */\n\nfunction isBuf(obj) {\n return (withNativeBuffer && Buffer.isBuffer(obj)) ||\n (withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj)));\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"artist-page\"},[_c('ArtistTitle',{attrs:{\"prizes-unlocked\":_vm.prizesUnlocked}}),_c('div',{attrs:{\"id\":\"primary\"}},[_c('div',{staticClass:\"shrink-top\"},[_c('h3',{staticStyle:{\"margin-left\":\"25px\"}},[_vm._v(\"Ticket\")]),_c('div',{attrs:{\"id\":\"artist-card\"}},[_c('img',{attrs:{\"id\":\"artist-img\",\"src\":_vm.imageSrc}}),_c('h2',[_vm._v(_vm._s(_vm.artistName)+\" VIP Ticket\")]),_vm._m(0)])]),_c('div',{staticClass:\"shrink-top\"},[_c('h3',{staticStyle:{\"margin-left\":\"25px\"}},[_vm._v(\"Price\")]),_c('div',{attrs:{\"id\":\"curve-card\"}},[_vm._m(1),_c('div',{attrs:{\"id\":\"trade-section\"}},[_c('h5',[_vm._v(\"current value\")]),_c('div',{attrs:{\"id\":\"price-and-token\"}},[_c('h1',[_vm._v(\"$\"+_vm._s(_vm.tokenPriceUsd))]),_c('img',{attrs:{\"id\":\"token-number\",\"src\":require(\"../assets/tokenNumber.svg\")}})]),_c('div',{attrs:{\"id\":\"trade-buttons\"}},[_c('div',{staticClass:\"btn\",staticStyle:{\"background-color\":\"#398557\"},on:{\"click\":function($event){_vm.buy = true}}},[_c('p',[_vm._v(\"Buy\")])]),_c('div',{staticClass:\"btn sell-btn\",staticStyle:{\"background-color\":\"#da304c\"},on:{\"click\":function($event){_vm.sell = true}}},[_c('p',[_vm._v(\"Sell\")])])])])])])]),_c('Tests',{ref:\"Tests\",on:{\"receivedContractData\":_vm.updateContract}}),_c('Prizes',{attrs:{\"prizes-unlocked\":_vm.prizesUnlocked}}),_c('Buy',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.buy),expression:\"buy\"}],staticClass:\"modal\",on:{\"close\":function($event){_vm.buy = false},\"confirmed\":function($event){_vm.prizesUnlocked = true}}}),_c('Sell',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.sell),expression:\"sell\"}],staticClass:\"modal\",on:{\"close\":function($event){_vm.sell = false}}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{attrs:{\"id\":\"offers\"}},[_c('li',[_vm._v(\" Exclusive access to “BUBBA” behind-the-scenes videos and production tutorials \")]),_c('li',[_vm._v(\"Receive early access to unrealeased music and videos\")]),_c('li',[_vm._v(\"A chance to win an 1 on 1 production session\")]),_c('li',[_vm._v(\"Two free VIP concert tickets for every year that you hold the token\")]),_c('li',[_vm._v(\"Submit a monthly question to Kaytranada.\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"graph-section\"}},[_c('img',{staticClass:\"graph\",attrs:{\"src\":require(\"../assets/graph.svg\")}})])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"modal-mask\"},[_c('div',{staticClass:\"modal-wrapper\"},[_c('div',{staticClass:\"modal-container\"},[_c('div',{staticClass:\"modal-body\"},[_vm._m(0),_c('div',{attrs:{\"id\":\"right-column\"}},[_c('p',{staticStyle:{\"font-weight\":\"700\"}},[_vm._v(_vm._s(_vm.tokenPriceUsd))])])]),_c('div',{staticClass:\"btn\",staticStyle:{\"background-color\":\"#398557\",\"width\":\"100%\",\"margin\":\"0\",\"margin-bottom\":\"10px\"},on:{\"click\":_vm.buyToken}},[_c('p',[_vm._v(\"Buy for \"+_vm._s(_vm.tokenPriceEth)+\" ETH\")])]),_c('div',{staticClass:\"btn btn-cancel\",staticStyle:{\"background-color\":\"transparent\",\"width\":\"100%\",\"margin\":\"0\",\"margin-bottom\":\"20px\"},attrs:{\"src\":\"../assets/CloseModal.svg\"},on:{\"click\":function($event){return _vm.$emit('close')}}},[_c('p',{staticStyle:{\"color\":\"black\"}},[_vm._v(\"Cancel\")])])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"width\":\"50%\",\"float\":\"left\"},attrs:{\"id\":\"left-column\"}},[_c('p',{staticStyle:{\"font-weight\":\"700\"}},[_vm._v(\"Total price\")])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Buy.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Buy.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Buy.vue?vue&type=template&id=6be94cbe&scoped=true&\"\nimport script from \"./Buy.vue?vue&type=script&lang=js&\"\nexport * from \"./Buy.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Buy.vue?vue&type=style&index=0&id=6be94cbe&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6be94cbe\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"modal-mask\"},[_c('div',{staticClass:\"modal-wrapper\"},[_c('div',{staticClass:\"modal-container\"},[_c('div',{staticClass:\"modal-body\"},[_vm._m(0),_c('div',{attrs:{\"id\":\"right-column\"}},[_c('p',{},[_vm._v(_vm._s(_vm.tokenPriceUsd))]),_c('p',{},[_vm._v(_vm._s(_vm.artistCutUsd))]),_c('p',{staticStyle:{\"font-weight\":\"700\"}},[_vm._v(_vm._s((_vm.tokenPriceUsd - _vm.artistCutUsd).toFixed(2)))])])]),_c('div',{staticClass:\"btn\",staticStyle:{\"background-color\":\"#da304c\",\"width\":\"100%\",\"margin\":\"0\",\"margin-bottom\":\"10px\"},on:{\"click\":_vm.sellToken}},[_c('p',[_vm._v(\"Sell for \"+_vm._s(_vm.tokenPriceEth - _vm.artistCutEth)+\" ETH\")])]),_c('div',{staticClass:\"btn btn-cancel\",staticStyle:{\"background-color\":\"transparent\",\"width\":\"100%\",\"margin\":\"0\",\"margin-bottom\":\"20px\"},attrs:{\"src\":\"../assets/CloseModal.svg\"},on:{\"click\":function($event){return _vm.$emit('close')}}},[_c('p',{staticStyle:{\"color\":\"black\"}},[_vm._v(\"Cancel\")])])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"width\":\"50%\",\"float\":\"left\"},attrs:{\"id\":\"left-column\"}},[_c('p',[_vm._v(\"Token value\")]),_c('p',[_vm._v(\"Artist allocation\")]),_c('p',{staticStyle:{\"font-weight\":\"700\"}},[_vm._v(\"You receive\")])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Sell.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Sell.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Sell.vue?vue&type=template&id=231b042c&scoped=true&\"\nimport script from \"./Sell.vue?vue&type=script&lang=js&\"\nexport * from \"./Sell.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Sell.vue?vue&type=style&index=0&id=231b042c&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"231b042c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"prizes\"}},[_c('h3',[_vm._v(\"Rewards\")]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.prizesUnlocked),expression:\"!prizesUnlocked\"}],attrs:{\"id\":\"locked\"}},[_vm._m(0)]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.prizesUnlocked),expression:\"prizesUnlocked\"}],attrs:{\"id\":\"unlocked-grid\"}},[_c('div',{staticClass:\"card\",on:{\"click\":function($event){_vm.redeemPrize = true}}},[_c('p',[_vm._v(\"Exclusive Song\")])]),_vm._m(1),_vm._m(2),_vm._m(3),_vm._m(4),_vm._m(5)]),_c('RedeemPrize',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.redeemPrize),expression:\"redeemPrize\"}],on:{\"close\":function($event){_vm.redeemPrize = false}}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"locked-content\"}},[_c('img',{attrs:{\"id\":\"lockIcon\",\"src\":require(\"../assets/lock.svg\")}}),_c('p',[_vm._v(\"Buy this artist's token to unlock their content\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card\"},[_c('p',[_vm._v(\"2 Concert Tickets\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card\"},[_c('p',[_vm._v(\"VIP\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card\"},[_c('p',[_vm._v(\"1 on 1\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card\"},[_c('p',[_vm._v(\"Song\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card\"},[_c('p',[_vm._v(\"Concert\")])])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"modal-mask\"},[_c('div',{staticClass:\"modal-wrapper\"},[_c('div',{staticClass:\"modal-container\"},[_c('div',{staticClass:\"modal-body\"}),_c('div',{attrs:{\"id\":\"album-container\"},on:{\"mouseover\":function($event){_vm.hover = true},\"mouseleave\":function($event){_vm.hover = false}}},[_c('img',{attrs:{\"id\":\"albumArt\",\"src\":require(\"../assets/KaytranadaAlbumArt.jpg\")}}),_c('img',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.playing && _vm.hover),expression:\"!playing && hover\"}],attrs:{\"id\":\"play\",\"src\":require(\"../assets/playIcon.svg\")},on:{\"click\":_vm.play}}),_c('img',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.playing && _vm.hover),expression:\"playing && hover\"}],attrs:{\"id\":\"pause\",\"src\":require(\"../assets/pauseIcon.svg\")},on:{\"click\":_vm.pause}})]),_c('audio',{ref:\"KaytraSong\",attrs:{\"id\":\"song\",\"src\":require(\"../assets/Kaytranada10.mp3\")}}),_vm._m(0),_c('div',{staticClass:\"btn btn-cancel\",staticStyle:{\"background-color\":\"transparent\",\"width\":\"100%\",\"margin\":\"0\",\"margin-bottom\":\"20px\"},attrs:{\"src\":\"../assets/CloseModal.svg\"},on:{\"click\":function($event){return _vm.$emit('close')}}},[_c('p',{staticStyle:{\"color\":\"black\"}},[_vm._v(\"Close\")])])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"btn\",staticStyle:{\"background-color\":\"#398557\",\"width\":\"100%\",\"margin\":\"0\",\"margin-bottom\":\"10px\",\"margin-top\":\"10px\"}},[_c('p',[_vm._v(\"Download Song\")])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RedeemPrize.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RedeemPrize.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RedeemPrize.vue?vue&type=template&id=0fc7ea69&scoped=true&\"\nimport script from \"./RedeemPrize.vue?vue&type=script&lang=js&\"\nexport * from \"./RedeemPrize.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RedeemPrize.vue?vue&type=style&index=0&id=0fc7ea69&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0fc7ea69\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Prizes.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Prizes.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Prizes.vue?vue&type=template&id=662da522&scoped=true&\"\nimport script from \"./Prizes.vue?vue&type=script&lang=js&\"\nexport * from \"./Prizes.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Prizes.vue?vue&type=style&index=0&id=662da522&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"662da522\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"artist-title\"}},[_c('p',{attrs:{\"id\":\"artist-name\"}},[_vm._v(\"Kaytranada\")]),_vm._m(0),_c('div',{staticClass:\"tokenOwnership\",class:{ own: _vm.prizesUnlocked, dontOwn: !_vm.prizesUnlocked }},[_vm._v(\" \"+_vm._s(_vm.ownershipText)+\" \")])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"verified\"}},[_c('img',{attrs:{\"src\":require(\"../assets/verfied.svg\")}}),_c('p',[_vm._v(\"Official artist page\")])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ArtistTitle.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ArtistTitle.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ArtistTitle.vue?vue&type=template&id=2fa309b2&scoped=true&\"\nimport script from \"./ArtistTitle.vue?vue&type=script&lang=js&\"\nexport * from \"./ArtistTitle.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ArtistTitle.vue?vue&type=style&index=0&id=2fa309b2&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2fa309b2\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ArtistPage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ArtistPage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ArtistPage.vue?vue&type=template&id=b6fd9302&\"\nimport script from \"./ArtistPage.vue?vue&type=script&lang=js&\"\nexport * from \"./ArtistPage.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ArtistPage.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","'use strict'\n\nconst { Buffer } = require('buffer')\nconst errcode = require('err-code')\nconst multihash = require('multihashes')\nconst crypto = require('./crypto')\n\n/**\n * Hash the given `buf` using the algorithm specified by `alg`.\n * @param {Buffer} buf - The value to hash.\n * @param {number|string} alg - The algorithm to use eg 'sha1'\n * @param {number} [length] - Optionally trim the result to this length.\n * @returns {Promise}\n */\nasync function Multihashing (buf, alg, length) {\n const digest = await Multihashing.digest(buf, alg, length)\n return multihash.encode(digest, alg, length)\n}\n\n/**\n * The `buffer` module for easy use in the browser.\n *\n * @type {Buffer}\n */\nMultihashing.Buffer = Buffer // for browser things\n\n/**\n * Expose multihash itself, to avoid silly double requires.\n */\nMultihashing.multihash = multihash\n\n/**\n * @param {Buffer} buf - The value to hash.\n * @param {number|string} alg - The algorithm to use eg 'sha1'\n * @param {number} [length] - Optionally trim the result to this length.\n * @returns {Promise}\n */\nMultihashing.digest = async (buf, alg, length) => {\n const hash = Multihashing.createHash(alg)\n const digest = await hash(buf)\n return length ? digest.slice(0, length) : digest\n}\n\n/**\n * Creates a function that hashes with the given algorithm\n *\n * @param {string|number} alg - The algorithm to use eg 'sha1'\n *\n * @returns {function} - The hash function corresponding to `alg`\n */\nMultihashing.createHash = function (alg) {\n if (!alg) {\n throw errcode('hash algorithm must be specified', 'ERR_HASH_ALGORITHM_NOT_SPECIFIED')\n }\n\n alg = multihash.coerceCode(alg)\n if (!Multihashing.functions[alg]) {\n throw errcode(`multihash function '${alg}' not yet supported`, 'ERR_HASH_ALGORITHM_NOT_SUPPORTED')\n }\n\n return Multihashing.functions[alg]\n}\n\n/**\n * Mapping of multihash codes to their hashing functions.\n * @type {Object}\n */\nMultihashing.functions = {\n // sha1\n 0x11: crypto.sha1,\n // sha2-256\n 0x12: crypto.sha2256,\n // sha2-512\n 0x13: crypto.sha2512,\n // sha3-512\n 0x14: crypto.sha3512,\n // sha3-384\n 0x15: crypto.sha3384,\n // sha3-256\n 0x16: crypto.sha3256,\n // sha3-224\n 0x17: crypto.sha3224,\n // shake-128\n 0x18: crypto.shake128,\n // shake-256\n 0x19: crypto.shake256,\n // keccak-224\n 0x1A: crypto.keccak224,\n // keccak-256\n 0x1B: crypto.keccak256,\n // keccak-384\n 0x1C: crypto.keccak384,\n // keccak-512\n 0x1D: crypto.keccak512,\n // murmur3-128\n 0x22: crypto.murmur3128,\n // murmur3-32\n 0x23: crypto.murmur332,\n // dbl-sha2-256\n 0x56: crypto.dblSha2256\n}\n\n// add blake functions\ncrypto.addBlake(Multihashing.functions)\n\nMultihashing.validate = async (buf, hash) => {\n const newHash = await Multihashing(buf, multihash.decode(hash).name)\n\n return Buffer.compare(hash, newHash) === 0\n}\n\nmodule.exports = Multihashing\n","'use strict'\n\nconst nodeify = require('../nodeify')\nconst webcrypto = require('../webcrypto')\nconst randomBytes = require('../random-bytes')\n\nexports.utils = require('./rsa-utils')\n\nexports.generateKey = function (bits, callback) {\n nodeify(webcrypto.subtle.generateKey(\n {\n name: 'RSASSA-PKCS1-v1_5',\n modulusLength: bits,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]),\n hash: { name: 'SHA-256' }\n },\n true,\n ['sign', 'verify']\n )\n .then(exportKey)\n .then((keys) => ({\n privateKey: keys[0],\n publicKey: keys[1]\n })), callback)\n}\n\n// Takes a jwk key\nexports.unmarshalPrivateKey = function (key, callback) {\n const privateKey = webcrypto.subtle.importKey(\n 'jwk',\n key,\n {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n },\n true,\n ['sign']\n )\n\n nodeify(Promise.all([\n privateKey,\n derivePublicFromPrivate(key)\n ]).then((keys) => exportKey({\n privateKey: keys[0],\n publicKey: keys[1]\n })).then((keys) => ({\n privateKey: keys[0],\n publicKey: keys[1]\n })), callback)\n}\n\nexports.getRandomValues = randomBytes\n\nexports.hashAndSign = function (key, msg, callback) {\n nodeify(webcrypto.subtle.importKey(\n 'jwk',\n key,\n {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n },\n false,\n ['sign']\n ).then((privateKey) => {\n return webcrypto.subtle.sign(\n { name: 'RSASSA-PKCS1-v1_5' },\n privateKey,\n Uint8Array.from(msg)\n )\n }).then((sig) => Buffer.from(sig)), callback)\n}\n\nexports.hashAndVerify = function (key, sig, msg, callback) {\n nodeify(webcrypto.subtle.importKey(\n 'jwk',\n key,\n {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n },\n false,\n ['verify']\n ).then((publicKey) => {\n return webcrypto.subtle.verify(\n { name: 'RSASSA-PKCS1-v1_5' },\n publicKey,\n sig,\n msg\n )\n }), callback)\n}\n\nfunction exportKey (pair) {\n return Promise.all([\n webcrypto.subtle.exportKey('jwk', pair.privateKey),\n webcrypto.subtle.exportKey('jwk', pair.publicKey)\n ])\n}\n\nfunction derivePublicFromPrivate (jwKey) {\n return webcrypto.subtle.importKey(\n 'jwk',\n {\n kty: jwKey.kty,\n n: jwKey.n,\n e: jwKey.e\n },\n {\n name: 'RSASSA-PKCS1-v1_5',\n hash: { name: 'SHA-256' }\n },\n true,\n ['verify']\n )\n}\n\n/*\n\nRSA encryption/decryption for the browser with webcrypto workarround\n\"bloody dark magic. webcrypto's why.\"\n\nExplanation:\n - Convert JWK to nodeForge\n - Convert msg buffer to nodeForge buffer: ByteBuffer is a \"binary-string backed buffer\", so let's make our buffer a binary string\n - Convert resulting nodeForge buffer to buffer: it returns a binary string, turn that into a uint8array(buffer)\n\n*/\n\nconst { jwk2pub, jwk2priv } = require('./jwk2pem')\n\nfunction convertKey (key, pub, msg, handle) {\n const fkey = pub ? jwk2pub(key) : jwk2priv(key)\n const fmsg = Buffer.from(msg).toString('binary')\n const fomsg = handle(fmsg, fkey)\n return Buffer.from(fomsg, 'binary')\n}\n\nexports.encrypt = function (key, msg) {\n return convertKey(key, true, msg, (msg, key) => key.encrypt(msg))\n}\n\nexports.decrypt = function (key, msg) {\n return convertKey(key, false, msg, (msg, key) => key.decrypt(msg))\n}\n","'use strict'\n\nconst { TieredDatastore } = require('datastore-core')\nconst get = require('dlv')\n\nconst PubsubDatastore = require('./pubsub-datastore')\nconst OfflineDatastore = require('./offline-datastore')\n\nmodule.exports = (ipfs) => {\n // Setup online routing for IPNS with a tiered routing composed by a DHT and a Pubsub router (if properly enabled)\n const ipnsStores = []\n\n // Add IPNS pubsub if enabled\n let pubsubDs\n if (get(ipfs._options, 'EXPERIMENTAL.ipnsPubsub', false)) {\n const pubsub = ipfs.libp2p.pubsub\n const localDatastore = ipfs._repo.datastore\n const peerId = ipfs._peerInfo.id\n\n pubsubDs = new PubsubDatastore(pubsub, localDatastore, peerId)\n ipnsStores.push(pubsubDs)\n }\n\n // DHT should not be added as routing if we are offline or it is disabled\n if (get(ipfs._options, 'offline') || !get(ipfs._options, 'libp2p.config.dht.enabled', false)) {\n const offlineDatastore = new OfflineDatastore(ipfs._repo)\n ipnsStores.push(offlineDatastore)\n } else {\n ipnsStores.push(ipfs.libp2p.dht)\n }\n\n // Create ipns routing with a set of datastores\n return new TieredDatastore(ipnsStores)\n}\n","\nfunction isFunction (f) {\n return 'function' === typeof f\n}\n\nfunction isDuplex (d) {\n return 'object' === typeof d && isSource(d.source) && isSink(d.sink)\n}\n\nfunction isSource (s) {\n return isFunction(s) && s.length === 2\n}\n\nfunction isSink (s) {\n return isFunction(s) && s.length === 1\n}\n\nexports.isDuplex = isDuplex\nexports.isSource = isSource\nexports.isSink = isSink\n//can't do is through, it will appear as a sink til you git it a source.\n\n","'use strict'\n\nconst callbackify = require('callbackify')\nconst all = require('async-iterator-all')\n\nmodule.exports = function (self) {\n return callbackify.variadic(async function refsLocal (ipfsPath, options) { // eslint-disable-line require-await\n return all(self.refs._localAsyncIterator(ipfsPath, options))\n })\n}\n","/* eslint quote-props: off */\n/* eslint key-spacing: off */\n'use strict'\n\nexports.names = Object.freeze({\n 'identity': 0x0,\n 'sha1': 0x11,\n 'sha2-256': 0x12,\n 'sha2-512': 0x13,\n 'dbl-sha2-256': 0x56,\n 'sha3-224': 0x17,\n 'sha3-256': 0x16,\n 'sha3-384': 0x15,\n 'sha3-512': 0x14,\n 'shake-128': 0x18,\n 'shake-256': 0x19,\n 'keccak-224': 0x1A,\n 'keccak-256': 0x1B,\n 'keccak-384': 0x1C,\n 'keccak-512': 0x1D,\n 'murmur3-128': 0x22,\n 'murmur3-32': 0x23,\n 'blake2b-8': 0xb201,\n 'blake2b-16': 0xb202,\n 'blake2b-24': 0xb203,\n 'blake2b-32': 0xb204,\n 'blake2b-40': 0xb205,\n 'blake2b-48': 0xb206,\n 'blake2b-56': 0xb207,\n 'blake2b-64': 0xb208,\n 'blake2b-72': 0xb209,\n 'blake2b-80': 0xb20a,\n 'blake2b-88': 0xb20b,\n 'blake2b-96': 0xb20c,\n 'blake2b-104': 0xb20d,\n 'blake2b-112': 0xb20e,\n 'blake2b-120': 0xb20f,\n 'blake2b-128': 0xb210,\n 'blake2b-136': 0xb211,\n 'blake2b-144': 0xb212,\n 'blake2b-152': 0xb213,\n 'blake2b-160': 0xb214,\n 'blake2b-168': 0xb215,\n 'blake2b-176': 0xb216,\n 'blake2b-184': 0xb217,\n 'blake2b-192': 0xb218,\n 'blake2b-200': 0xb219,\n 'blake2b-208': 0xb21a,\n 'blake2b-216': 0xb21b,\n 'blake2b-224': 0xb21c,\n 'blake2b-232': 0xb21d,\n 'blake2b-240': 0xb21e,\n 'blake2b-248': 0xb21f,\n 'blake2b-256': 0xb220,\n 'blake2b-264': 0xb221,\n 'blake2b-272': 0xb222,\n 'blake2b-280': 0xb223,\n 'blake2b-288': 0xb224,\n 'blake2b-296': 0xb225,\n 'blake2b-304': 0xb226,\n 'blake2b-312': 0xb227,\n 'blake2b-320': 0xb228,\n 'blake2b-328': 0xb229,\n 'blake2b-336': 0xb22a,\n 'blake2b-344': 0xb22b,\n 'blake2b-352': 0xb22c,\n 'blake2b-360': 0xb22d,\n 'blake2b-368': 0xb22e,\n 'blake2b-376': 0xb22f,\n 'blake2b-384': 0xb230,\n 'blake2b-392': 0xb231,\n 'blake2b-400': 0xb232,\n 'blake2b-408': 0xb233,\n 'blake2b-416': 0xb234,\n 'blake2b-424': 0xb235,\n 'blake2b-432': 0xb236,\n 'blake2b-440': 0xb237,\n 'blake2b-448': 0xb238,\n 'blake2b-456': 0xb239,\n 'blake2b-464': 0xb23a,\n 'blake2b-472': 0xb23b,\n 'blake2b-480': 0xb23c,\n 'blake2b-488': 0xb23d,\n 'blake2b-496': 0xb23e,\n 'blake2b-504': 0xb23f,\n 'blake2b-512': 0xb240,\n 'blake2s-8': 0xb241,\n 'blake2s-16': 0xb242,\n 'blake2s-24': 0xb243,\n 'blake2s-32': 0xb244,\n 'blake2s-40': 0xb245,\n 'blake2s-48': 0xb246,\n 'blake2s-56': 0xb247,\n 'blake2s-64': 0xb248,\n 'blake2s-72': 0xb249,\n 'blake2s-80': 0xb24a,\n 'blake2s-88': 0xb24b,\n 'blake2s-96': 0xb24c,\n 'blake2s-104': 0xb24d,\n 'blake2s-112': 0xb24e,\n 'blake2s-120': 0xb24f,\n 'blake2s-128': 0xb250,\n 'blake2s-136': 0xb251,\n 'blake2s-144': 0xb252,\n 'blake2s-152': 0xb253,\n 'blake2s-160': 0xb254,\n 'blake2s-168': 0xb255,\n 'blake2s-176': 0xb256,\n 'blake2s-184': 0xb257,\n 'blake2s-192': 0xb258,\n 'blake2s-200': 0xb259,\n 'blake2s-208': 0xb25a,\n 'blake2s-216': 0xb25b,\n 'blake2s-224': 0xb25c,\n 'blake2s-232': 0xb25d,\n 'blake2s-240': 0xb25e,\n 'blake2s-248': 0xb25f,\n 'blake2s-256': 0xb260,\n 'Skein256-8': 0xb301,\n 'Skein256-16': 0xb302,\n 'Skein256-24': 0xb303,\n 'Skein256-32': 0xb304,\n 'Skein256-40': 0xb305,\n 'Skein256-48': 0xb306,\n 'Skein256-56': 0xb307,\n 'Skein256-64': 0xb308,\n 'Skein256-72': 0xb309,\n 'Skein256-80': 0xb30a,\n 'Skein256-88': 0xb30b,\n 'Skein256-96': 0xb30c,\n 'Skein256-104': 0xb30d,\n 'Skein256-112': 0xb30e,\n 'Skein256-120': 0xb30f,\n 'Skein256-128': 0xb310,\n 'Skein256-136': 0xb311,\n 'Skein256-144': 0xb312,\n 'Skein256-152': 0xb313,\n 'Skein256-160': 0xb314,\n 'Skein256-168': 0xb315,\n 'Skein256-176': 0xb316,\n 'Skein256-184': 0xb317,\n 'Skein256-192': 0xb318,\n 'Skein256-200': 0xb319,\n 'Skein256-208': 0xb31a,\n 'Skein256-216': 0xb31b,\n 'Skein256-224': 0xb31c,\n 'Skein256-232': 0xb31d,\n 'Skein256-240': 0xb31e,\n 'Skein256-248': 0xb31f,\n 'Skein256-256': 0xb320,\n 'Skein512-8': 0xb321,\n 'Skein512-16': 0xb322,\n 'Skein512-24': 0xb323,\n 'Skein512-32': 0xb324,\n 'Skein512-40': 0xb325,\n 'Skein512-48': 0xb326,\n 'Skein512-56': 0xb327,\n 'Skein512-64': 0xb328,\n 'Skein512-72': 0xb329,\n 'Skein512-80': 0xb32a,\n 'Skein512-88': 0xb32b,\n 'Skein512-96': 0xb32c,\n 'Skein512-104': 0xb32d,\n 'Skein512-112': 0xb32e,\n 'Skein512-120': 0xb32f,\n 'Skein512-128': 0xb330,\n 'Skein512-136': 0xb331,\n 'Skein512-144': 0xb332,\n 'Skein512-152': 0xb333,\n 'Skein512-160': 0xb334,\n 'Skein512-168': 0xb335,\n 'Skein512-176': 0xb336,\n 'Skein512-184': 0xb337,\n 'Skein512-192': 0xb338,\n 'Skein512-200': 0xb339,\n 'Skein512-208': 0xb33a,\n 'Skein512-216': 0xb33b,\n 'Skein512-224': 0xb33c,\n 'Skein512-232': 0xb33d,\n 'Skein512-240': 0xb33e,\n 'Skein512-248': 0xb33f,\n 'Skein512-256': 0xb340,\n 'Skein512-264': 0xb341,\n 'Skein512-272': 0xb342,\n 'Skein512-280': 0xb343,\n 'Skein512-288': 0xb344,\n 'Skein512-296': 0xb345,\n 'Skein512-304': 0xb346,\n 'Skein512-312': 0xb347,\n 'Skein512-320': 0xb348,\n 'Skein512-328': 0xb349,\n 'Skein512-336': 0xb34a,\n 'Skein512-344': 0xb34b,\n 'Skein512-352': 0xb34c,\n 'Skein512-360': 0xb34d,\n 'Skein512-368': 0xb34e,\n 'Skein512-376': 0xb34f,\n 'Skein512-384': 0xb350,\n 'Skein512-392': 0xb351,\n 'Skein512-400': 0xb352,\n 'Skein512-408': 0xb353,\n 'Skein512-416': 0xb354,\n 'Skein512-424': 0xb355,\n 'Skein512-432': 0xb356,\n 'Skein512-440': 0xb357,\n 'Skein512-448': 0xb358,\n 'Skein512-456': 0xb359,\n 'Skein512-464': 0xb35a,\n 'Skein512-472': 0xb35b,\n 'Skein512-480': 0xb35c,\n 'Skein512-488': 0xb35d,\n 'Skein512-496': 0xb35e,\n 'Skein512-504': 0xb35f,\n 'Skein512-512': 0xb360,\n 'Skein1024-8': 0xb361,\n 'Skein1024-16': 0xb362,\n 'Skein1024-24': 0xb363,\n 'Skein1024-32': 0xb364,\n 'Skein1024-40': 0xb365,\n 'Skein1024-48': 0xb366,\n 'Skein1024-56': 0xb367,\n 'Skein1024-64': 0xb368,\n 'Skein1024-72': 0xb369,\n 'Skein1024-80': 0xb36a,\n 'Skein1024-88': 0xb36b,\n 'Skein1024-96': 0xb36c,\n 'Skein1024-104': 0xb36d,\n 'Skein1024-112': 0xb36e,\n 'Skein1024-120': 0xb36f,\n 'Skein1024-128': 0xb370,\n 'Skein1024-136': 0xb371,\n 'Skein1024-144': 0xb372,\n 'Skein1024-152': 0xb373,\n 'Skein1024-160': 0xb374,\n 'Skein1024-168': 0xb375,\n 'Skein1024-176': 0xb376,\n 'Skein1024-184': 0xb377,\n 'Skein1024-192': 0xb378,\n 'Skein1024-200': 0xb379,\n 'Skein1024-208': 0xb37a,\n 'Skein1024-216': 0xb37b,\n 'Skein1024-224': 0xb37c,\n 'Skein1024-232': 0xb37d,\n 'Skein1024-240': 0xb37e,\n 'Skein1024-248': 0xb37f,\n 'Skein1024-256': 0xb380,\n 'Skein1024-264': 0xb381,\n 'Skein1024-272': 0xb382,\n 'Skein1024-280': 0xb383,\n 'Skein1024-288': 0xb384,\n 'Skein1024-296': 0xb385,\n 'Skein1024-304': 0xb386,\n 'Skein1024-312': 0xb387,\n 'Skein1024-320': 0xb388,\n 'Skein1024-328': 0xb389,\n 'Skein1024-336': 0xb38a,\n 'Skein1024-344': 0xb38b,\n 'Skein1024-352': 0xb38c,\n 'Skein1024-360': 0xb38d,\n 'Skein1024-368': 0xb38e,\n 'Skein1024-376': 0xb38f,\n 'Skein1024-384': 0xb390,\n 'Skein1024-392': 0xb391,\n 'Skein1024-400': 0xb392,\n 'Skein1024-408': 0xb393,\n 'Skein1024-416': 0xb394,\n 'Skein1024-424': 0xb395,\n 'Skein1024-432': 0xb396,\n 'Skein1024-440': 0xb397,\n 'Skein1024-448': 0xb398,\n 'Skein1024-456': 0xb399,\n 'Skein1024-464': 0xb39a,\n 'Skein1024-472': 0xb39b,\n 'Skein1024-480': 0xb39c,\n 'Skein1024-488': 0xb39d,\n 'Skein1024-496': 0xb39e,\n 'Skein1024-504': 0xb39f,\n 'Skein1024-512': 0xb3a0,\n 'Skein1024-520': 0xb3a1,\n 'Skein1024-528': 0xb3a2,\n 'Skein1024-536': 0xb3a3,\n 'Skein1024-544': 0xb3a4,\n 'Skein1024-552': 0xb3a5,\n 'Skein1024-560': 0xb3a6,\n 'Skein1024-568': 0xb3a7,\n 'Skein1024-576': 0xb3a8,\n 'Skein1024-584': 0xb3a9,\n 'Skein1024-592': 0xb3aa,\n 'Skein1024-600': 0xb3ab,\n 'Skein1024-608': 0xb3ac,\n 'Skein1024-616': 0xb3ad,\n 'Skein1024-624': 0xb3ae,\n 'Skein1024-632': 0xb3af,\n 'Skein1024-640': 0xb3b0,\n 'Skein1024-648': 0xb3b1,\n 'Skein1024-656': 0xb3b2,\n 'Skein1024-664': 0xb3b3,\n 'Skein1024-672': 0xb3b4,\n 'Skein1024-680': 0xb3b5,\n 'Skein1024-688': 0xb3b6,\n 'Skein1024-696': 0xb3b7,\n 'Skein1024-704': 0xb3b8,\n 'Skein1024-712': 0xb3b9,\n 'Skein1024-720': 0xb3ba,\n 'Skein1024-728': 0xb3bb,\n 'Skein1024-736': 0xb3bc,\n 'Skein1024-744': 0xb3bd,\n 'Skein1024-752': 0xb3be,\n 'Skein1024-760': 0xb3bf,\n 'Skein1024-768': 0xb3c0,\n 'Skein1024-776': 0xb3c1,\n 'Skein1024-784': 0xb3c2,\n 'Skein1024-792': 0xb3c3,\n 'Skein1024-800': 0xb3c4,\n 'Skein1024-808': 0xb3c5,\n 'Skein1024-816': 0xb3c6,\n 'Skein1024-824': 0xb3c7,\n 'Skein1024-832': 0xb3c8,\n 'Skein1024-840': 0xb3c9,\n 'Skein1024-848': 0xb3ca,\n 'Skein1024-856': 0xb3cb,\n 'Skein1024-864': 0xb3cc,\n 'Skein1024-872': 0xb3cd,\n 'Skein1024-880': 0xb3ce,\n 'Skein1024-888': 0xb3cf,\n 'Skein1024-896': 0xb3d0,\n 'Skein1024-904': 0xb3d1,\n 'Skein1024-912': 0xb3d2,\n 'Skein1024-920': 0xb3d3,\n 'Skein1024-928': 0xb3d4,\n 'Skein1024-936': 0xb3d5,\n 'Skein1024-944': 0xb3d6,\n 'Skein1024-952': 0xb3d7,\n 'Skein1024-960': 0xb3d8,\n 'Skein1024-968': 0xb3d9,\n 'Skein1024-976': 0xb3da,\n 'Skein1024-984': 0xb3db,\n 'Skein1024-992': 0xb3dc,\n 'Skein1024-1000': 0xb3dd,\n 'Skein1024-1008': 0xb3de,\n 'Skein1024-1016': 0xb3df,\n 'Skein1024-1024': 0xb3e0\n})\n\nexports.codes = Object.freeze({\n 0x0: 'identity',\n\n // sha family\n 0x11: 'sha1',\n 0x12: 'sha2-256',\n 0x13: 'sha2-512',\n 0x56: 'dbl-sha2-256',\n 0x17: 'sha3-224',\n 0x16: 'sha3-256',\n 0x15: 'sha3-384',\n 0x14: 'sha3-512',\n 0x18: 'shake-128',\n 0x19: 'shake-256',\n 0x1A: 'keccak-224',\n 0x1B: 'keccak-256',\n 0x1C: 'keccak-384',\n 0x1D: 'keccak-512',\n\n 0x22: 'murmur3-128',\n 0x23: 'murmur3-32',\n\n // blake2\n 0xb201: 'blake2b-8',\n 0xb202: 'blake2b-16',\n 0xb203: 'blake2b-24',\n 0xb204: 'blake2b-32',\n 0xb205: 'blake2b-40',\n 0xb206: 'blake2b-48',\n 0xb207: 'blake2b-56',\n 0xb208: 'blake2b-64',\n 0xb209: 'blake2b-72',\n 0xb20a: 'blake2b-80',\n 0xb20b: 'blake2b-88',\n 0xb20c: 'blake2b-96',\n 0xb20d: 'blake2b-104',\n 0xb20e: 'blake2b-112',\n 0xb20f: 'blake2b-120',\n 0xb210: 'blake2b-128',\n 0xb211: 'blake2b-136',\n 0xb212: 'blake2b-144',\n 0xb213: 'blake2b-152',\n 0xb214: 'blake2b-160',\n 0xb215: 'blake2b-168',\n 0xb216: 'blake2b-176',\n 0xb217: 'blake2b-184',\n 0xb218: 'blake2b-192',\n 0xb219: 'blake2b-200',\n 0xb21a: 'blake2b-208',\n 0xb21b: 'blake2b-216',\n 0xb21c: 'blake2b-224',\n 0xb21d: 'blake2b-232',\n 0xb21e: 'blake2b-240',\n 0xb21f: 'blake2b-248',\n 0xb220: 'blake2b-256',\n 0xb221: 'blake2b-264',\n 0xb222: 'blake2b-272',\n 0xb223: 'blake2b-280',\n 0xb224: 'blake2b-288',\n 0xb225: 'blake2b-296',\n 0xb226: 'blake2b-304',\n 0xb227: 'blake2b-312',\n 0xb228: 'blake2b-320',\n 0xb229: 'blake2b-328',\n 0xb22a: 'blake2b-336',\n 0xb22b: 'blake2b-344',\n 0xb22c: 'blake2b-352',\n 0xb22d: 'blake2b-360',\n 0xb22e: 'blake2b-368',\n 0xb22f: 'blake2b-376',\n 0xb230: 'blake2b-384',\n 0xb231: 'blake2b-392',\n 0xb232: 'blake2b-400',\n 0xb233: 'blake2b-408',\n 0xb234: 'blake2b-416',\n 0xb235: 'blake2b-424',\n 0xb236: 'blake2b-432',\n 0xb237: 'blake2b-440',\n 0xb238: 'blake2b-448',\n 0xb239: 'blake2b-456',\n 0xb23a: 'blake2b-464',\n 0xb23b: 'blake2b-472',\n 0xb23c: 'blake2b-480',\n 0xb23d: 'blake2b-488',\n 0xb23e: 'blake2b-496',\n 0xb23f: 'blake2b-504',\n 0xb240: 'blake2b-512',\n 0xb241: 'blake2s-8',\n 0xb242: 'blake2s-16',\n 0xb243: 'blake2s-24',\n 0xb244: 'blake2s-32',\n 0xb245: 'blake2s-40',\n 0xb246: 'blake2s-48',\n 0xb247: 'blake2s-56',\n 0xb248: 'blake2s-64',\n 0xb249: 'blake2s-72',\n 0xb24a: 'blake2s-80',\n 0xb24b: 'blake2s-88',\n 0xb24c: 'blake2s-96',\n 0xb24d: 'blake2s-104',\n 0xb24e: 'blake2s-112',\n 0xb24f: 'blake2s-120',\n 0xb250: 'blake2s-128',\n 0xb251: 'blake2s-136',\n 0xb252: 'blake2s-144',\n 0xb253: 'blake2s-152',\n 0xb254: 'blake2s-160',\n 0xb255: 'blake2s-168',\n 0xb256: 'blake2s-176',\n 0xb257: 'blake2s-184',\n 0xb258: 'blake2s-192',\n 0xb259: 'blake2s-200',\n 0xb25a: 'blake2s-208',\n 0xb25b: 'blake2s-216',\n 0xb25c: 'blake2s-224',\n 0xb25d: 'blake2s-232',\n 0xb25e: 'blake2s-240',\n 0xb25f: 'blake2s-248',\n 0xb260: 'blake2s-256',\n\n // skein\n 0xb301: 'Skein256-8',\n 0xb302: 'Skein256-16',\n 0xb303: 'Skein256-24',\n 0xb304: 'Skein256-32',\n 0xb305: 'Skein256-40',\n 0xb306: 'Skein256-48',\n 0xb307: 'Skein256-56',\n 0xb308: 'Skein256-64',\n 0xb309: 'Skein256-72',\n 0xb30a: 'Skein256-80',\n 0xb30b: 'Skein256-88',\n 0xb30c: 'Skein256-96',\n 0xb30d: 'Skein256-104',\n 0xb30e: 'Skein256-112',\n 0xb30f: 'Skein256-120',\n 0xb310: 'Skein256-128',\n 0xb311: 'Skein256-136',\n 0xb312: 'Skein256-144',\n 0xb313: 'Skein256-152',\n 0xb314: 'Skein256-160',\n 0xb315: 'Skein256-168',\n 0xb316: 'Skein256-176',\n 0xb317: 'Skein256-184',\n 0xb318: 'Skein256-192',\n 0xb319: 'Skein256-200',\n 0xb31a: 'Skein256-208',\n 0xb31b: 'Skein256-216',\n 0xb31c: 'Skein256-224',\n 0xb31d: 'Skein256-232',\n 0xb31e: 'Skein256-240',\n 0xb31f: 'Skein256-248',\n 0xb320: 'Skein256-256',\n 0xb321: 'Skein512-8',\n 0xb322: 'Skein512-16',\n 0xb323: 'Skein512-24',\n 0xb324: 'Skein512-32',\n 0xb325: 'Skein512-40',\n 0xb326: 'Skein512-48',\n 0xb327: 'Skein512-56',\n 0xb328: 'Skein512-64',\n 0xb329: 'Skein512-72',\n 0xb32a: 'Skein512-80',\n 0xb32b: 'Skein512-88',\n 0xb32c: 'Skein512-96',\n 0xb32d: 'Skein512-104',\n 0xb32e: 'Skein512-112',\n 0xb32f: 'Skein512-120',\n 0xb330: 'Skein512-128',\n 0xb331: 'Skein512-136',\n 0xb332: 'Skein512-144',\n 0xb333: 'Skein512-152',\n 0xb334: 'Skein512-160',\n 0xb335: 'Skein512-168',\n 0xb336: 'Skein512-176',\n 0xb337: 'Skein512-184',\n 0xb338: 'Skein512-192',\n 0xb339: 'Skein512-200',\n 0xb33a: 'Skein512-208',\n 0xb33b: 'Skein512-216',\n 0xb33c: 'Skein512-224',\n 0xb33d: 'Skein512-232',\n 0xb33e: 'Skein512-240',\n 0xb33f: 'Skein512-248',\n 0xb340: 'Skein512-256',\n 0xb341: 'Skein512-264',\n 0xb342: 'Skein512-272',\n 0xb343: 'Skein512-280',\n 0xb344: 'Skein512-288',\n 0xb345: 'Skein512-296',\n 0xb346: 'Skein512-304',\n 0xb347: 'Skein512-312',\n 0xb348: 'Skein512-320',\n 0xb349: 'Skein512-328',\n 0xb34a: 'Skein512-336',\n 0xb34b: 'Skein512-344',\n 0xb34c: 'Skein512-352',\n 0xb34d: 'Skein512-360',\n 0xb34e: 'Skein512-368',\n 0xb34f: 'Skein512-376',\n 0xb350: 'Skein512-384',\n 0xb351: 'Skein512-392',\n 0xb352: 'Skein512-400',\n 0xb353: 'Skein512-408',\n 0xb354: 'Skein512-416',\n 0xb355: 'Skein512-424',\n 0xb356: 'Skein512-432',\n 0xb357: 'Skein512-440',\n 0xb358: 'Skein512-448',\n 0xb359: 'Skein512-456',\n 0xb35a: 'Skein512-464',\n 0xb35b: 'Skein512-472',\n 0xb35c: 'Skein512-480',\n 0xb35d: 'Skein512-488',\n 0xb35e: 'Skein512-496',\n 0xb35f: 'Skein512-504',\n 0xb360: 'Skein512-512',\n 0xb361: 'Skein1024-8',\n 0xb362: 'Skein1024-16',\n 0xb363: 'Skein1024-24',\n 0xb364: 'Skein1024-32',\n 0xb365: 'Skein1024-40',\n 0xb366: 'Skein1024-48',\n 0xb367: 'Skein1024-56',\n 0xb368: 'Skein1024-64',\n 0xb369: 'Skein1024-72',\n 0xb36a: 'Skein1024-80',\n 0xb36b: 'Skein1024-88',\n 0xb36c: 'Skein1024-96',\n 0xb36d: 'Skein1024-104',\n 0xb36e: 'Skein1024-112',\n 0xb36f: 'Skein1024-120',\n 0xb370: 'Skein1024-128',\n 0xb371: 'Skein1024-136',\n 0xb372: 'Skein1024-144',\n 0xb373: 'Skein1024-152',\n 0xb374: 'Skein1024-160',\n 0xb375: 'Skein1024-168',\n 0xb376: 'Skein1024-176',\n 0xb377: 'Skein1024-184',\n 0xb378: 'Skein1024-192',\n 0xb379: 'Skein1024-200',\n 0xb37a: 'Skein1024-208',\n 0xb37b: 'Skein1024-216',\n 0xb37c: 'Skein1024-224',\n 0xb37d: 'Skein1024-232',\n 0xb37e: 'Skein1024-240',\n 0xb37f: 'Skein1024-248',\n 0xb380: 'Skein1024-256',\n 0xb381: 'Skein1024-264',\n 0xb382: 'Skein1024-272',\n 0xb383: 'Skein1024-280',\n 0xb384: 'Skein1024-288',\n 0xb385: 'Skein1024-296',\n 0xb386: 'Skein1024-304',\n 0xb387: 'Skein1024-312',\n 0xb388: 'Skein1024-320',\n 0xb389: 'Skein1024-328',\n 0xb38a: 'Skein1024-336',\n 0xb38b: 'Skein1024-344',\n 0xb38c: 'Skein1024-352',\n 0xb38d: 'Skein1024-360',\n 0xb38e: 'Skein1024-368',\n 0xb38f: 'Skein1024-376',\n 0xb390: 'Skein1024-384',\n 0xb391: 'Skein1024-392',\n 0xb392: 'Skein1024-400',\n 0xb393: 'Skein1024-408',\n 0xb394: 'Skein1024-416',\n 0xb395: 'Skein1024-424',\n 0xb396: 'Skein1024-432',\n 0xb397: 'Skein1024-440',\n 0xb398: 'Skein1024-448',\n 0xb399: 'Skein1024-456',\n 0xb39a: 'Skein1024-464',\n 0xb39b: 'Skein1024-472',\n 0xb39c: 'Skein1024-480',\n 0xb39d: 'Skein1024-488',\n 0xb39e: 'Skein1024-496',\n 0xb39f: 'Skein1024-504',\n 0xb3a0: 'Skein1024-512',\n 0xb3a1: 'Skein1024-520',\n 0xb3a2: 'Skein1024-528',\n 0xb3a3: 'Skein1024-536',\n 0xb3a4: 'Skein1024-544',\n 0xb3a5: 'Skein1024-552',\n 0xb3a6: 'Skein1024-560',\n 0xb3a7: 'Skein1024-568',\n 0xb3a8: 'Skein1024-576',\n 0xb3a9: 'Skein1024-584',\n 0xb3aa: 'Skein1024-592',\n 0xb3ab: 'Skein1024-600',\n 0xb3ac: 'Skein1024-608',\n 0xb3ad: 'Skein1024-616',\n 0xb3ae: 'Skein1024-624',\n 0xb3af: 'Skein1024-632',\n 0xb3b0: 'Skein1024-640',\n 0xb3b1: 'Skein1024-648',\n 0xb3b2: 'Skein1024-656',\n 0xb3b3: 'Skein1024-664',\n 0xb3b4: 'Skein1024-672',\n 0xb3b5: 'Skein1024-680',\n 0xb3b6: 'Skein1024-688',\n 0xb3b7: 'Skein1024-696',\n 0xb3b8: 'Skein1024-704',\n 0xb3b9: 'Skein1024-712',\n 0xb3ba: 'Skein1024-720',\n 0xb3bb: 'Skein1024-728',\n 0xb3bc: 'Skein1024-736',\n 0xb3bd: 'Skein1024-744',\n 0xb3be: 'Skein1024-752',\n 0xb3bf: 'Skein1024-760',\n 0xb3c0: 'Skein1024-768',\n 0xb3c1: 'Skein1024-776',\n 0xb3c2: 'Skein1024-784',\n 0xb3c3: 'Skein1024-792',\n 0xb3c4: 'Skein1024-800',\n 0xb3c5: 'Skein1024-808',\n 0xb3c6: 'Skein1024-816',\n 0xb3c7: 'Skein1024-824',\n 0xb3c8: 'Skein1024-832',\n 0xb3c9: 'Skein1024-840',\n 0xb3ca: 'Skein1024-848',\n 0xb3cb: 'Skein1024-856',\n 0xb3cc: 'Skein1024-864',\n 0xb3cd: 'Skein1024-872',\n 0xb3ce: 'Skein1024-880',\n 0xb3cf: 'Skein1024-888',\n 0xb3d0: 'Skein1024-896',\n 0xb3d1: 'Skein1024-904',\n 0xb3d2: 'Skein1024-912',\n 0xb3d3: 'Skein1024-920',\n 0xb3d4: 'Skein1024-928',\n 0xb3d5: 'Skein1024-936',\n 0xb3d6: 'Skein1024-944',\n 0xb3d7: 'Skein1024-952',\n 0xb3d8: 'Skein1024-960',\n 0xb3d9: 'Skein1024-968',\n 0xb3da: 'Skein1024-976',\n 0xb3db: 'Skein1024-984',\n 0xb3dc: 'Skein1024-992',\n 0xb3dd: 'Skein1024-1000',\n 0xb3de: 'Skein1024-1008',\n 0xb3df: 'Skein1024-1016',\n 0xb3e0: 'Skein1024-1024'\n})\n\nexports.defaultLengths = Object.freeze({\n 0x11: 20,\n 0x12: 32,\n 0x13: 64,\n 0x56: 32,\n 0x17: 28,\n 0x16: 32,\n 0x15: 48,\n 0x14: 64,\n 0x18: 32,\n 0x19: 64,\n 0x1A: 28,\n 0x1B: 32,\n 0x1C: 48,\n 0x1D: 64,\n 0x22: 32,\n\n 0xb201: 0x01,\n 0xb202: 0x02,\n 0xb203: 0x03,\n 0xb204: 0x04,\n 0xb205: 0x05,\n 0xb206: 0x06,\n 0xb207: 0x07,\n 0xb208: 0x08,\n 0xb209: 0x09,\n 0xb20a: 0x0a,\n 0xb20b: 0x0b,\n 0xb20c: 0x0c,\n 0xb20d: 0x0d,\n 0xb20e: 0x0e,\n 0xb20f: 0x0f,\n 0xb210: 0x10,\n 0xb211: 0x11,\n 0xb212: 0x12,\n 0xb213: 0x13,\n 0xb214: 0x14,\n 0xb215: 0x15,\n 0xb216: 0x16,\n 0xb217: 0x17,\n 0xb218: 0x18,\n 0xb219: 0x19,\n 0xb21a: 0x1a,\n 0xb21b: 0x1b,\n 0xb21c: 0x1c,\n 0xb21d: 0x1d,\n 0xb21e: 0x1e,\n 0xb21f: 0x1f,\n 0xb220: 0x20,\n 0xb221: 0x21,\n 0xb222: 0x22,\n 0xb223: 0x23,\n 0xb224: 0x24,\n 0xb225: 0x25,\n 0xb226: 0x26,\n 0xb227: 0x27,\n 0xb228: 0x28,\n 0xb229: 0x29,\n 0xb22a: 0x2a,\n 0xb22b: 0x2b,\n 0xb22c: 0x2c,\n 0xb22d: 0x2d,\n 0xb22e: 0x2e,\n 0xb22f: 0x2f,\n 0xb230: 0x30,\n 0xb231: 0x31,\n 0xb232: 0x32,\n 0xb233: 0x33,\n 0xb234: 0x34,\n 0xb235: 0x35,\n 0xb236: 0x36,\n 0xb237: 0x37,\n 0xb238: 0x38,\n 0xb239: 0x39,\n 0xb23a: 0x3a,\n 0xb23b: 0x3b,\n 0xb23c: 0x3c,\n 0xb23d: 0x3d,\n 0xb23e: 0x3e,\n 0xb23f: 0x3f,\n 0xb240: 0x40,\n 0xb241: 0x01,\n 0xb242: 0x02,\n 0xb243: 0x03,\n 0xb244: 0x04,\n 0xb245: 0x05,\n 0xb246: 0x06,\n 0xb247: 0x07,\n 0xb248: 0x08,\n 0xb249: 0x09,\n 0xb24a: 0x0a,\n 0xb24b: 0x0b,\n 0xb24c: 0x0c,\n 0xb24d: 0x0d,\n 0xb24e: 0x0e,\n 0xb24f: 0x0f,\n 0xb250: 0x10,\n 0xb251: 0x11,\n 0xb252: 0x12,\n 0xb253: 0x13,\n 0xb254: 0x14,\n 0xb255: 0x15,\n 0xb256: 0x16,\n 0xb257: 0x17,\n 0xb258: 0x18,\n 0xb259: 0x19,\n 0xb25a: 0x1a,\n 0xb25b: 0x1b,\n 0xb25c: 0x1c,\n 0xb25d: 0x1d,\n 0xb25e: 0x1e,\n 0xb25f: 0x1f,\n 0xb260: 0x20,\n 0xb301: 0x01,\n 0xb302: 0x02,\n 0xb303: 0x03,\n 0xb304: 0x04,\n 0xb305: 0x05,\n 0xb306: 0x06,\n 0xb307: 0x07,\n 0xb308: 0x08,\n 0xb309: 0x09,\n 0xb30a: 0x0a,\n 0xb30b: 0x0b,\n 0xb30c: 0x0c,\n 0xb30d: 0x0d,\n 0xb30e: 0x0e,\n 0xb30f: 0x0f,\n 0xb310: 0x10,\n 0xb311: 0x11,\n 0xb312: 0x12,\n 0xb313: 0x13,\n 0xb314: 0x14,\n 0xb315: 0x15,\n 0xb316: 0x16,\n 0xb317: 0x17,\n 0xb318: 0x18,\n 0xb319: 0x19,\n 0xb31a: 0x1a,\n 0xb31b: 0x1b,\n 0xb31c: 0x1c,\n 0xb31d: 0x1d,\n 0xb31e: 0x1e,\n 0xb31f: 0x1f,\n 0xb320: 0x20,\n 0xb321: 0x01,\n 0xb322: 0x02,\n 0xb323: 0x03,\n 0xb324: 0x04,\n 0xb325: 0x05,\n 0xb326: 0x06,\n 0xb327: 0x07,\n 0xb328: 0x08,\n 0xb329: 0x09,\n 0xb32a: 0x0a,\n 0xb32b: 0x0b,\n 0xb32c: 0x0c,\n 0xb32d: 0x0d,\n 0xb32e: 0x0e,\n 0xb32f: 0x0f,\n 0xb330: 0x10,\n 0xb331: 0x11,\n 0xb332: 0x12,\n 0xb333: 0x13,\n 0xb334: 0x14,\n 0xb335: 0x15,\n 0xb336: 0x16,\n 0xb337: 0x17,\n 0xb338: 0x18,\n 0xb339: 0x19,\n 0xb33a: 0x1a,\n 0xb33b: 0x1b,\n 0xb33c: 0x1c,\n 0xb33d: 0x1d,\n 0xb33e: 0x1e,\n 0xb33f: 0x1f,\n 0xb340: 0x20,\n 0xb341: 0x21,\n 0xb342: 0x22,\n 0xb343: 0x23,\n 0xb344: 0x24,\n 0xb345: 0x25,\n 0xb346: 0x26,\n 0xb347: 0x27,\n 0xb348: 0x28,\n 0xb349: 0x29,\n 0xb34a: 0x2a,\n 0xb34b: 0x2b,\n 0xb34c: 0x2c,\n 0xb34d: 0x2d,\n 0xb34e: 0x2e,\n 0xb34f: 0x2f,\n 0xb350: 0x30,\n 0xb351: 0x31,\n 0xb352: 0x32,\n 0xb353: 0x33,\n 0xb354: 0x34,\n 0xb355: 0x35,\n 0xb356: 0x36,\n 0xb357: 0x37,\n 0xb358: 0x38,\n 0xb359: 0x39,\n 0xb35a: 0x3a,\n 0xb35b: 0x3b,\n 0xb35c: 0x3c,\n 0xb35d: 0x3d,\n 0xb35e: 0x3e,\n 0xb35f: 0x3f,\n 0xb360: 0x40,\n 0xb361: 0x01,\n 0xb362: 0x02,\n 0xb363: 0x03,\n 0xb364: 0x04,\n 0xb365: 0x05,\n 0xb366: 0x06,\n 0xb367: 0x07,\n 0xb368: 0x08,\n 0xb369: 0x09,\n 0xb36a: 0x0a,\n 0xb36b: 0x0b,\n 0xb36c: 0x0c,\n 0xb36d: 0x0d,\n 0xb36e: 0x0e,\n 0xb36f: 0x0f,\n 0xb370: 0x10,\n 0xb371: 0x11,\n 0xb372: 0x12,\n 0xb373: 0x13,\n 0xb374: 0x14,\n 0xb375: 0x15,\n 0xb376: 0x16,\n 0xb377: 0x17,\n 0xb378: 0x18,\n 0xb379: 0x19,\n 0xb37a: 0x1a,\n 0xb37b: 0x1b,\n 0xb37c: 0x1c,\n 0xb37d: 0x1d,\n 0xb37e: 0x1e,\n 0xb37f: 0x1f,\n 0xb380: 0x20,\n 0xb381: 0x21,\n 0xb382: 0x22,\n 0xb383: 0x23,\n 0xb384: 0x24,\n 0xb385: 0x25,\n 0xb386: 0x26,\n 0xb387: 0x27,\n 0xb388: 0x28,\n 0xb389: 0x29,\n 0xb38a: 0x2a,\n 0xb38b: 0x2b,\n 0xb38c: 0x2c,\n 0xb38d: 0x2d,\n 0xb38e: 0x2e,\n 0xb38f: 0x2f,\n 0xb390: 0x30,\n 0xb391: 0x31,\n 0xb392: 0x32,\n 0xb393: 0x33,\n 0xb394: 0x34,\n 0xb395: 0x35,\n 0xb396: 0x36,\n 0xb397: 0x37,\n 0xb398: 0x38,\n 0xb399: 0x39,\n 0xb39a: 0x3a,\n 0xb39b: 0x3b,\n 0xb39c: 0x3c,\n 0xb39d: 0x3d,\n 0xb39e: 0x3e,\n 0xb39f: 0x3f,\n 0xb3a0: 0x40,\n 0xb3a1: 0x41,\n 0xb3a2: 0x42,\n 0xb3a3: 0x43,\n 0xb3a4: 0x44,\n 0xb3a5: 0x45,\n 0xb3a6: 0x46,\n 0xb3a7: 0x47,\n 0xb3a8: 0x48,\n 0xb3a9: 0x49,\n 0xb3aa: 0x4a,\n 0xb3ab: 0x4b,\n 0xb3ac: 0x4c,\n 0xb3ad: 0x4d,\n 0xb3ae: 0x4e,\n 0xb3af: 0x4f,\n 0xb3b0: 0x50,\n 0xb3b1: 0x51,\n 0xb3b2: 0x52,\n 0xb3b3: 0x53,\n 0xb3b4: 0x54,\n 0xb3b5: 0x55,\n 0xb3b6: 0x56,\n 0xb3b7: 0x57,\n 0xb3b8: 0x58,\n 0xb3b9: 0x59,\n 0xb3ba: 0x5a,\n 0xb3bb: 0x5b,\n 0xb3bc: 0x5c,\n 0xb3bd: 0x5d,\n 0xb3be: 0x5e,\n 0xb3bf: 0x5f,\n 0xb3c0: 0x60,\n 0xb3c1: 0x61,\n 0xb3c2: 0x62,\n 0xb3c3: 0x63,\n 0xb3c4: 0x64,\n 0xb3c5: 0x65,\n 0xb3c6: 0x66,\n 0xb3c7: 0x67,\n 0xb3c8: 0x68,\n 0xb3c9: 0x69,\n 0xb3ca: 0x6a,\n 0xb3cb: 0x6b,\n 0xb3cc: 0x6c,\n 0xb3cd: 0x6d,\n 0xb3ce: 0x6e,\n 0xb3cf: 0x6f,\n 0xb3d0: 0x70,\n 0xb3d1: 0x71,\n 0xb3d2: 0x72,\n 0xb3d3: 0x73,\n 0xb3d4: 0x74,\n 0xb3d5: 0x75,\n 0xb3d6: 0x76,\n 0xb3d7: 0x77,\n 0xb3d8: 0x78,\n 0xb3d9: 0x79,\n 0xb3da: 0x7a,\n 0xb3db: 0x7b,\n 0xb3dc: 0x7c,\n 0xb3dd: 0x7d,\n 0xb3de: 0x7e,\n 0xb3df: 0x7f,\n 0xb3e0: 0x80\n})\n","'use strict'\n\nconst toPullStream = require('async-iterator-to-pull-stream')\n\nmodule.exports = function (self) {\n return function lsPullStream (ipfsPath, options) {\n return toPullStream.source(self._lsAsyncIterator(ipfsPath, options))\n }\n}\n","/* eslint quote-props: off */\n/* eslint key-spacing: off */\n'use strict'\n\nexports.names = Object.freeze({\n 'identity': 0x0,\n 'sha1': 0x11,\n 'sha2-256': 0x12,\n 'sha2-512': 0x13,\n 'dbl-sha2-256': 0x56,\n 'sha3-224': 0x17,\n 'sha3-256': 0x16,\n 'sha3-384': 0x15,\n 'sha3-512': 0x14,\n 'shake-128': 0x18,\n 'shake-256': 0x19,\n 'keccak-224': 0x1A,\n 'keccak-256': 0x1B,\n 'keccak-384': 0x1C,\n 'keccak-512': 0x1D,\n 'murmur3-128': 0x22,\n 'murmur3-32': 0x23,\n 'blake2b-8': 0xb201,\n 'blake2b-16': 0xb202,\n 'blake2b-24': 0xb203,\n 'blake2b-32': 0xb204,\n 'blake2b-40': 0xb205,\n 'blake2b-48': 0xb206,\n 'blake2b-56': 0xb207,\n 'blake2b-64': 0xb208,\n 'blake2b-72': 0xb209,\n 'blake2b-80': 0xb20a,\n 'blake2b-88': 0xb20b,\n 'blake2b-96': 0xb20c,\n 'blake2b-104': 0xb20d,\n 'blake2b-112': 0xb20e,\n 'blake2b-120': 0xb20f,\n 'blake2b-128': 0xb210,\n 'blake2b-136': 0xb211,\n 'blake2b-144': 0xb212,\n 'blake2b-152': 0xb213,\n 'blake2b-160': 0xb214,\n 'blake2b-168': 0xb215,\n 'blake2b-176': 0xb216,\n 'blake2b-184': 0xb217,\n 'blake2b-192': 0xb218,\n 'blake2b-200': 0xb219,\n 'blake2b-208': 0xb21a,\n 'blake2b-216': 0xb21b,\n 'blake2b-224': 0xb21c,\n 'blake2b-232': 0xb21d,\n 'blake2b-240': 0xb21e,\n 'blake2b-248': 0xb21f,\n 'blake2b-256': 0xb220,\n 'blake2b-264': 0xb221,\n 'blake2b-272': 0xb222,\n 'blake2b-280': 0xb223,\n 'blake2b-288': 0xb224,\n 'blake2b-296': 0xb225,\n 'blake2b-304': 0xb226,\n 'blake2b-312': 0xb227,\n 'blake2b-320': 0xb228,\n 'blake2b-328': 0xb229,\n 'blake2b-336': 0xb22a,\n 'blake2b-344': 0xb22b,\n 'blake2b-352': 0xb22c,\n 'blake2b-360': 0xb22d,\n 'blake2b-368': 0xb22e,\n 'blake2b-376': 0xb22f,\n 'blake2b-384': 0xb230,\n 'blake2b-392': 0xb231,\n 'blake2b-400': 0xb232,\n 'blake2b-408': 0xb233,\n 'blake2b-416': 0xb234,\n 'blake2b-424': 0xb235,\n 'blake2b-432': 0xb236,\n 'blake2b-440': 0xb237,\n 'blake2b-448': 0xb238,\n 'blake2b-456': 0xb239,\n 'blake2b-464': 0xb23a,\n 'blake2b-472': 0xb23b,\n 'blake2b-480': 0xb23c,\n 'blake2b-488': 0xb23d,\n 'blake2b-496': 0xb23e,\n 'blake2b-504': 0xb23f,\n 'blake2b-512': 0xb240,\n 'blake2s-8': 0xb241,\n 'blake2s-16': 0xb242,\n 'blake2s-24': 0xb243,\n 'blake2s-32': 0xb244,\n 'blake2s-40': 0xb245,\n 'blake2s-48': 0xb246,\n 'blake2s-56': 0xb247,\n 'blake2s-64': 0xb248,\n 'blake2s-72': 0xb249,\n 'blake2s-80': 0xb24a,\n 'blake2s-88': 0xb24b,\n 'blake2s-96': 0xb24c,\n 'blake2s-104': 0xb24d,\n 'blake2s-112': 0xb24e,\n 'blake2s-120': 0xb24f,\n 'blake2s-128': 0xb250,\n 'blake2s-136': 0xb251,\n 'blake2s-144': 0xb252,\n 'blake2s-152': 0xb253,\n 'blake2s-160': 0xb254,\n 'blake2s-168': 0xb255,\n 'blake2s-176': 0xb256,\n 'blake2s-184': 0xb257,\n 'blake2s-192': 0xb258,\n 'blake2s-200': 0xb259,\n 'blake2s-208': 0xb25a,\n 'blake2s-216': 0xb25b,\n 'blake2s-224': 0xb25c,\n 'blake2s-232': 0xb25d,\n 'blake2s-240': 0xb25e,\n 'blake2s-248': 0xb25f,\n 'blake2s-256': 0xb260,\n 'Skein256-8': 0xb301,\n 'Skein256-16': 0xb302,\n 'Skein256-24': 0xb303,\n 'Skein256-32': 0xb304,\n 'Skein256-40': 0xb305,\n 'Skein256-48': 0xb306,\n 'Skein256-56': 0xb307,\n 'Skein256-64': 0xb308,\n 'Skein256-72': 0xb309,\n 'Skein256-80': 0xb30a,\n 'Skein256-88': 0xb30b,\n 'Skein256-96': 0xb30c,\n 'Skein256-104': 0xb30d,\n 'Skein256-112': 0xb30e,\n 'Skein256-120': 0xb30f,\n 'Skein256-128': 0xb310,\n 'Skein256-136': 0xb311,\n 'Skein256-144': 0xb312,\n 'Skein256-152': 0xb313,\n 'Skein256-160': 0xb314,\n 'Skein256-168': 0xb315,\n 'Skein256-176': 0xb316,\n 'Skein256-184': 0xb317,\n 'Skein256-192': 0xb318,\n 'Skein256-200': 0xb319,\n 'Skein256-208': 0xb31a,\n 'Skein256-216': 0xb31b,\n 'Skein256-224': 0xb31c,\n 'Skein256-232': 0xb31d,\n 'Skein256-240': 0xb31e,\n 'Skein256-248': 0xb31f,\n 'Skein256-256': 0xb320,\n 'Skein512-8': 0xb321,\n 'Skein512-16': 0xb322,\n 'Skein512-24': 0xb323,\n 'Skein512-32': 0xb324,\n 'Skein512-40': 0xb325,\n 'Skein512-48': 0xb326,\n 'Skein512-56': 0xb327,\n 'Skein512-64': 0xb328,\n 'Skein512-72': 0xb329,\n 'Skein512-80': 0xb32a,\n 'Skein512-88': 0xb32b,\n 'Skein512-96': 0xb32c,\n 'Skein512-104': 0xb32d,\n 'Skein512-112': 0xb32e,\n 'Skein512-120': 0xb32f,\n 'Skein512-128': 0xb330,\n 'Skein512-136': 0xb331,\n 'Skein512-144': 0xb332,\n 'Skein512-152': 0xb333,\n 'Skein512-160': 0xb334,\n 'Skein512-168': 0xb335,\n 'Skein512-176': 0xb336,\n 'Skein512-184': 0xb337,\n 'Skein512-192': 0xb338,\n 'Skein512-200': 0xb339,\n 'Skein512-208': 0xb33a,\n 'Skein512-216': 0xb33b,\n 'Skein512-224': 0xb33c,\n 'Skein512-232': 0xb33d,\n 'Skein512-240': 0xb33e,\n 'Skein512-248': 0xb33f,\n 'Skein512-256': 0xb340,\n 'Skein512-264': 0xb341,\n 'Skein512-272': 0xb342,\n 'Skein512-280': 0xb343,\n 'Skein512-288': 0xb344,\n 'Skein512-296': 0xb345,\n 'Skein512-304': 0xb346,\n 'Skein512-312': 0xb347,\n 'Skein512-320': 0xb348,\n 'Skein512-328': 0xb349,\n 'Skein512-336': 0xb34a,\n 'Skein512-344': 0xb34b,\n 'Skein512-352': 0xb34c,\n 'Skein512-360': 0xb34d,\n 'Skein512-368': 0xb34e,\n 'Skein512-376': 0xb34f,\n 'Skein512-384': 0xb350,\n 'Skein512-392': 0xb351,\n 'Skein512-400': 0xb352,\n 'Skein512-408': 0xb353,\n 'Skein512-416': 0xb354,\n 'Skein512-424': 0xb355,\n 'Skein512-432': 0xb356,\n 'Skein512-440': 0xb357,\n 'Skein512-448': 0xb358,\n 'Skein512-456': 0xb359,\n 'Skein512-464': 0xb35a,\n 'Skein512-472': 0xb35b,\n 'Skein512-480': 0xb35c,\n 'Skein512-488': 0xb35d,\n 'Skein512-496': 0xb35e,\n 'Skein512-504': 0xb35f,\n 'Skein512-512': 0xb360,\n 'Skein1024-8': 0xb361,\n 'Skein1024-16': 0xb362,\n 'Skein1024-24': 0xb363,\n 'Skein1024-32': 0xb364,\n 'Skein1024-40': 0xb365,\n 'Skein1024-48': 0xb366,\n 'Skein1024-56': 0xb367,\n 'Skein1024-64': 0xb368,\n 'Skein1024-72': 0xb369,\n 'Skein1024-80': 0xb36a,\n 'Skein1024-88': 0xb36b,\n 'Skein1024-96': 0xb36c,\n 'Skein1024-104': 0xb36d,\n 'Skein1024-112': 0xb36e,\n 'Skein1024-120': 0xb36f,\n 'Skein1024-128': 0xb370,\n 'Skein1024-136': 0xb371,\n 'Skein1024-144': 0xb372,\n 'Skein1024-152': 0xb373,\n 'Skein1024-160': 0xb374,\n 'Skein1024-168': 0xb375,\n 'Skein1024-176': 0xb376,\n 'Skein1024-184': 0xb377,\n 'Skein1024-192': 0xb378,\n 'Skein1024-200': 0xb379,\n 'Skein1024-208': 0xb37a,\n 'Skein1024-216': 0xb37b,\n 'Skein1024-224': 0xb37c,\n 'Skein1024-232': 0xb37d,\n 'Skein1024-240': 0xb37e,\n 'Skein1024-248': 0xb37f,\n 'Skein1024-256': 0xb380,\n 'Skein1024-264': 0xb381,\n 'Skein1024-272': 0xb382,\n 'Skein1024-280': 0xb383,\n 'Skein1024-288': 0xb384,\n 'Skein1024-296': 0xb385,\n 'Skein1024-304': 0xb386,\n 'Skein1024-312': 0xb387,\n 'Skein1024-320': 0xb388,\n 'Skein1024-328': 0xb389,\n 'Skein1024-336': 0xb38a,\n 'Skein1024-344': 0xb38b,\n 'Skein1024-352': 0xb38c,\n 'Skein1024-360': 0xb38d,\n 'Skein1024-368': 0xb38e,\n 'Skein1024-376': 0xb38f,\n 'Skein1024-384': 0xb390,\n 'Skein1024-392': 0xb391,\n 'Skein1024-400': 0xb392,\n 'Skein1024-408': 0xb393,\n 'Skein1024-416': 0xb394,\n 'Skein1024-424': 0xb395,\n 'Skein1024-432': 0xb396,\n 'Skein1024-440': 0xb397,\n 'Skein1024-448': 0xb398,\n 'Skein1024-456': 0xb399,\n 'Skein1024-464': 0xb39a,\n 'Skein1024-472': 0xb39b,\n 'Skein1024-480': 0xb39c,\n 'Skein1024-488': 0xb39d,\n 'Skein1024-496': 0xb39e,\n 'Skein1024-504': 0xb39f,\n 'Skein1024-512': 0xb3a0,\n 'Skein1024-520': 0xb3a1,\n 'Skein1024-528': 0xb3a2,\n 'Skein1024-536': 0xb3a3,\n 'Skein1024-544': 0xb3a4,\n 'Skein1024-552': 0xb3a5,\n 'Skein1024-560': 0xb3a6,\n 'Skein1024-568': 0xb3a7,\n 'Skein1024-576': 0xb3a8,\n 'Skein1024-584': 0xb3a9,\n 'Skein1024-592': 0xb3aa,\n 'Skein1024-600': 0xb3ab,\n 'Skein1024-608': 0xb3ac,\n 'Skein1024-616': 0xb3ad,\n 'Skein1024-624': 0xb3ae,\n 'Skein1024-632': 0xb3af,\n 'Skein1024-640': 0xb3b0,\n 'Skein1024-648': 0xb3b1,\n 'Skein1024-656': 0xb3b2,\n 'Skein1024-664': 0xb3b3,\n 'Skein1024-672': 0xb3b4,\n 'Skein1024-680': 0xb3b5,\n 'Skein1024-688': 0xb3b6,\n 'Skein1024-696': 0xb3b7,\n 'Skein1024-704': 0xb3b8,\n 'Skein1024-712': 0xb3b9,\n 'Skein1024-720': 0xb3ba,\n 'Skein1024-728': 0xb3bb,\n 'Skein1024-736': 0xb3bc,\n 'Skein1024-744': 0xb3bd,\n 'Skein1024-752': 0xb3be,\n 'Skein1024-760': 0xb3bf,\n 'Skein1024-768': 0xb3c0,\n 'Skein1024-776': 0xb3c1,\n 'Skein1024-784': 0xb3c2,\n 'Skein1024-792': 0xb3c3,\n 'Skein1024-800': 0xb3c4,\n 'Skein1024-808': 0xb3c5,\n 'Skein1024-816': 0xb3c6,\n 'Skein1024-824': 0xb3c7,\n 'Skein1024-832': 0xb3c8,\n 'Skein1024-840': 0xb3c9,\n 'Skein1024-848': 0xb3ca,\n 'Skein1024-856': 0xb3cb,\n 'Skein1024-864': 0xb3cc,\n 'Skein1024-872': 0xb3cd,\n 'Skein1024-880': 0xb3ce,\n 'Skein1024-888': 0xb3cf,\n 'Skein1024-896': 0xb3d0,\n 'Skein1024-904': 0xb3d1,\n 'Skein1024-912': 0xb3d2,\n 'Skein1024-920': 0xb3d3,\n 'Skein1024-928': 0xb3d4,\n 'Skein1024-936': 0xb3d5,\n 'Skein1024-944': 0xb3d6,\n 'Skein1024-952': 0xb3d7,\n 'Skein1024-960': 0xb3d8,\n 'Skein1024-968': 0xb3d9,\n 'Skein1024-976': 0xb3da,\n 'Skein1024-984': 0xb3db,\n 'Skein1024-992': 0xb3dc,\n 'Skein1024-1000': 0xb3dd,\n 'Skein1024-1008': 0xb3de,\n 'Skein1024-1016': 0xb3df,\n 'Skein1024-1024': 0xb3e0\n})\n\nexports.codes = Object.freeze({\n 0x0: 'identity',\n\n // sha family\n 0x11: 'sha1',\n 0x12: 'sha2-256',\n 0x13: 'sha2-512',\n 0x56: 'dbl-sha2-256',\n 0x17: 'sha3-224',\n 0x16: 'sha3-256',\n 0x15: 'sha3-384',\n 0x14: 'sha3-512',\n 0x18: 'shake-128',\n 0x19: 'shake-256',\n 0x1A: 'keccak-224',\n 0x1B: 'keccak-256',\n 0x1C: 'keccak-384',\n 0x1D: 'keccak-512',\n\n 0x22: 'murmur3-128',\n 0x23: 'murmur3-32',\n\n // blake2\n 0xb201: 'blake2b-8',\n 0xb202: 'blake2b-16',\n 0xb203: 'blake2b-24',\n 0xb204: 'blake2b-32',\n 0xb205: 'blake2b-40',\n 0xb206: 'blake2b-48',\n 0xb207: 'blake2b-56',\n 0xb208: 'blake2b-64',\n 0xb209: 'blake2b-72',\n 0xb20a: 'blake2b-80',\n 0xb20b: 'blake2b-88',\n 0xb20c: 'blake2b-96',\n 0xb20d: 'blake2b-104',\n 0xb20e: 'blake2b-112',\n 0xb20f: 'blake2b-120',\n 0xb210: 'blake2b-128',\n 0xb211: 'blake2b-136',\n 0xb212: 'blake2b-144',\n 0xb213: 'blake2b-152',\n 0xb214: 'blake2b-160',\n 0xb215: 'blake2b-168',\n 0xb216: 'blake2b-176',\n 0xb217: 'blake2b-184',\n 0xb218: 'blake2b-192',\n 0xb219: 'blake2b-200',\n 0xb21a: 'blake2b-208',\n 0xb21b: 'blake2b-216',\n 0xb21c: 'blake2b-224',\n 0xb21d: 'blake2b-232',\n 0xb21e: 'blake2b-240',\n 0xb21f: 'blake2b-248',\n 0xb220: 'blake2b-256',\n 0xb221: 'blake2b-264',\n 0xb222: 'blake2b-272',\n 0xb223: 'blake2b-280',\n 0xb224: 'blake2b-288',\n 0xb225: 'blake2b-296',\n 0xb226: 'blake2b-304',\n 0xb227: 'blake2b-312',\n 0xb228: 'blake2b-320',\n 0xb229: 'blake2b-328',\n 0xb22a: 'blake2b-336',\n 0xb22b: 'blake2b-344',\n 0xb22c: 'blake2b-352',\n 0xb22d: 'blake2b-360',\n 0xb22e: 'blake2b-368',\n 0xb22f: 'blake2b-376',\n 0xb230: 'blake2b-384',\n 0xb231: 'blake2b-392',\n 0xb232: 'blake2b-400',\n 0xb233: 'blake2b-408',\n 0xb234: 'blake2b-416',\n 0xb235: 'blake2b-424',\n 0xb236: 'blake2b-432',\n 0xb237: 'blake2b-440',\n 0xb238: 'blake2b-448',\n 0xb239: 'blake2b-456',\n 0xb23a: 'blake2b-464',\n 0xb23b: 'blake2b-472',\n 0xb23c: 'blake2b-480',\n 0xb23d: 'blake2b-488',\n 0xb23e: 'blake2b-496',\n 0xb23f: 'blake2b-504',\n 0xb240: 'blake2b-512',\n 0xb241: 'blake2s-8',\n 0xb242: 'blake2s-16',\n 0xb243: 'blake2s-24',\n 0xb244: 'blake2s-32',\n 0xb245: 'blake2s-40',\n 0xb246: 'blake2s-48',\n 0xb247: 'blake2s-56',\n 0xb248: 'blake2s-64',\n 0xb249: 'blake2s-72',\n 0xb24a: 'blake2s-80',\n 0xb24b: 'blake2s-88',\n 0xb24c: 'blake2s-96',\n 0xb24d: 'blake2s-104',\n 0xb24e: 'blake2s-112',\n 0xb24f: 'blake2s-120',\n 0xb250: 'blake2s-128',\n 0xb251: 'blake2s-136',\n 0xb252: 'blake2s-144',\n 0xb253: 'blake2s-152',\n 0xb254: 'blake2s-160',\n 0xb255: 'blake2s-168',\n 0xb256: 'blake2s-176',\n 0xb257: 'blake2s-184',\n 0xb258: 'blake2s-192',\n 0xb259: 'blake2s-200',\n 0xb25a: 'blake2s-208',\n 0xb25b: 'blake2s-216',\n 0xb25c: 'blake2s-224',\n 0xb25d: 'blake2s-232',\n 0xb25e: 'blake2s-240',\n 0xb25f: 'blake2s-248',\n 0xb260: 'blake2s-256',\n\n // skein\n 0xb301: 'Skein256-8',\n 0xb302: 'Skein256-16',\n 0xb303: 'Skein256-24',\n 0xb304: 'Skein256-32',\n 0xb305: 'Skein256-40',\n 0xb306: 'Skein256-48',\n 0xb307: 'Skein256-56',\n 0xb308: 'Skein256-64',\n 0xb309: 'Skein256-72',\n 0xb30a: 'Skein256-80',\n 0xb30b: 'Skein256-88',\n 0xb30c: 'Skein256-96',\n 0xb30d: 'Skein256-104',\n 0xb30e: 'Skein256-112',\n 0xb30f: 'Skein256-120',\n 0xb310: 'Skein256-128',\n 0xb311: 'Skein256-136',\n 0xb312: 'Skein256-144',\n 0xb313: 'Skein256-152',\n 0xb314: 'Skein256-160',\n 0xb315: 'Skein256-168',\n 0xb316: 'Skein256-176',\n 0xb317: 'Skein256-184',\n 0xb318: 'Skein256-192',\n 0xb319: 'Skein256-200',\n 0xb31a: 'Skein256-208',\n 0xb31b: 'Skein256-216',\n 0xb31c: 'Skein256-224',\n 0xb31d: 'Skein256-232',\n 0xb31e: 'Skein256-240',\n 0xb31f: 'Skein256-248',\n 0xb320: 'Skein256-256',\n 0xb321: 'Skein512-8',\n 0xb322: 'Skein512-16',\n 0xb323: 'Skein512-24',\n 0xb324: 'Skein512-32',\n 0xb325: 'Skein512-40',\n 0xb326: 'Skein512-48',\n 0xb327: 'Skein512-56',\n 0xb328: 'Skein512-64',\n 0xb329: 'Skein512-72',\n 0xb32a: 'Skein512-80',\n 0xb32b: 'Skein512-88',\n 0xb32c: 'Skein512-96',\n 0xb32d: 'Skein512-104',\n 0xb32e: 'Skein512-112',\n 0xb32f: 'Skein512-120',\n 0xb330: 'Skein512-128',\n 0xb331: 'Skein512-136',\n 0xb332: 'Skein512-144',\n 0xb333: 'Skein512-152',\n 0xb334: 'Skein512-160',\n 0xb335: 'Skein512-168',\n 0xb336: 'Skein512-176',\n 0xb337: 'Skein512-184',\n 0xb338: 'Skein512-192',\n 0xb339: 'Skein512-200',\n 0xb33a: 'Skein512-208',\n 0xb33b: 'Skein512-216',\n 0xb33c: 'Skein512-224',\n 0xb33d: 'Skein512-232',\n 0xb33e: 'Skein512-240',\n 0xb33f: 'Skein512-248',\n 0xb340: 'Skein512-256',\n 0xb341: 'Skein512-264',\n 0xb342: 'Skein512-272',\n 0xb343: 'Skein512-280',\n 0xb344: 'Skein512-288',\n 0xb345: 'Skein512-296',\n 0xb346: 'Skein512-304',\n 0xb347: 'Skein512-312',\n 0xb348: 'Skein512-320',\n 0xb349: 'Skein512-328',\n 0xb34a: 'Skein512-336',\n 0xb34b: 'Skein512-344',\n 0xb34c: 'Skein512-352',\n 0xb34d: 'Skein512-360',\n 0xb34e: 'Skein512-368',\n 0xb34f: 'Skein512-376',\n 0xb350: 'Skein512-384',\n 0xb351: 'Skein512-392',\n 0xb352: 'Skein512-400',\n 0xb353: 'Skein512-408',\n 0xb354: 'Skein512-416',\n 0xb355: 'Skein512-424',\n 0xb356: 'Skein512-432',\n 0xb357: 'Skein512-440',\n 0xb358: 'Skein512-448',\n 0xb359: 'Skein512-456',\n 0xb35a: 'Skein512-464',\n 0xb35b: 'Skein512-472',\n 0xb35c: 'Skein512-480',\n 0xb35d: 'Skein512-488',\n 0xb35e: 'Skein512-496',\n 0xb35f: 'Skein512-504',\n 0xb360: 'Skein512-512',\n 0xb361: 'Skein1024-8',\n 0xb362: 'Skein1024-16',\n 0xb363: 'Skein1024-24',\n 0xb364: 'Skein1024-32',\n 0xb365: 'Skein1024-40',\n 0xb366: 'Skein1024-48',\n 0xb367: 'Skein1024-56',\n 0xb368: 'Skein1024-64',\n 0xb369: 'Skein1024-72',\n 0xb36a: 'Skein1024-80',\n 0xb36b: 'Skein1024-88',\n 0xb36c: 'Skein1024-96',\n 0xb36d: 'Skein1024-104',\n 0xb36e: 'Skein1024-112',\n 0xb36f: 'Skein1024-120',\n 0xb370: 'Skein1024-128',\n 0xb371: 'Skein1024-136',\n 0xb372: 'Skein1024-144',\n 0xb373: 'Skein1024-152',\n 0xb374: 'Skein1024-160',\n 0xb375: 'Skein1024-168',\n 0xb376: 'Skein1024-176',\n 0xb377: 'Skein1024-184',\n 0xb378: 'Skein1024-192',\n 0xb379: 'Skein1024-200',\n 0xb37a: 'Skein1024-208',\n 0xb37b: 'Skein1024-216',\n 0xb37c: 'Skein1024-224',\n 0xb37d: 'Skein1024-232',\n 0xb37e: 'Skein1024-240',\n 0xb37f: 'Skein1024-248',\n 0xb380: 'Skein1024-256',\n 0xb381: 'Skein1024-264',\n 0xb382: 'Skein1024-272',\n 0xb383: 'Skein1024-280',\n 0xb384: 'Skein1024-288',\n 0xb385: 'Skein1024-296',\n 0xb386: 'Skein1024-304',\n 0xb387: 'Skein1024-312',\n 0xb388: 'Skein1024-320',\n 0xb389: 'Skein1024-328',\n 0xb38a: 'Skein1024-336',\n 0xb38b: 'Skein1024-344',\n 0xb38c: 'Skein1024-352',\n 0xb38d: 'Skein1024-360',\n 0xb38e: 'Skein1024-368',\n 0xb38f: 'Skein1024-376',\n 0xb390: 'Skein1024-384',\n 0xb391: 'Skein1024-392',\n 0xb392: 'Skein1024-400',\n 0xb393: 'Skein1024-408',\n 0xb394: 'Skein1024-416',\n 0xb395: 'Skein1024-424',\n 0xb396: 'Skein1024-432',\n 0xb397: 'Skein1024-440',\n 0xb398: 'Skein1024-448',\n 0xb399: 'Skein1024-456',\n 0xb39a: 'Skein1024-464',\n 0xb39b: 'Skein1024-472',\n 0xb39c: 'Skein1024-480',\n 0xb39d: 'Skein1024-488',\n 0xb39e: 'Skein1024-496',\n 0xb39f: 'Skein1024-504',\n 0xb3a0: 'Skein1024-512',\n 0xb3a1: 'Skein1024-520',\n 0xb3a2: 'Skein1024-528',\n 0xb3a3: 'Skein1024-536',\n 0xb3a4: 'Skein1024-544',\n 0xb3a5: 'Skein1024-552',\n 0xb3a6: 'Skein1024-560',\n 0xb3a7: 'Skein1024-568',\n 0xb3a8: 'Skein1024-576',\n 0xb3a9: 'Skein1024-584',\n 0xb3aa: 'Skein1024-592',\n 0xb3ab: 'Skein1024-600',\n 0xb3ac: 'Skein1024-608',\n 0xb3ad: 'Skein1024-616',\n 0xb3ae: 'Skein1024-624',\n 0xb3af: 'Skein1024-632',\n 0xb3b0: 'Skein1024-640',\n 0xb3b1: 'Skein1024-648',\n 0xb3b2: 'Skein1024-656',\n 0xb3b3: 'Skein1024-664',\n 0xb3b4: 'Skein1024-672',\n 0xb3b5: 'Skein1024-680',\n 0xb3b6: 'Skein1024-688',\n 0xb3b7: 'Skein1024-696',\n 0xb3b8: 'Skein1024-704',\n 0xb3b9: 'Skein1024-712',\n 0xb3ba: 'Skein1024-720',\n 0xb3bb: 'Skein1024-728',\n 0xb3bc: 'Skein1024-736',\n 0xb3bd: 'Skein1024-744',\n 0xb3be: 'Skein1024-752',\n 0xb3bf: 'Skein1024-760',\n 0xb3c0: 'Skein1024-768',\n 0xb3c1: 'Skein1024-776',\n 0xb3c2: 'Skein1024-784',\n 0xb3c3: 'Skein1024-792',\n 0xb3c4: 'Skein1024-800',\n 0xb3c5: 'Skein1024-808',\n 0xb3c6: 'Skein1024-816',\n 0xb3c7: 'Skein1024-824',\n 0xb3c8: 'Skein1024-832',\n 0xb3c9: 'Skein1024-840',\n 0xb3ca: 'Skein1024-848',\n 0xb3cb: 'Skein1024-856',\n 0xb3cc: 'Skein1024-864',\n 0xb3cd: 'Skein1024-872',\n 0xb3ce: 'Skein1024-880',\n 0xb3cf: 'Skein1024-888',\n 0xb3d0: 'Skein1024-896',\n 0xb3d1: 'Skein1024-904',\n 0xb3d2: 'Skein1024-912',\n 0xb3d3: 'Skein1024-920',\n 0xb3d4: 'Skein1024-928',\n 0xb3d5: 'Skein1024-936',\n 0xb3d6: 'Skein1024-944',\n 0xb3d7: 'Skein1024-952',\n 0xb3d8: 'Skein1024-960',\n 0xb3d9: 'Skein1024-968',\n 0xb3da: 'Skein1024-976',\n 0xb3db: 'Skein1024-984',\n 0xb3dc: 'Skein1024-992',\n 0xb3dd: 'Skein1024-1000',\n 0xb3de: 'Skein1024-1008',\n 0xb3df: 'Skein1024-1016',\n 0xb3e0: 'Skein1024-1024'\n})\n\nexports.defaultLengths = Object.freeze({\n 0x11: 20,\n 0x12: 32,\n 0x13: 64,\n 0x56: 32,\n 0x17: 28,\n 0x16: 32,\n 0x15: 48,\n 0x14: 64,\n 0x18: 32,\n 0x19: 64,\n 0x1A: 28,\n 0x1B: 32,\n 0x1C: 48,\n 0x1D: 64,\n 0x22: 32,\n\n 0xb201: 0x01,\n 0xb202: 0x02,\n 0xb203: 0x03,\n 0xb204: 0x04,\n 0xb205: 0x05,\n 0xb206: 0x06,\n 0xb207: 0x07,\n 0xb208: 0x08,\n 0xb209: 0x09,\n 0xb20a: 0x0a,\n 0xb20b: 0x0b,\n 0xb20c: 0x0c,\n 0xb20d: 0x0d,\n 0xb20e: 0x0e,\n 0xb20f: 0x0f,\n 0xb210: 0x10,\n 0xb211: 0x11,\n 0xb212: 0x12,\n 0xb213: 0x13,\n 0xb214: 0x14,\n 0xb215: 0x15,\n 0xb216: 0x16,\n 0xb217: 0x17,\n 0xb218: 0x18,\n 0xb219: 0x19,\n 0xb21a: 0x1a,\n 0xb21b: 0x1b,\n 0xb21c: 0x1c,\n 0xb21d: 0x1d,\n 0xb21e: 0x1e,\n 0xb21f: 0x1f,\n 0xb220: 0x20,\n 0xb221: 0x21,\n 0xb222: 0x22,\n 0xb223: 0x23,\n 0xb224: 0x24,\n 0xb225: 0x25,\n 0xb226: 0x26,\n 0xb227: 0x27,\n 0xb228: 0x28,\n 0xb229: 0x29,\n 0xb22a: 0x2a,\n 0xb22b: 0x2b,\n 0xb22c: 0x2c,\n 0xb22d: 0x2d,\n 0xb22e: 0x2e,\n 0xb22f: 0x2f,\n 0xb230: 0x30,\n 0xb231: 0x31,\n 0xb232: 0x32,\n 0xb233: 0x33,\n 0xb234: 0x34,\n 0xb235: 0x35,\n 0xb236: 0x36,\n 0xb237: 0x37,\n 0xb238: 0x38,\n 0xb239: 0x39,\n 0xb23a: 0x3a,\n 0xb23b: 0x3b,\n 0xb23c: 0x3c,\n 0xb23d: 0x3d,\n 0xb23e: 0x3e,\n 0xb23f: 0x3f,\n 0xb240: 0x40,\n 0xb241: 0x01,\n 0xb242: 0x02,\n 0xb243: 0x03,\n 0xb244: 0x04,\n 0xb245: 0x05,\n 0xb246: 0x06,\n 0xb247: 0x07,\n 0xb248: 0x08,\n 0xb249: 0x09,\n 0xb24a: 0x0a,\n 0xb24b: 0x0b,\n 0xb24c: 0x0c,\n 0xb24d: 0x0d,\n 0xb24e: 0x0e,\n 0xb24f: 0x0f,\n 0xb250: 0x10,\n 0xb251: 0x11,\n 0xb252: 0x12,\n 0xb253: 0x13,\n 0xb254: 0x14,\n 0xb255: 0x15,\n 0xb256: 0x16,\n 0xb257: 0x17,\n 0xb258: 0x18,\n 0xb259: 0x19,\n 0xb25a: 0x1a,\n 0xb25b: 0x1b,\n 0xb25c: 0x1c,\n 0xb25d: 0x1d,\n 0xb25e: 0x1e,\n 0xb25f: 0x1f,\n 0xb260: 0x20,\n 0xb301: 0x01,\n 0xb302: 0x02,\n 0xb303: 0x03,\n 0xb304: 0x04,\n 0xb305: 0x05,\n 0xb306: 0x06,\n 0xb307: 0x07,\n 0xb308: 0x08,\n 0xb309: 0x09,\n 0xb30a: 0x0a,\n 0xb30b: 0x0b,\n 0xb30c: 0x0c,\n 0xb30d: 0x0d,\n 0xb30e: 0x0e,\n 0xb30f: 0x0f,\n 0xb310: 0x10,\n 0xb311: 0x11,\n 0xb312: 0x12,\n 0xb313: 0x13,\n 0xb314: 0x14,\n 0xb315: 0x15,\n 0xb316: 0x16,\n 0xb317: 0x17,\n 0xb318: 0x18,\n 0xb319: 0x19,\n 0xb31a: 0x1a,\n 0xb31b: 0x1b,\n 0xb31c: 0x1c,\n 0xb31d: 0x1d,\n 0xb31e: 0x1e,\n 0xb31f: 0x1f,\n 0xb320: 0x20,\n 0xb321: 0x01,\n 0xb322: 0x02,\n 0xb323: 0x03,\n 0xb324: 0x04,\n 0xb325: 0x05,\n 0xb326: 0x06,\n 0xb327: 0x07,\n 0xb328: 0x08,\n 0xb329: 0x09,\n 0xb32a: 0x0a,\n 0xb32b: 0x0b,\n 0xb32c: 0x0c,\n 0xb32d: 0x0d,\n 0xb32e: 0x0e,\n 0xb32f: 0x0f,\n 0xb330: 0x10,\n 0xb331: 0x11,\n 0xb332: 0x12,\n 0xb333: 0x13,\n 0xb334: 0x14,\n 0xb335: 0x15,\n 0xb336: 0x16,\n 0xb337: 0x17,\n 0xb338: 0x18,\n 0xb339: 0x19,\n 0xb33a: 0x1a,\n 0xb33b: 0x1b,\n 0xb33c: 0x1c,\n 0xb33d: 0x1d,\n 0xb33e: 0x1e,\n 0xb33f: 0x1f,\n 0xb340: 0x20,\n 0xb341: 0x21,\n 0xb342: 0x22,\n 0xb343: 0x23,\n 0xb344: 0x24,\n 0xb345: 0x25,\n 0xb346: 0x26,\n 0xb347: 0x27,\n 0xb348: 0x28,\n 0xb349: 0x29,\n 0xb34a: 0x2a,\n 0xb34b: 0x2b,\n 0xb34c: 0x2c,\n 0xb34d: 0x2d,\n 0xb34e: 0x2e,\n 0xb34f: 0x2f,\n 0xb350: 0x30,\n 0xb351: 0x31,\n 0xb352: 0x32,\n 0xb353: 0x33,\n 0xb354: 0x34,\n 0xb355: 0x35,\n 0xb356: 0x36,\n 0xb357: 0x37,\n 0xb358: 0x38,\n 0xb359: 0x39,\n 0xb35a: 0x3a,\n 0xb35b: 0x3b,\n 0xb35c: 0x3c,\n 0xb35d: 0x3d,\n 0xb35e: 0x3e,\n 0xb35f: 0x3f,\n 0xb360: 0x40,\n 0xb361: 0x01,\n 0xb362: 0x02,\n 0xb363: 0x03,\n 0xb364: 0x04,\n 0xb365: 0x05,\n 0xb366: 0x06,\n 0xb367: 0x07,\n 0xb368: 0x08,\n 0xb369: 0x09,\n 0xb36a: 0x0a,\n 0xb36b: 0x0b,\n 0xb36c: 0x0c,\n 0xb36d: 0x0d,\n 0xb36e: 0x0e,\n 0xb36f: 0x0f,\n 0xb370: 0x10,\n 0xb371: 0x11,\n 0xb372: 0x12,\n 0xb373: 0x13,\n 0xb374: 0x14,\n 0xb375: 0x15,\n 0xb376: 0x16,\n 0xb377: 0x17,\n 0xb378: 0x18,\n 0xb379: 0x19,\n 0xb37a: 0x1a,\n 0xb37b: 0x1b,\n 0xb37c: 0x1c,\n 0xb37d: 0x1d,\n 0xb37e: 0x1e,\n 0xb37f: 0x1f,\n 0xb380: 0x20,\n 0xb381: 0x21,\n 0xb382: 0x22,\n 0xb383: 0x23,\n 0xb384: 0x24,\n 0xb385: 0x25,\n 0xb386: 0x26,\n 0xb387: 0x27,\n 0xb388: 0x28,\n 0xb389: 0x29,\n 0xb38a: 0x2a,\n 0xb38b: 0x2b,\n 0xb38c: 0x2c,\n 0xb38d: 0x2d,\n 0xb38e: 0x2e,\n 0xb38f: 0x2f,\n 0xb390: 0x30,\n 0xb391: 0x31,\n 0xb392: 0x32,\n 0xb393: 0x33,\n 0xb394: 0x34,\n 0xb395: 0x35,\n 0xb396: 0x36,\n 0xb397: 0x37,\n 0xb398: 0x38,\n 0xb399: 0x39,\n 0xb39a: 0x3a,\n 0xb39b: 0x3b,\n 0xb39c: 0x3c,\n 0xb39d: 0x3d,\n 0xb39e: 0x3e,\n 0xb39f: 0x3f,\n 0xb3a0: 0x40,\n 0xb3a1: 0x41,\n 0xb3a2: 0x42,\n 0xb3a3: 0x43,\n 0xb3a4: 0x44,\n 0xb3a5: 0x45,\n 0xb3a6: 0x46,\n 0xb3a7: 0x47,\n 0xb3a8: 0x48,\n 0xb3a9: 0x49,\n 0xb3aa: 0x4a,\n 0xb3ab: 0x4b,\n 0xb3ac: 0x4c,\n 0xb3ad: 0x4d,\n 0xb3ae: 0x4e,\n 0xb3af: 0x4f,\n 0xb3b0: 0x50,\n 0xb3b1: 0x51,\n 0xb3b2: 0x52,\n 0xb3b3: 0x53,\n 0xb3b4: 0x54,\n 0xb3b5: 0x55,\n 0xb3b6: 0x56,\n 0xb3b7: 0x57,\n 0xb3b8: 0x58,\n 0xb3b9: 0x59,\n 0xb3ba: 0x5a,\n 0xb3bb: 0x5b,\n 0xb3bc: 0x5c,\n 0xb3bd: 0x5d,\n 0xb3be: 0x5e,\n 0xb3bf: 0x5f,\n 0xb3c0: 0x60,\n 0xb3c1: 0x61,\n 0xb3c2: 0x62,\n 0xb3c3: 0x63,\n 0xb3c4: 0x64,\n 0xb3c5: 0x65,\n 0xb3c6: 0x66,\n 0xb3c7: 0x67,\n 0xb3c8: 0x68,\n 0xb3c9: 0x69,\n 0xb3ca: 0x6a,\n 0xb3cb: 0x6b,\n 0xb3cc: 0x6c,\n 0xb3cd: 0x6d,\n 0xb3ce: 0x6e,\n 0xb3cf: 0x6f,\n 0xb3d0: 0x70,\n 0xb3d1: 0x71,\n 0xb3d2: 0x72,\n 0xb3d3: 0x73,\n 0xb3d4: 0x74,\n 0xb3d5: 0x75,\n 0xb3d6: 0x76,\n 0xb3d7: 0x77,\n 0xb3d8: 0x78,\n 0xb3d9: 0x79,\n 0xb3da: 0x7a,\n 0xb3db: 0x7b,\n 0xb3dc: 0x7c,\n 0xb3dd: 0x7d,\n 0xb3de: 0x7e,\n 0xb3df: 0x7f,\n 0xb3e0: 0x80\n})\n","'use strict'\n\nconst path = require('path')\nconst os = require('os')\nconst uuid = require('uuid/v4')\n\nexports.filter = (iterable, filterer) => {\n return (async function * () {\n for await (const value of iterable) {\n const keep = await filterer(value)\n if (!keep) continue\n yield value\n }\n })()\n}\n\n// Not just sort, because the sorter is given all the values and should return\n// them all sorted\nexports.sortAll = (iterable, sorter) => {\n return (async function * () {\n let values = []\n for await (const value of iterable) values.push(value)\n values = await sorter(values)\n for (const value of values) yield value\n })()\n}\n\nexports.take = (iterable, n) => {\n return (async function * () {\n if (n <= 0) return\n let i = 0\n for await (const value of iterable) {\n yield value\n i++\n if (i >= n) return\n }\n })()\n}\n\nexports.map = (iterable, mapper) => {\n return (async function * () {\n for await (const value of iterable) {\n yield mapper(value)\n }\n })()\n}\n\nexports.replaceStartWith = function (s, r) {\n const matcher = new RegExp('^' + r)\n return s.replace(matcher, '')\n}\n\nexports.tmpdir = () => {\n return path.join(os.tmpdir(), uuid())\n}\n","'use strict'\n\nmodule.exports = class Dir {\n constructor (props, options) {\n this.options = options || {}\n Object.assign(this, props)\n }\n}\n","'use strict'\nvar DuplexStream = require('readable-stream').Duplex\n , util = require('util')\n\nfunction BufferList (callback) {\n if (!(this instanceof BufferList))\n return new BufferList(callback)\n\n this._bufs = []\n this.length = 0\n\n if (typeof callback == 'function') {\n this._callback = callback\n\n var piper = function piper (err) {\n if (this._callback) {\n this._callback(err)\n this._callback = null\n }\n }.bind(this)\n\n this.on('pipe', function onPipe (src) {\n src.on('error', piper)\n })\n this.on('unpipe', function onUnpipe (src) {\n src.removeListener('error', piper)\n })\n } else {\n this.append(callback)\n }\n\n DuplexStream.call(this)\n}\n\n\nutil.inherits(BufferList, DuplexStream)\n\n\nBufferList.prototype._offset = function _offset (offset) {\n var tot = 0, i = 0, _t\n if (offset === 0) return [ 0, 0 ]\n for (; i < this._bufs.length; i++) {\n _t = tot + this._bufs[i].length\n if (offset < _t || i == this._bufs.length - 1) {\n return [ i, offset - tot ]\n }\n tot = _t\n }\n}\n\nBufferList.prototype._reverseOffset = function (blOffset) {\n var bufferId = blOffset[0]\n var offset = blOffset[1]\n for (var i = 0; i < bufferId; i++) {\n offset += this._bufs[i].length\n }\n return offset\n}\n\nBufferList.prototype.append = function append (buf) {\n var i = 0\n\n if (Buffer.isBuffer(buf)) {\n this._appendBuffer(buf)\n } else if (Array.isArray(buf)) {\n for (; i < buf.length; i++)\n this.append(buf[i])\n } else if (buf instanceof BufferList) {\n // unwrap argument into individual BufferLists\n for (; i < buf._bufs.length; i++)\n this.append(buf._bufs[i])\n } else if (buf != null) {\n // coerce number arguments to strings, since Buffer(number) does\n // uninitialized memory allocation\n if (typeof buf == 'number')\n buf = buf.toString()\n\n this._appendBuffer(Buffer.from(buf))\n }\n\n return this\n}\n\n\nBufferList.prototype._appendBuffer = function appendBuffer (buf) {\n this._bufs.push(buf)\n this.length += buf.length\n}\n\n\nBufferList.prototype._write = function _write (buf, encoding, callback) {\n this._appendBuffer(buf)\n\n if (typeof callback == 'function')\n callback()\n}\n\n\nBufferList.prototype._read = function _read (size) {\n if (!this.length)\n return this.push(null)\n\n size = Math.min(size, this.length)\n this.push(this.slice(0, size))\n this.consume(size)\n}\n\n\nBufferList.prototype.end = function end (chunk) {\n DuplexStream.prototype.end.call(this, chunk)\n\n if (this._callback) {\n this._callback(null, this.slice())\n this._callback = null\n }\n}\n\n\nBufferList.prototype.get = function get (index) {\n if (index > this.length || index < 0) {\n return undefined\n }\n var offset = this._offset(index)\n return this._bufs[offset[0]][offset[1]]\n}\n\n\nBufferList.prototype.slice = function slice (start, end) {\n if (typeof start == 'number' && start < 0)\n start += this.length\n if (typeof end == 'number' && end < 0)\n end += this.length\n return this.copy(null, 0, start, end)\n}\n\n\nBufferList.prototype.copy = function copy (dst, dstStart, srcStart, srcEnd) {\n if (typeof srcStart != 'number' || srcStart < 0)\n srcStart = 0\n if (typeof srcEnd != 'number' || srcEnd > this.length)\n srcEnd = this.length\n if (srcStart >= this.length)\n return dst || Buffer.alloc(0)\n if (srcEnd <= 0)\n return dst || Buffer.alloc(0)\n\n var copy = !!dst\n , off = this._offset(srcStart)\n , len = srcEnd - srcStart\n , bytes = len\n , bufoff = (copy && dstStart) || 0\n , start = off[1]\n , l\n , i\n\n // copy/slice everything\n if (srcStart === 0 && srcEnd == this.length) {\n if (!copy) { // slice, but full concat if multiple buffers\n return this._bufs.length === 1\n ? this._bufs[0]\n : Buffer.concat(this._bufs, this.length)\n }\n\n // copy, need to copy individual buffers\n for (i = 0; i < this._bufs.length; i++) {\n this._bufs[i].copy(dst, bufoff)\n bufoff += this._bufs[i].length\n }\n\n return dst\n }\n\n // easy, cheap case where it's a subset of one of the buffers\n if (bytes <= this._bufs[off[0]].length - start) {\n return copy\n ? this._bufs[off[0]].copy(dst, dstStart, start, start + bytes)\n : this._bufs[off[0]].slice(start, start + bytes)\n }\n\n if (!copy) // a slice, we need something to copy in to\n dst = Buffer.allocUnsafe(len)\n\n for (i = off[0]; i < this._bufs.length; i++) {\n l = this._bufs[i].length - start\n\n if (bytes > l) {\n this._bufs[i].copy(dst, bufoff, start)\n } else {\n this._bufs[i].copy(dst, bufoff, start, start + bytes)\n break\n }\n\n bufoff += l\n bytes -= l\n\n if (start)\n start = 0\n }\n\n return dst\n}\n\nBufferList.prototype.shallowSlice = function shallowSlice (start, end) {\n start = start || 0\n end = typeof end !== 'number' ? this.length : end\n\n if (start < 0)\n start += this.length\n if (end < 0)\n end += this.length\n\n if (start === end) {\n return new BufferList()\n }\n var startOffset = this._offset(start)\n , endOffset = this._offset(end)\n , buffers = this._bufs.slice(startOffset[0], endOffset[0] + 1)\n\n if (endOffset[1] == 0)\n buffers.pop()\n else\n buffers[buffers.length-1] = buffers[buffers.length-1].slice(0, endOffset[1])\n\n if (startOffset[1] != 0)\n buffers[0] = buffers[0].slice(startOffset[1])\n\n return new BufferList(buffers)\n}\n\nBufferList.prototype.toString = function toString (encoding, start, end) {\n return this.slice(start, end).toString(encoding)\n}\n\nBufferList.prototype.consume = function consume (bytes) {\n while (this._bufs.length) {\n if (bytes >= this._bufs[0].length) {\n bytes -= this._bufs[0].length\n this.length -= this._bufs[0].length\n this._bufs.shift()\n } else {\n this._bufs[0] = this._bufs[0].slice(bytes)\n this.length -= bytes\n break\n }\n }\n return this\n}\n\n\nBufferList.prototype.duplicate = function duplicate () {\n var i = 0\n , copy = new BufferList()\n\n for (; i < this._bufs.length; i++)\n copy.append(this._bufs[i])\n\n return copy\n}\n\n\nBufferList.prototype._destroy = function _destroy (err, cb) {\n this._bufs.length = 0\n this.length = 0\n cb(err)\n}\n\n\nBufferList.prototype.indexOf = function (search, offset, encoding) {\n if (encoding === undefined && typeof offset === 'string') {\n encoding = offset\n offset = undefined\n }\n if (typeof search === 'function' || Array.isArray(search)) {\n throw new TypeError('The \"value\" argument must be one of type string, Buffer, BufferList, or Uint8Array.')\n } else if (typeof search === 'number') {\n search = Buffer.from([search])\n } else if (typeof search === 'string') {\n search = Buffer.from(search, encoding)\n } else if (search instanceof BufferList) {\n search = search.slice()\n } else if (!Buffer.isBuffer(search)) {\n search = Buffer.from(search)\n }\n\n offset = Number(offset || 0)\n if (isNaN(offset)) {\n offset = 0\n }\n\n if (offset < 0) {\n offset = this.length + offset\n }\n\n if (offset < 0) {\n offset = 0\n }\n\n if (search.length === 0) {\n return offset > this.length ? this.length : offset\n }\n\n var blOffset = this._offset(offset)\n var blIndex = blOffset[0] // index of which internal buffer we're working on\n var buffOffset = blOffset[1] // offset of the internal buffer we're working on\n\n // scan over each buffer\n for (blIndex; blIndex < this._bufs.length; blIndex++) {\n var buff = this._bufs[blIndex]\n while(buffOffset < buff.length) {\n var availableWindow = buff.length - buffOffset\n if (availableWindow >= search.length) {\n var nativeSearchResult = buff.indexOf(search, buffOffset)\n if (nativeSearchResult !== -1) {\n return this._reverseOffset([blIndex, nativeSearchResult])\n }\n buffOffset = buff.length - search.length + 1 // end of native search window\n } else {\n var revOffset = this._reverseOffset([blIndex, buffOffset])\n if (this._match(revOffset, search)) {\n return revOffset\n }\n buffOffset++\n }\n }\n buffOffset = 0\n }\n return -1\n}\n\nBufferList.prototype._match = function(offset, search) {\n if (this.length - offset < search.length) {\n return false\n }\n for (var searchOffset = 0; searchOffset < search.length ; searchOffset++) {\n if(this.get(offset + searchOffset) !== search[searchOffset]){\n return false\n }\n }\n return true\n}\n\n\n;(function () {\n var methods = {\n 'readDoubleBE' : 8\n , 'readDoubleLE' : 8\n , 'readFloatBE' : 4\n , 'readFloatLE' : 4\n , 'readInt32BE' : 4\n , 'readInt32LE' : 4\n , 'readUInt32BE' : 4\n , 'readUInt32LE' : 4\n , 'readInt16BE' : 2\n , 'readInt16LE' : 2\n , 'readUInt16BE' : 2\n , 'readUInt16LE' : 2\n , 'readInt8' : 1\n , 'readUInt8' : 1\n , 'readIntBE' : null\n , 'readIntLE' : null\n , 'readUIntBE' : null\n , 'readUIntLE' : null\n }\n\n for (var m in methods) {\n (function (m) {\n if (methods[m] === null) {\n BufferList.prototype[m] = function (offset, byteLength) {\n return this.slice(offset, offset + byteLength)[m](0, byteLength)\n }\n }\n else {\n BufferList.prototype[m] = function (offset) {\n return this.slice(offset, offset + methods[m])[m](0)\n }\n }\n }(m))\n }\n}())\n\n\nmodule.exports = BufferList\n","'use strict'\n\nconst pMap = require('p-map')\nconst GSet = require('./g-set')\nconst Entry = require('./entry')\nconst LogIO = require('./log-io')\nconst LogError = require('./log-errors')\nconst Clock = require('./lamport-clock')\nconst Sorting = require('./log-sorting')\nconst { LastWriteWins, NoZeroes } = Sorting\nconst AccessController = require('./default-access-controller')\nconst { isDefined, findUniques } = require('./utils')\nconst EntryIndex = require('./entry-index')\nconst randomId = () => new Date().getTime().toString()\nconst getHash = e => e.hash\nconst flatMap = (res, acc) => res.concat(acc)\nconst getNextPointers = entry => entry.next\nconst maxClockTimeReducer = (res, acc) => Math.max(res, acc.clock.time)\nconst uniqueEntriesReducer = (res, acc) => {\n res[acc.hash] = acc\n return res\n}\n\n/**\n * Log.\n *\n * @description\n * Log implements a G-Set CRDT and adds ordering.\n *\n * From:\n * \"A comprehensive study of Convergent and Commutative Replicated Data Types\"\n * https://hal.inria.fr/inria-00555588\n */\nclass Log extends GSet {\n /**\n * Create a new Log instance\n * @param {IPFS} ipfs An IPFS instance\n * @param {Object} identity Identity (https://github.com/orbitdb/orbit-db-identity-provider/blob/master/src/identity.js)\n * @param {Object} options\n * @param {string} options.logId ID of the log\n * @param {Object} options.access AccessController (./default-access-controller)\n * @param {Array} options.entries An Array of Entries from which to create the log\n * @param {Array} options.heads Set the heads of the log\n * @param {Clock} options.clock Set the clock of the log\n * @param {Function} options.sortFn The sort function - by default LastWriteWins\n * @return {Log} The log instance\n */\n constructor (ipfs, identity, { logId, access, entries, heads, clock, sortFn, concurrency } = {}) {\n if (!isDefined(ipfs)) {\n throw LogError.IPFSNotDefinedError()\n }\n\n if (!isDefined(identity)) {\n throw new Error('Identity is required')\n }\n\n if (!isDefined(access)) {\n access = new AccessController()\n }\n\n if (isDefined(entries) && !Array.isArray(entries)) {\n throw new Error(`'entries' argument must be an array of Entry instances`)\n }\n\n if (isDefined(heads) && !Array.isArray(heads)) {\n throw new Error(`'heads' argument must be an array`)\n }\n\n if (!isDefined(sortFn)) {\n sortFn = LastWriteWins\n }\n\n super()\n\n this._sortFn = NoZeroes(sortFn)\n\n this._storage = ipfs\n this._id = logId || randomId()\n\n // Access Controller\n this._access = access\n // Identity\n this._identity = identity\n\n // Add entries to the internal cache\n const uniqueEntries = (entries || []).reduce(uniqueEntriesReducer, {})\n this._entryIndex = new EntryIndex(uniqueEntries)\n entries = Object.values(uniqueEntries) || []\n\n // Set heads if not passed as an argument\n heads = heads || Log.findHeads(entries)\n this._headsIndex = heads.reduce(uniqueEntriesReducer, {})\n\n // Index of all next pointers in this log\n this._nextsIndex = {}\n const addToNextsIndex = e => e.next.forEach(a => (this._nextsIndex[a] = e.hash))\n entries.forEach(addToNextsIndex)\n\n // Set the length, we calculate the length manually internally\n this._length = entries.length\n\n // Set the clock\n const maxTime = Math.max(clock ? clock.time : 0, this.heads.reduce(maxClockTimeReducer, 0))\n // Take the given key as the clock id is it's a Key instance,\n // otherwise if key was given, take whatever it is,\n // and if it was null, take the given id as the clock id\n this._clock = new Clock(this._identity.publicKey, maxTime)\n\n this.joinConcurrency = concurrency || 16\n }\n\n /**\n * Returns the ID of the log.\n * @returns {string}\n */\n get id () {\n return this._id\n }\n\n /**\n * Returns the clock of the log.\n * @returns {string}\n */\n get clock () {\n return this._clock\n }\n\n /**\n * Returns the length of the log.\n * @return {number} Length\n */\n get length () {\n return this._length\n }\n\n /**\n * Returns the values in the log.\n * @returns {Array}\n */\n get values () {\n return Object.values(this.traverse(this.heads)).reverse()\n }\n\n /**\n * Returns an array of heads as hashes.\n * @returns {Array}\n */\n get heads () {\n return Object.values(this._headsIndex).sort(this._sortFn).reverse()\n }\n\n /**\n * Returns an array of Entry objects that reference entries which\n * are not in the log currently.\n * @returns {Array}\n */\n get tails () {\n return Log.findTails(this.values)\n }\n\n /**\n * Returns an array of hashes that are referenced by entries which\n * are not in the log currently.\n * @returns {Array} Array of hashes\n */\n get tailHashes () {\n return Log.findTailHashes(this.values)\n }\n\n /**\n * Set the identity for the log\n * @param {Identity} [identity] The identity to be set\n */\n setIdentity (identity) {\n this._identity = identity\n // Find the latest clock from the heads\n const time = Math.max(this.clock.time, this.heads.reduce(maxClockTimeReducer, 0))\n this._clock = new Clock(this._identity.publicKey, time)\n }\n\n /**\n * Find an entry.\n * @param {string} [hash] The hashes of the entry\n * @returns {Entry|undefined}\n */\n get (hash) {\n return this._entryIndex.get(hash)\n }\n\n /**\n * Checks if a entry is part of the log\n * @param {string} hash The hash of the entry\n * @returns {boolean}\n */\n has (entry) {\n return this._entryIndex.get(entry.hash || entry) !== undefined\n }\n\n traverse (rootEntries, amount = -1, endHash) {\n // Sort the given given root entries and use as the starting stack\n let stack = rootEntries.sort(this._sortFn).reverse()\n\n // Cache for checking if we've processed an entry already\n let traversed = {}\n // End result\n let result = {}\n let count = 0\n // Named function for getting an entry from the log\n const getEntry = e => this.get(e)\n\n // Add an entry to the stack and traversed nodes index\n const addToStack = entry => {\n // If we've already processed the entry, don't add it to the stack\n if (!entry || traversed[entry.hash]) {\n return\n }\n\n // Add the entry in front of the stack and sort\n stack = [entry, ...stack]\n .sort(this._sortFn)\n .reverse()\n // Add to the cache of processed entries\n traversed[entry.hash] = true\n }\n\n const addEntry = rootEntry => {\n result[rootEntry.hash] = rootEntry\n traversed[rootEntry.hash] = true\n count++\n }\n\n // Start traversal\n // Process stack until it's empty (traversed the full log)\n // or when we have the requested amount of entries\n // If requested entry amount is -1, traverse all\n while (stack.length > 0 && (count < amount || amount < 0)) { // eslint-disable-line no-unmodified-loop-condition\n // Get the next element from the stack\n const entry = stack.shift()\n // Add to the result\n addEntry(entry)\n // If it is the specified end hash, break out of the while loop\n if (endHash && endHash === entry.hash) break\n\n // Add entry's next references to the stack\n const entries = entry.next.map(getEntry)\n const defined = entries.filter(isDefined)\n defined.forEach(addToStack)\n }\n\n stack = []\n traversed = {}\n // End result\n return result\n }\n\n /**\n * Append an entry to the log.\n * @param {Entry} entry Entry to add\n * @return {Log} New Log containing the appended value\n */\n async append (data, pointerCount = 1, pin = false) {\n // Update the clock (find the latest clock)\n const newTime = Math.max(this.clock.time, this.heads.reduce(maxClockTimeReducer, 0)) + 1\n this._clock = new Clock(this.clock.id, newTime)\n\n const all = Object.values(this.traverse(this.heads, Math.max(pointerCount, this.heads.length)))\n\n // If pointer count is 4, returns 2\n // If pointer count is 8, returns 3 references\n // If pointer count is 512, returns 9 references\n // If pointer count is 2048, returns 11 references\n const getEveryPow2 = (maxDistance) => {\n let entries = new Set()\n for (let i = 1; i <= maxDistance; i *= 2) {\n const index = Math.min(i - 1, all.length - 1)\n entries.add(all[index])\n }\n return entries\n }\n const references = getEveryPow2(Math.min(pointerCount, all.length))\n\n // Always include the last known reference\n if (all.length < pointerCount && all[all.length - 1]) {\n references.add(all[all.length - 1])\n }\n\n // Create the next pointers from heads\n const nexts = Object.keys(this.heads.reverse().reduce(uniqueEntriesReducer, {}))\n const isNext = e => !nexts.includes(e)\n // Delete the heads from the refs\n const refs = Array.from(references).map(getHash).filter(isNext)\n\n // @TODO: Split Entry.create into creating object, checking permission, signing and then posting to IPFS\n // Create the entry and add it to the internal cache\n const entry = await Entry.create(\n this._storage,\n this._identity,\n this.id,\n data,\n nexts,\n this.clock,\n refs,\n pin\n )\n\n const canAppend = await this._access.canAppend(entry, this._identity.provider)\n if (!canAppend) {\n throw new Error(`Could not append entry, key \"${this._identity.id}\" is not allowed to write to the log`)\n }\n\n this._entryIndex.set(entry.hash, entry)\n nexts.forEach(e => (this._nextsIndex[e] = entry.hash))\n this._headsIndex = {}\n this._headsIndex[entry.hash] = entry\n // Update the length\n this._length++\n return entry\n }\n\n /*\n * Creates a javscript iterator over log entries\n *\n * @param {Object} options\n * @param {string|Array} options.gt Beginning hash of the iterator, non-inclusive\n * @param {string|Array} options.gte Beginning hash of the iterator, inclusive\n * @param {string|Array} options.lt Ending hash of the iterator, non-inclusive\n * @param {string|Array} options.lte Ending hash of the iterator, inclusive\n * @param {amount} options.amount Number of entried to return to / from the gte / lte hash\n * @returns {Symbol.Iterator} Iterator object containing log entries\n *\n * @examples\n *\n * (async () => {\n * log1 = new Log(ipfs, testIdentity, { logId: 'X' })\n *\n * for (let i = 0; i <= 100; i++) {\n * await log1.append('entry' + i)\n * }\n *\n * let it = log1.iterator({\n * lte: 'zdpuApFd5XAPkCTmSx7qWQmQzvtdJPtx2K5p9to6ytCS79bfk',\n * amount: 10\n * })\n *\n * [...it].length // 10\n * })()\n *\n *\n */\n iterator ({ gt = undefined, gte = undefined, lt = undefined, lte = undefined, amount = -1 } =\n {}) {\n if (amount === 0) return (function * () {})()\n if (typeof lte === 'string') lte = [this.get(lte)]\n if (typeof lt === 'string') lt = [this.get(this.get(lt).next)]\n\n if (lte && !Array.isArray(lte)) throw LogError.LtOrLteMustBeStringOrArray()\n if (lt && !Array.isArray(lt)) throw LogError.LtOrLteMustBeStringOrArray()\n\n let start = (lte || (lt || this.heads)).filter(isDefined)\n let endHash = gte ? this.get(gte).hash : gt ? this.get(gt).hash : null\n let count = endHash ? -1 : amount || -1\n\n let entries = this.traverse(start, count, endHash)\n let entryValues = Object.values(entries)\n\n // Strip off last entry if gt is non-inclusive\n if (gt) entryValues.pop()\n\n // Deal with the amount argument working backwards from gt/gte\n if ((gt || gte) && amount > -1) {\n entryValues = entryValues.slice(entryValues.length - amount, entryValues.length)\n }\n\n return (function * () {\n for (let i in entryValues) {\n yield entryValues[i]\n }\n })()\n }\n\n /**\n * Join two logs.\n *\n * Joins another log into this one.\n *\n * @param {Log} log Log to join with this Log\n * @param {number} [size=-1] Max size of the joined log\n * @returns {Promise} This Log instance\n * @example\n * await log1.join(log2)\n */\n async join (log, size = -1) {\n if (!isDefined(log)) throw LogError.LogNotDefinedError()\n if (!Log.isLog(log)) throw LogError.NotALogError()\n if (this.id !== log.id) return\n\n // Get the difference of the logs\n const newItems = Log.difference(log, this)\n\n const identityProvider = this._identity.provider\n // Verify if entries are allowed to be added to the log and throws if\n // there's an invalid entry\n const permitted = async (entry) => {\n const canAppend = await this._access.canAppend(entry, identityProvider)\n if (!canAppend) {\n throw new Error(`Could not append entry, key \"${entry.identity.id}\" is not allowed to write to the log`)\n }\n }\n\n // Verify signature for each entry and throws if there's an invalid signature\n const verify = async (entry) => {\n const isValid = await Entry.verify(identityProvider, entry)\n const publicKey = entry.identity ? entry.identity.publicKey : entry.key\n if (!isValid) throw new Error(`Could not validate signature \"${entry.sig}\" for entry \"${entry.hash}\" and key \"${publicKey}\"`)\n }\n\n const entriesToJoin = Object.values(newItems)\n await pMap(entriesToJoin, async e => {\n await permitted(e)\n await verify(e)\n }, { concurrency: this.joinConcurrency })\n\n // Update the internal next pointers index\n const addToNextsIndex = e => {\n const entry = this.get(e.hash)\n if (!entry) this._length++ /* istanbul ignore else */\n e.next.forEach(a => (this._nextsIndex[a] = e.hash))\n }\n Object.values(newItems).forEach(addToNextsIndex)\n\n // Update the internal entry index\n this._entryIndex.add(newItems)\n\n // Merge the heads\n const notReferencedByNewItems = e => !nextsFromNewItems.find(a => a === e.hash)\n const notInCurrentNexts = e => !this._nextsIndex[e.hash]\n const nextsFromNewItems = Object.values(newItems).map(getNextPointers).reduce(flatMap, [])\n const mergedHeads = Log.findHeads(Object.values(Object.assign({}, this._headsIndex, log._headsIndex)))\n .filter(notReferencedByNewItems)\n .filter(notInCurrentNexts)\n .reduce(uniqueEntriesReducer, {})\n\n this._headsIndex = mergedHeads\n\n // Slice to the requested size\n if (size > -1) {\n let tmp = this.values\n tmp = tmp.slice(-size)\n this._entryIndex = null\n this._entryIndex = new EntryIndex(tmp.reduce(uniqueEntriesReducer, {}))\n this._headsIndex = Log.findHeads(tmp).reduce(uniqueEntriesReducer, {})\n this._length = this._entryIndex.length\n }\n\n // Find the latest clock from the heads\n const maxClock = Object.values(this._headsIndex).reduce(maxClockTimeReducer, 0)\n this._clock = new Clock(this.clock.id, Math.max(this.clock.time, maxClock))\n return this\n }\n\n /**\n * Get the log in JSON format.\n * @returns {Object} An object with the id and heads properties\n */\n toJSON () {\n return {\n id: this.id,\n heads: this.heads\n .sort(this._sortFn) // default sorting\n .reverse() // we want the latest as the first element\n .map(getHash) // return only the head hashes\n }\n }\n\n /**\n * Get the log in JSON format as a snapshot.\n * @returns {Object} An object with the id, heads and value properties\n */\n toSnapshot () {\n return {\n id: this.id,\n heads: this.heads,\n values: this.values\n }\n }\n\n /**\n * Get the log as a Buffer.\n * @returns {Buffer}\n */\n toBuffer () {\n return Buffer.from(JSON.stringify(this.toJSON()))\n }\n\n /**\n * Returns the log entries as a formatted string.\n * @returns {string}\n * @example\n * two\n * └─one\n * └─three\n */\n toString (payloadMapper) {\n return this.values\n .slice()\n .reverse()\n .map((e, idx) => {\n const parents = Entry.findChildren(e, this.values)\n const len = parents.length\n let padding = new Array(Math.max(len - 1, 0))\n padding = len > 1 ? padding.fill(' ') : padding\n padding = len > 0 ? padding.concat(['└─']) : padding\n /* istanbul ignore next */\n return padding.join('') + (payloadMapper ? payloadMapper(e.payload) : e.payload)\n })\n .join('\\n')\n }\n\n /**\n * Check whether an object is a Log instance.\n * @param {Object} log An object to check\n * @returns {boolean}\n */\n static isLog (log) {\n return log.id !== undefined &&\n log.heads !== undefined &&\n log._entryIndex !== undefined\n }\n\n /**\n * Get the log's multihash.\n * @returns {Promise} Multihash of the Log as Base58 encoded string.\n */\n toMultihash ({ format } = {}) {\n return LogIO.toMultihash(this._storage, this, { format })\n }\n\n /**\n * Create a log from a hashes.\n * @param {IPFS} ipfs An IPFS instance\n * @param {Identity} identity The identity instance\n * @param {string} hash The log hash\n * @param {Object} options\n * @param {AccessController} options.access The access controller instance\n * @param {number} options.length How many items to include in the log\n * @param {Array} options.exclude Entries to not fetch (cached)\n * @param {function(hash, entry, parent, depth)} options.onProgressCallback\n * @param {Function} options.sortFn The sort function - by default LastWriteWins\n * @returns {Promise}\n */\n static async fromMultihash (ipfs, identity, hash,\n { access, length = -1, exclude = [], timeout, concurrency, sortFn, onProgressCallback } = {}) {\n // TODO: need to verify the entries with 'key'\n const { logId, entries, heads } = await LogIO.fromMultihash(ipfs, hash,\n { length, exclude, timeout, onProgressCallback, concurrency, sortFn })\n return new Log(ipfs, identity, { logId, access, entries, heads, sortFn })\n }\n\n /**\n * Create a log from a single entry's hash.\n * @param {IPFS} ipfs An IPFS instance\n * @param {Identity} identity The identity instance\n * @param {string} hash The entry's hash\n * @param {Object} options\n * @param {string} options.logId The ID of the log\n * @param {AccessController} options.access The access controller instance\n * @param {number} options.length How many entries to include in the log\n * @param {Array} options.exclude Entries to not fetch (cached)\n * @param {function(hash, entry, parent, depth)} options.onProgressCallback\n * @param {Function} options.sortFn The sort function - by default LastWriteWins\n * @return {Promise} New Log\n */\n static async fromEntryHash (ipfs, identity, hash,\n { logId, access, length = -1, exclude = [], timeout, concurrency, sortFn, onProgressCallback } = {}) {\n // TODO: need to verify the entries with 'key'\n const { entries } = await LogIO.fromEntryHash(ipfs, hash,\n { length, exclude, timeout, concurrency, onProgressCallback })\n return new Log(ipfs, identity, { logId, access, entries, sortFn })\n }\n\n /**\n * Create a log from a Log Snapshot JSON.\n * @param {IPFS} ipfs An IPFS instance\n * @param {Identity} identity The identity instance\n * @param {Object} json Log snapshot as JSON object\n * @param {Object} options\n * @param {AccessController} options.access The access controller instance\n * @param {number} options.length How many entries to include in the log\n * @param {function(hash, entry, parent, depth)} [options.onProgressCallback]\n * @param {Function} options.sortFn The sort function - by default LastWriteWins\n * @return {Promise} New Log\n */\n static async fromJSON (ipfs, identity, json,\n { access, length = -1, timeout, sortFn, onProgressCallback } = {}) {\n // TODO: need to verify the entries with 'key'\n const { logId, entries } = await LogIO.fromJSON(ipfs, json,\n { length, timeout, onProgressCallback })\n return new Log(ipfs, identity, { logId, access, entries, sortFn })\n }\n\n /**\n * Create a new log from an Entry instance.\n * @param {IPFS} ipfs An IPFS instance\n * @param {Identity} identity The identity instance\n * @param {Entry|Array} sourceEntries An Entry or an array of entries to fetch a log from\n * @param {Object} options\n * @param {AccessController} options.access The access controller instance\n * @param {number} options.length How many entries to include. Default: infinite.\n * @param {Array} options.exclude Entries to not fetch (cached)\n * @param {function(hash, entry, parent, depth)} [options.onProgressCallback]\n * @param {Function} options.sortFn The sort function - by default LastWriteWins\n * @return {Promise} New Log\n */\n static async fromEntry (ipfs, identity, sourceEntries,\n { access, length = -1, exclude = [], timeout, concurrency, sortFn, onProgressCallback } = {}) {\n // TODO: need to verify the entries with 'key'\n const { logId, entries } = await LogIO.fromEntry(ipfs, sourceEntries,\n { length, exclude, timeout, concurrency, onProgressCallback })\n return new Log(ipfs, identity, { logId, access, entries, sortFn })\n }\n\n /**\n * Find heads from a collection of entries.\n *\n * Finds entries that are the heads of this collection,\n * ie. entries that are not referenced by other entries.\n *\n * @param {Array} entries Entries to search heads from\n * @returns {Array}\n */\n static findHeads (entries) {\n var indexReducer = (res, entry, idx, arr) => {\n var addToResult = e => (res[e] = entry.hash)\n entry.next.forEach(addToResult)\n return res\n }\n\n var items = entries.reduce(indexReducer, {})\n\n var exists = e => items[e.hash] === undefined\n var compareIds = (a, b) => a.clock.id > b.clock.id\n\n return entries.filter(exists).sort(compareIds)\n }\n\n // Find entries that point to another entry that is not in the\n // input array\n static findTails (entries) {\n // Reverse index { next -> entry }\n var reverseIndex = {}\n // Null index containing entries that have no parents (nexts)\n var nullIndex = []\n // Hashes for all entries for quick lookups\n var hashes = {}\n // Hashes of all next entries\n var nexts = []\n\n var addToIndex = (e) => {\n if (e.next.length === 0) {\n nullIndex.push(e)\n }\n var addToReverseIndex = (a) => {\n /* istanbul ignore else */\n if (!reverseIndex[a]) reverseIndex[a] = []\n reverseIndex[a].push(e)\n }\n\n // Add all entries and their parents to the reverse index\n e.next.forEach(addToReverseIndex)\n // Get all next references\n nexts = nexts.concat(e.next)\n // Get the hashes of input entries\n hashes[e.hash] = true\n }\n\n // Create our indices\n entries.forEach(addToIndex)\n\n var addUniques = (res, entries, idx, arr) => res.concat(findUniques(entries, 'hash'))\n var exists = e => hashes[e] === undefined\n var findFromReverseIndex = e => reverseIndex[e]\n\n // Drop hashes that are not in the input entries\n const tails = nexts // For every hash in nexts:\n .filter(exists) // Remove undefineds and nulls\n .map(findFromReverseIndex) // Get the Entry from the reverse index\n .reduce(addUniques, []) // Flatten the result and take only uniques\n .concat(nullIndex) // Combine with tails the have no next refs (ie. first-in-their-chain)\n\n return findUniques(tails, 'hash').sort(Entry.compare)\n }\n\n // Find the hashes to entries that are not in a collection\n // but referenced by other entries\n static findTailHashes (entries) {\n var hashes = {}\n var addToIndex = e => (hashes[e.hash] = true)\n var reduceTailHashes = (res, entry, idx, arr) => {\n var addToResult = (e) => {\n /* istanbul ignore else */\n if (hashes[e] === undefined) {\n res.splice(0, 0, e)\n }\n }\n entry.next.reverse().forEach(addToResult)\n return res\n }\n\n entries.forEach(addToIndex)\n return entries.reduce(reduceTailHashes, [])\n }\n\n static difference (a, b) {\n let stack = Object.keys(a._headsIndex)\n let traversed = {}\n let res = {}\n\n const pushToStack = hash => {\n if (!traversed[hash] && !b.get(hash)) {\n stack.push(hash)\n traversed[hash] = true\n }\n }\n\n while (stack.length > 0) {\n const hash = stack.shift()\n const entry = a.get(hash)\n if (entry && !b.get(hash) && entry.id === b.id) {\n res[entry.hash] = entry\n traversed[entry.hash] = true\n entry.next.forEach(pushToStack)\n }\n }\n return res\n }\n}\n\nmodule.exports = Log\nmodule.exports.Sorting = Sorting\nmodule.exports.Entry = Entry\nmodule.exports.AccessController = AccessController\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('buffer').Buffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n const encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n const header = new Buffer(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n let lenOctets = 1;\n for (let i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n const header = new Buffer(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (let i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n const buf = new Buffer(str.length * 2);\n for (let i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s.]+/g);\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n let size = 0;\n for (let i = 0; i < id.length; i++) {\n let ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n const objid = new Buffer(size);\n let offset = objid.length - 1;\n for (let i = id.length - 1; i >= 0; i--) {\n let ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n let str;\n const date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getUTCFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else if (tag === 'utctime') {\n str = [\n two(date.getUTCFullYear() % 100),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values)\n return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' +\n JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n const numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = new Buffer(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n let size = num.length;\n if (num.length === 0)\n size++;\n\n const out = new Buffer(size);\n num.copy(out);\n if (num.length === 0)\n out[0] = 0;\n return this._createEncoderBuffer(out);\n }\n\n if (num < 0x80)\n return this._createEncoderBuffer(num);\n\n if (num < 0x100)\n return this._createEncoderBuffer([0, num]);\n\n let size = 1;\n for (let i = num; i >= 0x100; i >>= 8)\n size++;\n\n const out = new Array(size);\n for (let i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if(out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(new Buffer(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n const state = this._baseState;\n let i;\n if (state['default'] === null)\n return false;\n\n const data = dataBuffer.join();\n if (state.defaultBuffer === undefined)\n state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n if (data.length !== state.defaultBuffer.length)\n return false;\n\n for (i=0; i < data.length; i++)\n if (data[i] !== state.defaultBuffer[i])\n return false;\n\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n let res;\n\n if (tag === 'seqof')\n tag = 'seq';\n else if (tag === 'setof')\n tag = 'set';\n\n if (der.tagByName.hasOwnProperty(tag))\n res = der.tagByName[tag];\n else if (typeof tag === 'number' && (tag | 0) === tag)\n res = tag;\n else\n return reporter.error('Unknown tag: ' + tag);\n\n if (res >= 0x1f)\n return reporter.error('Multi-octet tag encoding unsupported');\n\n if (!primitive)\n res |= 0x20;\n\n res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n return res;\n}\n","'use strict'\n\nconst WantManager = require('./want-manager')\nconst Network = require('./network')\nconst DecisionEngine = require('./decision-engine')\nconst Notifications = require('./notifications')\nconst logger = require('./utils').logger\nconst Stats = require('./stats')\n\nconst defaultOptions = {\n statsEnabled: false,\n statsComputeThrottleTimeout: 1000,\n statsComputeThrottleMaxQueueSize: 1000\n}\nconst statsKeys = [\n 'blocksReceived',\n 'dataReceived',\n 'dupBlksReceived',\n 'dupDataReceived',\n 'blocksSent',\n 'dataSent',\n 'providesBufferLength',\n 'wantListLength',\n 'peerCount'\n]\n\n/**\n * JavaScript implementation of the Bitswap 'data exchange' protocol\n * used by IPFS.\n *\n * @param {Libp2p} libp2p\n * @param {Blockstore} blockstore\n * @param {Object} options\n */\nclass Bitswap {\n constructor (libp2p, blockstore, options) {\n this._libp2p = libp2p\n this._log = logger(this.peerInfo.id)\n\n this._options = Object.assign({}, defaultOptions, options)\n\n // stats\n this._stats = new Stats(statsKeys, {\n enabled: this._options.statsEnabled,\n computeThrottleTimeout: this._options.statsComputeThrottleTimeout,\n computeThrottleMaxQueueSize: this._options.statsComputeThrottleMaxQueueSize\n })\n\n // the network delivers messages\n this.network = new Network(libp2p, this, {}, this._stats)\n\n // local database\n this.blockstore = blockstore\n\n this.engine = new DecisionEngine(this.peerInfo.id, blockstore, this.network, this._stats)\n\n // handle message sending\n this.wm = new WantManager(this.peerInfo.id, this.network, this._stats)\n\n this.notifications = new Notifications(this.peerInfo.id)\n }\n\n get peerInfo () {\n return this._libp2p.peerInfo\n }\n\n // handle messages received through the network\n async _receiveMessage (peerId, incoming) {\n try {\n await this.engine.messageReceived(peerId, incoming)\n } catch (err) {\n // Only logging the issue to process as much as possible\n // of the message. Currently `messageReceived` does not\n // throw any errors, but this could change in the future.\n this._log('failed to receive message', incoming)\n }\n\n if (incoming.blocks.size === 0) {\n return\n }\n\n const blocks = Array.from(incoming.blocks.values())\n\n // quickly send out cancels, reduces chances of duplicate block receives\n const wanted = blocks\n .filter((b) => this.wm.wantlist.contains(b.cid))\n .map((b) => b.cid)\n\n this.wm.cancelWants(wanted)\n\n await Promise.all(blocks.map(async (b) => {\n const wasWanted = wanted.includes(b.cid)\n await this._handleReceivedBlock(peerId, b, wasWanted)\n }))\n }\n\n async _handleReceivedBlock (peerId, block, wasWanted) {\n this._log('received block')\n\n const has = await this.blockstore.has(block.cid)\n this._updateReceiveCounters(peerId.toB58String(), block, has)\n\n if (has || !wasWanted) {\n return\n }\n\n await this.put(block)\n }\n\n _updateReceiveCounters (peerId, block, exists) {\n this._stats.push(peerId, 'blocksReceived', 1)\n this._stats.push(peerId, 'dataReceived', block.data.length)\n\n if (exists) {\n this._stats.push(peerId, 'dupBlksReceived', 1)\n this._stats.push(peerId, 'dupDataReceived', block.data.length)\n }\n }\n\n // handle errors on the receiving channel\n _receiveError (err) {\n this._log.error('ReceiveError: %s', err.message)\n }\n\n // handle new peers\n _onPeerConnected (peerId) {\n this.wm.connected(peerId)\n }\n\n // handle peers being disconnected\n _onPeerDisconnected (peerId) {\n this.wm.disconnected(peerId)\n this.engine.peerDisconnected(peerId)\n this._stats.disconnected(peerId)\n }\n\n /**\n * @returns {void}\n */\n enableStats () {\n this._stats.enable()\n }\n\n /**\n * @returns {void}\n */\n disableStats () {\n this._stats.disable()\n }\n\n /**\n * Return the current wantlist for a given `peerId`\n *\n * @param {PeerId} peerId\n * @returns {Map}\n */\n wantlistForPeer (peerId) {\n return this.engine.wantlistForPeer(peerId)\n }\n\n /**\n * Return ledger information for a given `peerId`\n *\n * @param {PeerId} peerId\n * @returns {Object}\n */\n ledgerForPeer (peerId) {\n return this.engine.ledgerForPeer(peerId)\n }\n\n /**\n * Fetch a given block by cid. If the block is in the local\n * blockstore it is returned, otherwise the block is added to the wantlist and returned once another node sends it to us.\n *\n * @param {CID} cid\n * @returns {Promise}\n */\n async get (cid) {\n for await (const block of this.getMany([cid])) {\n return block\n }\n }\n\n /**\n * Fetch a a list of blocks by cid. If the blocks are in the local\n * blockstore they are returned, otherwise the blocks are added to the wantlist and returned once another node sends them to us.\n *\n * @param {Iterable} cids\n * @returns {Promise>}\n */\n async * getMany (cids) {\n let pendingStart = cids.length\n const wantList = []\n let promptedNetwork = false\n\n const fetchFromNetwork = async (cid) => {\n wantList.push(cid)\n\n const blockP = this.notifications.wantBlock(cid)\n\n if (!pendingStart) {\n this.wm.wantBlocks(wantList)\n }\n\n const block = await blockP\n this.wm.cancelWants([cid])\n\n return block\n }\n\n for (const cid of cids) {\n const has = await this.blockstore.has(cid)\n pendingStart--\n if (has) {\n if (!pendingStart) {\n this.wm.wantBlocks(wantList)\n }\n yield this.blockstore.get(cid)\n\n continue\n }\n\n if (!promptedNetwork) {\n promptedNetwork = true\n this.network.findAndConnect(cids[0]).catch((err) => this._log.error(err))\n }\n\n // we don't have the block locally so fetch it from the network\n yield fetchFromNetwork(cid)\n }\n }\n\n /**\n * Removes the given CIDs from the wantlist independent of any ref counts\n *\n * @param {Iterable} cids\n * @returns {void}\n */\n unwant (cids) {\n if (!Array.isArray(cids)) {\n cids = [cids]\n }\n\n this.wm.unwantBlocks(cids)\n cids.forEach((cid) => this.notifications.unwantBlock(cid))\n }\n\n /**\n * Removes the given keys from the want list\n *\n * @param {Iterable} cids\n * @returns {void}\n */\n cancelWants (cids) {\n if (!Array.isArray(cids)) {\n cids = [cids]\n }\n this.wm.cancelWants(cids)\n }\n\n /**\n * Put the given block to the underlying blockstore and\n * send it to nodes that have it in their wantlist.\n *\n * @param {Block} block\n * @returns {Promise}\n */\n async put (block) { // eslint-disable-line require-await\n return this.putMany([block])\n }\n\n /**\n * Put the given blocks to the underlying blockstore and\n * send it to nodes that have it them their wantlist.\n *\n * @param {AsyncIterable|Iterable} blocks\n * @returns {Promise}\n */\n async putMany (blocks) { // eslint-disable-line require-await\n const self = this\n\n return this.blockstore.putMany(async function * () {\n for await (const block of blocks) {\n if (await self.blockstore.has(block.cid)) {\n continue\n }\n\n yield block\n\n self.notifications.hasBlock(block)\n self.engine.receivedBlocks([block.cid])\n // Note: Don't wait for provide to finish before returning\n self.network.provide(block.cid).catch((err) => {\n self._log.error('Failed to provide: %s', err.message)\n })\n }\n }())\n }\n\n /**\n * Get the current list of wants.\n *\n * @returns {Iterator}\n */\n getWantlist () {\n return this.wm.wantlist.entries()\n }\n\n /**\n * Get the current list of partners.\n *\n * @returns {Iterator}\n */\n peers () {\n return this.engine.peers()\n }\n\n /**\n * Get stats about the bitswap node.\n *\n * @returns {Object}\n */\n stat () {\n return this._stats\n }\n\n /**\n * Start the bitswap node.\n *\n * @returns {void}\n */\n start () {\n this.wm.start()\n this.network.start()\n this.engine.start()\n }\n\n /**\n * Stop the bitswap node.\n *\n * @returns {void}\n */\n stop () {\n this._stats.stop()\n this.wm.stop()\n this.network.stop()\n this.engine.stop()\n }\n}\n\nmodule.exports = Bitswap\n","module.exports = read\n\nvar MSB = 0x80\n , REST = 0x7F\n\nfunction read(buf, offset) {\n var res = 0\n , offset = offset || 0\n , shift = 0\n , counter = offset\n , b\n , l = buf.length\n\n do {\n if (counter >= l) {\n read.bytes = 0\n throw new RangeError('Could not decode varint')\n }\n b = buf[counter++]\n res += shift < 28\n ? (b & REST) << shift\n : (b & REST) * Math.pow(2, shift)\n shift += 7\n } while (b >= MSB)\n\n read.bytes = counter - offset\n\n return res\n}\n","/**\n * Javascript implementation of PKCS#1 PSS signature padding.\n *\n * @author Stefan Siegl\n *\n * Copyright (c) 2012 Stefan Siegl \n */\nvar forge = require('./forge');\nrequire('./random');\nrequire('./util');\n\n// shortcut for PSS API\nvar pss = module.exports = forge.pss = forge.pss || {};\n\n/**\n * Creates a PSS signature scheme object.\n *\n * There are several ways to provide a salt for encoding:\n *\n * 1. Specify the saltLength only and the built-in PRNG will generate it.\n * 2. Specify the saltLength and a custom PRNG with 'getBytesSync' defined that\n * will be used.\n * 3. Specify the salt itself as a forge.util.ByteBuffer.\n *\n * @param options the options to use:\n * md the message digest object to use, a forge md instance.\n * mgf the mask generation function to use, a forge mgf instance.\n * [saltLength] the length of the salt in octets.\n * [prng] the pseudo-random number generator to use to produce a salt.\n * [salt] the salt to use when encoding.\n *\n * @return a signature scheme object.\n */\npss.create = function(options) {\n // backwards compatibility w/legacy args: hash, mgf, sLen\n if(arguments.length === 3) {\n options = {\n md: arguments[0],\n mgf: arguments[1],\n saltLength: arguments[2]\n };\n }\n\n var hash = options.md;\n var mgf = options.mgf;\n var hLen = hash.digestLength;\n\n var salt_ = options.salt || null;\n if(typeof salt_ === 'string') {\n // assume binary-encoded string\n salt_ = forge.util.createBuffer(salt_);\n }\n\n var sLen;\n if('saltLength' in options) {\n sLen = options.saltLength;\n } else if(salt_ !== null) {\n sLen = salt_.length();\n } else {\n throw new Error('Salt length not specified or specific salt not given.');\n }\n\n if(salt_ !== null && salt_.length() !== sLen) {\n throw new Error('Given salt length does not match length of given salt.');\n }\n\n var prng = options.prng || forge.random;\n\n var pssobj = {};\n\n /**\n * Encodes a PSS signature.\n *\n * This function implements EMSA-PSS-ENCODE as per RFC 3447, section 9.1.1.\n *\n * @param md the message digest object with the hash to sign.\n * @param modsBits the length of the RSA modulus in bits.\n *\n * @return the encoded message as a binary-encoded string of length\n * ceil((modBits - 1) / 8).\n */\n pssobj.encode = function(md, modBits) {\n var i;\n var emBits = modBits - 1;\n var emLen = Math.ceil(emBits / 8);\n\n /* 2. Let mHash = Hash(M), an octet string of length hLen. */\n var mHash = md.digest().getBytes();\n\n /* 3. If emLen < hLen + sLen + 2, output \"encoding error\" and stop. */\n if(emLen < hLen + sLen + 2) {\n throw new Error('Message is too long to encrypt.');\n }\n\n /* 4. Generate a random octet string salt of length sLen; if sLen = 0,\n * then salt is the empty string. */\n var salt;\n if(salt_ === null) {\n salt = prng.getBytesSync(sLen);\n } else {\n salt = salt_.bytes();\n }\n\n /* 5. Let M' = (0x)00 00 00 00 00 00 00 00 || mHash || salt; */\n var m_ = new forge.util.ByteBuffer();\n m_.fillWithByte(0, 8);\n m_.putBytes(mHash);\n m_.putBytes(salt);\n\n /* 6. Let H = Hash(M'), an octet string of length hLen. */\n hash.start();\n hash.update(m_.getBytes());\n var h = hash.digest().getBytes();\n\n /* 7. Generate an octet string PS consisting of emLen - sLen - hLen - 2\n * zero octets. The length of PS may be 0. */\n var ps = new forge.util.ByteBuffer();\n ps.fillWithByte(0, emLen - sLen - hLen - 2);\n\n /* 8. Let DB = PS || 0x01 || salt; DB is an octet string of length\n * emLen - hLen - 1. */\n ps.putByte(0x01);\n ps.putBytes(salt);\n var db = ps.getBytes();\n\n /* 9. Let dbMask = MGF(H, emLen - hLen - 1). */\n var maskLen = emLen - hLen - 1;\n var dbMask = mgf.generate(h, maskLen);\n\n /* 10. Let maskedDB = DB \\xor dbMask. */\n var maskedDB = '';\n for(i = 0; i < maskLen; i++) {\n maskedDB += String.fromCharCode(db.charCodeAt(i) ^ dbMask.charCodeAt(i));\n }\n\n /* 11. Set the leftmost 8emLen - emBits bits of the leftmost octet in\n * maskedDB to zero. */\n var mask = (0xFF00 >> (8 * emLen - emBits)) & 0xFF;\n maskedDB = String.fromCharCode(maskedDB.charCodeAt(0) & ~mask) +\n maskedDB.substr(1);\n\n /* 12. Let EM = maskedDB || H || 0xbc.\n * 13. Output EM. */\n return maskedDB + h + String.fromCharCode(0xbc);\n };\n\n /**\n * Verifies a PSS signature.\n *\n * This function implements EMSA-PSS-VERIFY as per RFC 3447, section 9.1.2.\n *\n * @param mHash the message digest hash, as a binary-encoded string, to\n * compare against the signature.\n * @param em the encoded message, as a binary-encoded string\n * (RSA decryption result).\n * @param modsBits the length of the RSA modulus in bits.\n *\n * @return true if the signature was verified, false if not.\n */\n pssobj.verify = function(mHash, em, modBits) {\n var i;\n var emBits = modBits - 1;\n var emLen = Math.ceil(emBits / 8);\n\n /* c. Convert the message representative m to an encoded message EM\n * of length emLen = ceil((modBits - 1) / 8) octets, where modBits\n * is the length in bits of the RSA modulus n */\n em = em.substr(-emLen);\n\n /* 3. If emLen < hLen + sLen + 2, output \"inconsistent\" and stop. */\n if(emLen < hLen + sLen + 2) {\n throw new Error('Inconsistent parameters to PSS signature verification.');\n }\n\n /* 4. If the rightmost octet of EM does not have hexadecimal value\n * 0xbc, output \"inconsistent\" and stop. */\n if(em.charCodeAt(emLen - 1) !== 0xbc) {\n throw new Error('Encoded message does not end in 0xBC.');\n }\n\n /* 5. Let maskedDB be the leftmost emLen - hLen - 1 octets of EM, and\n * let H be the next hLen octets. */\n var maskLen = emLen - hLen - 1;\n var maskedDB = em.substr(0, maskLen);\n var h = em.substr(maskLen, hLen);\n\n /* 6. If the leftmost 8emLen - emBits bits of the leftmost octet in\n * maskedDB are not all equal to zero, output \"inconsistent\" and stop. */\n var mask = (0xFF00 >> (8 * emLen - emBits)) & 0xFF;\n if((maskedDB.charCodeAt(0) & mask) !== 0) {\n throw new Error('Bits beyond keysize not zero as expected.');\n }\n\n /* 7. Let dbMask = MGF(H, emLen - hLen - 1). */\n var dbMask = mgf.generate(h, maskLen);\n\n /* 8. Let DB = maskedDB \\xor dbMask. */\n var db = '';\n for(i = 0; i < maskLen; i++) {\n db += String.fromCharCode(maskedDB.charCodeAt(i) ^ dbMask.charCodeAt(i));\n }\n\n /* 9. Set the leftmost 8emLen - emBits bits of the leftmost octet\n * in DB to zero. */\n db = String.fromCharCode(db.charCodeAt(0) & ~mask) + db.substr(1);\n\n /* 10. If the emLen - hLen - sLen - 2 leftmost octets of DB are not zero\n * or if the octet at position emLen - hLen - sLen - 1 (the leftmost\n * position is \"position 1\") does not have hexadecimal value 0x01,\n * output \"inconsistent\" and stop. */\n var checkLen = emLen - hLen - sLen - 2;\n for(i = 0; i < checkLen; i++) {\n if(db.charCodeAt(i) !== 0x00) {\n throw new Error('Leftmost octets not zero as expected');\n }\n }\n\n if(db.charCodeAt(checkLen) !== 0x01) {\n throw new Error('Inconsistent PSS signature, 0x01 marker not found');\n }\n\n /* 11. Let salt be the last sLen octets of DB. */\n var salt = db.substr(-sLen);\n\n /* 12. Let M' = (0x)00 00 00 00 00 00 00 00 || mHash || salt */\n var m_ = new forge.util.ByteBuffer();\n m_.fillWithByte(0, 8);\n m_.putBytes(mHash);\n m_.putBytes(salt);\n\n /* 13. Let H' = Hash(M'), an octet string of length hLen. */\n hash.start();\n hash.update(m_.getBytes());\n var h_ = hash.digest().getBytes();\n\n /* 14. If H = H', output \"consistent.\" Otherwise, output \"inconsistent.\" */\n return h === h_;\n };\n\n return pssobj;\n};\n","'use strict'\n\nconst multihash = require('multihashes')\nconst crypto = require('./crypto')\n\nmodule.exports = Multihashing\n\n/**\n * Hash the given `buf` using the algorithm specified\n * by `func`.\n *\n * @param {Buffer} buf - The value to hash.\n * @param {number|string} func - The algorithm to use.\n * @param {number} [length] - Optionally trim the result to this length.\n * @param {function(Error, Buffer)} callback\n * @returns {undefined}\n */\nfunction Multihashing (buf, func, length, callback) {\n if (typeof length === 'function') {\n callback = length\n length = undefined\n }\n\n if (!callback) {\n throw new Error('Missing callback')\n }\n\n Multihashing.digest(buf, func, length, (err, digest) => {\n if (err) {\n return callback(err)\n }\n\n callback(null, multihash.encode(digest, func, length))\n })\n}\n\n/**\n * The `buffer` module for easy use in the browser.\n *\n * @type {Buffer}\n */\nMultihashing.Buffer = Buffer // for browser things\n\n/**\n * Expose multihash itself, to avoid silly double requires.\n */\nMultihashing.multihash = multihash\n\n/**\n * @param {Buffer} buf - The value to hash.\n * @param {number|string} func - The algorithm to use.\n * @param {number} [length] - Optionally trim the result to this length.\n * @param {function(Error, Buffer)} callback\n * @returns {undefined}\n */\nMultihashing.digest = function (buf, func, length, callback) {\n if (typeof length === 'function') {\n callback = length\n length = undefined\n }\n\n if (!callback) {\n throw new Error('Missing callback')\n }\n\n let cb = callback\n if (length) {\n cb = (err, digest) => {\n if (err) {\n return callback(err)\n }\n\n callback(null, digest.slice(0, length))\n }\n }\n\n let hash\n try {\n hash = Multihashing.createHash(func)\n } catch (err) {\n return cb(err)\n }\n\n hash(buf, cb)\n}\n\n/**\n * @param {string|number} func\n *\n * @returns {function} - The to `func` corresponding hash function.\n */\nMultihashing.createHash = function (func) {\n func = multihash.coerceCode(func)\n if (!Multihashing.functions[func]) {\n throw new Error('multihash function ' + func + ' not yet supported')\n }\n\n return Multihashing.functions[func]\n}\n\n/**\n * Mapping of multihash codes to their hashing functions.\n * @type {Object}\n */\nMultihashing.functions = {\n // sha1\n 0x11: crypto.sha1,\n // sha2-256\n 0x12: crypto.sha2256,\n // sha2-512\n 0x13: crypto.sha2512,\n // sha3-512\n 0x14: crypto.sha3512,\n // sha3-384\n 0x15: crypto.sha3384,\n // sha3-256\n 0x16: crypto.sha3256,\n // sha3-224\n 0x17: crypto.sha3224,\n // shake-128\n 0x18: crypto.shake128,\n // shake-256\n 0x19: crypto.shake256,\n // keccak-224\n 0x1A: crypto.keccak224,\n // keccak-256\n 0x1B: crypto.keccak256,\n // keccak-384\n 0x1C: crypto.keccak384,\n // keccak-512\n 0x1D: crypto.keccak512,\n // murmur3-128\n 0x22: crypto.murmur3128,\n // murmur3-32\n 0x23: crypto.murmur332,\n // dbl-sha2-256\n 0x56: crypto.dblSha2256\n}\n\n// add blake functions\ncrypto.addBlake(Multihashing.functions)\n\nMultihashing.validate = (data, hash, callback) => {\n let algo = multihash.decode(hash).name\n Multihashing(data, algo, (err, newHash) => {\n if (err) return callback(err)\n callback(err, Buffer.compare(hash, newHash) === 0)\n })\n}\n","'use strict'\n\nconst CID = require('cids')\n\nconst util = require('./util')\n\n/**\n * Resolves a path within a PB block.\n *\n * Returns the value or a link and the partial mising path. This way the\n * IPLD Resolver can fetch the link and continue to resolve.\n *\n * @param {Buffer} binaryBlob - Binary representation of a PB block\n * @param {string} [path='/'] - Path that should be resolved\n * @returns {Object} result - Result of the path it it was resolved successfully\n * @returns {*} result.value - Value the path resolves to\n * @returns {string} result.remainderPath - If the path resolves half-way to a\n * link, then the `remainderPath` is the part after the link that can be used\n * for further resolving\n */\nexports.resolve = (binaryBlob, path) => {\n let node = util.deserialize(binaryBlob)\n\n const parts = path.split('/').filter(Boolean)\n while (parts.length) {\n const key = parts.shift()\n if (node[key] === undefined) {\n throw new Error(`Object has no property '${key}'`)\n }\n\n node = node[key]\n if (CID.isCID(node)) {\n return {\n value: node,\n remainderPath: parts.join('/')\n }\n }\n }\n\n return {\n value: node,\n remainderPath: ''\n }\n}\n\nconst traverse = function * (node, path) {\n // Traverse only objects and arrays\n if (Buffer.isBuffer(node) || CID.isCID(node) || typeof node === 'string' ||\n node === null) {\n return\n }\n for (const item of Object.keys(node)) {\n const nextpath = path === undefined ? item : path + '/' + item\n yield nextpath\n yield * traverse(node[item], nextpath)\n }\n}\n\n/**\n * Return all available paths of a block.\n *\n * @generator\n * @param {Buffer} binaryBlob - Binary representation of a PB block\n * @yields {string} - A single path\n */\nexports.tree = function * (binaryBlob) {\n const node = util.deserialize(binaryBlob)\n\n yield * traverse(node)\n}\n","'use strict'\n\nconst promisify = require('promisify-es6')\nconst streamToValueWithTransformer = require('../utils/stream-to-value-with-transformer')\n\nconst PeerId = require('peer-id')\nconst PeerInfo = require('peer-info')\n\nmodule.exports = (send) => {\n return promisify((peerId, opts, callback) => {\n if (typeof opts === 'function' && !callback) {\n callback = opts\n opts = {}\n }\n\n // opts is the real callback --\n // 'callback' is being injected by promisify\n if (typeof opts === 'function' && typeof callback === 'function') {\n callback = opts\n opts = {}\n }\n\n const handleResult = (res, callback) => {\n const peerIds = res.map((r) => (new PeerInfo(PeerId.createFromB58String(r.ID))))\n\n callback(null, peerIds)\n }\n\n send({\n path: 'dht/query',\n args: peerId,\n qs: opts\n }, (err, result) => {\n if (err) {\n return callback(err)\n }\n\n streamToValueWithTransformer(result, handleResult, callback)\n })\n })\n}\n","\"use strict\";\n\nconst hasBigInt64 = typeof BigUint64Array !== \"undefined\";\nconst thisPtr = Symbol();\n\n/** Gets a string from an U32 and an U16 view on a memory. */\nfunction getStringImpl(U32, U16, ptr) {\n var dataLength = U32[ptr >>> 2];\n var dataOffset = (ptr + 4) >>> 1;\n var dataRemain = dataLength;\n var parts = [];\n const chunkSize = 1024;\n while (dataRemain > chunkSize) {\n let last = U16[dataOffset + chunkSize - 1];\n let size = last >= 0xD800 && last < 0xDC00 ? chunkSize - 1 : chunkSize;\n let part = U16.subarray(dataOffset, dataOffset += size);\n parts.push(String.fromCharCode.apply(String, part));\n dataRemain -= size;\n }\n return parts.join(\"\") + String.fromCharCode.apply(String, U16.subarray(dataOffset, dataOffset + dataRemain));\n}\n\n/** Prepares the base module prior to instantiation. */\nfunction preInstantiate(imports) {\n var baseModule = {};\n\n function getString(memory, ptr) {\n if (!memory) return \"\";\n var buffer = memory.buffer;\n return getStringImpl(new Uint32Array(buffer), new Uint16Array(buffer), ptr);\n }\n\n // add common imports used by stdlib for convenience\n var env = (imports.env = imports.env || {});\n env.abort = env.abort || function abort(mesg, file, line, colm) {\n var memory = baseModule.memory || env.memory; // prefer exported, otherwise try imported\n throw Error(\"abort: \" + getString(memory, mesg) + \" at \" + getString(memory, file) + \":\" + line + \":\" + colm);\n }\n env.trace = env.trace || function trace(mesg, n) {\n var memory = baseModule.memory || env.memory;\n console.log(\"trace: \" + getString(memory, mesg) + (n ? \" \" : \"\") + Array.prototype.slice.call(arguments, 2, 2 + n).join(\", \"));\n }\n imports.Math = imports.Math || Math;\n imports.Date = imports.Date || Date;\n\n return baseModule;\n}\n\n/** Prepares the final module once instantiation is complete. */\nfunction postInstantiate(baseModule, instance) {\n var rawExports = instance.exports;\n var memory = rawExports.memory;\n var memory_allocate = rawExports[\"memory.allocate\"];\n var memory_fill = rawExports[\"memory.fill\"];\n var memory_free = rawExports[\"memory.free\"];\n var table = rawExports.table;\n var setargc = rawExports._setargc || function() {};\n\n // Provide views for all sorts of basic values\n var buffer, I8, U8, I16, U16, I32, U32, F32, F64, I64, U64;\n\n /** Updates memory views if memory has grown meanwhile. */\n function checkMem() {\n // see: https://github.com/WebAssembly/design/issues/1210\n if (buffer !== memory.buffer) {\n buffer = memory.buffer;\n I8 = new Int8Array(buffer);\n U8 = new Uint8Array(buffer);\n I16 = new Int16Array(buffer);\n U16 = new Uint16Array(buffer);\n I32 = new Int32Array(buffer);\n U32 = new Uint32Array(buffer);\n if (hasBigInt64) {\n I64 = new BigInt64Array(buffer);\n U64 = new BigUint64Array(buffer);\n }\n F32 = new Float32Array(buffer);\n F64 = new Float64Array(buffer);\n }\n }\n checkMem();\n\n /** Allocates a new string in the module's memory and returns its pointer. */\n function newString(str) {\n var dataLength = str.length;\n var ptr = memory_allocate(4 + (dataLength << 1));\n var dataOffset = (4 + ptr) >>> 1;\n checkMem();\n U32[ptr >>> 2] = dataLength;\n for (let i = 0; i < dataLength; ++i) U16[dataOffset + i] = str.charCodeAt(i);\n return ptr;\n }\n\n baseModule.newString = newString;\n\n /** Gets a string from the module's memory by its pointer. */\n function getString(ptr) {\n checkMem();\n return getStringImpl(U32, U16, ptr);\n }\n\n baseModule.getString = getString;\n\n function computeBufferSize(byteLength) {\n const HEADER_SIZE = 8;\n return 1 << (32 - Math.clz32(byteLength + HEADER_SIZE - 1));\n }\n\n /** Creates a new typed array in the module's memory and returns its pointer. */\n function newArray(view, length, unsafe) {\n var ctor = view.constructor;\n if (ctor === Function) { // TypedArray constructor created in memory\n ctor = view;\n view = null;\n } else { // TypedArray instance copied into memory\n if (length === undefined) length = view.length;\n }\n var elementSize = ctor.BYTES_PER_ELEMENT;\n if (!elementSize) throw Error(\"not a typed array\");\n var byteLength = elementSize * length;\n var ptr = memory_allocate(12); // TypedArray header\n var buf = memory_allocate(computeBufferSize(byteLength)); // ArrayBuffer\n checkMem();\n U32[ ptr >>> 2] = buf; // .buffer\n U32[(ptr + 4) >>> 2] = 0; // .byteOffset\n U32[(ptr + 8) >>> 2] = byteLength; // .byteLength\n U32[ buf >>> 2] = byteLength; // .byteLength\n U32[(buf + 4) >>> 2] = 0; // 0\n if (view) {\n new ctor(buffer, buf + 8, length).set(view);\n if (view.length < length && !unsafe) {\n let setLength = elementSize * view.length;\n memory_fill(buf + 8 + setLength, 0, byteLength - setLength);\n }\n } else if (!unsafe) {\n memory_fill(buf + 8, 0, byteLength);\n }\n return ptr;\n }\n\n baseModule.newArray = newArray;\n\n /** Gets a view on a typed array in the module's memory by its pointer. */\n function getArray(ctor, ptr) {\n var elementSize = ctor.BYTES_PER_ELEMENT;\n if (!elementSize) throw Error(\"not a typed array\");\n checkMem();\n var buf = U32[ ptr >>> 2];\n var byteOffset = U32[(ptr + 4) >>> 2];\n var byteLength = U32[(ptr + 8) >>> 2];\n return new ctor(buffer, buf + 8 + byteOffset, (byteLength - byteOffset) / elementSize);\n }\n\n baseModule.getArray = getArray;\n\n /** Frees a typed array in the module's memory. Must not be accessed anymore afterwards. */\n function freeArray(ptr) {\n checkMem();\n var buf = U32[ptr >>> 2];\n memory_free(buf);\n memory_free(ptr);\n }\n\n baseModule.freeArray = freeArray;\n\n /**\n * Creates a new function in the module's table and returns its pointer. Note that only actual\n * WebAssembly functions, i.e. as exported by the module, are supported.\n */\n function newFunction(fn) {\n if (typeof fn.original === \"function\") fn = fn.original;\n var index = table.length;\n table.grow(1);\n table.set(index, fn);\n return index;\n }\n\n baseModule.newFunction = newFunction;\n\n /** Gets a function by its pointer. */\n function getFunction(ptr) {\n return wrapFunction(table.get(ptr), setargc);\n }\n\n baseModule.getFunction = getFunction;\n\n // Pull basic exports to baseModule so code in preInstantiate can use them\n baseModule.memory = baseModule.memory || memory;\n baseModule.table = baseModule.table || table;\n\n // Demangle exports and provide the usual utility on the prototype\n return demangle(rawExports, Object.defineProperties(baseModule, {\n I8: { get: function() { checkMem(); return I8; } },\n U8: { get: function() { checkMem(); return U8; } },\n I16: { get: function() { checkMem(); return I16; } },\n U16: { get: function() { checkMem(); return U16; } },\n I32: { get: function() { checkMem(); return I32; } },\n U32: { get: function() { checkMem(); return U32; } },\n I64: { get: function() { checkMem(); return I64; } },\n U64: { get: function() { checkMem(); return U64; } },\n F32: { get: function() { checkMem(); return F32; } },\n F64: { get: function() { checkMem(); return F64; } }\n }));\n}\n\n/** Wraps a WebAssembly function while also taking care of variable arguments. */\nfunction wrapFunction(fn, setargc) {\n var wrap = (...args) => {\n setargc(args.length);\n return fn(...args);\n }\n // adding a function to the table with `newFunction` is limited to actual WebAssembly functions,\n // hence we can't use the wrapper and instead need to provide a reference to the original\n wrap.original = fn;\n return wrap;\n}\n\n/** Instantiates an AssemblyScript module using the specified imports. */\nfunction instantiate(module, imports) {\n return postInstantiate(\n preInstantiate(imports || (imports = {})),\n new WebAssembly.Instance(module, imports)\n );\n}\n\nexports.instantiate = instantiate;\n\n/** Instantiates an AssemblyScript module from a buffer using the specified imports. */\nfunction instantiateBuffer(buffer, imports) {\n return instantiate(new WebAssembly.Module(buffer), imports);\n}\n\nexports.instantiateBuffer = instantiateBuffer;\n\n/** Instantiates an AssemblyScript module from a response using the specified imports. */\nasync function instantiateStreaming(response, imports) {\n return postInstantiate(\n preInstantiate(imports || (imports = {})),\n (await WebAssembly.instantiateStreaming(response, imports)).instance\n );\n}\n\nexports.instantiateStreaming = instantiateStreaming;\n\n/** Demangles an AssemblyScript module's exports to a friendly object structure. */\nfunction demangle(exports, baseModule) {\n var module = baseModule ? Object.create(baseModule) : {};\n var setargc = exports._setargc || function() {};\n function hasOwnProperty(elem, prop) {\n return Object.prototype.hasOwnProperty.call(elem, prop);\n }\n for (let internalName in exports) {\n if (!hasOwnProperty(exports, internalName)) continue;\n let elem = exports[internalName];\n let parts = internalName.split(\".\");\n let curr = module;\n while (parts.length > 1) {\n let part = parts.shift();\n if (!hasOwnProperty(curr, part)) curr[part] = {};\n curr = curr[part];\n }\n let name = parts[0];\n let hash = name.indexOf(\"#\");\n if (hash >= 0) {\n let className = name.substring(0, hash);\n let classElem = curr[className];\n if (typeof classElem === \"undefined\" || !classElem.prototype) {\n let ctor = function(...args) {\n return ctor.wrap(ctor.prototype.constructor(0, ...args));\n };\n ctor.prototype = {};\n ctor.wrap = function(thisValue) {\n return Object.create(ctor.prototype, { [thisPtr]: { value: thisValue, writable: false } });\n };\n if (classElem) Object.getOwnPropertyNames(classElem).forEach(name =>\n Object.defineProperty(ctor, name, Object.getOwnPropertyDescriptor(classElem, name))\n );\n curr[className] = ctor;\n }\n name = name.substring(hash + 1);\n curr = curr[className].prototype;\n if (/^(get|set):/.test(name)) {\n if (!hasOwnProperty(curr, name = name.substring(4))) {\n let getter = exports[internalName.replace(\"set:\", \"get:\")];\n let setter = exports[internalName.replace(\"get:\", \"set:\")];\n Object.defineProperty(curr, name, {\n get: function() { return getter(this[thisPtr]); },\n set: function(value) { setter(this[thisPtr], value); },\n enumerable: true\n });\n }\n } else {\n if (name === 'constructor') {\n curr[name] = wrapFunction(elem, setargc);\n } else { // for methods\n Object.defineProperty(curr, name, {\n value: function (...args) {\n setargc(args.length);\n return elem(this[thisPtr], ...args);\n }\n });\n }\n }\n } else {\n if (/^(get|set):/.test(name)) {\n if (!hasOwnProperty(curr, name = name.substring(4))) {\n Object.defineProperty(curr, name, {\n get: exports[internalName.replace(\"set:\", \"get:\")],\n set: exports[internalName.replace(\"get:\", \"set:\")],\n enumerable: true\n });\n }\n } else if (typeof elem === \"function\") {\n curr[name] = wrapFunction(elem, setargc);\n } else {\n curr[name] = elem;\n }\n }\n }\n\n return module;\n}\n\nexports.demangle = demangle;\n","'use strict'\n\n// from: https://github.com/ipfs/go-ipfs/blob/master/exchange/bitswap/message/pb/message.proto\n\nmodule.exports = `\n message Message {\n message Wantlist {\n message Entry {\n // changed from string to bytes, it makes a difference in JavaScript\n optional bytes block = 1; // the block cid (cidV0 in bitswap 1.0.0, cidV1 in bitswap 1.1.0)\n optional int32 priority = 2; // the priority (normalized). default to 1\n optional bool cancel = 3; // whether this revokes an entry\n }\n\n repeated Entry entries = 1; // a list of wantlist entries\n optional bool full = 2; // whether this is the full wantlist. default to false\n }\n\n message Block {\n optional bytes prefix = 1; // CID prefix (cid version, multicodec and multihash prefix (type + length)\n optional bytes data = 2;\n }\n\n optional Wantlist wantlist = 1;\n repeated bytes blocks = 2; // used to send Blocks in bitswap 1.0.0\n repeated Block payload = 3; // used to send Blocks in bitswap 1.1.0\n }\n`\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = parallelLimit;\n\nvar _eachOf = require('./eachOf');\n\nvar _eachOf2 = _interopRequireDefault(_eachOf);\n\nvar _parallel = require('./internal/parallel');\n\nvar _parallel2 = _interopRequireDefault(_parallel);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Run the `tasks` collection of functions in parallel, without waiting until\n * the previous function has completed. If any of the functions pass an error to\n * its callback, the main `callback` is immediately called with the value of the\n * error. Once the `tasks` have completed, the results are passed to the final\n * `callback` as an array.\n *\n * **Note:** `parallel` is about kicking-off I/O tasks in parallel, not about\n * parallel execution of code. If your tasks do not use any timers or perform\n * any I/O, they will actually be executed in series. Any synchronous setup\n * sections for each task will happen one after the other. JavaScript remains\n * single-threaded.\n *\n * **Hint:** Use [`reflect`]{@link module:Utils.reflect} to continue the\n * execution of other tasks when a task fails.\n *\n * It is also possible to use an object instead of an array. Each property will\n * be run as a function and the results will be passed to the final `callback`\n * as an object instead of an array. This can be a more readable way of handling\n * results from {@link async.parallel}.\n *\n * @name parallel\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {Array|Iterable|Object} tasks - A collection of\n * [async functions]{@link AsyncFunction} to run.\n * Each async function can complete with any number of optional `result` values.\n * @param {Function} [callback] - An optional callback to run once all the\n * functions have completed successfully. This function gets a results array\n * (or object) containing all the result arguments passed to the task callbacks.\n * Invoked with (err, results).\n *\n * @example\n * async.parallel([\n * function(callback) {\n * setTimeout(function() {\n * callback(null, 'one');\n * }, 200);\n * },\n * function(callback) {\n * setTimeout(function() {\n * callback(null, 'two');\n * }, 100);\n * }\n * ],\n * // optional callback\n * function(err, results) {\n * // the results array will equal ['one','two'] even though\n * // the second function had a shorter timeout.\n * });\n *\n * // an example using an object instead of an array\n * async.parallel({\n * one: function(callback) {\n * setTimeout(function() {\n * callback(null, 1);\n * }, 200);\n * },\n * two: function(callback) {\n * setTimeout(function() {\n * callback(null, 2);\n * }, 100);\n * }\n * }, function(err, results) {\n * // results is now equals to: {one: 1, two: 2}\n * });\n */\nfunction parallelLimit(tasks, callback) {\n (0, _parallel2.default)(_eachOf2.default, tasks, callback);\n}\nmodule.exports = exports['default'];","export const version = \"providers/5.0.0-beta.153\";\n","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","'use strict';\n\nconst inherits = require('inherits');\n\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n const state = this._reporterState;\n\n return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n const state = this._reporterState;\n\n state.obj = data.obj;\n state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n const state = this._reporterState;\n\n state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n const state = this._reporterState;\n\n this.exitKey(index);\n if (state.obj !== null)\n state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n const state = this._reporterState;\n\n const prev = state.obj;\n state.obj = {};\n return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n const state = this._reporterState;\n\n const now = state.obj;\n state.obj = prev;\n return now;\n};\n\nReporter.prototype.error = function error(msg) {\n let err;\n const state = this._reporterState;\n\n const inherited = msg instanceof ReporterError;\n if (inherited) {\n err = msg;\n } else {\n err = new ReporterError(state.path.map(function(elem) {\n return '[' + JSON.stringify(elem) + ']';\n }).join(''), msg.message || msg, msg.stack);\n }\n\n if (!state.options.partial)\n throw err;\n\n if (!inherited)\n state.errors.push(err);\n\n return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n const state = this._reporterState;\n if (!state.options.partial)\n return result;\n\n return {\n result: this.isError(result) ? null : result,\n errors: state.errors\n };\n};\n\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n}\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, ReporterError);\n\n if (!this.stack) {\n try {\n // IE only adds stack when thrown\n throw new Error(this.message);\n } catch (e) {\n this.stack = e.stack;\n }\n }\n return this;\n};\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// This gets overridden by rollup\nvar exportWordlist = false;\nvar hash_1 = require(\"@ethersproject/hash\");\nvar properties_1 = require(\"@ethersproject/properties\");\nvar logger_1 = require(\"@ethersproject/logger\");\nvar _version_1 = require(\"./_version\");\nexports.logger = new logger_1.Logger(_version_1.version);\nvar Wordlist = /** @class */ (function () {\n function Wordlist(locale) {\n var _newTarget = this.constructor;\n exports.logger.checkAbstract(_newTarget, Wordlist);\n properties_1.defineReadOnly(this, \"locale\", locale);\n }\n // Subclasses may override this\n Wordlist.prototype.split = function (mnemonic) {\n return mnemonic.toLowerCase().split(/ +/g);\n };\n // Subclasses may override this\n Wordlist.prototype.join = function (words) {\n return words.join(\" \");\n };\n Wordlist.check = function (wordlist) {\n var words = [];\n for (var i = 0; i < 2048; i++) {\n var word = wordlist.getWord(i);\n if (i !== wordlist.getWordIndex(word)) {\n return \"0x\";\n }\n words.push(word);\n }\n return hash_1.id(words.join(\"\\n\") + \"\\n\");\n };\n Wordlist.register = function (lang, name) {\n if (!name) {\n name = lang.locale;\n }\n if (exportWordlist) {\n try {\n var anyGlobal = window;\n if (anyGlobal._ethers && anyGlobal._ethers.wordlists) {\n if (!anyGlobal._ethers.wordlists[name]) {\n properties_1.defineReadOnly(anyGlobal._ethers.wordlists, name, lang);\n }\n }\n }\n catch (error) { }\n }\n };\n return Wordlist;\n}());\nexports.Wordlist = Wordlist;\n","'use strict'\nmodule.exports = {\n keys: require('./keys'),\n once: require('./once'),\n values: require('./values'),\n count: require('./count'),\n infinite: require('./infinite'),\n empty: require('./empty'),\n error: require('./error')\n}\n","'use strict';\n\nmodule.exports = (string, count = 1, options) => {\n\toptions = {\n\t\tindent: ' ',\n\t\tincludeEmptyLines: false,\n\t\t...options\n\t};\n\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(\n\t\t\t`Expected \\`input\\` to be a \\`string\\`, got \\`${typeof string}\\``\n\t\t);\n\t}\n\n\tif (typeof count !== 'number') {\n\t\tthrow new TypeError(\n\t\t\t`Expected \\`count\\` to be a \\`number\\`, got \\`${typeof count}\\``\n\t\t);\n\t}\n\n\tif (typeof options.indent !== 'string') {\n\t\tthrow new TypeError(\n\t\t\t`Expected \\`options.indent\\` to be a \\`string\\`, got \\`${typeof options.indent}\\``\n\t\t);\n\t}\n\n\tif (count === 0) {\n\t\treturn string;\n\t}\n\n\tconst regex = options.includeEmptyLines ? /^/gm : /^(?!\\s*$)/gm;\n\n\treturn string.replace(regex, options.indent.repeat(count));\n};\n","'use strict';\nconst isOptionObject = require('is-plain-obj');\n\nconst {hasOwnProperty} = Object.prototype;\nconst {propertyIsEnumerable} = Object;\nconst defineProperty = (obj, name, value) => Object.defineProperty(obj, name, {\n\tvalue,\n\twritable: true,\n\tenumerable: true,\n\tconfigurable: true\n});\n\nconst globalThis = this;\nconst defaultMergeOpts = {\n\tconcatArrays: false,\n\tignoreUndefined: false\n};\n\nconst getEnumerableOwnPropertyKeys = value => {\n\tconst keys = [];\n\n\tfor (const key in value) {\n\t\tif (hasOwnProperty.call(value, key)) {\n\t\t\tkeys.push(key);\n\t\t}\n\t}\n\n\t/* istanbul ignore else */\n\tif (Object.getOwnPropertySymbols) {\n\t\tconst symbols = Object.getOwnPropertySymbols(value);\n\n\t\tfor (const symbol of symbols) {\n\t\t\tif (propertyIsEnumerable.call(value, symbol)) {\n\t\t\t\tkeys.push(symbol);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn keys;\n};\n\nfunction clone(value) {\n\tif (Array.isArray(value)) {\n\t\treturn cloneArray(value);\n\t}\n\n\tif (isOptionObject(value)) {\n\t\treturn cloneOptionObject(value);\n\t}\n\n\treturn value;\n}\n\nfunction cloneArray(array) {\n\tconst result = array.slice(0, 0);\n\n\tgetEnumerableOwnPropertyKeys(array).forEach(key => {\n\t\tdefineProperty(result, key, clone(array[key]));\n\t});\n\n\treturn result;\n}\n\nfunction cloneOptionObject(obj) {\n\tconst result = Object.getPrototypeOf(obj) === null ? Object.create(null) : {};\n\n\tgetEnumerableOwnPropertyKeys(obj).forEach(key => {\n\t\tdefineProperty(result, key, clone(obj[key]));\n\t});\n\n\treturn result;\n}\n\n/**\n * @param {*} merged already cloned\n * @param {*} source something to merge\n * @param {string[]} keys keys to merge\n * @param {Object} config Config Object\n * @returns {*} cloned Object\n */\nconst mergeKeys = (merged, source, keys, config) => {\n\tkeys.forEach(key => {\n\t\tif (typeof source[key] === 'undefined' && config.ignoreUndefined) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Do not recurse into prototype chain of merged\n\t\tif (key in merged && merged[key] !== Object.getPrototypeOf(merged)) {\n\t\t\tdefineProperty(merged, key, merge(merged[key], source[key], config));\n\t\t} else {\n\t\t\tdefineProperty(merged, key, clone(source[key]));\n\t\t}\n\t});\n\n\treturn merged;\n};\n\n/**\n * @param {*} merged already cloned\n * @param {*} source something to merge\n * @param {Object} config Config Object\n * @returns {*} cloned Object\n *\n * see [Array.prototype.concat ( ...arguments )](http://www.ecma-international.org/ecma-262/6.0/#sec-array.prototype.concat)\n */\nconst concatArrays = (merged, source, config) => {\n\tlet result = merged.slice(0, 0);\n\tlet resultIndex = 0;\n\n\t[merged, source].forEach(array => {\n\t\tconst indices = [];\n\n\t\t// `result.concat(array)` with cloning\n\t\tfor (let k = 0; k < array.length; k++) {\n\t\t\tif (!hasOwnProperty.call(array, k)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tindices.push(String(k));\n\n\t\t\tif (array === merged) {\n\t\t\t\t// Already cloned\n\t\t\t\tdefineProperty(result, resultIndex++, array[k]);\n\t\t\t} else {\n\t\t\t\tdefineProperty(result, resultIndex++, clone(array[k]));\n\t\t\t}\n\t\t}\n\n\t\t// Merge non-index keys\n\t\tresult = mergeKeys(result, array, getEnumerableOwnPropertyKeys(array).filter(key => !indices.includes(key)), config);\n\t});\n\n\treturn result;\n};\n\n/**\n * @param {*} merged already cloned\n * @param {*} source something to merge\n * @param {Object} config Config Object\n * @returns {*} cloned Object\n */\nfunction merge(merged, source, config) {\n\tif (config.concatArrays && Array.isArray(merged) && Array.isArray(source)) {\n\t\treturn concatArrays(merged, source, config);\n\t}\n\n\tif (!isOptionObject(source) || !isOptionObject(merged)) {\n\t\treturn clone(source);\n\t}\n\n\treturn mergeKeys(merged, source, getEnumerableOwnPropertyKeys(source), config);\n}\n\nmodule.exports = function (...options) {\n\tconst config = merge(clone(defaultMergeOpts), (this !== globalThis && this) || {}, defaultMergeOpts);\n\tlet merged = {_: {}};\n\n\tfor (const option of options) {\n\t\tif (option === undefined) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!isOptionObject(option)) {\n\t\t\tthrow new TypeError('`' + option + '` is not an Option Object');\n\t\t}\n\n\t\tmerged = merge(merged, {_: option}, config);\n\t}\n\n\treturn merged._;\n};\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\nfunction log(...args) {\n\t// This hackery is required for IE8/9, where\n\t// the `console.log` function doesn't have 'apply'\n\treturn typeof console === 'object' &&\n\t\tconsole.log &&\n\t\tconsole.log(...args);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","'use strict'\n\nconst log = require('debug')('ipfs:mfs:utils:update-tree')\nconst addLink = require('./add-link')\n\nconst defaultOptions = {\n shardSplitThreshold: 1000\n}\n\n// loop backwards through the trail, replacing links of all components to update CIDs\nconst updateTree = async (context, trail, options) => {\n options = Object.assign({}, defaultOptions, options)\n\n log('Trail', trail)\n trail = trail.slice().reverse()\n\n let index = 0\n let child\n\n for await (const node of context.ipld.getMany(trail.map(node => node.cid))) {\n const cid = trail[index].cid\n const name = trail[index].name\n index++\n\n if (!child) {\n child = {\n cid,\n name,\n size: node.size\n }\n\n continue\n }\n\n const result = await addLink(context, {\n parent: node,\n name: child.name,\n cid: child.cid,\n size: child.size,\n flush: options.flush,\n shardSplitThreshold: options.shardSplitThreshold,\n format: options.format,\n hashAlg: options.hashAlg,\n cidVersion: options.cidVersion\n })\n\n // new child for next loop\n child = {\n cid: result.cid,\n name,\n size: result.node.size\n }\n }\n\n log(`Final CID ${child.cid}`)\n\n return child.cid\n}\n\nmodule.exports = updateTree\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n return debug;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (var i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n","'use strict'\n\nconst path = require('path')\nconst os = require('os')\nconst uuid = require('uuid/v4')\n\nexports.filter = (iterable, filterer) => {\n return (async function * () {\n for await (const value of iterable) {\n const keep = await filterer(value)\n if (!keep) continue\n yield value\n }\n })()\n}\n\n// Not just sort, because the sorter is given all the values and should return\n// them all sorted\nexports.sortAll = (iterable, sorter) => {\n return (async function * () {\n let values = []\n for await (const value of iterable) values.push(value)\n values = await sorter(values)\n for (const value of values) yield value\n })()\n}\n\nexports.take = (iterable, n) => {\n return (async function * () {\n if (n <= 0) return\n let i = 0\n for await (const value of iterable) {\n yield value\n i++\n if (i >= n) return\n }\n })()\n}\n\nexports.map = (iterable, mapper) => {\n return (async function * () {\n for await (const value of iterable) {\n yield mapper(value)\n }\n })()\n}\n\nexports.replaceStartWith = function (s, r) {\n const matcher = new RegExp('^' + r)\n return s.replace(matcher, '')\n}\n\nexports.tmpdir = () => {\n return path.join(os.tmpdir(), uuid())\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst lower_bound_1 = require(\"./lower-bound\");\nclass PriorityQueue {\n constructor() {\n Object.defineProperty(this, \"_queue\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n }\n enqueue(run, options) {\n options = Object.assign({ priority: 0 }, options);\n const element = {\n priority: options.priority,\n run\n };\n if (this.size && this._queue[this.size - 1].priority >= options.priority) {\n this._queue.push(element);\n return;\n }\n const index = lower_bound_1.default(this._queue, element, (a, b) => b.priority - a.priority);\n this._queue.splice(index, 0, element);\n }\n dequeue() {\n const item = this._queue.shift();\n return item && item.run;\n }\n get size() {\n return this._queue.length;\n }\n}\nexports.default = PriorityQueue;\n","'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","var xor = require('buffer-xor')\nvar Buffer = require('safe-buffer').Buffer\nvar incr32 = require('../incr32')\n\nfunction getBlock (self) {\n var out = self._cipher.encryptBlockRaw(self._prev)\n incr32(self._prev)\n return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize)\n var start = self._cache.length\n self._cache = Buffer.concat([\n self._cache,\n Buffer.allocUnsafe(chunkNum * blockSize)\n ])\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self)\n var offset = start + i * blockSize\n self._cache.writeUInt32BE(out[0], offset + 0)\n self._cache.writeUInt32BE(out[1], offset + 4)\n self._cache.writeUInt32BE(out[2], offset + 8)\n self._cache.writeUInt32BE(out[3], offset + 12)\n }\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","'use strict'\n\nconst promisify = require('promisify-es6')\nconst streamToValueWithTransformer = require('../utils/stream-to-value-with-transformer')\n\nconst multiaddr = require('multiaddr')\nconst PeerId = require('peer-id')\nconst PeerInfo = require('peer-info')\n\nmodule.exports = (send) => {\n return promisify((cid, opts, callback) => {\n if (typeof opts === 'function' && !callback) {\n callback = opts\n opts = {}\n }\n\n // opts is the real callback --\n // 'callback' is being injected by promisify\n if (typeof opts === 'function' && typeof callback === 'function') {\n callback = opts\n opts = {}\n }\n\n const handleResult = (res, callback) => {\n // Inconsistent return values in the browser vs node\n if (!Array.isArray(res)) {\n res = [res]\n }\n\n let responses = []\n res.forEach(result => {\n // 4 = Provider\n if (result.Type !== 4) return\n result.Responses.forEach(response => {\n const peerInfo = new PeerInfo(PeerId.createFromB58String(response.ID))\n\n if (response.Addrs) {\n response.Addrs.forEach((addr) => {\n const ma = multiaddr(addr)\n peerInfo.multiaddrs.add(ma)\n })\n }\n\n responses.push(peerInfo)\n })\n })\n\n callback(null, responses)\n }\n\n send({\n path: 'dht/findprovs',\n args: cid.toString(),\n qs: opts\n }, (err, result) => {\n if (err) {\n return callback(err)\n }\n\n streamToValueWithTransformer(result, handleResult, callback)\n })\n })\n}\n","// originally pulled out of simple-peer\n\nmodule.exports = function getBrowserRTC () {\n if (typeof window === 'undefined') return null\n var wrtc = {\n RTCPeerConnection: window.RTCPeerConnection || window.mozRTCPeerConnection ||\n window.webkitRTCPeerConnection,\n RTCSessionDescription: window.RTCSessionDescription ||\n window.mozRTCSessionDescription || window.webkitRTCSessionDescription,\n RTCIceCandidate: window.RTCIceCandidate || window.mozRTCIceCandidate ||\n window.webkitRTCIceCandidate\n }\n if (!wrtc.RTCPeerConnection) return null\n return wrtc\n}\n","/* @flow */\n'use strict'\n\n/* :: import type {Batch, Query, QueryResult, Callback} from './' */\n\nconst { filter, sortAll, take, map } = require('./utils')\nconst Key = require('./key')\n\n// Errors\nconst Errors = require('./errors')\n\nclass MemoryDatastore {\n /* :: data: {[key: string]: Buffer} */\n\n constructor () {\n this.data = {}\n }\n\n async open () /* : Promise */ {}\n\n async put (key /* : Key */, val /* : Buffer */) /* : Promise */ {\n this.data[key.toString()] = val\n }\n\n async get (key /* : Key */) /* : Promise */ {\n const exists = await this.has(key)\n if (!exists) throw Errors.notFoundError()\n return this.data[key.toString()]\n }\n\n async has (key /* : Key */) /* : Promise */ {\n return this.data[key.toString()] !== undefined\n }\n\n async delete (key /* : Key */) /* : Promise */ {\n delete this.data[key.toString()]\n }\n\n batch () /* : Batch */ {\n let puts = []\n let dels = []\n\n return {\n put (key /* : Key */, value /* : Buffer */) /* : void */ {\n puts.push([key, value])\n },\n delete (key /* : Key */) /* : void */ {\n dels.push(key)\n },\n commit: async () /* : Promise */ => {\n puts.forEach(v => {\n this.data[v[0].toString()] = v[1]\n })\n puts = []\n\n dels.forEach(key => {\n delete this.data[key.toString()]\n })\n dels = []\n }\n }\n }\n\n query (q /* : Query */) /* : Iterator */ {\n let it = Object.entries(this.data)\n\n it = map(it, entry => ({ key: new Key(entry[0]), value: entry[1] }))\n\n if (q.prefix != null) {\n it = filter(it, e => e.key.toString().startsWith(q.prefix))\n }\n\n if (Array.isArray(q.filters)) {\n it = q.filters.reduce((it, f) => filter(it, f), it)\n }\n\n if (Array.isArray(q.orders)) {\n it = q.orders.reduce((it, f) => sortAll(it, f), it)\n }\n\n if (q.offset != null) {\n let i = 0\n it = filter(it, () => i++ >= q.offset)\n }\n\n if (q.limit != null) {\n it = take(it, q.limit)\n }\n\n if (q.keysOnly === true) {\n it = map(it, e => ({ key: e.key }))\n }\n\n return it\n }\n\n async close () /* : Promise */ {}\n}\n\nmodule.exports = MemoryDatastore\n","var AbstractIterator = require('abstract-leveldown').AbstractIterator\nvar inherits = require('inherits')\n\nfunction DeferredIterator (db, options) {\n AbstractIterator.call(this, db)\n\n this._options = options\n this._iterator = null\n this._operations = []\n}\n\ninherits(DeferredIterator, AbstractIterator)\n\nDeferredIterator.prototype.setDb = function (db) {\n var it = this._iterator = db.iterator(this._options)\n this._operations.forEach(function (op) {\n it[op.method].apply(it, op.args)\n })\n}\n\nDeferredIterator.prototype._operation = function (method, args) {\n if (this._iterator) return this._iterator[method].apply(this._iterator, args)\n this._operations.push({ method: method, args: args })\n}\n\n'next end'.split(' ').forEach(function (m) {\n DeferredIterator.prototype['_' + m] = function () {\n this._operation(m, arguments)\n }\n})\n\n// Must defer seek() rather than _seek() because it requires db._serializeKey to be available\nDeferredIterator.prototype.seek = function () {\n this._operation('seek', arguments)\n}\n\nmodule.exports = DeferredIterator\n","'use strict';\n\nfunction createError(msg, code, props) {\n var err = msg instanceof Error ? msg : new Error(msg);\n var key;\n\n if (typeof code === 'object') {\n props = code;\n } else if (code != null) {\n err.code = code;\n }\n\n if (props) {\n for (key in props) {\n err[key] = props[key];\n }\n }\n\n return err;\n}\n\nmodule.exports = createError;\n","'use strict';\n\nconst pFinally = require('p-finally');\n\nclass TimeoutError extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = 'TimeoutError';\n\t}\n}\n\nconst pTimeout = (promise, milliseconds, fallback) => new Promise((resolve, reject) => {\n\tif (typeof milliseconds !== 'number' || milliseconds < 0) {\n\t\tthrow new TypeError('Expected `milliseconds` to be a positive number');\n\t}\n\n\tif (milliseconds === Infinity) {\n\t\tresolve(promise);\n\t\treturn;\n\t}\n\n\tconst timer = setTimeout(() => {\n\t\tif (typeof fallback === 'function') {\n\t\t\ttry {\n\t\t\t\tresolve(fallback());\n\t\t\t} catch (error) {\n\t\t\t\treject(error);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst message = typeof fallback === 'string' ? fallback : `Promise timed out after ${milliseconds} milliseconds`;\n\t\tconst timeoutError = fallback instanceof Error ? fallback : new TimeoutError(message);\n\n\t\tif (typeof promise.cancel === 'function') {\n\t\t\tpromise.cancel();\n\t\t}\n\n\t\treject(timeoutError);\n\t}, milliseconds);\n\n\t// TODO: Use native `finally` keyword when targeting Node.js 10\n\tpFinally(\n\t\t// eslint-disable-next-line promise/prefer-await-to-then\n\t\tpromise.then(resolve, reject),\n\t\t() => {\n\t\t\tclearTimeout(timer);\n\t\t}\n\t);\n});\n\nmodule.exports = pTimeout;\n// TODO: Remove this for the next major release\nmodule.exports.default = pTimeout;\n\nmodule.exports.TimeoutError = TimeoutError;\n","/* global IDBKeyRange */\n\n'use strict'\n\nvar inherits = require('inherits')\nvar AbstractIterator = require('abstract-leveldown').AbstractIterator\nvar ltgt = require('ltgt')\nvar mixedToBuffer = require('./util/mixed-to-buffer')\nvar setImmediate = require('./util/immediate')\nvar noop = function () {}\n\nmodule.exports = Iterator\n\nfunction Iterator (db, location, options) {\n AbstractIterator.call(this, db)\n\n this._limit = options.limit\n this._count = 0\n this._callback = null\n this._cache = []\n this._completed = false\n this._aborted = false\n this._error = null\n this._transaction = null\n\n this._keyAsBuffer = options.keyAsBuffer\n this._valueAsBuffer = options.valueAsBuffer\n\n if (this._limit === 0) {\n this._completed = true\n return\n }\n\n try {\n var keyRange = this.createKeyRange(options)\n } catch (e) {\n // The lower key is greater than the upper key.\n // IndexedDB throws an error, but we'll just return 0 results.\n this._completed = true\n return\n }\n\n this.createIterator(location, keyRange, options.reverse)\n}\n\ninherits(Iterator, AbstractIterator)\n\nIterator.prototype.createKeyRange = function (options) {\n var lower = ltgt.lowerBound(options)\n var upper = ltgt.upperBound(options)\n var lowerOpen = ltgt.lowerBoundExclusive(options)\n var upperOpen = ltgt.upperBoundExclusive(options)\n\n if (lower !== undefined && upper !== undefined) {\n return IDBKeyRange.bound(lower, upper, lowerOpen, upperOpen)\n } else if (lower !== undefined) {\n return IDBKeyRange.lowerBound(lower, lowerOpen)\n } else if (upper !== undefined) {\n return IDBKeyRange.upperBound(upper, upperOpen)\n } else {\n return null\n }\n}\n\nIterator.prototype.createIterator = function (location, keyRange, reverse) {\n var self = this\n var transaction = this.db.db.transaction([location], 'readonly')\n var store = transaction.objectStore(location)\n var req = store.openCursor(keyRange, reverse ? 'prev' : 'next')\n\n req.onsuccess = function (ev) {\n var cursor = ev.target.result\n if (cursor) self.onItem(cursor)\n }\n\n this._transaction = transaction\n\n // If an error occurs (on the request), the transaction will abort.\n transaction.onabort = function () {\n self.onAbort(self._transaction.error || new Error('aborted by user'))\n }\n\n transaction.oncomplete = function () {\n self.onComplete()\n }\n}\n\nIterator.prototype.onItem = function (cursor) {\n this._cache.push(cursor.key, cursor.value)\n\n if (this._limit <= 0 || ++this._count < this._limit) {\n cursor['continue']()\n }\n\n this.maybeNext()\n}\n\nIterator.prototype.onAbort = function (err) {\n this._aborted = true\n this._error = err\n this.maybeNext()\n}\n\nIterator.prototype.onComplete = function () {\n this._completed = true\n this.maybeNext()\n}\n\nIterator.prototype.maybeNext = function () {\n if (this._callback) {\n this._next(this._callback)\n this._callback = null\n }\n}\n\nIterator.prototype._next = function (callback) {\n if (this._aborted) {\n // The error should be picked up by either next() or end().\n var err = this._error\n this._error = null\n\n setImmediate(function () {\n callback(err)\n })\n } else if (this._cache.length > 0) {\n var key = this._cache.shift()\n var value = this._cache.shift()\n\n if (this._keyAsBuffer) key = mixedToBuffer(key)\n if (this._valueAsBuffer) value = mixedToBuffer(value)\n\n setImmediate(function () {\n callback(null, key, value)\n })\n } else if (this._completed) {\n setImmediate(callback)\n } else {\n this._callback = callback\n }\n}\n\nIterator.prototype._end = function (callback) {\n if (this._aborted || this._completed) {\n var err = this._error\n\n setImmediate(function () {\n callback(err)\n })\n\n return\n }\n\n // Don't advance the cursor anymore, and the transaction will complete\n // on its own in the next tick. This approach is much cleaner than calling\n // transaction.abort() with its unpredictable event order.\n this.onItem = noop\n this.onAbort = callback\n this.onComplete = callback\n}\n","'use strict'\n\nconst { Buffer } = require('buffer')\n\nconst crypto = self.crypto || self.msCrypto\n\nmodule.exports = (algorithm) => {\n if (typeof self === 'undefined' || (!self.crypto && !self.msCrypto)) {\n throw new Error(\n 'Please use a browser with webcrypto support and ensure the code has been delivered securely via HTTPS/TLS and run within a Secure Context'\n )\n }\n\n return async (data) => {\n switch (algorithm) {\n case 'sha1':\n return Buffer.from(await crypto.subtle.digest({ name: 'SHA-1' }, data))\n case 'sha2-256':\n return Buffer.from(await crypto.subtle.digest({ name: 'SHA-256' }, data))\n case 'sha2-512':\n return Buffer.from(await crypto.subtle.digest({ name: 'SHA-512' }, data))\n case 'dbl-sha2-256': {\n const d = await crypto.subtle.digest({ name: 'SHA-256' }, data)\n return Buffer.from(await crypto.subtle.digest({ name: 'SHA-256' }, d))\n }\n default:\n throw new Error(`${algorithm} is not a supported algorithm`)\n }\n }\n}\n","'use strict'\n\nconst Store = require('orbit-db-store')\nconst KeyValueIndex = require('./KeyValueIndex')\n\nclass KeyValueStore extends Store {\n constructor(ipfs, id, dbname, options) {\n let opts = Object.assign({}, { Index: KeyValueIndex })\n Object.assign(opts, options)\n super(ipfs, id, dbname, opts)\n this._type = 'keyvalue'\n }\n\n get all () {\n return this._index._index\n }\n\n get (key) {\n return this._index.get(key)\n }\n\n set (key, data, options = {}) {\n return this.put(key, data, options)\n }\n\n put (key, data, options = {}) {\n return this._addOperation({\n op: 'PUT',\n key: key,\n value: data\n }, options)\n }\n\n del (key, options = {}) {\n return this._addOperation({\n op: 'DEL',\n key: key,\n value: null\n }, options)\n }\n}\n\nmodule.exports = KeyValueStore\n","/**\n * Object IDs for ASN.1.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2013 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\n\nforge.pki = forge.pki || {};\nvar oids = module.exports = forge.pki.oids = forge.oids = forge.oids || {};\n\n// set id to name mapping and name to id mapping\nfunction _IN(id, name) {\n oids[id] = name;\n oids[name] = id;\n}\n// set id to name mapping only\nfunction _I_(id, name) {\n oids[id] = name;\n}\n\n// algorithm OIDs\n_IN('1.2.840.113549.1.1.1', 'rsaEncryption');\n// Note: md2 & md4 not implemented\n//_IN('1.2.840.113549.1.1.2', 'md2WithRSAEncryption');\n//_IN('1.2.840.113549.1.1.3', 'md4WithRSAEncryption');\n_IN('1.2.840.113549.1.1.4', 'md5WithRSAEncryption');\n_IN('1.2.840.113549.1.1.5', 'sha1WithRSAEncryption');\n_IN('1.2.840.113549.1.1.7', 'RSAES-OAEP');\n_IN('1.2.840.113549.1.1.8', 'mgf1');\n_IN('1.2.840.113549.1.1.9', 'pSpecified');\n_IN('1.2.840.113549.1.1.10', 'RSASSA-PSS');\n_IN('1.2.840.113549.1.1.11', 'sha256WithRSAEncryption');\n_IN('1.2.840.113549.1.1.12', 'sha384WithRSAEncryption');\n_IN('1.2.840.113549.1.1.13', 'sha512WithRSAEncryption');\n// Edwards-curve Digital Signature Algorithm (EdDSA) Ed25519\n_IN('1.3.101.112', 'EdDSA25519');\n\n_IN('1.2.840.10040.4.3', 'dsa-with-sha1');\n\n_IN('1.3.14.3.2.7', 'desCBC');\n\n_IN('1.3.14.3.2.26', 'sha1');\n_IN('2.16.840.1.101.3.4.2.1', 'sha256');\n_IN('2.16.840.1.101.3.4.2.2', 'sha384');\n_IN('2.16.840.1.101.3.4.2.3', 'sha512');\n_IN('1.2.840.113549.2.5', 'md5');\n\n// pkcs#7 content types\n_IN('1.2.840.113549.1.7.1', 'data');\n_IN('1.2.840.113549.1.7.2', 'signedData');\n_IN('1.2.840.113549.1.7.3', 'envelopedData');\n_IN('1.2.840.113549.1.7.4', 'signedAndEnvelopedData');\n_IN('1.2.840.113549.1.7.5', 'digestedData');\n_IN('1.2.840.113549.1.7.6', 'encryptedData');\n\n// pkcs#9 oids\n_IN('1.2.840.113549.1.9.1', 'emailAddress');\n_IN('1.2.840.113549.1.9.2', 'unstructuredName');\n_IN('1.2.840.113549.1.9.3', 'contentType');\n_IN('1.2.840.113549.1.9.4', 'messageDigest');\n_IN('1.2.840.113549.1.9.5', 'signingTime');\n_IN('1.2.840.113549.1.9.6', 'counterSignature');\n_IN('1.2.840.113549.1.9.7', 'challengePassword');\n_IN('1.2.840.113549.1.9.8', 'unstructuredAddress');\n_IN('1.2.840.113549.1.9.14', 'extensionRequest');\n\n_IN('1.2.840.113549.1.9.20', 'friendlyName');\n_IN('1.2.840.113549.1.9.21', 'localKeyId');\n_IN('1.2.840.113549.1.9.22.1', 'x509Certificate');\n\n// pkcs#12 safe bags\n_IN('1.2.840.113549.1.12.10.1.1', 'keyBag');\n_IN('1.2.840.113549.1.12.10.1.2', 'pkcs8ShroudedKeyBag');\n_IN('1.2.840.113549.1.12.10.1.3', 'certBag');\n_IN('1.2.840.113549.1.12.10.1.4', 'crlBag');\n_IN('1.2.840.113549.1.12.10.1.5', 'secretBag');\n_IN('1.2.840.113549.1.12.10.1.6', 'safeContentsBag');\n\n// password-based-encryption for pkcs#12\n_IN('1.2.840.113549.1.5.13', 'pkcs5PBES2');\n_IN('1.2.840.113549.1.5.12', 'pkcs5PBKDF2');\n\n_IN('1.2.840.113549.1.12.1.1', 'pbeWithSHAAnd128BitRC4');\n_IN('1.2.840.113549.1.12.1.2', 'pbeWithSHAAnd40BitRC4');\n_IN('1.2.840.113549.1.12.1.3', 'pbeWithSHAAnd3-KeyTripleDES-CBC');\n_IN('1.2.840.113549.1.12.1.4', 'pbeWithSHAAnd2-KeyTripleDES-CBC');\n_IN('1.2.840.113549.1.12.1.5', 'pbeWithSHAAnd128BitRC2-CBC');\n_IN('1.2.840.113549.1.12.1.6', 'pbewithSHAAnd40BitRC2-CBC');\n\n// hmac OIDs\n_IN('1.2.840.113549.2.7', 'hmacWithSHA1');\n_IN('1.2.840.113549.2.8', 'hmacWithSHA224');\n_IN('1.2.840.113549.2.9', 'hmacWithSHA256');\n_IN('1.2.840.113549.2.10', 'hmacWithSHA384');\n_IN('1.2.840.113549.2.11', 'hmacWithSHA512');\n\n// symmetric key algorithm oids\n_IN('1.2.840.113549.3.7', 'des-EDE3-CBC');\n_IN('2.16.840.1.101.3.4.1.2', 'aes128-CBC');\n_IN('2.16.840.1.101.3.4.1.22', 'aes192-CBC');\n_IN('2.16.840.1.101.3.4.1.42', 'aes256-CBC');\n\n// certificate issuer/subject OIDs\n_IN('2.5.4.3', 'commonName');\n_IN('2.5.4.5', 'serialName');\n_IN('2.5.4.6', 'countryName');\n_IN('2.5.4.7', 'localityName');\n_IN('2.5.4.8', 'stateOrProvinceName');\n_IN('2.5.4.9', 'streetAddress');\n_IN('2.5.4.10', 'organizationName');\n_IN('2.5.4.11', 'organizationalUnitName');\n_IN('2.5.4.13', 'description');\n_IN('2.5.4.15', 'businessCategory');\n_IN('2.5.4.17', 'postalCode');\n_IN('1.3.6.1.4.1.311.60.2.1.2', 'jurisdictionOfIncorporationStateOrProvinceName');\n_IN('1.3.6.1.4.1.311.60.2.1.3', 'jurisdictionOfIncorporationCountryName');\n\n// X.509 extension OIDs\n_IN('2.16.840.1.113730.1.1', 'nsCertType');\n_IN('2.16.840.1.113730.1.13', 'nsComment'); // deprecated in theory; still widely used\n_I_('2.5.29.1', 'authorityKeyIdentifier'); // deprecated, use .35\n_I_('2.5.29.2', 'keyAttributes'); // obsolete use .37 or .15\n_I_('2.5.29.3', 'certificatePolicies'); // deprecated, use .32\n_I_('2.5.29.4', 'keyUsageRestriction'); // obsolete use .37 or .15\n_I_('2.5.29.5', 'policyMapping'); // deprecated use .33\n_I_('2.5.29.6', 'subtreesConstraint'); // obsolete use .30\n_I_('2.5.29.7', 'subjectAltName'); // deprecated use .17\n_I_('2.5.29.8', 'issuerAltName'); // deprecated use .18\n_I_('2.5.29.9', 'subjectDirectoryAttributes');\n_I_('2.5.29.10', 'basicConstraints'); // deprecated use .19\n_I_('2.5.29.11', 'nameConstraints'); // deprecated use .30\n_I_('2.5.29.12', 'policyConstraints'); // deprecated use .36\n_I_('2.5.29.13', 'basicConstraints'); // deprecated use .19\n_IN('2.5.29.14', 'subjectKeyIdentifier');\n_IN('2.5.29.15', 'keyUsage');\n_I_('2.5.29.16', 'privateKeyUsagePeriod');\n_IN('2.5.29.17', 'subjectAltName');\n_IN('2.5.29.18', 'issuerAltName');\n_IN('2.5.29.19', 'basicConstraints');\n_I_('2.5.29.20', 'cRLNumber');\n_I_('2.5.29.21', 'cRLReason');\n_I_('2.5.29.22', 'expirationDate');\n_I_('2.5.29.23', 'instructionCode');\n_I_('2.5.29.24', 'invalidityDate');\n_I_('2.5.29.25', 'cRLDistributionPoints'); // deprecated use .31\n_I_('2.5.29.26', 'issuingDistributionPoint'); // deprecated use .28\n_I_('2.5.29.27', 'deltaCRLIndicator');\n_I_('2.5.29.28', 'issuingDistributionPoint');\n_I_('2.5.29.29', 'certificateIssuer');\n_I_('2.5.29.30', 'nameConstraints');\n_IN('2.5.29.31', 'cRLDistributionPoints');\n_IN('2.5.29.32', 'certificatePolicies');\n_I_('2.5.29.33', 'policyMappings');\n_I_('2.5.29.34', 'policyConstraints'); // deprecated use .36\n_IN('2.5.29.35', 'authorityKeyIdentifier');\n_I_('2.5.29.36', 'policyConstraints');\n_IN('2.5.29.37', 'extKeyUsage');\n_I_('2.5.29.46', 'freshestCRL');\n_I_('2.5.29.54', 'inhibitAnyPolicy');\n\n// extKeyUsage purposes\n_IN('1.3.6.1.4.1.11129.2.4.2', 'timestampList');\n_IN('1.3.6.1.5.5.7.1.1', 'authorityInfoAccess');\n_IN('1.3.6.1.5.5.7.3.1', 'serverAuth');\n_IN('1.3.6.1.5.5.7.3.2', 'clientAuth');\n_IN('1.3.6.1.5.5.7.3.3', 'codeSigning');\n_IN('1.3.6.1.5.5.7.3.4', 'emailProtection');\n_IN('1.3.6.1.5.5.7.3.8', 'timeStamping');\n","'use strict'\n\nconst toMfsPath = require('./to-mfs-path')\n\nasync function toSources (context, args) {\n // Support weird mfs.mv([source, dest], options, callback) signature\n if (Array.isArray(args[0])) {\n args = args[0]\n }\n\n const sources = args\n .filter(arg => typeof arg === 'string')\n .map(source => source.trim())\n\n return {\n sources: await toMfsPath(context, sources)\n }\n}\n\nmodule.exports = toSources\n","'use strict'\n\nconst Qs = require('qs')\nconst qsDefaultEncoder = require('qs/lib/utils').encode\nconst isNode = require('detect-node')\nconst ndjson = require('ndjson')\nconst pump = require('pump')\nconst once = require('once')\nconst { getRequest } = require('iso-stream-http')\nconst streamToValue = require('./stream-to-value')\nconst streamToJsonValue = require('./stream-to-json-value')\nconst log = require('debug')('ipfs-http-client:request')\n\n// -- Internal\n\nfunction hasJSONHeaders (res) {\n return res.headers['content-type'] &&\n res.headers['content-type'].indexOf('application/json') === 0\n}\n\nfunction parseError (res, cb) {\n const error = new Error(`Server responded with ${res.statusCode}`)\n error.statusCode = res.statusCode\n\n if (!hasJSONHeaders(res)) {\n return streamToValue(res, (err, data) => { // eslint-disable-line handle-callback-err\n // the `err` here refers to errors in stream processing, which\n // we ignore here, since we already have a valid `error` response\n // from the server above that we have to report to the caller.\n if (data && data.length) {\n error.message = data.toString()\n }\n cb(error)\n })\n }\n\n streamToJsonValue(res, (err, payload) => {\n if (err) {\n return cb(err)\n }\n\n if (payload) {\n error.code = payload.Code\n error.message = payload.Message || payload.toString()\n error.type = payload.Type\n }\n cb(error)\n })\n}\n\nfunction onRes (buffer, cb) {\n return (res) => {\n const stream = Boolean(res.headers['x-stream-output'])\n const chunkedObjects = Boolean(res.headers['x-chunked-output'])\n const isJson = hasJSONHeaders(res)\n\n if (res.req) {\n log(res.req.method, `${res.req.getHeaders().host}${res.req.path}`, res.statusCode, res.statusMessage)\n } else {\n log(res.url, res.statusCode, res.statusMessage)\n }\n\n if (res.statusCode >= 400 || !res.statusCode) {\n return parseError(res, cb)\n }\n\n // Return the response stream directly\n if (stream && !buffer) {\n return cb(null, res)\n }\n\n // Return a stream of JSON objects\n if (chunkedObjects && isJson) {\n const outputStream = ndjson.parse()\n pump(res, outputStream)\n res.on('end', () => {\n let err = res.trailers['x-stream-error']\n if (err) {\n // Not all errors are JSON\n try {\n err = JSON.parse(err)\n } catch (e) {\n err = { Message: err }\n }\n outputStream.emit('error', new Error(err.Message))\n }\n })\n return cb(null, outputStream)\n }\n\n // Return a JSON object\n if (isJson) {\n return streamToJsonValue(res, cb)\n }\n\n // Return a value\n return streamToValue(res, cb)\n }\n}\n\nfunction requestAPI (config, options, callback) {\n callback = once(callback)\n options.qs = options.qs || {}\n\n if (Array.isArray(options.path)) {\n options.path = options.path.join('/')\n }\n if (options.args && !Array.isArray(options.args)) {\n options.args = [options.args]\n }\n if (options.args) {\n options.qs.arg = options.args\n }\n if (options.progress) {\n options.qs.progress = true\n }\n\n if (options.qs.r) {\n options.qs.recursive = options.qs.r\n // From IPFS 0.4.0, it throws an error when both r and recursive are passed\n delete options.qs.r\n }\n\n options.qs['stream-channels'] = true\n\n if (options.stream) {\n options.buffer = false\n }\n\n // this option is only used internally, not passed to daemon\n delete options.qs.followSymlinks\n\n const method = 'POST'\n const headers = Object.assign({}, config.headers)\n\n if (isNode) {\n // Browsers do not allow you to modify the user agent\n headers['User-Agent'] = config['user-agent']\n }\n\n if (options.multipart) {\n if (!options.multipartBoundary) {\n return callback(new Error('No multipartBoundary'))\n }\n\n headers['Content-Type'] = `multipart/form-data; boundary=${options.multipartBoundary}`\n }\n\n const qs = Qs.stringify(options.qs, {\n arrayFormat: 'repeat',\n encoder: data => {\n // TODO: future releases of qs will provide the default\n // encoder as a 2nd argument to this function; it will\n // no longer be necessary to import qsDefaultEncoder\n if (Buffer.isBuffer(data)) {\n let uriEncoded = ''\n for (const byte of data) {\n // https://tools.ietf.org/html/rfc3986#page-14\n // ALPHA (%41-%5A and %61-%7A), DIGIT (%30-%39), hyphen (%2D), period (%2E), underscore (%5F), or tilde (%7E)\n if (\n (byte >= 0x41 && byte <= 0x5A) ||\n (byte >= 0x61 && byte <= 0x7A) ||\n (byte >= 0x30 && byte <= 0x39) ||\n (byte === 0x2D) ||\n (byte === 0x2E) ||\n (byte === 0x5F) ||\n (byte === 0x7E)\n ) {\n uriEncoded += String.fromCharCode(byte)\n } else {\n const hex = byte.toString(16)\n // String.prototype.padStart() not widely supported yet\n const padded = hex.length === 1 ? `0${hex}` : hex\n uriEncoded += `%${padded}`\n }\n }\n return uriEncoded\n }\n return qsDefaultEncoder(data)\n }\n })\n const reqOptions = {\n hostname: config.host,\n path: `${config['api-path']}${options.path}?${qs}`,\n port: config.port,\n method: method,\n headers: headers,\n protocol: `${config.protocol}:`\n }\n\n const req = getRequest(reqOptions, onRes(options.buffer, callback))\n\n req.on('error', (err) => {\n callback(err)\n })\n\n if (!options.stream) {\n req.end()\n }\n\n return req\n}\n\n//\n// -- Module Interface\n\nexports = module.exports = (config) => {\n /*\n * options: {\n * path: // API path (like /add or /config) - type: string\n * args: // Arguments to the command - type: object\n * qs: // Opts as query string opts to the command --something - type: object\n * files: // files to be sent - type: string, buffer or array of strings or buffers\n * buffer: // buffer the request before sending it - type: bool\n * }\n */\n const send = (options, callback) => {\n if (typeof options !== 'object') {\n return callback(new Error('no options were passed'))\n }\n\n return requestAPI(config, options, callback)\n }\n\n // Send a HTTP request and pass via a transform function\n // to convert the response data to wanted format before\n // returning it to the callback.\n // Eg. send.andTransform({}, (e) => JSON.parse(e), (err, res) => ...)\n send.andTransform = (options, transform, callback) => {\n return send(options, (err, res) => {\n if (err) {\n return callback(err)\n }\n transform(res, callback)\n })\n }\n\n return send\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n// Edge 14- issue\nvar USES_TO_LENGTH = arrayMethodUsesToLength('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict'\n\nconst callbackify = require('callbackify')\nconst OFFLINE_ERROR = require('../utils').OFFLINE_ERROR\nconst errcode = require('err-code')\n\nmodule.exports = function pubsub (self) {\n function checkOnlineAndEnabled () {\n if (!self.isOnline()) {\n throw errcode(new Error(OFFLINE_ERROR), 'ERR_OFFLINE')\n }\n\n if (!self.libp2p.pubsub) {\n throw errcode(new Error('pubsub is not enabled'), 'ERR_PUBSUB_DISABLED')\n }\n }\n\n return {\n subscribe: (topic, handler, options, callback) => {\n if (typeof options === 'function') {\n callback = options\n options = {}\n }\n\n if (typeof callback === 'function') {\n try {\n checkOnlineAndEnabled()\n } catch (err) {\n return callback(err)\n }\n\n self.libp2p.pubsub.subscribe(topic, handler, options, callback)\n return\n }\n\n try {\n checkOnlineAndEnabled()\n } catch (err) {\n return Promise.reject(err)\n }\n\n return self.libp2p.pubsub.subscribe(topic, handler, options)\n },\n\n unsubscribe: (topic, handler, callback) => {\n if (typeof callback === 'function') {\n try {\n checkOnlineAndEnabled()\n } catch (err) {\n return callback(err)\n }\n\n self.libp2p.pubsub.unsubscribe(topic, handler, callback)\n return\n }\n\n try {\n checkOnlineAndEnabled()\n } catch (err) {\n return Promise.reject(err)\n }\n\n return self.libp2p.pubsub.unsubscribe(topic, handler)\n },\n\n publish: callbackify(async (topic, data) => { // eslint-disable-line require-await\n checkOnlineAndEnabled()\n\n await self.libp2p.pubsub.publish(topic, data)\n }),\n\n ls: callbackify(async () => { // eslint-disable-line require-await\n checkOnlineAndEnabled()\n\n return self.libp2p.pubsub.ls()\n }),\n\n peers: callbackify(async (topic) => { // eslint-disable-line require-await\n checkOnlineAndEnabled()\n\n return self.libp2p.pubsub.peers(topic)\n }),\n\n setMaxListeners (n) {\n checkOnlineAndEnabled()\n\n self.libp2p.pubsub.setMaxListeners(n)\n }\n }\n}\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\n// `Array.from` method implementation\n// https://tc39.github.io/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n result = new C();\n for (;!(step = next.call(iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Prizes.vue?vue&type=style&index=0&id=662da522&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Prizes.vue?vue&type=style&index=0&id=662da522&lang=scss&scoped=true&\"","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","'use strict'\n\nconst second = exports.second = 1000\nconst minute = exports.minute = 60 * second\n\n// Protocol identifiers\nexports.FloodSubID = '/floodsub/1.0.0'\nexports.GossipSubID = '/meshsub/1.0.0'\n\n// Overlay parameters\nexports.GossipSubD = 6\nexports.GossipSubDlo = 4\nexports.GossipSubDhi = 12\n\n// Gossip parameters\nexports.GossipSubHistoryLength = 5\nexports.GossipSubHistoryGossip = 3\n\n// Heartbeat interval\nexports.GossipSubHeartbeatInitialDelay = 100 / second\nexports.GossipSubHeartbeatInterval = second\n\n// Fanout ttl\nexports.GossipSubFanoutTTL = minute\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (fn) {\n return function () /*...args, callback*/{\n var args = (0, _slice2.default)(arguments);\n var callback = args.pop();\n fn.call(this, args, callback);\n };\n};\n\nvar _slice = require('./slice');\n\nvar _slice2 = _interopRequireDefault(_slice);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = exports['default'];","var Buffer = require('safe-buffer').Buffer\nvar MD5 = require('md5.js')\n\n/* eslint-disable camelcase */\nfunction EVP_BytesToKey (password, salt, keyBits, ivLen) {\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary')\n if (salt) {\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary')\n if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length')\n }\n\n var keyLen = keyBits / 8\n var key = Buffer.alloc(keyLen)\n var iv = Buffer.alloc(ivLen || 0)\n var tmp = Buffer.alloc(0)\n\n while (keyLen > 0 || ivLen > 0) {\n var hash = new MD5()\n hash.update(tmp)\n hash.update(password)\n if (salt) hash.update(salt)\n tmp = hash.digest()\n\n var used = 0\n\n if (keyLen > 0) {\n var keyStart = key.length - keyLen\n used = Math.min(keyLen, tmp.length)\n tmp.copy(key, keyStart, 0, used)\n keyLen -= used\n }\n\n if (used < tmp.length && ivLen > 0) {\n var ivStart = iv.length - ivLen\n var length = Math.min(ivLen, tmp.length - used)\n tmp.copy(iv, ivStart, used, used + length)\n ivLen -= length\n }\n }\n\n tmp.fill(0)\n return { key: key, iv: iv }\n}\n\nmodule.exports = EVP_BytesToKey\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst sha3 = require('js-sha3')\nconst mur = require('murmurhash3js-revisited')\nconst sha = require('./sha')\nconst { fromNumberTo32BitBuf } = require('./utils')\n\n// Note that although this function doesn't do any asynchronous work, we mark\n// the function as async because it must return a Promise to match the API\n// for other functions that do perform asynchronous work (see sha.browser.js)\nconst hash = (algorithm) => async (data) => {\n switch (algorithm) {\n case 'sha3-224':\n return Buffer.from(sha3.sha3_224.arrayBuffer(data))\n case 'sha3-256':\n return Buffer.from(sha3.sha3_256.arrayBuffer(data))\n case 'sha3-384':\n return Buffer.from(sha3.sha3_384.arrayBuffer(data))\n case 'sha3-512':\n return Buffer.from(sha3.sha3_512.arrayBuffer(data))\n case 'shake-128':\n return Buffer.from(sha3.shake128.create(128).update(data).arrayBuffer())\n case 'shake-256':\n return Buffer.from(sha3.shake256.create(256).update(data).arrayBuffer())\n case 'keccak-224':\n return Buffer.from(sha3.keccak224.arrayBuffer(data))\n case 'keccak-256':\n return Buffer.from(sha3.keccak256.arrayBuffer(data))\n case 'keccak-384':\n return Buffer.from(sha3.keccak384.arrayBuffer(data))\n case 'keccak-512':\n return Buffer.from(sha3.keccak512.arrayBuffer(data))\n case 'murmur3-128':\n return Buffer.from(mur.x64.hash128(data), 'hex')\n case 'murmur3-32':\n return fromNumberTo32BitBuf(mur.x86.hash32(data))\n\n default:\n throw new TypeError(`${algorithm} is not a supported algorithm`)\n }\n}\n\nmodule.exports = {\n sha1: sha('sha1'),\n sha2256: sha('sha2-256'),\n sha2512: sha('sha2-512'),\n dblSha2256: sha('dbl-sha2-256'),\n sha3224: hash('sha3-224'),\n sha3256: hash('sha3-256'),\n sha3384: hash('sha3-384'),\n sha3512: hash('sha3-512'),\n shake128: hash('shake-128'),\n shake256: hash('shake-256'),\n keccak224: hash('keccak-224'),\n keccak256: hash('keccak-256'),\n keccak384: hash('keccak-384'),\n keccak512: hash('keccak-512'),\n murmur3128: hash('murmur3-128'),\n murmur332: hash('murmur3-32'),\n addBlake: require('./blake')\n}\n","/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC',\n '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF',\n '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC',\n '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF',\n '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC',\n '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033',\n '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366',\n '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933',\n '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC',\n '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF',\n '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // Internet Explorer and Edge do not support colors.\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n","module.exports = Node\n\n/**\n * a linked-list node\n * @class\n * @param {any} value - node's value\n * @param {Node} next - next node\n */\nfunction Node (value, next) {\n this.value = value\n this.next = next\n}\n\n/**\n * checks if this node or any of its children has the value\n * @param {any} value - value to check if linked-list contains\n * @return {boolean} true if the list contains the value; false if not\n */\nNode.prototype.contains = function (value) {\n var cursor = this\n\n while (cursor) {\n if (cursor.value === value) return true\n cursor = cursor.next\n }\n\n return false\n}\n","'use strict'\n\nconst pull = require('pull-stream/pull')\nconst Connection = require('interface-connection').Connection\nconst assert = require('assert')\nconst PeerInfo = require('peer-info')\nconst debug = require('debug')\nconst once = require('once')\nconst log = debug('libp2p:secio')\nlog.error = debug('libp2p:secio:error')\n\nconst handshake = require('./handshake')\nconst State = require('./state')\n\nmodule.exports = {\n tag: '/secio/1.0.0',\n encrypt (localId, conn, remoteId, callback) {\n assert(localId, 'no local private key provided')\n assert(conn, 'no connection for the handshake provided')\n\n if (typeof remoteId === 'function') {\n callback = remoteId\n remoteId = undefined\n }\n\n callback = once(callback || function (err) {\n if (err) { log.error(err) }\n })\n\n const timeout = 60 * 1000 * 5\n\n const state = new State(localId, remoteId, timeout, callback)\n\n function finish (err) {\n if (err) { return callback(err) }\n\n conn.getPeerInfo((err, peerInfo) => {\n encryptedConnection.setInnerConn(new Connection(state.secure, conn))\n\n if (err) { // no peerInfo yet, means I'm the receiver\n encryptedConnection.setPeerInfo(new PeerInfo(state.id.remote))\n }\n\n callback()\n })\n }\n\n const encryptedConnection = new Connection(undefined, conn)\n\n pull(\n conn,\n handshake(state, finish),\n conn\n )\n\n return encryptedConnection\n }\n}\n","'use strict'\n\nconst Base = require('./base.js')\nconst baseX = require('base-x')\nconst base16 = require('./base16')\nconst base32 = require('./base32')\nconst base64 = require('./base64')\n\n// name, code, implementation, alphabet\nconst constants = [\n ['base1', '1', '', '1'],\n ['base2', '0', baseX, '01'],\n ['base8', '7', baseX, '01234567'],\n ['base10', '9', baseX, '0123456789'],\n ['base16', 'f', base16, '0123456789abcdef'],\n ['base32', 'b', base32, 'abcdefghijklmnopqrstuvwxyz234567'],\n ['base32pad', 'c', base32, 'abcdefghijklmnopqrstuvwxyz234567='],\n ['base32hex', 'v', base32, '0123456789abcdefghijklmnopqrstuv'],\n ['base32hexpad', 't', base32, '0123456789abcdefghijklmnopqrstuv='],\n ['base32z', 'h', base32, 'ybndrfg8ejkmcpqxot1uwisza345h769'],\n ['base58flickr', 'Z', baseX, '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'],\n ['base58btc', 'z', baseX, '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'],\n ['base64', 'm', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'],\n ['base64pad', 'M', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='],\n ['base64url', 'u', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'],\n ['base64urlpad', 'U', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=']\n]\n\nconst names = constants.reduce((prev, tupple) => {\n prev[tupple[0]] = new Base(tupple[0], tupple[1], tupple[2], tupple[3])\n return prev\n}, {})\n\nconst codes = constants.reduce((prev, tupple) => {\n prev[tupple[1]] = names[tupple[0]]\n return prev\n}, {})\n\nmodule.exports = {\n names: names,\n codes: codes\n}\n","var prr = require('prr')\n\nfunction init (type, message, cause) {\n if (!!message && typeof message != 'string') {\n message = message.message || message.name\n }\n prr(this, {\n type : type\n , name : type\n // can be passed just a 'cause'\n , cause : typeof message != 'string' ? message : cause\n , message : message\n }, 'ewr')\n}\n\n// generic prototype, not intended to be actually used - helpful for `instanceof`\nfunction CustomError (message, cause) {\n Error.call(this)\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, this.constructor)\n init.call(this, 'CustomError', message, cause)\n}\n\nCustomError.prototype = new Error()\n\nfunction createError (errno, type, proto) {\n var err = function (message, cause) {\n init.call(this, type, message, cause)\n //TODO: the specificity here is stupid, errno should be available everywhere\n if (type == 'FilesystemError') {\n this.code = this.cause.code\n this.path = this.cause.path\n this.errno = this.cause.errno\n this.message =\n (errno.errno[this.cause.errno]\n ? errno.errno[this.cause.errno].description\n : this.cause.message)\n + (this.cause.path ? ' [' + this.cause.path + ']' : '')\n }\n Error.call(this)\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, err)\n }\n err.prototype = !!proto ? new proto() : new CustomError()\n return err\n}\n\nmodule.exports = function (errno) {\n var ce = function (type, proto) {\n return createError(errno, type, proto)\n }\n return {\n CustomError : CustomError\n , FilesystemError : ce('FilesystemError')\n , createError : ce\n }\n}\n","/* global self */\n\n'use strict'\n\nconst nodeify = require('nodeify')\n\nconst webCrypto = getWebCrypto()\n\nfunction getWebCrypto () {\n if (self.crypto) {\n return self.crypto.subtle || self.crypto.webkitSubtle\n }\n\n if (self.msCrypto) {\n return self.msCrypto.subtle\n }\n}\n\nfunction webCryptoHash (type) {\n if (!webCrypto) {\n throw new Error('Please use a browser with webcrypto support and ensure the code has been delivered securely via HTTPS/TLS and run within a Secure Context')\n }\n\n return (data, callback) => {\n const res = webCrypto.digest({ name: type }, data)\n\n if (typeof res.then !== 'function') { // IE11\n res.onerror = () => {\n callback(new Error(`hashing data using ${type}`))\n }\n res.oncomplete = (e) => {\n callback(null, e.target.result)\n }\n return\n }\n\n nodeify(\n res.then((raw) => Buffer.from(new Uint8Array(raw))),\n callback\n )\n }\n}\n\nfunction sha1 (buf, callback) {\n webCryptoHash('SHA-1')(buf, callback)\n}\n\nfunction sha2256 (buf, callback) {\n webCryptoHash('SHA-256')(buf, callback)\n}\n\nfunction sha2512 (buf, callback) {\n webCryptoHash('SHA-512')(buf, callback)\n}\n\nmodule.exports = {\n sha1: sha1,\n sha2256: sha2256,\n sha2512: sha2512\n}\n","'use strict'\n\nconst toPullStream = require('async-iterator-to-pull-stream')\n\nmodule.exports = function (self) {\n return function catPullStream (ipfsPath, options) {\n return toPullStream.source(self._catAsyncIterator(ipfsPath, options))\n }\n}\n","'use strict'\n\nconst errCode = require('err-code')\nconst UnixFS = require('ipfs-unixfs')\nconst findShardCid = require('../../utils/find-cid-in-shard')\n\nconst findLinkCid = (node, name) => {\n const link = node.Links.find(link => link.Name === name)\n\n return link && link.Hash\n}\n\nconst contentExporters = {\n raw: require('./content/file'),\n file: require('./content/file'),\n directory: require('./content/directory'),\n 'hamt-sharded-directory': require('./content/hamt-sharded-directory'),\n metadata: (cid, node, unixfs, path, resolve, depth, ipld) => {},\n symlink: (cid, node, unixfs, path, resolve, depth, ipld) => {}\n}\n\nconst unixFsResolver = async (cid, name, path, toResolve, resolve, depth, ipld) => {\n const node = await ipld.get(cid)\n let unixfs\n let next\n\n if (!name) {\n name = cid.toBaseEncodedString()\n }\n\n try {\n unixfs = UnixFS.unmarshal(node.Data)\n } catch (err) {\n // non-UnixFS dag-pb node? It could happen.\n throw errCode(err, 'ERR_NOT_UNIXFS')\n }\n\n if (!path) {\n path = name\n }\n\n if (toResolve.length) {\n let linkCid\n\n if (unixfs && unixfs.type === 'hamt-sharded-directory') {\n // special case - unixfs v1 hamt shards\n linkCid = await findShardCid(node, toResolve[0], ipld)\n } else {\n linkCid = findLinkCid(node, toResolve[0])\n }\n\n if (!linkCid) {\n throw errCode(new Error(`file does not exist`), 'ERR_NOT_FOUND')\n }\n\n // remove the path component we have resolved\n const nextName = toResolve.shift()\n const nextPath = `${path}/${nextName}`\n\n next = {\n cid: linkCid,\n toResolve,\n name: nextName,\n path: nextPath\n }\n }\n\n return {\n entry: {\n name,\n path,\n cid,\n node,\n content: contentExporters[unixfs.type](cid, node, unixfs, path, resolve, depth, ipld),\n unixfs,\n depth\n },\n next\n }\n}\n\nmodule.exports = unixFsResolver\n","'use strict'\n\n// Default configuration for a repo in the browser\nmodule.exports = {\n lock: 'memory',\n storageBackends: {\n root: require('datastore-level'),\n blocks: require('datastore-level'),\n keys: require('datastore-level'),\n datastore: require('datastore-level')\n },\n storageBackendOptions: {\n root: {\n extension: '',\n prefix: '',\n version: 2\n },\n blocks: {\n sharding: false,\n prefix: '',\n version: 2\n },\n keys: {\n sharding: false,\n prefix: '',\n version: 2\n },\n datastore: {\n sharding: false,\n prefix: '',\n version: 2\n }\n }\n}\n","/**\n * Secure Hash Algorithm with a 1024-bit block size implementation.\n *\n * This includes: SHA-512, SHA-384, SHA-512/224, and SHA-512/256. For\n * SHA-256 (block size 512 bits), see sha256.js.\n *\n * See FIPS 180-4 for details.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2014-2015 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./md');\nrequire('./util');\n\nvar sha512 = module.exports = forge.sha512 = forge.sha512 || {};\n\n// SHA-512\nforge.md.sha512 = forge.md.algorithms.sha512 = sha512;\n\n// SHA-384\nvar sha384 = forge.sha384 = forge.sha512.sha384 = forge.sha512.sha384 || {};\nsha384.create = function() {\n return sha512.create('SHA-384');\n};\nforge.md.sha384 = forge.md.algorithms.sha384 = sha384;\n\n// SHA-512/256\nforge.sha512.sha256 = forge.sha512.sha256 || {\n create: function() {\n return sha512.create('SHA-512/256');\n }\n};\nforge.md['sha512/256'] = forge.md.algorithms['sha512/256'] =\n forge.sha512.sha256;\n\n// SHA-512/224\nforge.sha512.sha224 = forge.sha512.sha224 || {\n create: function() {\n return sha512.create('SHA-512/224');\n }\n};\nforge.md['sha512/224'] = forge.md.algorithms['sha512/224'] =\n forge.sha512.sha224;\n\n/**\n * Creates a SHA-2 message digest object.\n *\n * @param algorithm the algorithm to use (SHA-512, SHA-384, SHA-512/224,\n * SHA-512/256).\n *\n * @return a message digest object.\n */\nsha512.create = function(algorithm) {\n // do initialization as necessary\n if(!_initialized) {\n _init();\n }\n\n if(typeof algorithm === 'undefined') {\n algorithm = 'SHA-512';\n }\n\n if(!(algorithm in _states)) {\n throw new Error('Invalid SHA-512 algorithm: ' + algorithm);\n }\n\n // SHA-512 state contains eight 64-bit integers (each as two 32-bit ints)\n var _state = _states[algorithm];\n var _h = null;\n\n // input buffer\n var _input = forge.util.createBuffer();\n\n // used for 64-bit word storage\n var _w = new Array(80);\n for(var wi = 0; wi < 80; ++wi) {\n _w[wi] = new Array(2);\n }\n\n // determine digest length by algorithm name (default)\n var digestLength = 64;\n switch(algorithm) {\n case 'SHA-384':\n digestLength = 48;\n break;\n case 'SHA-512/256':\n digestLength = 32;\n break;\n case 'SHA-512/224':\n digestLength = 28;\n break;\n }\n\n // message digest object\n var md = {\n // SHA-512 => sha512\n algorithm: algorithm.replace('-', '').toLowerCase(),\n blockLength: 128,\n digestLength: digestLength,\n // 56-bit length of message so far (does not including padding)\n messageLength: 0,\n // true message length\n fullMessageLength: null,\n // size of message length in bytes\n messageLengthSize: 16\n };\n\n /**\n * Starts the digest.\n *\n * @return this digest object.\n */\n md.start = function() {\n // up to 56-bit message length for convenience\n md.messageLength = 0;\n\n // full message length (set md.messageLength128 for backwards-compatibility)\n md.fullMessageLength = md.messageLength128 = [];\n var int32s = md.messageLengthSize / 4;\n for(var i = 0; i < int32s; ++i) {\n md.fullMessageLength.push(0);\n }\n _input = forge.util.createBuffer();\n _h = new Array(_state.length);\n for(var i = 0; i < _state.length; ++i) {\n _h[i] = _state[i].slice(0);\n }\n return md;\n };\n // start digest automatically for first time\n md.start();\n\n /**\n * Updates the digest with the given message input. The given input can\n * treated as raw input (no encoding will be applied) or an encoding of\n * 'utf8' maybe given to encode the input using UTF-8.\n *\n * @param msg the message input to update with.\n * @param encoding the encoding to use (default: 'raw', other: 'utf8').\n *\n * @return this digest object.\n */\n md.update = function(msg, encoding) {\n if(encoding === 'utf8') {\n msg = forge.util.encodeUtf8(msg);\n }\n\n // update message length\n var len = msg.length;\n md.messageLength += len;\n len = [(len / 0x100000000) >>> 0, len >>> 0];\n for(var i = md.fullMessageLength.length - 1; i >= 0; --i) {\n md.fullMessageLength[i] += len[1];\n len[1] = len[0] + ((md.fullMessageLength[i] / 0x100000000) >>> 0);\n md.fullMessageLength[i] = md.fullMessageLength[i] >>> 0;\n len[0] = ((len[1] / 0x100000000) >>> 0);\n }\n\n // add bytes to input buffer\n _input.putBytes(msg);\n\n // process bytes\n _update(_h, _w, _input);\n\n // compact input buffer every 2K or if empty\n if(_input.read > 2048 || _input.length() === 0) {\n _input.compact();\n }\n\n return md;\n };\n\n /**\n * Produces the digest.\n *\n * @return a byte buffer containing the digest value.\n */\n md.digest = function() {\n /* Note: Here we copy the remaining bytes in the input buffer and\n add the appropriate SHA-512 padding. Then we do the final update\n on a copy of the state so that if the user wants to get\n intermediate digests they can do so. */\n\n /* Determine the number of bytes that must be added to the message\n to ensure its length is congruent to 896 mod 1024. In other words,\n the data to be digested must be a multiple of 1024 bits (or 128 bytes).\n This data includes the message, some padding, and the length of the\n message. Since the length of the message will be encoded as 16 bytes (128\n bits), that means that the last segment of the data must have 112 bytes\n (896 bits) of message and padding. Therefore, the length of the message\n plus the padding must be congruent to 896 mod 1024 because\n 1024 - 128 = 896.\n\n In order to fill up the message length it must be filled with\n padding that begins with 1 bit followed by all 0 bits. Padding\n must *always* be present, so if the message length is already\n congruent to 896 mod 1024, then 1024 padding bits must be added. */\n\n var finalBlock = forge.util.createBuffer();\n finalBlock.putBytes(_input.bytes());\n\n // compute remaining size to be digested (include message length size)\n var remaining = (\n md.fullMessageLength[md.fullMessageLength.length - 1] +\n md.messageLengthSize);\n\n // add padding for overflow blockSize - overflow\n // _padding starts with 1 byte with first bit is set (byte value 128), then\n // there may be up to (blockSize - 1) other pad bytes\n var overflow = remaining & (md.blockLength - 1);\n finalBlock.putBytes(_padding.substr(0, md.blockLength - overflow));\n\n // serialize message length in bits in big-endian order; since length\n // is stored in bytes we multiply by 8 and add carry from next int\n var next, carry;\n var bits = md.fullMessageLength[0] * 8;\n for(var i = 0; i < md.fullMessageLength.length - 1; ++i) {\n next = md.fullMessageLength[i + 1] * 8;\n carry = (next / 0x100000000) >>> 0;\n bits += carry;\n finalBlock.putInt32(bits >>> 0);\n bits = next >>> 0;\n }\n finalBlock.putInt32(bits);\n\n var h = new Array(_h.length);\n for(var i = 0; i < _h.length; ++i) {\n h[i] = _h[i].slice(0);\n }\n _update(h, _w, finalBlock);\n var rval = forge.util.createBuffer();\n var hlen;\n if(algorithm === 'SHA-512') {\n hlen = h.length;\n } else if(algorithm === 'SHA-384') {\n hlen = h.length - 2;\n } else {\n hlen = h.length - 4;\n }\n for(var i = 0; i < hlen; ++i) {\n rval.putInt32(h[i][0]);\n if(i !== hlen - 1 || algorithm !== 'SHA-512/224') {\n rval.putInt32(h[i][1]);\n }\n }\n return rval;\n };\n\n return md;\n};\n\n// sha-512 padding bytes not initialized yet\nvar _padding = null;\nvar _initialized = false;\n\n// table of constants\nvar _k = null;\n\n// initial hash states\nvar _states = null;\n\n/**\n * Initializes the constant tables.\n */\nfunction _init() {\n // create padding\n _padding = String.fromCharCode(128);\n _padding += forge.util.fillString(String.fromCharCode(0x00), 128);\n\n // create K table for SHA-512\n _k = [\n [0x428a2f98, 0xd728ae22], [0x71374491, 0x23ef65cd],\n [0xb5c0fbcf, 0xec4d3b2f], [0xe9b5dba5, 0x8189dbbc],\n [0x3956c25b, 0xf348b538], [0x59f111f1, 0xb605d019],\n [0x923f82a4, 0xaf194f9b], [0xab1c5ed5, 0xda6d8118],\n [0xd807aa98, 0xa3030242], [0x12835b01, 0x45706fbe],\n [0x243185be, 0x4ee4b28c], [0x550c7dc3, 0xd5ffb4e2],\n [0x72be5d74, 0xf27b896f], [0x80deb1fe, 0x3b1696b1],\n [0x9bdc06a7, 0x25c71235], [0xc19bf174, 0xcf692694],\n [0xe49b69c1, 0x9ef14ad2], [0xefbe4786, 0x384f25e3],\n [0x0fc19dc6, 0x8b8cd5b5], [0x240ca1cc, 0x77ac9c65],\n [0x2de92c6f, 0x592b0275], [0x4a7484aa, 0x6ea6e483],\n [0x5cb0a9dc, 0xbd41fbd4], [0x76f988da, 0x831153b5],\n [0x983e5152, 0xee66dfab], [0xa831c66d, 0x2db43210],\n [0xb00327c8, 0x98fb213f], [0xbf597fc7, 0xbeef0ee4],\n [0xc6e00bf3, 0x3da88fc2], [0xd5a79147, 0x930aa725],\n [0x06ca6351, 0xe003826f], [0x14292967, 0x0a0e6e70],\n [0x27b70a85, 0x46d22ffc], [0x2e1b2138, 0x5c26c926],\n [0x4d2c6dfc, 0x5ac42aed], [0x53380d13, 0x9d95b3df],\n [0x650a7354, 0x8baf63de], [0x766a0abb, 0x3c77b2a8],\n [0x81c2c92e, 0x47edaee6], [0x92722c85, 0x1482353b],\n [0xa2bfe8a1, 0x4cf10364], [0xa81a664b, 0xbc423001],\n [0xc24b8b70, 0xd0f89791], [0xc76c51a3, 0x0654be30],\n [0xd192e819, 0xd6ef5218], [0xd6990624, 0x5565a910],\n [0xf40e3585, 0x5771202a], [0x106aa070, 0x32bbd1b8],\n [0x19a4c116, 0xb8d2d0c8], [0x1e376c08, 0x5141ab53],\n [0x2748774c, 0xdf8eeb99], [0x34b0bcb5, 0xe19b48a8],\n [0x391c0cb3, 0xc5c95a63], [0x4ed8aa4a, 0xe3418acb],\n [0x5b9cca4f, 0x7763e373], [0x682e6ff3, 0xd6b2b8a3],\n [0x748f82ee, 0x5defb2fc], [0x78a5636f, 0x43172f60],\n [0x84c87814, 0xa1f0ab72], [0x8cc70208, 0x1a6439ec],\n [0x90befffa, 0x23631e28], [0xa4506ceb, 0xde82bde9],\n [0xbef9a3f7, 0xb2c67915], [0xc67178f2, 0xe372532b],\n [0xca273ece, 0xea26619c], [0xd186b8c7, 0x21c0c207],\n [0xeada7dd6, 0xcde0eb1e], [0xf57d4f7f, 0xee6ed178],\n [0x06f067aa, 0x72176fba], [0x0a637dc5, 0xa2c898a6],\n [0x113f9804, 0xbef90dae], [0x1b710b35, 0x131c471b],\n [0x28db77f5, 0x23047d84], [0x32caab7b, 0x40c72493],\n [0x3c9ebe0a, 0x15c9bebc], [0x431d67c4, 0x9c100d4c],\n [0x4cc5d4be, 0xcb3e42b6], [0x597f299c, 0xfc657e2a],\n [0x5fcb6fab, 0x3ad6faec], [0x6c44198c, 0x4a475817]\n ];\n\n // initial hash states\n _states = {};\n _states['SHA-512'] = [\n [0x6a09e667, 0xf3bcc908],\n [0xbb67ae85, 0x84caa73b],\n [0x3c6ef372, 0xfe94f82b],\n [0xa54ff53a, 0x5f1d36f1],\n [0x510e527f, 0xade682d1],\n [0x9b05688c, 0x2b3e6c1f],\n [0x1f83d9ab, 0xfb41bd6b],\n [0x5be0cd19, 0x137e2179]\n ];\n _states['SHA-384'] = [\n [0xcbbb9d5d, 0xc1059ed8],\n [0x629a292a, 0x367cd507],\n [0x9159015a, 0x3070dd17],\n [0x152fecd8, 0xf70e5939],\n [0x67332667, 0xffc00b31],\n [0x8eb44a87, 0x68581511],\n [0xdb0c2e0d, 0x64f98fa7],\n [0x47b5481d, 0xbefa4fa4]\n ];\n _states['SHA-512/256'] = [\n [0x22312194, 0xFC2BF72C],\n [0x9F555FA3, 0xC84C64C2],\n [0x2393B86B, 0x6F53B151],\n [0x96387719, 0x5940EABD],\n [0x96283EE2, 0xA88EFFE3],\n [0xBE5E1E25, 0x53863992],\n [0x2B0199FC, 0x2C85B8AA],\n [0x0EB72DDC, 0x81C52CA2]\n ];\n _states['SHA-512/224'] = [\n [0x8C3D37C8, 0x19544DA2],\n [0x73E19966, 0x89DCD4D6],\n [0x1DFAB7AE, 0x32FF9C82],\n [0x679DD514, 0x582F9FCF],\n [0x0F6D2B69, 0x7BD44DA8],\n [0x77E36F73, 0x04C48942],\n [0x3F9D85A8, 0x6A1D36C8],\n [0x1112E6AD, 0x91D692A1]\n ];\n\n // now initialized\n _initialized = true;\n}\n\n/**\n * Updates a SHA-512 state with the given byte buffer.\n *\n * @param s the SHA-512 state to update.\n * @param w the array to use to store words.\n * @param bytes the byte buffer to update with.\n */\nfunction _update(s, w, bytes) {\n // consume 512 bit (128 byte) chunks\n var t1_hi, t1_lo;\n var t2_hi, t2_lo;\n var s0_hi, s0_lo;\n var s1_hi, s1_lo;\n var ch_hi, ch_lo;\n var maj_hi, maj_lo;\n var a_hi, a_lo;\n var b_hi, b_lo;\n var c_hi, c_lo;\n var d_hi, d_lo;\n var e_hi, e_lo;\n var f_hi, f_lo;\n var g_hi, g_lo;\n var h_hi, h_lo;\n var i, hi, lo, w2, w7, w15, w16;\n var len = bytes.length();\n while(len >= 128) {\n // the w array will be populated with sixteen 64-bit big-endian words\n // and then extended into 64 64-bit words according to SHA-512\n for(i = 0; i < 16; ++i) {\n w[i][0] = bytes.getInt32() >>> 0;\n w[i][1] = bytes.getInt32() >>> 0;\n }\n for(; i < 80; ++i) {\n // for word 2 words ago: ROTR 19(x) ^ ROTR 61(x) ^ SHR 6(x)\n w2 = w[i - 2];\n hi = w2[0];\n lo = w2[1];\n\n // high bits\n t1_hi = (\n ((hi >>> 19) | (lo << 13)) ^ // ROTR 19\n ((lo >>> 29) | (hi << 3)) ^ // ROTR 61/(swap + ROTR 29)\n (hi >>> 6)) >>> 0; // SHR 6\n // low bits\n t1_lo = (\n ((hi << 13) | (lo >>> 19)) ^ // ROTR 19\n ((lo << 3) | (hi >>> 29)) ^ // ROTR 61/(swap + ROTR 29)\n ((hi << 26) | (lo >>> 6))) >>> 0; // SHR 6\n\n // for word 15 words ago: ROTR 1(x) ^ ROTR 8(x) ^ SHR 7(x)\n w15 = w[i - 15];\n hi = w15[0];\n lo = w15[1];\n\n // high bits\n t2_hi = (\n ((hi >>> 1) | (lo << 31)) ^ // ROTR 1\n ((hi >>> 8) | (lo << 24)) ^ // ROTR 8\n (hi >>> 7)) >>> 0; // SHR 7\n // low bits\n t2_lo = (\n ((hi << 31) | (lo >>> 1)) ^ // ROTR 1\n ((hi << 24) | (lo >>> 8)) ^ // ROTR 8\n ((hi << 25) | (lo >>> 7))) >>> 0; // SHR 7\n\n // sum(t1, word 7 ago, t2, word 16 ago) modulo 2^64 (carry lo overflow)\n w7 = w[i - 7];\n w16 = w[i - 16];\n lo = (t1_lo + w7[1] + t2_lo + w16[1]);\n w[i][0] = (t1_hi + w7[0] + t2_hi + w16[0] +\n ((lo / 0x100000000) >>> 0)) >>> 0;\n w[i][1] = lo >>> 0;\n }\n\n // initialize hash value for this chunk\n a_hi = s[0][0];\n a_lo = s[0][1];\n b_hi = s[1][0];\n b_lo = s[1][1];\n c_hi = s[2][0];\n c_lo = s[2][1];\n d_hi = s[3][0];\n d_lo = s[3][1];\n e_hi = s[4][0];\n e_lo = s[4][1];\n f_hi = s[5][0];\n f_lo = s[5][1];\n g_hi = s[6][0];\n g_lo = s[6][1];\n h_hi = s[7][0];\n h_lo = s[7][1];\n\n // round function\n for(i = 0; i < 80; ++i) {\n // Sum1(e) = ROTR 14(e) ^ ROTR 18(e) ^ ROTR 41(e)\n s1_hi = (\n ((e_hi >>> 14) | (e_lo << 18)) ^ // ROTR 14\n ((e_hi >>> 18) | (e_lo << 14)) ^ // ROTR 18\n ((e_lo >>> 9) | (e_hi << 23))) >>> 0; // ROTR 41/(swap + ROTR 9)\n s1_lo = (\n ((e_hi << 18) | (e_lo >>> 14)) ^ // ROTR 14\n ((e_hi << 14) | (e_lo >>> 18)) ^ // ROTR 18\n ((e_lo << 23) | (e_hi >>> 9))) >>> 0; // ROTR 41/(swap + ROTR 9)\n\n // Ch(e, f, g) (optimized the same way as SHA-1)\n ch_hi = (g_hi ^ (e_hi & (f_hi ^ g_hi))) >>> 0;\n ch_lo = (g_lo ^ (e_lo & (f_lo ^ g_lo))) >>> 0;\n\n // Sum0(a) = ROTR 28(a) ^ ROTR 34(a) ^ ROTR 39(a)\n s0_hi = (\n ((a_hi >>> 28) | (a_lo << 4)) ^ // ROTR 28\n ((a_lo >>> 2) | (a_hi << 30)) ^ // ROTR 34/(swap + ROTR 2)\n ((a_lo >>> 7) | (a_hi << 25))) >>> 0; // ROTR 39/(swap + ROTR 7)\n s0_lo = (\n ((a_hi << 4) | (a_lo >>> 28)) ^ // ROTR 28\n ((a_lo << 30) | (a_hi >>> 2)) ^ // ROTR 34/(swap + ROTR 2)\n ((a_lo << 25) | (a_hi >>> 7))) >>> 0; // ROTR 39/(swap + ROTR 7)\n\n // Maj(a, b, c) (optimized the same way as SHA-1)\n maj_hi = ((a_hi & b_hi) | (c_hi & (a_hi ^ b_hi))) >>> 0;\n maj_lo = ((a_lo & b_lo) | (c_lo & (a_lo ^ b_lo))) >>> 0;\n\n // main algorithm\n // t1 = (h + s1 + ch + _k[i] + _w[i]) modulo 2^64 (carry lo overflow)\n lo = (h_lo + s1_lo + ch_lo + _k[i][1] + w[i][1]);\n t1_hi = (h_hi + s1_hi + ch_hi + _k[i][0] + w[i][0] +\n ((lo / 0x100000000) >>> 0)) >>> 0;\n t1_lo = lo >>> 0;\n\n // t2 = s0 + maj modulo 2^64 (carry lo overflow)\n lo = s0_lo + maj_lo;\n t2_hi = (s0_hi + maj_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n t2_lo = lo >>> 0;\n\n h_hi = g_hi;\n h_lo = g_lo;\n\n g_hi = f_hi;\n g_lo = f_lo;\n\n f_hi = e_hi;\n f_lo = e_lo;\n\n // e = (d + t1) modulo 2^64 (carry lo overflow)\n lo = d_lo + t1_lo;\n e_hi = (d_hi + t1_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n e_lo = lo >>> 0;\n\n d_hi = c_hi;\n d_lo = c_lo;\n\n c_hi = b_hi;\n c_lo = b_lo;\n\n b_hi = a_hi;\n b_lo = a_lo;\n\n // a = (t1 + t2) modulo 2^64 (carry lo overflow)\n lo = t1_lo + t2_lo;\n a_hi = (t1_hi + t2_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n a_lo = lo >>> 0;\n }\n\n // update hash state (additional modulo 2^64)\n lo = s[0][1] + a_lo;\n s[0][0] = (s[0][0] + a_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[0][1] = lo >>> 0;\n\n lo = s[1][1] + b_lo;\n s[1][0] = (s[1][0] + b_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[1][1] = lo >>> 0;\n\n lo = s[2][1] + c_lo;\n s[2][0] = (s[2][0] + c_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[2][1] = lo >>> 0;\n\n lo = s[3][1] + d_lo;\n s[3][0] = (s[3][0] + d_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[3][1] = lo >>> 0;\n\n lo = s[4][1] + e_lo;\n s[4][0] = (s[4][0] + e_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[4][1] = lo >>> 0;\n\n lo = s[5][1] + f_lo;\n s[5][0] = (s[5][0] + f_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[5][1] = lo >>> 0;\n\n lo = s[6][1] + g_lo;\n s[6][0] = (s[6][0] + g_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[6][1] = lo >>> 0;\n\n lo = s[7][1] + h_lo;\n s[7][0] = (s[7][0] + h_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[7][1] = lo >>> 0;\n\n len -= 128;\n }\n}\n","'use strict'\n\nconst EventEmitter = require('events').EventEmitter\nconst Connection = require('interface-connection').Connection\nconst nextTick = require('async/nextTick')\nconst debug = require('debug')\n\nconst MULTIPLEX_CODEC = require('./codec')\n\nconst log = debug('libp2p-mplex:muxer')\nlog.err = debug('libp2p-mplex:muxer:error')\n\nfunction noop () {}\n\nclass MultiplexMuxer extends EventEmitter {\n /**\n * @constructor\n * @param {Connection} conn\n * @param {Mplex} multiplex\n */\n constructor (conn, multiplex) {\n super()\n this.conn = conn\n this.multiplex = multiplex\n this.multicodec = MULTIPLEX_CODEC\n\n multiplex.on('close', () => this.emit('close'))\n multiplex.on('error', (err) => this.emit('error', err))\n\n multiplex.on('stream', (stream) => {\n // install default error handler so that it doesn't throw\n stream.on('error', (err) => {\n log.err('receiver stream errored', err)\n })\n this.emit('stream', new Connection(stream, this.conn))\n })\n }\n\n /**\n * Creates a new stream from the `Connection` used in creating the muxer\n * @param {function(Error, Connection)} callback\n * @returns {Connection}\n */\n newStream (callback) {\n callback = callback || noop\n let stream = this.multiplex.createStream()\n // install default error handler so that it doesn't throw\n stream.on('error', (err) => {\n log.err('initiator stream errored', err)\n })\n const conn = new Connection(stream, this.conn)\n nextTick(callback, null, conn)\n return conn\n }\n\n /**\n * Ends the connection and all of its streams\n * @param {function(Error)} callback\n * @returns {void}\n */\n end (callback) {\n callback = callback || noop\n if (this.multiplex.destroyed) {\n return nextTick(callback)\n }\n this.multiplex.once('close', callback)\n this.multiplex.close()\n }\n}\n\nmodule.exports = MultiplexMuxer\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict'\n\nconst tryEach = require('async/tryEach')\nconst parallel = require('async/parallel')\nconst errCode = require('err-code')\nconst promisify = require('promisify-es6')\n\nmodule.exports = (node) => {\n const routers = node._modules.contentRouting || []\n\n // If we have the dht, make it first\n if (node._dht) {\n routers.unshift(node._dht)\n }\n\n return {\n /**\n * Iterates over all content routers in series to find providers of the given key.\n * Once a content router succeeds, iteration will stop.\n *\n * @param {CID} key The CID key of the content to find\n * @param {object} options\n * @param {number} options.maxTimeout How long the query should run\n * @param {number} options.maxNumProviders - maximum number of providers to find\n * @param {function(Error, Result)} callback\n * @returns {void}\n */\n findProviders: promisify((key, options, callback) => {\n if (typeof options === 'function') {\n callback = options\n options = {}\n } else if (typeof options === 'number') { // This can be deprecated in a future release\n options = {\n maxTimeout: options\n }\n }\n\n if (!routers.length) {\n return callback(errCode(new Error('No content routers available'), 'NO_ROUTERS_AVAILABLE'))\n }\n\n const tasks = routers.map((router) => {\n return (cb) => router.findProviders(key, options, (err, results) => {\n if (err) {\n return cb(err)\n }\n\n // If we don't have any results, we need to provide an error to keep trying\n if (!results || Object.keys(results).length === 0) {\n return cb(errCode(new Error('not found'), 'NOT_FOUND'), null)\n }\n\n cb(null, results)\n })\n })\n\n tryEach(tasks, (err, results) => {\n if (err && err.code !== 'NOT_FOUND') {\n return callback(err)\n }\n results = results || []\n callback(null, results)\n })\n }),\n\n /**\n * Iterates over all content routers in parallel to notify it is\n * a provider of the given key.\n *\n * @param {CID} key The CID key of the content to find\n * @param {function(Error)} callback\n * @returns {void}\n */\n provide: promisify((key, callback) => {\n if (!routers.length) {\n return callback(errCode(new Error('No content routers available'), 'NO_ROUTERS_AVAILABLE'))\n }\n\n parallel(routers.map((router) => {\n return (cb) => router.provide(key, cb)\n }), callback)\n })\n }\n}\n","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n","/**\n * Cipher base API.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\n\nmodule.exports = forge.cipher = forge.cipher || {};\n\n// registered algorithms\nforge.cipher.algorithms = forge.cipher.algorithms || {};\n\n/**\n * Creates a cipher object that can be used to encrypt data using the given\n * algorithm and key. The algorithm may be provided as a string value for a\n * previously registered algorithm or it may be given as a cipher algorithm\n * API object.\n *\n * @param algorithm the algorithm to use, either a string or an algorithm API\n * object.\n * @param key the key to use, as a binary-encoded string of bytes or a\n * byte buffer.\n *\n * @return the cipher.\n */\nforge.cipher.createCipher = function(algorithm, key) {\n var api = algorithm;\n if(typeof api === 'string') {\n api = forge.cipher.getAlgorithm(api);\n if(api) {\n api = api();\n }\n }\n if(!api) {\n throw new Error('Unsupported algorithm: ' + algorithm);\n }\n\n // assume block cipher\n return new forge.cipher.BlockCipher({\n algorithm: api,\n key: key,\n decrypt: false\n });\n};\n\n/**\n * Creates a decipher object that can be used to decrypt data using the given\n * algorithm and key. The algorithm may be provided as a string value for a\n * previously registered algorithm or it may be given as a cipher algorithm\n * API object.\n *\n * @param algorithm the algorithm to use, either a string or an algorithm API\n * object.\n * @param key the key to use, as a binary-encoded string of bytes or a\n * byte buffer.\n *\n * @return the cipher.\n */\nforge.cipher.createDecipher = function(algorithm, key) {\n var api = algorithm;\n if(typeof api === 'string') {\n api = forge.cipher.getAlgorithm(api);\n if(api) {\n api = api();\n }\n }\n if(!api) {\n throw new Error('Unsupported algorithm: ' + algorithm);\n }\n\n // assume block cipher\n return new forge.cipher.BlockCipher({\n algorithm: api,\n key: key,\n decrypt: true\n });\n};\n\n/**\n * Registers an algorithm by name. If the name was already registered, the\n * algorithm API object will be overwritten.\n *\n * @param name the name of the algorithm.\n * @param algorithm the algorithm API object.\n */\nforge.cipher.registerAlgorithm = function(name, algorithm) {\n name = name.toUpperCase();\n forge.cipher.algorithms[name] = algorithm;\n};\n\n/**\n * Gets a registered algorithm by name.\n *\n * @param name the name of the algorithm.\n *\n * @return the algorithm, if found, null if not.\n */\nforge.cipher.getAlgorithm = function(name) {\n name = name.toUpperCase();\n if(name in forge.cipher.algorithms) {\n return forge.cipher.algorithms[name];\n }\n return null;\n};\n\nvar BlockCipher = forge.cipher.BlockCipher = function(options) {\n this.algorithm = options.algorithm;\n this.mode = this.algorithm.mode;\n this.blockSize = this.mode.blockSize;\n this._finish = false;\n this._input = null;\n this.output = null;\n this._op = options.decrypt ? this.mode.decrypt : this.mode.encrypt;\n this._decrypt = options.decrypt;\n this.algorithm.initialize(options);\n};\n\n/**\n * Starts or restarts the encryption or decryption process, whichever\n * was previously configured.\n *\n * For non-GCM mode, the IV may be a binary-encoded string of bytes, an array\n * of bytes, a byte buffer, or an array of 32-bit integers. If the IV is in\n * bytes, then it must be Nb (16) bytes in length. If the IV is given in as\n * 32-bit integers, then it must be 4 integers long.\n *\n * Note: an IV is not required or used in ECB mode.\n *\n * For GCM-mode, the IV must be given as a binary-encoded string of bytes or\n * a byte buffer. The number of bytes should be 12 (96 bits) as recommended\n * by NIST SP-800-38D but another length may be given.\n *\n * @param options the options to use:\n * iv the initialization vector to use as a binary-encoded string of\n * bytes, null to reuse the last ciphered block from a previous\n * update() (this \"residue\" method is for legacy support only).\n * additionalData additional authentication data as a binary-encoded\n * string of bytes, for 'GCM' mode, (default: none).\n * tagLength desired length of authentication tag, in bits, for\n * 'GCM' mode (0-128, default: 128).\n * tag the authentication tag to check if decrypting, as a\n * binary-encoded string of bytes.\n * output the output the buffer to write to, null to create one.\n */\nBlockCipher.prototype.start = function(options) {\n options = options || {};\n var opts = {};\n for(var key in options) {\n opts[key] = options[key];\n }\n opts.decrypt = this._decrypt;\n this._finish = false;\n this._input = forge.util.createBuffer();\n this.output = options.output || forge.util.createBuffer();\n this.mode.start(opts);\n};\n\n/**\n * Updates the next block according to the cipher mode.\n *\n * @param input the buffer to read from.\n */\nBlockCipher.prototype.update = function(input) {\n if(input) {\n // input given, so empty it into the input buffer\n this._input.putBuffer(input);\n }\n\n // do cipher operation until it needs more input and not finished\n while(!this._op.call(this.mode, this._input, this.output, this._finish) &&\n !this._finish) {}\n\n // free consumed memory from input buffer\n this._input.compact();\n};\n\n/**\n * Finishes encrypting or decrypting.\n *\n * @param pad a padding function to use in CBC mode, null for default,\n * signature(blockSize, buffer, decrypt).\n *\n * @return true if successful, false on error.\n */\nBlockCipher.prototype.finish = function(pad) {\n // backwards-compatibility w/deprecated padding API\n // Note: will overwrite padding functions even after another start() call\n if(pad && (this.mode.name === 'ECB' || this.mode.name === 'CBC')) {\n this.mode.pad = function(input) {\n return pad(this.blockSize, input, false);\n };\n this.mode.unpad = function(output) {\n return pad(this.blockSize, output, true);\n };\n }\n\n // build options for padding and afterFinish functions\n var options = {};\n options.decrypt = this._decrypt;\n\n // get # of bytes that won't fill a block\n options.overflow = this._input.length() % this.blockSize;\n\n if(!this._decrypt && this.mode.pad) {\n if(!this.mode.pad(this._input, options)) {\n return false;\n }\n }\n\n // do final update\n this._finish = true;\n this.update();\n\n if(this._decrypt && this.mode.unpad) {\n if(!this.mode.unpad(this.output, options)) {\n return false;\n }\n }\n\n if(this.mode.afterFinish) {\n if(!this.mode.afterFinish(this.output, options)) {\n return false;\n }\n }\n\n return true;\n};\n","/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n(function(){\n \"use strict\";\n\n var chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\n // Use a lookup table to find the index.\n var lookup = new Uint8Array(256);\n for (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n }\n\n exports.encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer),\n i, len = bytes.length, base64 = \"\";\n\n for (i = 0; i < len; i+=3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if ((len % 3) === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n\n return base64;\n };\n\n exports.decode = function(base64) {\n var bufferLength = base64.length * 0.75,\n len = base64.length, i, p = 0,\n encoded1, encoded2, encoded3, encoded4;\n\n if (base64[base64.length - 1] === \"=\") {\n bufferLength--;\n if (base64[base64.length - 2] === \"=\") {\n bufferLength--;\n }\n }\n\n var arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i+=4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i+1)];\n encoded3 = lookup[base64.charCodeAt(i+2)];\n encoded4 = lookup[base64.charCodeAt(i+3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n };\n})();\n","'use strict'\nvar abortCb = require('../util/abort-cb')\n\nmodule.exports = function once (value, onAbort) {\n return function (abort, cb) {\n if(abort)\n return abortCb(cb, abort, onAbort)\n if(value != null) {\n var _value = value; value = null\n cb(null, _value)\n } else\n cb(true)\n }\n}\n\n\n","'use strict'\n\nconst toStream = require('it-to-stream')\n\nmodule.exports = function (self) {\n return function refsReadableStream (ipfsPath, options) {\n return toStream.readable(self._refsAsyncIterator(ipfsPath, options), {\n objectMode: true\n })\n }\n}\n","var Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\n","'use strict'\n\nconst {\n DAGNode,\n DAGLink\n} = require('ipld-dag-pb')\nconst CID = require('cids')\nconst log = require('debug')('ipfs:mfs:core:utils:remove-link')\nconst UnixFS = require('ipfs-unixfs')\nconst {\n generatePath,\n updateHamtDirectory\n} = require('./hamt-utils')\nconst errCode = require('err-code')\nconst mc = require('multicodec')\nconst mh = require('multihashes')\n\nconst removeLink = async (context, options) => {\n if (!options.parentCid && !options.parent) {\n throw errCode(new Error('No parent node or CID passed to removeLink'), 'EINVALIDPARENT')\n }\n\n if (options.parentCid && !CID.isCID(options.parentCid)) {\n throw errCode(new Error('Invalid CID passed to removeLink'), 'EINVALIDPARENTCID')\n }\n\n if (!options.parent) {\n log(`Loading parent node ${options.parentCid}`)\n\n options.parent = await context.ipld.get(options.parentCid)\n }\n\n if (!options.name) {\n throw errCode(new Error('No child name passed to removeLink'), 'EINVALIDCHILDNAME')\n }\n\n const meta = UnixFS.unmarshal(options.parent.Data)\n\n if (meta.type === 'hamt-sharded-directory') {\n log(`Removing ${options.name} from sharded directory`)\n\n return removeFromShardedDirectory(context, options)\n }\n\n log(`Removing link ${options.name} regular directory`)\n\n return removeFromDirectory(context, options)\n}\n\nconst removeFromDirectory = async (context, options) => {\n const format = mc[options.format.toUpperCase().replace(/-/g, '_')]\n const hashAlg = mh.names[options.hashAlg]\n\n options.parent.rmLink(options.name)\n const cid = await context.ipld.put(options.parent, format, {\n cidVersion: options.cidVersion,\n hashAlg\n })\n\n log(`Updated regular directory ${cid}`)\n\n return {\n node: options.parent,\n cid\n }\n}\n\nconst removeFromShardedDirectory = async (context, options) => {\n const {\n rootBucket, path\n } = await generatePath(context, options.name, options.parent)\n\n await rootBucket.del(options.name)\n\n const {\n node\n } = await updateShard(context, path, {\n name: options.name,\n cid: options.cid,\n size: options.size,\n hashAlg: options.hashAlg,\n format: options.format,\n cidVersion: options.cidVersion,\n flush: options.flush\n }, options)\n\n return updateHamtDirectory(context, node.Links, rootBucket, options)\n}\n\nconst updateShard = async (context, positions, child, options) => {\n const {\n bucket,\n prefix,\n node\n } = positions.pop()\n\n const link = node.Links\n .find(link => link.Name.substring(0, 2) === prefix)\n\n if (!link) {\n throw errCode(new Error(`No link found with prefix ${prefix} for file ${child.name}`), 'ERR_NOT_FOUND')\n }\n\n if (link.Name === `${prefix}${child.name}`) {\n log(`Removing existing link ${link.Name}`)\n\n node.rmLink(link.Name)\n\n await bucket.del(child.name)\n\n return updateHamtDirectory(context, node.Links, bucket, options)\n }\n\n log(`Descending into sub-shard ${link.Name} for ${prefix}${child.name}`)\n\n const result = await updateShard(context, positions, child, options)\n\n let newName = prefix\n\n if (result.node.Links.length === 1) {\n log(`Removing subshard for ${prefix}`)\n\n // convert shard back to normal dir\n result.cid = result.node.Links[0].Hash\n result.node = result.node.Links[0]\n\n newName = `${prefix}${result.node.Name.substring(2)}`\n }\n\n log(`Updating shard ${prefix} with name ${newName}`)\n\n const size = DAGNode.isDAGNode(result.node) ? result.node.size : result.node.Tsize\n\n return updateShardParent(context, bucket, node, prefix, newName, size, result.cid, options)\n}\n\nconst updateShardParent = (context, bucket, parent, oldName, newName, size, cid, options) => {\n parent.rmLink(oldName)\n parent.addLink(new DAGLink(newName, size, cid))\n\n return updateHamtDirectory(context, parent.Links, bucket, options)\n}\n\nmodule.exports = removeLink\n","'use strict'\nvar State = require('./state')\n\nfunction isInteger (i) {\n return Number.isFinite(i)\n}\n\nfunction isFunction (f) {\n return 'function' === typeof f\n}\n\nfunction maxDelay(fn, delay) {\n if(!delay) return fn\n return function (a, cb) {\n var timer = setTimeout(function () {\n fn(new Error('pull-reader: read exceeded timeout'), cb)\n }, delay)\n fn(a, function (err, value) {\n clearTimeout(timer)\n cb(err, value)\n })\n\n }\n\n}\n\nmodule.exports = function (timeout) {\n\n var queue = [], read, readTimed, reading = false\n var state = State(), ended, streaming, abort\n\n function drain () {\n while (queue.length) {\n if(null == queue[0].length && state.has(1)) {\n queue.shift().cb(null, state.get())\n }\n else if(state.has(queue[0].length)) {\n var next = queue.shift()\n next.cb(null, state.get(next.length))\n }\n else if(ended == true && queue[0].length && state.length < queue[0].length) {\n var msg = 'stream ended with:'+state.length+' but wanted:'+queue[0].length\n queue.shift().cb(new Error(msg))\n }\n else if(ended)\n queue.shift().cb(ended)\n else\n return !!queue.length\n }\n //always read a little data\n return queue.length || !state.has(1) || abort\n }\n\n function more () {\n var d = drain()\n if(d && !reading)\n if(read && !reading && !streaming) {\n reading = true\n readTimed (null, function (err, data) {\n reading = false\n if(err) {\n ended = err\n return drain()\n }\n state.add(data)\n more()\n })\n }\n }\n\n function reader (_read) {\n if(abort) {\n while(queue.length) queue.shift().cb(abort)\n return cb && cb(abort)\n }\n readTimed = maxDelay(_read, timeout)\n read = _read\n more()\n }\n\n reader.abort = function (err, cb) {\n abort = err || true\n if(read) {\n reading = true\n read(abort, function () {\n while(queue.length) queue.shift().cb(abort)\n cb && cb(abort)\n })\n }\n else\n cb()\n }\n\n reader.read = function (len, _timeout, cb) {\n if(isFunction(_timeout))\n cb = _timeout, _timeout = timeout\n if(isFunction(cb)) {\n queue.push({length: isInteger(len) ? len : null, cb: cb})\n more()\n }\n else {\n //switch into streaming mode for the rest of the stream.\n streaming = true\n //wait for the current read to complete\n return function (abort, cb) {\n //if there is anything still in the queue,\n if(reading || state.has(1)) {\n if(abort) return read(abort, cb)\n queue.push({length: null, cb: cb})\n more()\n }\n else\n maxDelay(read, _timeout)(abort, function (err, data) {\n cb(err, data)\n })\n }\n }\n }\n\n return reader\n}\n\n\n\n\n\n\n","'use strict'\nconst mergeOptions = require('merge-options')\nconst ipldDagCbor = require('ipld-dag-cbor')\nconst ipldDagPb = require('ipld-dag-pb')\nconst ipldRaw = require('ipld-raw')\n\nmodule.exports = (blockService, options) => {\n options = options || {}\n\n return mergeOptions.call(\n // ensure we have the defaults formats even if the user overrides `formats: []`\n { concatArrays: true },\n {\n blockService: blockService,\n formats: [ipldDagCbor, ipldDagPb, ipldRaw]\n }, options)\n}\n","'use strict'\n\nconst CID = require('cids')\nconst errCode = require('err-code')\n\nconst resolve = async (cid, name, path, toResolve, resolve, depth, ipld) => {\n const node = await ipld.get(cid)\n let subObject = node\n let subPath = path\n\n while (toResolve.length) {\n const prop = toResolve[0]\n\n if (prop in subObject) {\n // remove the bit of the path we have resolved\n toResolve.shift()\n subPath = `${subPath}/${prop}`\n\n if (CID.isCID(subObject[prop])) {\n return {\n entry: {\n name,\n path,\n cid,\n node,\n depth\n },\n next: {\n cid: subObject[prop],\n name: prop,\n path: subPath,\n toResolve\n }\n }\n }\n\n subObject = subObject[prop]\n } else {\n // cannot resolve further\n throw errCode(new Error(`No property named ${prop} found in cbor node ${cid.toBaseEncodedString()}`), 'ERR_NO_PROP')\n }\n }\n\n return {\n entry: {\n name,\n path,\n cid,\n node,\n depth\n }\n }\n}\n\nmodule.exports = resolve\n","'use strict'\n\nmodule.exports = `// can't use, because protocol-buffers doesn't support imports\n// so we have to duplicate for now :(\n// import \"record.proto\";\n\nmessage Record {\n // adjusted for javascript\n optional bytes key = 1;\n optional bytes value = 2;\n optional bytes author = 3;\n optional bytes signature = 4;\n optional string timeReceived = 5;\n}\n\nmessage Message {\n enum MessageType {\n PUT_VALUE = 0;\n GET_VALUE = 1;\n ADD_PROVIDER = 2;\n GET_PROVIDERS = 3;\n FIND_NODE = 4;\n PING = 5;\n }\n\n enum ConnectionType {\n // sender does not have a connection to peer, and no extra information (default)\n NOT_CONNECTED = 0;\n\n // sender has a live connection to peer\n CONNECTED = 1;\n\n // sender recently connected to peer\n CAN_CONNECT = 2;\n\n // sender recently tried to connect to peer repeatedly but failed to connect\n // (\"try\" here is loose, but this should signal \"made strong effort, failed\")\n CANNOT_CONNECT = 3;\n }\n\n message Peer {\n // ID of a given peer.\n optional bytes id = 1;\n\n // multiaddrs for a given peer\n repeated bytes addrs = 2;\n\n // used to signal the sender's connection capabilities to the peer\n optional ConnectionType connection = 3;\n }\n\n // defines what type of message it is.\n optional MessageType type = 1;\n\n // defines what coral cluster level this query/response belongs to.\n // in case we want to implement coral's cluster rings in the future.\n optional int32 clusterLevelRaw = 10;\n\n // Used to specify the key associated with this message.\n // PUT_VALUE, GET_VALUE, ADD_PROVIDER, GET_PROVIDERS\n // adjusted for javascript\n optional bytes key = 2;\n\n // Used to return a value\n // PUT_VALUE, GET_VALUE\n // adjusted Record to bytes for js\n optional bytes record = 3;\n\n // Used to return peers closer to a key in a query\n // GET_VALUE, GET_PROVIDERS, FIND_NODE\n repeated Peer closerPeers = 8;\n\n // Used to return Providers\n // GET_VALUE, ADD_PROVIDER, GET_PROVIDERS\n repeated Peer providerPeers = 9;\n}`\n","'use strict'\n\nconst pull = require('pull-stream')\nconst EventEmitter = require('events')\n\nconst emitter = new EventEmitter()\n\nfunction handler (protocol, conn) {\n conn.getPeerInfo((err, peerInfo) => {\n if (err) {\n console.log(err)\n return\n }\n\n const peerId = peerInfo.id.toB58String()\n\n pull(\n conn,\n pull.map((message) => {\n let msg\n try {\n msg = JSON.parse(message.toString())\n } catch (err) {\n emitter.emit('warning', err.message)\n return // early\n }\n\n if (peerId !== msg.from) {\n emitter.emit('warning', 'no peerid match ' + msg.from)\n return // early\n }\n\n const topicIDs = msg.topicIDs\n if (!Array.isArray(topicIDs)) {\n emitter.emit('warning', 'no topic IDs')\n return // early\n }\n\n msg.data = Buffer.from(msg.data, 'hex')\n msg.seqno = Buffer.from(msg.seqno, 'hex')\n\n topicIDs.forEach((topic) => {\n emitter.emit(topic, msg)\n })\n\n return msg\n }),\n pull.onEnd(() => {\n // do nothing\n })\n )\n })\n}\n\nexports = module.exports = {\n handler: handler,\n emitter: emitter\n}\n","'use strict'\n\nfunction id (e) { return e }\nvar prop = require('../util/prop')\n\nmodule.exports = function asyncMap (map) {\n if(!map) return id\n map = prop(map)\n var busy = false, abortCb, aborted\n return function (read) {\n return function next (abort, cb) {\n if(aborted) return cb(aborted)\n if(abort) {\n aborted = abort\n if(!busy) read(abort, function (err) {\n //incase the source has already ended normally,\n //we should pass our own error.\n cb(abort)\n })\n else read(abort, function (err) {\n //if we are still busy, wait for the mapper to complete.\n if(busy) abortCb = cb\n else cb(abort)\n })\n }\n else\n read(null, function (end, data) {\n if(end) cb(end)\n else if(aborted) cb(aborted)\n else {\n busy = true\n map(data, function (err, data) {\n busy = false\n if(aborted) {\n cb(aborted)\n abortCb && abortCb(aborted)\n }\n else if(err) next (err, cb)\n else cb(null, data)\n })\n }\n })\n }\n }\n}\n\n\n\n\n\n\n\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","module.exports = require('events').EventEmitter;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","'use strict';\n\nfunction createError(msg, code, props) {\n var err = msg instanceof Error ? msg : new Error(msg);\n var key;\n\n if (typeof code === 'object') {\n props = code;\n } else if (code != null) {\n err.code = code;\n }\n\n if (props) {\n for (key in props) {\n err[key] = props[key];\n }\n }\n\n return err;\n}\n\nmodule.exports = createError;\n","var EventEmitter = require('events').EventEmitter\nvar inherits = require('util').inherits\nvar extend = require('xtend')\nvar DeferredLevelDOWN = require('deferred-leveldown')\nvar IteratorStream = require('level-iterator-stream')\nvar Batch = require('./batch')\nvar errors = require('level-errors')\nvar assert = require('assert')\nvar promisify = require('./promisify')\nvar getCallback = require('./common').getCallback\nvar getOptions = require('./common').getOptions\n\nvar WriteError = errors.WriteError\nvar ReadError = errors.ReadError\nvar NotFoundError = errors.NotFoundError\nvar OpenError = errors.OpenError\nvar InitializationError = errors.InitializationError\n\n// Possible AbstractLevelDOWN#status values:\n// - 'new' - newly created, not opened or closed\n// - 'opening' - waiting for the database to be opened, post open()\n// - 'open' - successfully opened the database, available for use\n// - 'closing' - waiting for the database to be closed, post close()\n// - 'closed' - database has been successfully closed, should not be\n// used except for another open() operation\n\nfunction LevelUP (db, options, callback) {\n if (!(this instanceof LevelUP)) {\n return new LevelUP(db, options, callback)\n }\n\n var error\n\n EventEmitter.call(this)\n this.setMaxListeners(Infinity)\n\n if (typeof options === 'function') {\n callback = options\n options = {}\n }\n\n options = options || {}\n\n if (!db || typeof db !== 'object') {\n error = new InitializationError('First argument must be an abstract-leveldown compliant store')\n if (typeof callback === 'function') {\n return process.nextTick(callback, error)\n }\n throw error\n }\n\n assert.strictEqual(typeof db.status, 'string', '.status required, old abstract-leveldown')\n\n this.options = getOptions(options)\n this._db = db\n this.db = new DeferredLevelDOWN(db)\n this.open(callback)\n}\n\nLevelUP.prototype.emit = EventEmitter.prototype.emit\nLevelUP.prototype.once = EventEmitter.prototype.once\ninherits(LevelUP, EventEmitter)\n\nLevelUP.prototype.open = function (opts, callback) {\n var self = this\n var promise\n\n if (typeof opts === 'function') {\n callback = opts\n opts = null\n }\n\n if (!callback) {\n callback = promisify()\n promise = callback.promise\n }\n\n if (!opts) {\n opts = this.options\n }\n\n if (this.isOpen()) {\n process.nextTick(callback, null, self)\n return promise\n }\n\n if (this._isOpening()) {\n this.once('open', function () { callback(null, self) })\n return promise\n }\n\n this.emit('opening')\n\n this.db.open(opts, function (err) {\n if (err) {\n return callback(new OpenError(err))\n }\n self.db = self._db\n callback(null, self)\n self.emit('open')\n self.emit('ready')\n })\n\n return promise\n}\n\nLevelUP.prototype.close = function (callback) {\n var self = this\n var promise\n\n if (!callback) {\n callback = promisify()\n promise = callback.promise\n }\n\n if (this.isOpen()) {\n this.db.close(function () {\n self.emit('closed')\n callback.apply(null, arguments)\n })\n this.emit('closing')\n this.db = new DeferredLevelDOWN(this._db)\n } else if (this.isClosed()) {\n process.nextTick(callback)\n } else if (this.db.status === 'closing') {\n this.once('closed', callback)\n } else if (this._isOpening()) {\n this.once('open', function () {\n self.close(callback)\n })\n }\n\n return promise\n}\n\nLevelUP.prototype.isOpen = function () {\n return this.db.status === 'open'\n}\n\nLevelUP.prototype._isOpening = function () {\n return this.db.status === 'opening'\n}\n\nLevelUP.prototype.isClosed = function () {\n return (/^clos|new/).test(this.db.status)\n}\n\nLevelUP.prototype.get = function (key, options, callback) {\n if (key === null || key === undefined) {\n throw new ReadError('get() requires a key argument')\n }\n\n var promise\n\n callback = getCallback(options, callback)\n\n if (!callback) {\n callback = promisify()\n promise = callback.promise\n }\n\n if (maybeError(this, callback)) { return promise }\n\n options = getOptions(options)\n\n this.db.get(key, options, function (err, value) {\n if (err) {\n if ((/notfound/i).test(err) || err.notFound) {\n err = new NotFoundError('Key not found in database [' + key + ']', err)\n } else {\n err = new ReadError(err)\n }\n return callback(err)\n }\n callback(null, value)\n })\n\n return promise\n}\n\nLevelUP.prototype.put = function (key, value, options, callback) {\n if (key === null || key === undefined) {\n throw new WriteError('put() requires a key argument')\n }\n\n var self = this\n var promise\n\n callback = getCallback(options, callback)\n\n if (!callback) {\n callback = promisify()\n promise = callback.promise\n }\n\n if (maybeError(this, callback)) { return promise }\n\n options = getOptions(options)\n\n this.db.put(key, value, options, function (err) {\n if (err) {\n return callback(new WriteError(err))\n }\n self.emit('put', key, value)\n callback()\n })\n\n return promise\n}\n\nLevelUP.prototype.del = function (key, options, callback) {\n if (key === null || key === undefined) {\n throw new WriteError('del() requires a key argument')\n }\n\n var self = this\n var promise\n\n callback = getCallback(options, callback)\n\n if (!callback) {\n callback = promisify()\n promise = callback.promise\n }\n\n if (maybeError(this, callback)) { return promise }\n\n options = getOptions(options)\n\n this.db.del(key, options, function (err) {\n if (err) {\n return callback(new WriteError(err))\n }\n self.emit('del', key)\n callback()\n })\n\n return promise\n}\n\nLevelUP.prototype.batch = function (arr, options, callback) {\n if (!arguments.length) {\n return new Batch(this)\n }\n\n if (!Array.isArray(arr)) {\n throw new WriteError('batch() requires an array argument')\n }\n\n var self = this\n var promise\n\n callback = getCallback(options, callback)\n\n if (!callback) {\n callback = promisify()\n promise = callback.promise\n }\n\n if (maybeError(this, callback)) { return promise }\n\n options = getOptions(options)\n\n this.db.batch(arr, options, function (err) {\n if (err) {\n return callback(new WriteError(err))\n }\n self.emit('batch', arr)\n callback()\n })\n\n return promise\n}\n\nLevelUP.prototype.iterator = function (options) {\n return this.db.iterator(options)\n}\n\nLevelUP.prototype.readStream =\nLevelUP.prototype.createReadStream = function (options) {\n options = extend({ keys: true, values: true }, options)\n if (typeof options.limit !== 'number') { options.limit = -1 }\n return new IteratorStream(this.db.iterator(options), options)\n}\n\nLevelUP.prototype.keyStream =\nLevelUP.prototype.createKeyStream = function (options) {\n return this.createReadStream(extend(options, { keys: true, values: false }))\n}\n\nLevelUP.prototype.valueStream =\nLevelUP.prototype.createValueStream = function (options) {\n return this.createReadStream(extend(options, { keys: false, values: true }))\n}\n\nLevelUP.prototype.toString = function () {\n return 'LevelUP'\n}\n\nfunction maybeError (db, callback) {\n if (!db._isOpening() && !db.isOpen()) {\n process.nextTick(callback, new ReadError('Database is not open'))\n return true\n }\n}\n\nLevelUP.errors = errors\nmodule.exports = LevelUP.default = LevelUP\n","'use strict'\n\n/* eslint no-warning-comments: off */\n\nconst parallel = require('async/parallel')\nconst once = require('once')\nconst debug = require('debug')\nconst log = debug('libp2p:switch:transport')\n\nconst LimitDialer = require('./limit-dialer')\nconst { DIAL_TIMEOUT } = require('./constants')\nconst { uniqueBy } = require('./utils')\n\n// number of concurrent outbound dials to make per peer, same as go-libp2p-swtch\nconst defaultPerPeerRateLimit = 8\n\n/**\n * Manages the transports for the switch. This simplifies dialing and listening across\n * multiple transports.\n */\nclass TransportManager {\n constructor (_switch) {\n this.switch = _switch\n this.dialer = new LimitDialer(defaultPerPeerRateLimit, this.switch._options.dialTimeout || DIAL_TIMEOUT)\n }\n\n /**\n * Adds a `Transport` to the list of transports on the switch, and assigns it to the given key\n *\n * @param {String} key\n * @param {Transport} transport\n * @returns {void}\n */\n add (key, transport) {\n log('adding %s', key)\n if (this.switch.transports[key]) {\n throw new Error('There is already a transport with this key')\n }\n\n this.switch.transports[key] = transport\n if (!this.switch.transports[key].listeners) {\n this.switch.transports[key].listeners = []\n }\n }\n\n /**\n * Closes connections for the given transport key\n * and removes it from the switch.\n *\n * @param {String} key\n * @param {function(Error)} callback\n * @returns {void}\n */\n remove (key, callback) {\n callback = callback || function () {}\n\n if (!this.switch.transports[key]) {\n return callback()\n }\n\n this.close(key, (err) => {\n delete this.switch.transports[key]\n callback(err)\n })\n }\n\n /**\n * Calls `remove` on each transport the switch has\n *\n * @param {function(Error)} callback\n * @returns {void}\n */\n removeAll (callback) {\n const tasks = Object.keys(this.switch.transports).map((key) => {\n return (cb) => {\n this.remove(key, cb)\n }\n })\n\n parallel(tasks, callback)\n }\n\n /**\n * For a given transport `key`, dial to all that transport multiaddrs\n *\n * @param {String} key Key of the `Transport` to dial\n * @param {PeerInfo} peerInfo\n * @param {function(Error, Connection)} callback\n * @returns {void}\n */\n dial (key, peerInfo, callback) {\n const transport = this.switch.transports[key]\n let multiaddrs = peerInfo.multiaddrs.toArray()\n\n if (!Array.isArray(multiaddrs)) {\n multiaddrs = [multiaddrs]\n }\n\n // filter the multiaddrs that are actually valid for this transport\n multiaddrs = TransportManager.dialables(transport, multiaddrs, this.switch._peerInfo)\n log('dialing %s', key, multiaddrs.map((m) => m.toString()))\n\n // dial each of the multiaddrs with the given transport\n this.dialer.dialMany(peerInfo.id, transport, multiaddrs, (errors, success) => {\n if (errors) {\n return callback(errors)\n }\n\n peerInfo.connect(success.multiaddr)\n callback(null, success.conn)\n })\n }\n\n /**\n * For a given Transport `key`, listen on all multiaddrs in the switch's `_peerInfo`.\n * If a `handler` is not provided, the Switch's `protocolMuxer` will be used.\n *\n * @param {String} key\n * @param {*} _options Currently ignored\n * @param {function(Connection)} handler\n * @param {function(Error)} callback\n * @returns {void}\n */\n listen (key, _options, handler, callback) {\n handler = this.switch._connectionHandler(key, handler)\n\n const transport = this.switch.transports[key]\n let originalAddrs = this.switch._peerInfo.multiaddrs.toArray()\n\n // Until TCP can handle distinct addresses on listen, https://github.com/libp2p/interface-transport/issues/41,\n // make sure we aren't trying to listen on duplicate ports. This also applies to websockets.\n originalAddrs = uniqueBy(originalAddrs, (addr) => {\n // Any non 0 port should register as unique\n const port = Number(addr.toOptions().port)\n return isNaN(port) || port === 0 ? addr.toString() : port\n })\n\n const multiaddrs = TransportManager.dialables(transport, originalAddrs)\n\n if (!transport.listeners) {\n transport.listeners = []\n }\n\n let freshMultiaddrs = []\n\n const createListeners = multiaddrs.map((ma) => {\n return (cb) => {\n const done = once(cb)\n const listener = transport.createListener(handler)\n listener.once('error', done)\n\n listener.listen(ma, (err) => {\n if (err) {\n return done(err)\n }\n listener.removeListener('error', done)\n listener.getAddrs((err, addrs) => {\n if (err) {\n return done(err)\n }\n freshMultiaddrs = freshMultiaddrs.concat(addrs)\n transport.listeners.push(listener)\n done()\n })\n })\n }\n })\n\n parallel(createListeners, (err) => {\n if (err) {\n return callback(err)\n }\n\n // cause we can listen on port 0 or 0.0.0.0\n this.switch._peerInfo.multiaddrs.replace(multiaddrs, freshMultiaddrs)\n callback()\n })\n }\n\n /**\n * Closes the transport with the given key, by closing all of its listeners\n *\n * @param {String} key\n * @param {function(Error)} callback\n * @returns {void}\n */\n close (key, callback) {\n const transport = this.switch.transports[key]\n\n if (!transport) {\n return callback(new Error(`Trying to close non existing transport: ${key}`))\n }\n\n parallel(transport.listeners.map((listener) => {\n return (cb) => {\n listener.close(cb)\n }\n }), callback)\n }\n\n /**\n * For a given transport, return its multiaddrs that match the given multiaddrs\n *\n * @param {Transport} transport\n * @param {Array} multiaddrs\n * @param {PeerInfo} peerInfo Optional - a peer whose addresses should not be returned\n * @returns {Array}\n */\n static dialables (transport, multiaddrs, peerInfo) {\n // If we dont have a proper transport, return no multiaddrs\n if (!transport || !transport.filter) return []\n\n const transportAddrs = transport.filter(multiaddrs)\n if (!peerInfo || !transportAddrs.length) {\n return transportAddrs\n }\n\n const ourAddrs = ourAddresses(peerInfo)\n\n const result = transportAddrs.filter(transportAddr => {\n // If our address is in the destination address, filter it out\n return !ourAddrs.some(a => getDestination(transportAddr).startsWith(a))\n })\n\n return result\n }\n}\n\n/**\n * Expand addresses in peer info into array of addresses with and without peer\n * ID suffix.\n *\n * @param {PeerInfo} peerInfo Our peer info object\n * @returns {String[]}\n */\nfunction ourAddresses (peerInfo) {\n const ourPeerId = peerInfo.id.toB58String()\n return peerInfo.multiaddrs.toArray()\n .reduce((ourAddrs, addr) => {\n const peerId = addr.getPeerId()\n addr = addr.toString()\n const otherAddr = peerId\n ? addr.slice(0, addr.lastIndexOf(`/ipfs/${peerId}`))\n : `${addr}/ipfs/${ourPeerId}`\n return ourAddrs.concat([addr, otherAddr])\n }, [])\n .filter(a => Boolean(a))\n .concat(`/ipfs/${ourPeerId}`)\n}\n\nconst RelayProtos = [\n 'p2p-circuit',\n 'p2p-websocket-star',\n 'p2p-webrtc-star',\n 'p2p-stardust'\n]\n\n/**\n * Get the destination address of a (possibly relay) multiaddr as a string\n *\n * @param {Multiaddr} addr\n * @returns {String}\n */\nfunction getDestination (addr) {\n const protos = addr.protoNames().reverse()\n const splitProto = protos.find(p => RelayProtos.includes(p))\n addr = addr.toString()\n if (!splitProto) return addr\n return addr.slice(addr.lastIndexOf(splitProto) + splitProto.length)\n}\n\nmodule.exports = TransportManager\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","/**\n * Password-Based Key-Derivation Function #2 implementation.\n *\n * See RFC 2898 for details.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2013 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./hmac');\nrequire('./md');\nrequire('./util');\n\nvar pkcs5 = forge.pkcs5 = forge.pkcs5 || {};\n\nvar crypto;\nif(forge.util.isNodejs && !forge.options.usePureJavaScript) {\n crypto = require('crypto');\n}\n\n/**\n * Derives a key from a password.\n *\n * @param p the password as a binary-encoded string of bytes.\n * @param s the salt as a binary-encoded string of bytes.\n * @param c the iteration count, a positive integer.\n * @param dkLen the intended length, in bytes, of the derived key,\n * (max: 2^32 - 1) * hash length of the PRF.\n * @param [md] the message digest (or algorithm identifier as a string) to use\n * in the PRF, defaults to SHA-1.\n * @param [callback(err, key)] presence triggers asynchronous version, called\n * once the operation completes.\n *\n * @return the derived key, as a binary-encoded string of bytes, for the\n * synchronous version (if no callback is specified).\n */\nmodule.exports = forge.pbkdf2 = pkcs5.pbkdf2 = function(\n p, s, c, dkLen, md, callback) {\n if(typeof md === 'function') {\n callback = md;\n md = null;\n }\n\n // use native implementation if possible and not disabled, note that\n // some node versions only support SHA-1, others allow digest to be changed\n if(forge.util.isNodejs && !forge.options.usePureJavaScript &&\n crypto.pbkdf2 && (md === null || typeof md !== 'object') &&\n (crypto.pbkdf2Sync.length > 4 || (!md || md === 'sha1'))) {\n if(typeof md !== 'string') {\n // default prf to SHA-1\n md = 'sha1';\n }\n p = Buffer.from(p, 'binary');\n s = Buffer.from(s, 'binary');\n if(!callback) {\n if(crypto.pbkdf2Sync.length === 4) {\n return crypto.pbkdf2Sync(p, s, c, dkLen).toString('binary');\n }\n return crypto.pbkdf2Sync(p, s, c, dkLen, md).toString('binary');\n }\n if(crypto.pbkdf2Sync.length === 4) {\n return crypto.pbkdf2(p, s, c, dkLen, function(err, key) {\n if(err) {\n return callback(err);\n }\n callback(null, key.toString('binary'));\n });\n }\n return crypto.pbkdf2(p, s, c, dkLen, md, function(err, key) {\n if(err) {\n return callback(err);\n }\n callback(null, key.toString('binary'));\n });\n }\n\n if(typeof md === 'undefined' || md === null) {\n // default prf to SHA-1\n md = 'sha1';\n }\n if(typeof md === 'string') {\n if(!(md in forge.md.algorithms)) {\n throw new Error('Unknown hash algorithm: ' + md);\n }\n md = forge.md[md].create();\n }\n\n var hLen = md.digestLength;\n\n /* 1. If dkLen > (2^32 - 1) * hLen, output \"derived key too long\" and\n stop. */\n if(dkLen > (0xFFFFFFFF * hLen)) {\n var err = new Error('Derived key is too long.');\n if(callback) {\n return callback(err);\n }\n throw err;\n }\n\n /* 2. Let len be the number of hLen-octet blocks in the derived key,\n rounding up, and let r be the number of octets in the last\n block:\n\n len = CEIL(dkLen / hLen),\n r = dkLen - (len - 1) * hLen. */\n var len = Math.ceil(dkLen / hLen);\n var r = dkLen - (len - 1) * hLen;\n\n /* 3. For each block of the derived key apply the function F defined\n below to the password P, the salt S, the iteration count c, and\n the block index to compute the block:\n\n T_1 = F(P, S, c, 1),\n T_2 = F(P, S, c, 2),\n ...\n T_len = F(P, S, c, len),\n\n where the function F is defined as the exclusive-or sum of the\n first c iterates of the underlying pseudorandom function PRF\n applied to the password P and the concatenation of the salt S\n and the block index i:\n\n F(P, S, c, i) = u_1 XOR u_2 XOR ... XOR u_c\n\n where\n\n u_1 = PRF(P, S || INT(i)),\n u_2 = PRF(P, u_1),\n ...\n u_c = PRF(P, u_{c-1}).\n\n Here, INT(i) is a four-octet encoding of the integer i, most\n significant octet first. */\n var prf = forge.hmac.create();\n prf.start(md, p);\n var dk = '';\n var xor, u_c, u_c1;\n\n // sync version\n if(!callback) {\n for(var i = 1; i <= len; ++i) {\n // PRF(P, S || INT(i)) (first iteration)\n prf.start(null, null);\n prf.update(s);\n prf.update(forge.util.int32ToBytes(i));\n xor = u_c1 = prf.digest().getBytes();\n\n // PRF(P, u_{c-1}) (other iterations)\n for(var j = 2; j <= c; ++j) {\n prf.start(null, null);\n prf.update(u_c1);\n u_c = prf.digest().getBytes();\n // F(p, s, c, i)\n xor = forge.util.xorBytes(xor, u_c, hLen);\n u_c1 = u_c;\n }\n\n /* 4. Concatenate the blocks and extract the first dkLen octets to\n produce a derived key DK:\n\n DK = T_1 || T_2 || ... || T_len<0..r-1> */\n dk += (i < len) ? xor : xor.substr(0, r);\n }\n /* 5. Output the derived key DK. */\n return dk;\n }\n\n // async version\n var i = 1, j;\n function outer() {\n if(i > len) {\n // done\n return callback(null, dk);\n }\n\n // PRF(P, S || INT(i)) (first iteration)\n prf.start(null, null);\n prf.update(s);\n prf.update(forge.util.int32ToBytes(i));\n xor = u_c1 = prf.digest().getBytes();\n\n // PRF(P, u_{c-1}) (other iterations)\n j = 2;\n inner();\n }\n\n function inner() {\n if(j <= c) {\n prf.start(null, null);\n prf.update(u_c1);\n u_c = prf.digest().getBytes();\n // F(p, s, c, i)\n xor = forge.util.xorBytes(xor, u_c, hLen);\n u_c1 = u_c;\n ++j;\n return forge.util.setImmediate(inner);\n }\n\n /* 4. Concatenate the blocks and extract the first dkLen octets to\n produce a derived key DK:\n\n DK = T_1 || T_2 || ... || T_len<0..r-1> */\n dk += (i < len) ? xor : xor.substr(0, r);\n\n ++i;\n outer();\n }\n\n outer();\n};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _regenerator = _interopRequireDefault(require(\"@babel/runtime/regenerator\"));\n\nvar _asyncToGenerator2 = _interopRequireDefault(require(\"@babel/runtime/helpers/asyncToGenerator\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar EventEmitter = require('events').EventEmitter;\n\nvar _require = require('did-jwt'),\n verifyJWT = _require.verifyJWT;\n\nvar Room = require('ipfs-pubsub-room');\n\nvar DEFAULT_BACKLOG_LIMIT = 100;\n\nvar GhostThread =\n/*#__PURE__*/\nfunction (_EventEmitter) {\n (0, _inherits2[\"default\"])(GhostThread, _EventEmitter);\n\n function GhostThread(name, _ref) {\n var _this;\n\n var ipfs = _ref.ipfs;\n var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n (0, _classCallCheck2[\"default\"])(this, GhostThread);\n _this = (0, _possibleConstructorReturn2[\"default\"])(this, (0, _getPrototypeOf2[\"default\"])(GhostThread).call(this));\n _this._name = name;\n _this._spaceName = name.split('.')[2];\n _this._room = Room(ipfs, name); // instance of ipfs pubsub room\n\n _this._ipfs = ipfs;\n _this._peerId = ipfs._peerInfo.id.toB58String();\n _this._members = {};\n _this._backlog = new Set(); // set of past messages\n\n _this._backlogLimit = opts.ghostBacklogLimit || DEFAULT_BACKLOG_LIMIT;\n _this._filters = opts.ghostFilters || [];\n\n _this._room.on('message',\n /*#__PURE__*/\n function () {\n var _ref3 = (0, _asyncToGenerator2[\"default\"])(\n /*#__PURE__*/\n _regenerator[\"default\"].mark(function _callee(_ref2) {\n var from, data, payload, issuer, verified, passesFilters;\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n from = _ref2.from, data = _ref2.data;\n\n if (!data.toString().startsWith('{')) {\n _context.next = 7;\n break;\n }\n\n // we got a non signed message (can only be backlog request, or response)\n payload = JSON.parse(data);\n\n if (!(payload.type !== 'request_backlog' && payload.type !== 'backlog_response')) {\n _context.next = 5;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 5:\n _context.next = 12;\n break;\n\n case 7:\n _context.next = 9;\n return _this._verifyData(data);\n\n case 9:\n verified = _context.sent;\n payload = verified.payload;\n issuer = verified.issuer;\n\n case 12:\n // we pass the payload, issuer and peerID (from) to each filter in our filters array and reduce the value to a single boolean\n // this boolean indicates whether the message passed the filters\n passesFilters = _this._filters.reduce(function (acc, filter) {\n return acc && filter(payload, issuer, from);\n }, true);\n\n if (!(payload && passesFilters)) {\n _context.next = 25;\n break;\n }\n\n _context.t0 = payload.type;\n _context.next = _context.t0 === 'join' ? 17 : _context.t0 === 'request_backlog' ? 19 : _context.t0 === 'backlog_response' ? 21 : 24;\n break;\n\n case 17:\n _this._userJoined(issuer, from);\n\n return _context.abrupt(\"break\", 25);\n\n case 19:\n _this.getPosts(_this._backlogLimit).then(function (posts) {\n return _this._sendDirect({\n type: 'backlog_response',\n message: posts\n }, from, true);\n });\n\n return _context.abrupt(\"break\", 25);\n\n case 21:\n payload.message.map(function (msg) {\n _this._backlog.add(JSON.stringify(msg));\n });\n\n _this.emit('backlog-received', {\n type: 'backlog',\n author: issuer,\n message: payload.message,\n timestamp: payload.iat\n });\n\n return _context.abrupt(\"break\", 25);\n\n case 24:\n _this._messageReceived(payload);\n\n case 25:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x) {\n return _ref3.apply(this, arguments);\n };\n }());\n\n _this._room.on('peer joined', function (peer) {\n _this._announce(peer);\n\n _this._requestBacklog(peer);\n });\n\n _this._room.on('peer left', function (peer) {\n return _this._userLeft(peer);\n });\n\n return _this;\n }\n\n (0, _createClass2[\"default\"])(GhostThread, [{\n key: \"_set3id\",\n value: function _set3id(threeId) {\n var _this2 = this;\n\n this._3id = threeId; // announce to other peers that we are online\n\n this.listMembers().then(function (members) {\n _this2._room.getPeers().map(function (id) {\n _this2._announce(id);\n });\n });\n }\n /**\n * Get a list of users online\n *\n * @return {Array} users online\n */\n\n }, {\n key: \"listMembers\",\n value: function () {\n var _listMembers = (0, _asyncToGenerator2[\"default\"])(\n /*#__PURE__*/\n _regenerator[\"default\"].mark(function _callee2() {\n return _regenerator[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n return _context2.abrupt(\"return\", Object.keys(this._members).filter(function (id) {\n return !id.startsWith('Qm');\n }));\n\n case 1:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function listMembers() {\n return _listMembers.apply(this, arguments);\n }\n\n return listMembers;\n }()\n /**\n * Get a peerId's corresponding 3ID\n *\n * @param {String} did The DID of the user\n * @return {String} ipfs peer id\n */\n\n }, {\n key: \"_threeIdToPeerId\",\n value: function _threeIdToPeerId(did) {\n return this._members[did];\n }\n /**\n * Get backlog of all past messages\n *\n * @return {Array} users online\n */\n\n }, {\n key: \"getPosts\",\n value: function () {\n var _getPosts = (0, _asyncToGenerator2[\"default\"])(\n /*#__PURE__*/\n _regenerator[\"default\"].mark(function _callee3() {\n var num,\n posts,\n _args3 = arguments;\n return _regenerator[\"default\"].wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n num = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : 0;\n posts = (0, _toConsumableArray2[\"default\"])(this._backlog).map(function (msg) {\n return JSON.parse(msg);\n }).sort(function (p1, p2) {\n return p1.timestamp - p2.timestamp;\n }).slice(-num);\n return _context3.abrupt(\"return\", posts);\n\n case 3:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function getPosts() {\n return _getPosts.apply(this, arguments);\n }\n\n return getPosts;\n }()\n /**\n * Announce entry in chat and share our 3id and peerID\n *\n * @param {String} to The PeerID of a user (optional)\n */\n\n }, {\n key: \"_announce\",\n value: function () {\n var _announce2 = (0, _asyncToGenerator2[\"default\"])(\n /*#__PURE__*/\n _regenerator[\"default\"].mark(function _callee4(to) {\n return _regenerator[\"default\"].wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n if (!this._3id) {\n _context4.next = 8;\n break;\n }\n\n if (to) {\n _context4.next = 6;\n break;\n }\n\n _context4.next = 4;\n return this._broadcast({\n type: 'join'\n });\n\n case 4:\n _context4.next = 8;\n break;\n\n case 6:\n _context4.next = 8;\n return this._sendDirect({\n type: 'join'\n }, to);\n\n case 8:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function _announce(_x2) {\n return _announce2.apply(this, arguments);\n }\n\n return _announce;\n }()\n /**\n * Post a message to the thread\n *\n * @param {Object} message The message\n * @param {String} to PeerID to send the message to (optional)\n */\n\n }, {\n key: \"post\",\n value: function () {\n var _post = (0, _asyncToGenerator2[\"default\"])(\n /*#__PURE__*/\n _regenerator[\"default\"].mark(function _callee5(message, to) {\n return _regenerator[\"default\"].wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n if (to) {\n _context5.next = 5;\n break;\n }\n\n _context5.next = 3;\n return this._broadcast({\n type: 'chat',\n message: message\n });\n\n case 3:\n _context5.next = 7;\n break;\n\n case 5:\n _context5.next = 7;\n return this._sendDirect({\n type: 'chat',\n message: message\n }, to);\n\n case 7:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function post(_x3, _x4) {\n return _post.apply(this, arguments);\n }\n\n return post;\n }()\n }, {\n key: \"deletePost\",\n value: function () {\n var _deletePost = (0, _asyncToGenerator2[\"default\"])(\n /*#__PURE__*/\n _regenerator[\"default\"].mark(function _callee6(hash) {\n return _regenerator[\"default\"].wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n throw new Error('Not possible to delete post in Ghost Thread');\n\n case 1:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6);\n }));\n\n function deletePost(_x5) {\n return _deletePost.apply(this, arguments);\n }\n\n return deletePost;\n }()\n }, {\n key: \"addModerator\",\n value: function () {\n var _addModerator = (0, _asyncToGenerator2[\"default\"])(\n /*#__PURE__*/\n _regenerator[\"default\"].mark(function _callee7(id) {\n return _regenerator[\"default\"].wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n throw new Error('Not possible to add moderator in Ghost Thread');\n\n case 1:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7);\n }));\n\n function addModerator(_x6) {\n return _addModerator.apply(this, arguments);\n }\n\n return addModerator;\n }()\n }, {\n key: \"listModerators\",\n value: function () {\n var _listModerators = (0, _asyncToGenerator2[\"default\"])(\n /*#__PURE__*/\n _regenerator[\"default\"].mark(function _callee8() {\n return _regenerator[\"default\"].wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n throw new Error('Not possible to list moderators in Ghost Thread');\n\n case 1:\n case \"end\":\n return _context8.stop();\n }\n }\n }, _callee8);\n }));\n\n function listModerators() {\n return _listModerators.apply(this, arguments);\n }\n\n return listModerators;\n }()\n }, {\n key: \"addMember\",\n value: function () {\n var _addMember = (0, _asyncToGenerator2[\"default\"])(\n /*#__PURE__*/\n _regenerator[\"default\"].mark(function _callee9(id) {\n return _regenerator[\"default\"].wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n throw new Error('Not possible to add member in Ghost Thread');\n\n case 1:\n case \"end\":\n return _context9.stop();\n }\n }\n }, _callee9);\n }));\n\n function addMember(_x7) {\n return _addMember.apply(this, arguments);\n }\n\n return addMember;\n }()\n /**\n * Request a backlog of past messages from peers in the chat\n *\n * @param {String} to The PeerID of a user (optional)\n */\n\n }, {\n key: \"_requestBacklog\",\n value: function () {\n var _requestBacklog2 = (0, _asyncToGenerator2[\"default\"])(\n /*#__PURE__*/\n _regenerator[\"default\"].mark(function _callee10(to) {\n return _regenerator[\"default\"].wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n if (to) {\n _context10.next = 5;\n break;\n }\n\n _context10.next = 3;\n return this._broadcast({\n type: 'request_backlog'\n });\n\n case 3:\n _context10.next = 7;\n break;\n\n case 5:\n _context10.next = 7;\n return this._sendDirect({\n type: 'request_backlog'\n }, to, true);\n\n case 7:\n case \"end\":\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function _requestBacklog(_x8) {\n return _requestBacklog2.apply(this, arguments);\n }\n\n return _requestBacklog;\n }()\n /**\n * Leave the chat\n *\n */\n\n }, {\n key: \"close\",\n value: function () {\n var _close = (0, _asyncToGenerator2[\"default\"])(\n /*#__PURE__*/\n _regenerator[\"default\"].mark(function _callee11() {\n return _regenerator[\"default\"].wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n _context11.next = 2;\n return this._room.leave();\n\n case 2:\n case \"end\":\n return _context11.stop();\n }\n }\n }, _callee11, this);\n }));\n\n function close() {\n return _close.apply(this, arguments);\n }\n\n return close;\n }()\n /**\n * Broadcast a message to peers in the room\n *\n * @param {Object} message The message\n */\n\n }, {\n key: \"_broadcast\",\n value: function () {\n var _broadcast2 = (0, _asyncToGenerator2[\"default\"])(\n /*#__PURE__*/\n _regenerator[\"default\"].mark(function _callee12(message, noSignature) {\n var payload;\n return _regenerator[\"default\"].wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n if (!(!this._3id ? !noSignature : false)) {\n _context12.next = 2;\n break;\n }\n\n throw new Error('Can not send message if not authenticated');\n\n case 2:\n if (!noSignature) {\n _context12.next = 6;\n break;\n }\n\n _context12.t0 = JSON.stringify(message);\n _context12.next = 9;\n break;\n\n case 6:\n _context12.next = 8;\n return this._3id.signJWT(message);\n\n case 8:\n _context12.t0 = _context12.sent;\n\n case 9:\n payload = _context12.t0;\n\n this._room.broadcast(payload);\n\n case 11:\n case \"end\":\n return _context12.stop();\n }\n }\n }, _callee12, this);\n }));\n\n function _broadcast(_x9, _x10) {\n return _broadcast2.apply(this, arguments);\n }\n\n return _broadcast;\n }()\n /**\n * Send a direct message to a peer\n *\n * @param {Object} message The message\n * @param {String} to The PeerID or 3ID of the receiver\n */\n\n }, {\n key: \"_sendDirect\",\n value: function () {\n var _sendDirect2 = (0, _asyncToGenerator2[\"default\"])(\n /*#__PURE__*/\n _regenerator[\"default\"].mark(function _callee13(message, to, noSignature) {\n var payload;\n return _regenerator[\"default\"].wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n if (!(!this._3id ? !noSignature : false)) {\n _context13.next = 2;\n break;\n }\n\n throw new Error('Can not send message if not authenticated');\n\n case 2:\n if (!noSignature) {\n _context13.next = 6;\n break;\n }\n\n _context13.t0 = JSON.stringify(message);\n _context13.next = 9;\n break;\n\n case 6:\n _context13.next = 8;\n return this._3id.signJWT(message);\n\n case 8:\n _context13.t0 = _context13.sent;\n\n case 9:\n payload = _context13.t0;\n to.startsWith('Qm') ? this._room.sendTo(to, payload) : this._room.sendTo(this._threeIdToPeerId(to), payload);\n\n case 11:\n case \"end\":\n return _context13.stop();\n }\n }\n }, _callee13, this);\n }));\n\n function _sendDirect(_x11, _x12, _x13) {\n return _sendDirect2.apply(this, arguments);\n }\n\n return _sendDirect;\n }()\n /**\n * Register a function to be called after new updates\n * have been received from the network or locally.\n *\n * @param {Function} updateFn The function that will get called\n */\n\n }, {\n key: \"onUpdate\",\n value: function onUpdate(updateFn) {\n this.removeAllListeners('message');\n this.removeAllListeners('backlog-received');\n this.on('message', updateFn);\n this.on('backlog-received', updateFn);\n }\n /**\n * Register a function to be called after new capabilities\n * have been received from the network or locally.\n *\n * @param {Function} updateFn The function that will get called\n */\n\n }, {\n key: \"onNewCapabilities\",\n value: function onNewCapabilities(updateFn) {\n this.removeAllListeners('user-joined');\n this.removeAllListeners('user-left');\n this.on('user-joined', updateFn);\n this.on('user-left', updateFn);\n }\n /**\n * Handler function for users joining\n *\n * @param {String} did The DID of the user\n * @param {Object} peerID The peerID of the user\n */\n\n }, {\n key: \"_userJoined\",\n value: function () {\n var _userJoined2 = (0, _asyncToGenerator2[\"default\"])(\n /*#__PURE__*/\n _regenerator[\"default\"].mark(function _callee14(did, peerID) {\n var members;\n return _regenerator[\"default\"].wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n _context14.next = 2;\n return this.listMembers();\n\n case 2:\n members = _context14.sent;\n\n if (!members.includes(did) && (!this._3id || this._3id.DID !== did)) {\n this._members[did] = peerID;\n this._members[peerID] = did;\n this.emit('user-joined', 'joined', did, peerID);\n }\n\n case 4:\n case \"end\":\n return _context14.stop();\n }\n }\n }, _callee14, this);\n }));\n\n function _userJoined(_x14, _x15) {\n return _userJoined2.apply(this, arguments);\n }\n\n return _userJoined;\n }()\n /**\n * Handler function for users leaving\n *\n * @param {String} peerID The peerID of the user\n */\n\n }, {\n key: \"_userLeft\",\n value: function () {\n var _userLeft2 = (0, _asyncToGenerator2[\"default\"])(\n /*#__PURE__*/\n _regenerator[\"default\"].mark(function _callee15(peerID) {\n var did;\n return _regenerator[\"default\"].wrap(function _callee15$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n did = this._members[peerID];\n delete this._members[did];\n delete this._members[peerID];\n this.emit('user-left', 'left', did, peerID);\n\n case 4:\n case \"end\":\n return _context15.stop();\n }\n }\n }, _callee15, this);\n }));\n\n function _userLeft(_x16) {\n return _userLeft2.apply(this, arguments);\n }\n\n return _userLeft;\n }()\n /**\n * Handler function for received messages\n *\n * @param {String} issuer The issuer of the message\n * @param {Object} payload The payload of the message\n */\n\n }, {\n key: \"_messageReceived\",\n value: function () {\n var _messageReceived2 = (0, _asyncToGenerator2[\"default\"])(\n /*#__PURE__*/\n _regenerator[\"default\"].mark(function _callee16(payload) {\n var type, message, author, timestamp, postId;\n return _regenerator[\"default\"].wrap(function _callee16$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n type = payload.type, message = payload.message, author = payload.iss, timestamp = payload.iat, postId = payload.postId;\n\n this._backlog.add(JSON.stringify({\n type: type,\n author: author,\n message: message,\n timestamp: timestamp,\n postId: postId\n }));\n\n this.emit('message', {\n type: type,\n author: author,\n message: message,\n timestamp: timestamp,\n postId: postId\n });\n\n case 3:\n case \"end\":\n return _context16.stop();\n }\n }\n }, _callee16, this);\n }));\n\n function _messageReceived(_x17) {\n return _messageReceived2.apply(this, arguments);\n }\n\n return _messageReceived;\n }()\n /**\n * Verifies the data received\n *\n * @param {Buffer} data A buffer of the jwt\n * @return {JWT} A verified JWT with our payload and issuer\n */\n\n }, {\n key: \"_verifyData\",\n value: function () {\n var _verifyData2 = (0, _asyncToGenerator2[\"default\"])(\n /*#__PURE__*/\n _regenerator[\"default\"].mark(function _callee17(data) {\n var jwt, cidPromise, verified;\n return _regenerator[\"default\"].wrap(function _callee17$(_context17) {\n while (1) {\n switch (_context17.prev = _context17.next) {\n case 0:\n jwt = data.toString();\n cidPromise = this._ipfs.dag.put(jwt);\n _context17.prev = 2;\n _context17.next = 5;\n return verifyJWT(jwt);\n\n case 5:\n verified = _context17.sent;\n _context17.next = 8;\n return cidPromise;\n\n case 8:\n verified.payload.postId = _context17.sent.toString();\n return _context17.abrupt(\"return\", verified);\n\n case 12:\n _context17.prev = 12;\n _context17.t0 = _context17[\"catch\"](2);\n console.log(_context17.t0);\n\n case 15:\n case \"end\":\n return _context17.stop();\n }\n }\n }, _callee17, this, [[2, 12]]);\n }));\n\n function _verifyData(_x18) {\n return _verifyData2.apply(this, arguments);\n }\n\n return _verifyData;\n }()\n }, {\n key: \"isGhost\",\n get: function get() {\n return true;\n }\n }]);\n return GhostThread;\n}(EventEmitter);\n\nmodule.exports = GhostThread;","/* globals self, window, global */\n/* eslint no-negated-condition: 0, no-new-func: 0 */\n\n'use strict';\n\nif (typeof self !== 'undefined') {\n\tmodule.exports = self;\n} else if (typeof window !== 'undefined') {\n\tmodule.exports = window;\n} else if (typeof global !== 'undefined') {\n\tmodule.exports = global;\n} else {\n\tmodule.exports = Function('return this')();\n}\n","exports.AbstractLevelDOWN = require('./abstract-leveldown')\nexports.AbstractIterator = require('./abstract-iterator')\nexports.AbstractChainedBatch = require('./abstract-chained-batch')\n","'use strict'\n\nconst multiaddr = require('multiaddr')\n\nfunction ensureMultiaddr (ma) {\n if (multiaddr.isMultiaddr(ma)) {\n return ma\n }\n\n return multiaddr(ma)\n}\n\nmodule.exports = {\n ensureMultiaddr: ensureMultiaddr\n}\n","exports.AbstractLevelDOWN = require('./abstract-leveldown')\nexports.AbstractIterator = require('./abstract-iterator')\nexports.AbstractChainedBatch = require('./abstract-chained-batch')\n","function promisify () {\n var callback\n var promise = new Promise(function (resolve, reject) {\n callback = function callback (err, value) {\n if (err) reject(err)\n else resolve(value)\n }\n })\n callback.promise = promise\n return callback\n}\n\nmodule.exports = promisify\n","'use strict'\n\nconst path = require('path')\nconst os = require('os')\nconst uuid = require('uuid/v4')\n\nexports.filter = (iterable, filterer) => {\n return (async function * () {\n for await (const value of iterable) {\n const keep = await filterer(value)\n if (!keep) continue\n yield value\n }\n })()\n}\n\n// Not just sort, because the sorter is given all the values and should return\n// them all sorted\nexports.sortAll = (iterable, sorter) => {\n return (async function * () {\n let values = []\n for await (const value of iterable) values.push(value)\n values = await sorter(values)\n for (const value of values) yield value\n })()\n}\n\nexports.take = (iterable, n) => {\n return (async function * () {\n if (n <= 0) return\n let i = 0\n for await (const value of iterable) {\n yield value\n i++\n if (i >= n) return\n }\n })()\n}\n\nexports.map = (iterable, mapper) => {\n return (async function * () {\n for await (const value of iterable) {\n yield mapper(value)\n }\n })()\n}\n\nexports.replaceStartWith = function (s, r) {\n const matcher = new RegExp('^' + r)\n return s.replace(matcher, '')\n}\n\nexports.tmpdir = () => {\n return path.join(os.tmpdir(), uuid())\n}\n","export const version = \"bytes/5.0.0-beta.136\";\n","\"use strict\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nfunction isHexable(value) {\n return !!(value.toHexString);\n}\nfunction addSlice(array) {\n if (array.slice) {\n return array;\n }\n array.slice = function () {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n };\n return array;\n}\nexport function isBytesLike(value) {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\nexport function isBytes(value) {\n if (value == null) {\n return false;\n }\n if (value.constructor === Uint8Array) {\n return true;\n }\n if (typeof (value) === \"string\") {\n return false;\n }\n if (value.length == null) {\n return false;\n }\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (v < 0 || v >= 256 || (v % 1)) {\n return false;\n }\n }\n return true;\n}\nexport function arrayify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value /= 256;\n }\n if (result.length === 0) {\n result.push(0);\n }\n return addSlice(new Uint8Array(result));\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n value = value.toHexString();\n }\n if (isHexString(value)) {\n let hex = value.substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0x0\" + hex.substring(2);\n }\n else if (options.hexPad === \"right\") {\n hex += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n return addSlice(new Uint8Array(result));\n }\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\nexport function concat(items) {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n const result = new Uint8Array(length);\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n return addSlice(result);\n}\nexport function stripZeros(value) {\n let result = arrayify(value);\n if (result.length === 0) {\n return result;\n }\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) {\n start++;\n }\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n return result;\n}\nexport function zeroPad(value, length) {\n value = arrayify(value);\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\nexport function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (length && value.length !== 2 + 2 * length) {\n return false;\n }\n return true;\n}\nconst HexCharacters = \"0123456789abcdef\";\nexport function hexlify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0x0f] + hex;\n value = Math.floor(value / 16);\n }\n if (hex.length) {\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n return \"0x\" + hex;\n }\n return \"0x00\";\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n return value.toHexString();\n }\n if (isHexString(value)) {\n if (value.length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + value.substring(2);\n }\n else if (options.hexPad === \"right\") {\n value += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return value.toLowerCase();\n }\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n return (data.length - 2) / 2;\n}\nexport function hexDataSlice(data, offset, endOffset) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data);\n }\n offset = 2 + 2 * offset;\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n return \"0x\" + data.substring(offset);\n}\nexport function hexConcat(items) {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\nexport function hexValue(value) {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") {\n return \"0x0\";\n }\n return trimmed;\n}\nexport function hexStripZeros(value) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") {\n offset++;\n }\n return \"0x\" + value.substring(offset);\n}\nexport function hexZeroPad(value, length) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n return value;\n}\nexport function splitSignature(signature) {\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0\n };\n if (isBytesLike(signature)) {\n const bytes = arrayify(signature);\n if (bytes.length !== 65) {\n logger.throwArgumentError(\"invalid signature string; must be 65 bytes\", \"signature\", signature);\n }\n // Get the r, s and v\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n }\n else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) {\n bytes[32] |= 0x80;\n }\n result._vs = hexlify(bytes.slice(32, 64));\n }\n else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1 : 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n }\n else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n }\n else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n }\n else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n }\n else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n }\n else if (result.recoveryParam !== (1 - (result.v % 2))) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n }\n else {\n result.r = hexZeroPad(result.r, 32);\n }\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n }\n else {\n result.s = hexZeroPad(result.s, 32);\n }\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) {\n vs[0] |= 0x80;\n }\n const _vs = hexlify(vs);\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n }\n else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n return result;\n}\nexport function joinSignature(signature) {\n signature = splitSignature(signature);\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\" : \"0x1b\")\n ]));\n}\n","var AbstractLevelDOWN = require('abstract-leveldown').AbstractLevelDOWN\nvar inherits = require('inherits')\nvar DeferredIterator = require('./deferred-iterator')\nvar deferrables = 'put get del batch'.split(' ')\n\nfunction DeferredLevelDOWN (db) {\n AbstractLevelDOWN.call(this, '')\n this._db = db\n this._operations = []\n this._iterators = []\n closed(this)\n}\n\ninherits(DeferredLevelDOWN, AbstractLevelDOWN)\n\nDeferredLevelDOWN.prototype._open = function (options, callback) {\n var self = this\n\n this._db.open(options, function (err) {\n if (err) return callback(err)\n\n self._operations.forEach(function (op) {\n self._db[op.method].apply(self._db, op.args)\n })\n self._operations = []\n self._iterators.forEach(function (it) {\n it.setDb(self._db)\n })\n self._iterators = []\n open(self)\n callback()\n })\n}\n\nDeferredLevelDOWN.prototype._close = function (callback) {\n var self = this\n\n this._db.close(function (err) {\n if (err) return callback(err)\n closed(self)\n callback()\n })\n}\n\nfunction open (self) {\n deferrables.concat('iterator').forEach(function (m) {\n self['_' + m] = function () {\n return this._db[m].apply(this._db, arguments)\n }\n })\n if (self._db.approximateSize) {\n self.approximateSize = function () {\n return this._db.approximateSize.apply(this._db, arguments)\n }\n }\n}\n\nfunction closed (self) {\n deferrables.forEach(function (m) {\n self['_' + m] = function () {\n this._operations.push({ method: m, args: arguments })\n }\n })\n if (typeof self._db.approximateSize === 'function') {\n self.approximateSize = function () {\n this._operations.push({\n method: 'approximateSize',\n args: arguments\n })\n }\n }\n self._iterator = function (options) {\n var it = new DeferredIterator(options)\n this._iterators.push(it)\n return it\n }\n}\n\nDeferredLevelDOWN.prototype._serializeKey = function (key) {\n return key\n}\n\nDeferredLevelDOWN.prototype._serializeValue = function (value) {\n return value\n}\n\nmodule.exports = DeferredLevelDOWN\nmodule.exports.DeferredIterator = DeferredIterator\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var tokenize = require('./tokenize')\nvar MAX_RANGE = 0x1FFFFFFF\n\n// \"Only repeated fields of primitive numeric types (types which use the varint, 32-bit, or 64-bit wire types) can be declared \"packed\".\"\n// https://developers.google.com/protocol-buffers/docs/encoding#optional\nvar PACKABLE_TYPES = [\n // varint wire types\n 'int32', 'int64', 'uint32', 'uint64', 'sint32', 'sint64', 'bool',\n // + ENUMS\n // 64-bit wire types\n 'fixed64', 'sfixed64', 'double',\n // 32-bit wire types\n 'fixed32', 'sfixed32', 'float'\n]\n\nvar onfieldoptions = function (tokens) {\n var opts = {}\n\n while (tokens.length) {\n switch (tokens[0]) {\n case '[':\n case ',':\n tokens.shift()\n var name = tokens.shift()\n if (name === '(') { // handling [(A) = B]\n name = tokens.shift()\n tokens.shift() // remove the end of bracket\n }\n if (tokens[0] !== '=') throw new Error('Unexpected token in field options: ' + tokens[0])\n tokens.shift()\n if (tokens[0] === ']') throw new Error('Unexpected ] in field option')\n opts[name] = tokens.shift()\n break\n case ']':\n tokens.shift()\n return opts\n\n default:\n throw new Error('Unexpected token in field options: ' + tokens[0])\n }\n }\n\n throw new Error('No closing tag for field options')\n}\n\nvar onfield = function (tokens) {\n var field = {\n name: null,\n type: null,\n tag: -1,\n map: null,\n oneof: null,\n required: false,\n repeated: false,\n options: {}\n }\n\n while (tokens.length) {\n switch (tokens[0]) {\n case '=':\n tokens.shift()\n field.tag = Number(tokens.shift())\n break\n\n case 'map':\n field.type = 'map'\n field.map = {from: null, to: null}\n tokens.shift()\n if (tokens[0] !== '<') throw new Error('Unexpected token in map type: ' + tokens[0])\n tokens.shift()\n field.map.from = tokens.shift()\n if (tokens[0] !== ',') throw new Error('Unexpected token in map type: ' + tokens[0])\n tokens.shift()\n field.map.to = tokens.shift()\n if (tokens[0] !== '>') throw new Error('Unexpected token in map type: ' + tokens[0])\n tokens.shift()\n field.name = tokens.shift()\n break\n\n case 'repeated':\n case 'required':\n case 'optional':\n var t = tokens.shift()\n field.required = t === 'required'\n field.repeated = t === 'repeated'\n field.type = tokens.shift()\n field.name = tokens.shift()\n break\n\n case '[':\n field.options = onfieldoptions(tokens)\n break\n\n case ';':\n if (field.name === null) throw new Error('Missing field name')\n if (field.type === null) throw new Error('Missing type in message field: ' + field.name)\n if (field.tag === -1) throw new Error('Missing tag number in message field: ' + field.name)\n tokens.shift()\n return field\n\n default:\n throw new Error('Unexpected token in message field: ' + tokens[0])\n }\n }\n\n throw new Error('No ; found for message field')\n}\n\nvar onmessagebody = function (tokens) {\n var body = {\n enums: [],\n messages: [],\n fields: [],\n extends: [],\n extensions: null\n }\n\n while (tokens.length) {\n switch (tokens[0]) {\n case 'map':\n case 'repeated':\n case 'optional':\n case 'required':\n body.fields.push(onfield(tokens))\n break\n\n case 'enum':\n body.enums.push(onenum(tokens))\n break\n\n case 'message':\n body.messages.push(onmessage(tokens))\n break\n\n case 'extensions':\n body.extensions = onextensions(tokens)\n break\n\n case 'oneof':\n tokens.shift()\n var name = tokens.shift()\n if (tokens[0] !== '{') throw new Error('Unexpected token in oneof: ' + tokens[0])\n tokens.shift()\n while (tokens[0] !== '}') {\n tokens.unshift('optional')\n var field = onfield(tokens)\n field.oneof = name\n body.fields.push(field)\n }\n tokens.shift()\n break\n\n case 'extend':\n body.extends.push(onextend(tokens))\n break\n\n case ';':\n tokens.shift()\n break\n\n case 'reserved':\n case 'option':\n tokens.shift()\n while (tokens[0] !== ';') {\n tokens.shift()\n }\n break\n\n default:\n // proto3 does not require the use of optional/required, assumed as optional\n // \"singular: a well-formed message can have zero or one of this field (but not more than one).\"\n // https://developers.google.com/protocol-buffers/docs/proto3#specifying-field-rules\n tokens.unshift('optional')\n body.fields.push(onfield(tokens))\n }\n }\n\n return body\n}\n\nvar onextend = function (tokens) {\n var out = {\n name: tokens[1],\n message: onmessage(tokens)\n }\n return out\n}\n\nvar onextensions = function (tokens) {\n tokens.shift()\n var from = Number(tokens.shift())\n if (isNaN(from)) throw new Error('Invalid from in extensions definition')\n if (tokens.shift() !== 'to') throw new Error(\"Expected keyword 'to' in extensions definition\")\n var to = tokens.shift()\n if (to === 'max') to = MAX_RANGE\n to = Number(to)\n if (isNaN(to)) throw new Error('Invalid to in extensions definition')\n if (tokens.shift() !== ';') throw new Error('Missing ; in extensions definition')\n return {from: from, to: to}\n}\nvar onmessage = function (tokens) {\n tokens.shift()\n\n var lvl = 1\n var body = []\n var msg = {\n name: tokens.shift(),\n enums: [],\n extends: [],\n messages: [],\n fields: []\n }\n\n if (tokens[0] !== '{') throw new Error('Expected { but found ' + tokens[0])\n tokens.shift()\n\n while (tokens.length) {\n if (tokens[0] === '{') lvl++\n else if (tokens[0] === '}') lvl--\n\n if (!lvl) {\n tokens.shift()\n body = onmessagebody(body)\n msg.enums = body.enums\n msg.messages = body.messages\n msg.fields = body.fields\n msg.extends = body.extends\n msg.extensions = body.extensions\n return msg\n }\n\n body.push(tokens.shift())\n }\n\n if (lvl) throw new Error('No closing tag for message')\n}\n\nvar onpackagename = function (tokens) {\n tokens.shift()\n var name = tokens.shift()\n if (tokens[0] !== ';') throw new Error('Expected ; but found ' + tokens[0])\n tokens.shift()\n return name\n}\n\nvar onsyntaxversion = function (tokens) {\n tokens.shift()\n\n if (tokens[0] !== '=') throw new Error('Expected = but found ' + tokens[0])\n tokens.shift()\n\n var version = tokens.shift()\n switch (version) {\n case '\"proto2\"':\n version = 2\n break\n\n case '\"proto3\"':\n version = 3\n break\n\n default:\n throw new Error('Expected protobuf syntax version but found ' + version)\n }\n\n if (tokens[0] !== ';') throw new Error('Expected ; but found ' + tokens[0])\n tokens.shift()\n\n return version\n}\n\nvar onenumvalue = function (tokens) {\n if (tokens.length < 4) throw new Error('Invalid enum value: ' + tokens.slice(0, 3).join(' '))\n if (tokens[1] !== '=') throw new Error('Expected = but found ' + tokens[1])\n if (tokens[3] !== ';' && tokens[3] !== '[') throw new Error('Expected ; or [ but found ' + tokens[1])\n\n var name = tokens.shift()\n tokens.shift()\n var val = {\n value: null,\n options: {}\n }\n val.value = Number(tokens.shift())\n if (tokens[0] === '[') {\n val.options = onfieldoptions(tokens)\n }\n tokens.shift() // expecting the semicolon here\n\n return {\n name: name,\n val: val\n }\n}\n\nvar onenum = function (tokens) {\n tokens.shift()\n var options = {}\n var e = {\n name: tokens.shift(),\n values: {},\n options: {}\n }\n\n if (tokens[0] !== '{') throw new Error('Expected { but found ' + tokens[0])\n tokens.shift()\n\n while (tokens.length) {\n if (tokens[0] === '}') {\n tokens.shift()\n // there goes optional semicolon after the enclosing \"}\"\n if (tokens[0] === ';') tokens.shift()\n return e\n }\n if (tokens[0] === 'option') {\n options = onoption(tokens)\n e.options[options.name] = options.value\n continue\n }\n var val = onenumvalue(tokens)\n e.values[val.name] = val.val\n }\n\n throw new Error('No closing tag for enum')\n}\n\nvar onoption = function (tokens) {\n var name = null\n var value = null\n\n var parse = function (value) {\n if (value === 'true') return true\n if (value === 'false') return false\n return value.replace(/^\"+|\"+$/gm, '')\n }\n\n while (tokens.length) {\n if (tokens[0] === ';') {\n tokens.shift()\n return {name: name, value: value}\n }\n switch (tokens[0]) {\n case 'option':\n tokens.shift()\n\n var hasBracket = tokens[0] === '('\n if (hasBracket) tokens.shift()\n\n name = tokens.shift()\n\n if (hasBracket) {\n if (tokens[0] !== ')') throw new Error('Expected ) but found ' + tokens[0])\n tokens.shift()\n }\n\n if (tokens[0][0] === '.') {\n name += tokens.shift()\n }\n\n break\n\n case '=':\n tokens.shift()\n if (name === null) throw new Error('Expected key for option with value: ' + tokens[0])\n value = parse(tokens.shift())\n\n if (name === 'optimize_for' && !/^(SPEED|CODE_SIZE|LITE_RUNTIME)$/.test(value)) {\n throw new Error('Unexpected value for option optimize_for: ' + value)\n } else if (value === '{') {\n // option foo = {bar: baz}\n value = onoptionMap(tokens)\n }\n break\n\n default:\n throw new Error('Unexpected token in option: ' + tokens[0])\n }\n }\n}\n\nvar onoptionMap = function (tokens) {\n var parse = function (value) {\n if (value === 'true') return true\n if (value === 'false') return false\n return value.replace(/^\"+|\"+$/gm, '')\n }\n\n var map = {}\n\n while (tokens.length) {\n if (tokens[0] === '}') {\n tokens.shift()\n return map\n }\n\n var hasBracket = tokens[0] === '('\n if (hasBracket) tokens.shift()\n\n var key = tokens.shift()\n if (hasBracket) {\n if (tokens[0] !== ')') throw new Error('Expected ) but found ' + tokens[0])\n tokens.shift()\n }\n\n var value = null\n\n switch (tokens[0]) {\n case ':':\n if (map[key] !== undefined) throw new Error('Duplicate option map key ' + key)\n\n tokens.shift()\n\n value = parse(tokens.shift())\n\n if (value === '{') {\n // option foo = {bar: baz}\n value = onoptionMap(tokens)\n }\n\n map[key] = value\n\n if (tokens[0] === ';') {\n tokens.shift()\n }\n break\n\n case '{':\n tokens.shift()\n value = onoptionMap(tokens)\n\n if (map[key] === undefined) map[key] = []\n if (!Array.isArray(map[key])) throw new Error('Duplicate option map key ' + key)\n\n map[key].push(value)\n break\n\n default:\n throw new Error('Unexpected token in option map: ' + tokens[0])\n }\n }\n\n throw new Error('No closing tag for option map')\n}\n\nvar onimport = function (tokens) {\n tokens.shift()\n var file = tokens.shift().replace(/^\"+|\"+$/gm, '')\n\n if (tokens[0] !== ';') throw new Error('Unexpected token: ' + tokens[0] + '. Expected \";\"')\n\n tokens.shift()\n return file\n}\n\nvar onservice = function (tokens) {\n tokens.shift()\n\n var service = {\n name: tokens.shift(),\n methods: [],\n options: {}\n }\n\n if (tokens[0] !== '{') throw new Error('Expected { but found ' + tokens[0])\n tokens.shift()\n\n while (tokens.length) {\n if (tokens[0] === '}') {\n tokens.shift()\n // there goes optional semicolon after the enclosing \"}\"\n if (tokens[0] === ';') tokens.shift()\n return service\n }\n\n switch (tokens[0]) {\n case 'option':\n var opt = onoption(tokens)\n if (service.options[opt.name] !== undefined) throw new Error('Duplicate option ' + opt.name)\n service.options[opt.name] = opt.value\n break\n case 'rpc':\n service.methods.push(onrpc(tokens))\n break\n default:\n throw new Error('Unexpected token in service: ' + tokens[0])\n }\n }\n\n throw new Error('No closing tag for service')\n}\n\nvar onrpc = function (tokens) {\n tokens.shift()\n\n var rpc = {\n name: tokens.shift(),\n input_type: null,\n output_type: null,\n client_streaming: false,\n server_streaming: false,\n options: {}\n }\n\n if (tokens[0] !== '(') throw new Error('Expected ( but found ' + tokens[0])\n tokens.shift()\n\n if (tokens[0] === 'stream') {\n tokens.shift()\n rpc.client_streaming = true\n }\n\n rpc.input_type = tokens.shift()\n\n if (tokens[0] !== ')') throw new Error('Expected ) but found ' + tokens[0])\n tokens.shift()\n\n if (tokens[0] !== 'returns') throw new Error('Expected returns but found ' + tokens[0])\n tokens.shift()\n\n if (tokens[0] !== '(') throw new Error('Expected ( but found ' + tokens[0])\n tokens.shift()\n\n if (tokens[0] === 'stream') {\n tokens.shift()\n rpc.server_streaming = true\n }\n\n rpc.output_type = tokens.shift()\n\n if (tokens[0] !== ')') throw new Error('Expected ) but found ' + tokens[0])\n tokens.shift()\n\n if (tokens[0] === ';') {\n tokens.shift()\n return rpc\n }\n\n if (tokens[0] !== '{') throw new Error('Expected { but found ' + tokens[0])\n tokens.shift()\n\n while (tokens.length) {\n if (tokens[0] === '}') {\n tokens.shift()\n // there goes optional semicolon after the enclosing \"}\"\n if (tokens[0] === ';') tokens.shift()\n return rpc\n }\n\n if (tokens[0] === 'option') {\n var opt = onoption(tokens)\n if (rpc.options[opt.name] !== undefined) throw new Error('Duplicate option ' + opt.name)\n rpc.options[opt.name] = opt.value\n } else {\n throw new Error('Unexpected token in rpc options: ' + tokens[0])\n }\n }\n\n throw new Error('No closing tag for rpc')\n}\n\nvar parse = function (buf) {\n var tokens = tokenize(buf.toString())\n // check for isolated strings in tokens by looking for opening quote\n for (var i = 0; i < tokens.length; i++) {\n if (/^(\"|')([^'\"]*)$/.test(tokens[i])) {\n var j\n if (tokens[i].length === 1) {\n j = i + 1\n } else {\n j = i\n }\n // look ahead for the closing quote and collapse all\n // in-between tokens into a single token\n for (j; j < tokens.length; j++) {\n if (/^([^'\"]*)(\"|')$/.test(tokens[j])) {\n tokens = tokens.slice(0, i).concat(tokens.slice(i, j + 1).join('')).concat(tokens.slice(j + 1))\n break\n }\n }\n }\n }\n var schema = {\n syntax: 3,\n package: null,\n imports: [],\n enums: [],\n messages: [],\n options: {},\n extends: []\n }\n\n var firstline = true\n\n while (tokens.length) {\n switch (tokens[0]) {\n case 'package':\n schema.package = onpackagename(tokens)\n break\n\n case 'syntax':\n if (!firstline) throw new Error('Protobuf syntax version should be first thing in file')\n schema.syntax = onsyntaxversion(tokens)\n break\n\n case 'message':\n schema.messages.push(onmessage(tokens))\n break\n\n case 'enum':\n schema.enums.push(onenum(tokens))\n break\n\n case 'option':\n var opt = onoption(tokens)\n if (schema.options[opt.name]) throw new Error('Duplicate option ' + opt.name)\n schema.options[opt.name] = opt.value\n break\n\n case 'import':\n schema.imports.push(onimport(tokens))\n break\n\n case 'extend':\n schema.extends.push(onextend(tokens))\n break\n\n case 'service':\n if (!schema.services) schema.services = []\n schema.services.push(onservice(tokens))\n break\n\n default:\n throw new Error('Unexpected token: ' + tokens[0])\n }\n firstline = false\n }\n\n // now iterate over messages and propagate extends\n schema.extends.forEach(function (ext) {\n schema.messages.forEach(function (msg) {\n if (msg.name === ext.name) {\n ext.message.fields.forEach(function (field) {\n if (!msg.extensions || field.tag < msg.extensions.from || field.tag > msg.extensions.to) {\n throw new Error(msg.name + ' does not declare ' + field.tag + ' as an extension number')\n }\n msg.fields.push(field)\n })\n }\n })\n })\n\n schema.messages.forEach(function (msg) {\n msg.fields.forEach(function (field) {\n var fieldSplit\n var messageName\n var nestedEnumName\n var message\n\n function enumNameIsFieldType (en) {\n return en.name === field.type\n }\n\n function enumNameIsNestedEnumName (en) {\n return en.name === nestedEnumName\n }\n\n if (field.options && field.options.packed === 'true') {\n if (PACKABLE_TYPES.indexOf(field.type) === -1) {\n // let's see if it's an enum\n if (field.type.indexOf('.') === -1) {\n if (msg.enums && msg.enums.some(enumNameIsFieldType)) {\n return\n }\n } else {\n fieldSplit = field.type.split('.')\n if (fieldSplit.length > 2) {\n throw new Error('what is this?')\n }\n\n messageName = fieldSplit[0]\n nestedEnumName = fieldSplit[1]\n\n schema.messages.some(function (msg) {\n if (msg.name === messageName) {\n message = msg\n return msg\n }\n })\n\n if (message && message.enums && message.enums.some(enumNameIsNestedEnumName)) {\n return\n }\n }\n\n throw new Error(\n 'Fields of type ' + field.type + ' cannot be declared [packed=true]. ' +\n 'Only repeated fields of primitive numeric types (types which use ' +\n 'the varint, 32-bit, or 64-bit wire types) can be declared \"packed\". ' +\n 'See https://developers.google.com/protocol-buffers/docs/encoding#optional'\n )\n }\n }\n })\n })\n\n return schema\n}\n\nmodule.exports = parse\n","// base-x encoding\n// Forked from https://github.com/cryptocoinjs/bs58\n// Originally written by Mike Hearn for BitcoinJ\n// Copyright (c) 2011 Google Inc\n// Ported to JavaScript by Stefan Thomas\n// Merged Buffer refactorings from base58-native by Stephen Pair\n// Copyright (c) 2013 BitPay Inc\n\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function base (ALPHABET) {\n var ALPHABET_MAP = {}\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n\n // pre-compute lookup table\n for (var z = 0; z < ALPHABET.length; z++) {\n var x = ALPHABET.charAt(z)\n\n if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')\n ALPHABET_MAP[x] = z\n }\n\n function encode (source) {\n if (source.length === 0) return ''\n\n var digits = [0]\n for (var i = 0; i < source.length; ++i) {\n for (var j = 0, carry = source[i]; j < digits.length; ++j) {\n carry += digits[j] << 8\n digits[j] = carry % BASE\n carry = (carry / BASE) | 0\n }\n\n while (carry > 0) {\n digits.push(carry % BASE)\n carry = (carry / BASE) | 0\n }\n }\n\n var string = ''\n\n // deal with leading zeros\n for (var k = 0; source[k] === 0 && k < source.length - 1; ++k) string += LEADER\n // convert digits to a string\n for (var q = digits.length - 1; q >= 0; --q) string += ALPHABET[digits[q]]\n\n return string\n }\n\n function decodeUnsafe (string) {\n if (typeof string !== 'string') throw new TypeError('Expected String')\n if (string.length === 0) return Buffer.allocUnsafe(0)\n\n var bytes = [0]\n for (var i = 0; i < string.length; i++) {\n var value = ALPHABET_MAP[string[i]]\n if (value === undefined) return\n\n for (var j = 0, carry = value; j < bytes.length; ++j) {\n carry += bytes[j] * BASE\n bytes[j] = carry & 0xff\n carry >>= 8\n }\n\n while (carry > 0) {\n bytes.push(carry & 0xff)\n carry >>= 8\n }\n }\n\n // deal with leading zeros\n for (var k = 0; string[k] === LEADER && k < string.length - 1; ++k) {\n bytes.push(0)\n }\n\n return Buffer.from(bytes.reverse())\n }\n\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) return buffer\n\n throw new Error('Non-base' + BASE + ' character')\n }\n\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\n","'use strict'\n\nconst toStream = require('it-to-stream')\n\nmodule.exports = function (self) {\n return function lsReadableStream (ipfsPath, options) {\n return toStream.readable(self._lsAsyncIterator(ipfsPath, options), {\n objectMode: true\n })\n }\n}\n","'use strict'\n\nconst base58 = require('bs58')\nconst multihash = require('multihashes')\nconst multibase = require('multibase')\nconst Multiaddr = require('multiaddr')\nconst mafmt = require('mafmt')\nconst CID = require('cids')\n\nconst urlPattern = /^https?:\\/\\/[^/]+\\/(ip(f|n)s)\\/((\\w+).*)/\nconst pathPattern = /^\\/(ip(f|n)s)\\/((\\w+).*)/\nconst defaultProtocolMatch = 1\nconst defaultHashMath = 4\n\nconst fqdnPattern = /^https?:\\/\\/([^/]+)\\.(ip(?:f|n)s)\\.[^/]+/\nconst fqdnHashMatch = 1\nconst fqdnProtocolMatch = 2\n\nfunction isMultihash (hash) {\n const formatted = convertToString(hash)\n try {\n const buffer = Buffer.from(base58.decode(formatted))\n multihash.decode(buffer)\n return true\n } catch (e) {\n return false\n }\n}\n\nfunction isMultibase (hash) {\n try {\n return multibase.isEncoded(hash)\n } catch (e) {\n return false\n }\n}\n\nfunction isCID (hash) {\n try {\n new CID(hash) // eslint-disable-line no-new\n return true\n } catch (e) {\n return false\n }\n}\n\nfunction isMultiaddr (input) {\n if (!input) return false\n if (Multiaddr.isMultiaddr(input)) return true\n try {\n new Multiaddr(input) // eslint-disable-line no-new\n return true\n } catch (e) {\n return false\n }\n}\n\nfunction isPeerMultiaddr (input) {\n return isMultiaddr(input) && mafmt.IPFS.matches(input)\n}\n\nfunction isIpfs (input, pattern, protocolMatch = defaultProtocolMatch, hashMatch = defaultHashMath) {\n const formatted = convertToString(input)\n if (!formatted) {\n return false\n }\n\n const match = formatted.match(pattern)\n if (!match) {\n return false\n }\n\n if (match[protocolMatch] !== 'ipfs') {\n return false\n }\n\n let hash = match[hashMatch]\n\n if (hash && pattern === fqdnPattern) {\n // when doing checks for subdomain context\n // ensure hash is case-insensitive\n // (browsers force-lowercase authority compotent anyway)\n hash = hash.toLowerCase()\n }\n\n return isCID(hash)\n}\n\nfunction isIpns (input, pattern, protocolMatch = defaultProtocolMatch, hashMatch) {\n const formatted = convertToString(input)\n if (!formatted) {\n return false\n }\n const match = formatted.match(pattern)\n if (!match) {\n return false\n }\n\n if (match[protocolMatch] !== 'ipns') {\n return false\n }\n\n if (hashMatch && pattern === fqdnPattern) {\n let hash = match[hashMatch]\n // when doing checks for subdomain context\n // ensure hash is case-insensitive\n // (browsers force-lowercase authority compotent anyway)\n hash = hash.toLowerCase()\n return isCID(hash)\n }\n\n return true\n}\n\nfunction isString (input) {\n return typeof input === 'string'\n}\n\nfunction convertToString (input) {\n if (Buffer.isBuffer(input)) {\n return base58.encode(input)\n }\n\n if (isString(input)) {\n return input\n }\n\n return false\n}\n\nconst ipfsSubdomain = (url) => isIpfs(url, fqdnPattern, fqdnProtocolMatch, fqdnHashMatch)\nconst ipnsSubdomain = (url) => isIpns(url, fqdnPattern, fqdnProtocolMatch, fqdnHashMatch)\n\nmodule.exports = {\n multihash: isMultihash,\n multiaddr: isMultiaddr,\n peerMultiaddr: isPeerMultiaddr,\n cid: isCID,\n base32cid: (cid) => (isMultibase(cid) === 'base32' && isCID(cid)),\n ipfsSubdomain: ipfsSubdomain,\n ipnsSubdomain: ipnsSubdomain,\n subdomain: (url) => (ipfsSubdomain(url) || ipnsSubdomain(url)),\n subdomainPattern: fqdnPattern,\n ipfsUrl: (url) => isIpfs(url, urlPattern),\n ipnsUrl: (url) => isIpns(url, urlPattern),\n url: (url) => (isIpfs(url, urlPattern) || isIpns(url, urlPattern)),\n urlPattern: urlPattern,\n ipfsPath: (path) => isIpfs(path, pathPattern),\n ipnsPath: (path) => isIpns(path, pathPattern),\n path: (path) => (isIpfs(path, pathPattern) || isIpns(path, pathPattern)),\n pathPattern: pathPattern,\n urlOrPath: (x) => (isIpfs(x, urlPattern) || isIpns(x, urlPattern) || isIpfs(x, pathPattern) || isIpns(x, pathPattern)),\n cidPath: path => isString(path) && !isCID(path) && isIpfs(`/ipfs/${path}`, pathPattern)\n}\n","'use strict';\n\nconst asn1 = exports;\n\nasn1.bignum = require('bn.js');\n\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = eachLimit;\n\nvar _eachOfLimit = require('./internal/eachOfLimit');\n\nvar _eachOfLimit2 = _interopRequireDefault(_eachOfLimit);\n\nvar _withoutIndex = require('./internal/withoutIndex');\n\nvar _withoutIndex2 = _interopRequireDefault(_withoutIndex);\n\nvar _wrapAsync = require('./internal/wrapAsync');\n\nvar _wrapAsync2 = _interopRequireDefault(_wrapAsync);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * The same as [`each`]{@link module:Collections.each} but runs a maximum of `limit` async operations at a time.\n *\n * @name eachLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.each]{@link module:Collections.each}\n * @alias forEachLimit\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - An async function to apply to each item in\n * `coll`.\n * The array index is not passed to the iteratee.\n * If you need the index, use `eachOfLimit`.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called when all\n * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n */\nfunction eachLimit(coll, limit, iteratee, callback) {\n (0, _eachOfLimit2.default)(limit)(coll, (0, _withoutIndex2.default)((0, _wrapAsync2.default)(iteratee)), callback);\n}\nmodule.exports = exports['default'];","/**\n * Javascript implementation of X.509 and related components (such as\n * Certification Signing Requests) of a Public Key Infrastructure.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n *\n * The ASN.1 representation of an X.509v3 certificate is as follows\n * (see RFC 2459):\n *\n * Certificate ::= SEQUENCE {\n * tbsCertificate TBSCertificate,\n * signatureAlgorithm AlgorithmIdentifier,\n * signatureValue BIT STRING\n * }\n *\n * TBSCertificate ::= SEQUENCE {\n * version [0] EXPLICIT Version DEFAULT v1,\n * serialNumber CertificateSerialNumber,\n * signature AlgorithmIdentifier,\n * issuer Name,\n * validity Validity,\n * subject Name,\n * subjectPublicKeyInfo SubjectPublicKeyInfo,\n * issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL,\n * -- If present, version shall be v2 or v3\n * subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL,\n * -- If present, version shall be v2 or v3\n * extensions [3] EXPLICIT Extensions OPTIONAL\n * -- If present, version shall be v3\n * }\n *\n * Version ::= INTEGER { v1(0), v2(1), v3(2) }\n *\n * CertificateSerialNumber ::= INTEGER\n *\n * Name ::= CHOICE {\n * // only one possible choice for now\n * RDNSequence\n * }\n *\n * RDNSequence ::= SEQUENCE OF RelativeDistinguishedName\n *\n * RelativeDistinguishedName ::= SET OF AttributeTypeAndValue\n *\n * AttributeTypeAndValue ::= SEQUENCE {\n * type AttributeType,\n * value AttributeValue\n * }\n * AttributeType ::= OBJECT IDENTIFIER\n * AttributeValue ::= ANY DEFINED BY AttributeType\n *\n * Validity ::= SEQUENCE {\n * notBefore Time,\n * notAfter Time\n * }\n *\n * Time ::= CHOICE {\n * utcTime UTCTime,\n * generalTime GeneralizedTime\n * }\n *\n * UniqueIdentifier ::= BIT STRING\n *\n * SubjectPublicKeyInfo ::= SEQUENCE {\n * algorithm AlgorithmIdentifier,\n * subjectPublicKey BIT STRING\n * }\n *\n * Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension\n *\n * Extension ::= SEQUENCE {\n * extnID OBJECT IDENTIFIER,\n * critical BOOLEAN DEFAULT FALSE,\n * extnValue OCTET STRING\n * }\n *\n * The only key algorithm currently supported for PKI is RSA.\n *\n * RSASSA-PSS signatures are described in RFC 3447 and RFC 4055.\n *\n * PKCS#10 v1.7 describes certificate signing requests:\n *\n * CertificationRequestInfo:\n *\n * CertificationRequestInfo ::= SEQUENCE {\n * version INTEGER { v1(0) } (v1,...),\n * subject Name,\n * subjectPKInfo SubjectPublicKeyInfo{{ PKInfoAlgorithms }},\n * attributes [0] Attributes{{ CRIAttributes }}\n * }\n *\n * Attributes { ATTRIBUTE:IOSet } ::= SET OF Attribute{{ IOSet }}\n *\n * CRIAttributes ATTRIBUTE ::= {\n * ... -- add any locally defined attributes here -- }\n *\n * Attribute { ATTRIBUTE:IOSet } ::= SEQUENCE {\n * type ATTRIBUTE.&id({IOSet}),\n * values SET SIZE(1..MAX) OF ATTRIBUTE.&Type({IOSet}{@type})\n * }\n *\n * CertificationRequest ::= SEQUENCE {\n * certificationRequestInfo CertificationRequestInfo,\n * signatureAlgorithm AlgorithmIdentifier{{ SignatureAlgorithms }},\n * signature BIT STRING\n * }\n */\nvar forge = require('./forge');\nrequire('./aes');\nrequire('./asn1');\nrequire('./des');\nrequire('./md');\nrequire('./mgf');\nrequire('./oids');\nrequire('./pem');\nrequire('./pss');\nrequire('./rsa');\nrequire('./util');\n\n// shortcut for asn.1 API\nvar asn1 = forge.asn1;\n\n/* Public Key Infrastructure (PKI) implementation. */\nvar pki = module.exports = forge.pki = forge.pki || {};\nvar oids = pki.oids;\n\n// short name OID mappings\nvar _shortNames = {};\n_shortNames['CN'] = oids['commonName'];\n_shortNames['commonName'] = 'CN';\n_shortNames['C'] = oids['countryName'];\n_shortNames['countryName'] = 'C';\n_shortNames['L'] = oids['localityName'];\n_shortNames['localityName'] = 'L';\n_shortNames['ST'] = oids['stateOrProvinceName'];\n_shortNames['stateOrProvinceName'] = 'ST';\n_shortNames['O'] = oids['organizationName'];\n_shortNames['organizationName'] = 'O';\n_shortNames['OU'] = oids['organizationalUnitName'];\n_shortNames['organizationalUnitName'] = 'OU';\n_shortNames['E'] = oids['emailAddress'];\n_shortNames['emailAddress'] = 'E';\n\n// validator for an SubjectPublicKeyInfo structure\n// Note: Currently only works with an RSA public key\nvar publicKeyValidator = forge.pki.rsa.publicKeyValidator;\n\n// validator for an X.509v3 certificate\nvar x509CertificateValidator = {\n name: 'Certificate',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'Certificate.TBSCertificate',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n captureAsn1: 'tbsCertificate',\n value: [{\n name: 'Certificate.TBSCertificate.version',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 0,\n constructed: true,\n optional: true,\n value: [{\n name: 'Certificate.TBSCertificate.version.integer',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'certVersion'\n }]\n }, {\n name: 'Certificate.TBSCertificate.serialNumber',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'certSerialNumber'\n }, {\n name: 'Certificate.TBSCertificate.signature',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'Certificate.TBSCertificate.signature.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'certinfoSignatureOid'\n }, {\n name: 'Certificate.TBSCertificate.signature.parameters',\n tagClass: asn1.Class.UNIVERSAL,\n optional: true,\n captureAsn1: 'certinfoSignatureParams'\n }]\n }, {\n name: 'Certificate.TBSCertificate.issuer',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n captureAsn1: 'certIssuer'\n }, {\n name: 'Certificate.TBSCertificate.validity',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n // Note: UTC and generalized times may both appear so the capture\n // names are based on their detected order, the names used below\n // are only for the common case, which validity time really means\n // \"notBefore\" and which means \"notAfter\" will be determined by order\n value: [{\n // notBefore (Time) (UTC time case)\n name: 'Certificate.TBSCertificate.validity.notBefore (utc)',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.UTCTIME,\n constructed: false,\n optional: true,\n capture: 'certValidity1UTCTime'\n }, {\n // notBefore (Time) (generalized time case)\n name: 'Certificate.TBSCertificate.validity.notBefore (generalized)',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.GENERALIZEDTIME,\n constructed: false,\n optional: true,\n capture: 'certValidity2GeneralizedTime'\n }, {\n // notAfter (Time) (only UTC time is supported)\n name: 'Certificate.TBSCertificate.validity.notAfter (utc)',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.UTCTIME,\n constructed: false,\n optional: true,\n capture: 'certValidity3UTCTime'\n }, {\n // notAfter (Time) (only UTC time is supported)\n name: 'Certificate.TBSCertificate.validity.notAfter (generalized)',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.GENERALIZEDTIME,\n constructed: false,\n optional: true,\n capture: 'certValidity4GeneralizedTime'\n }]\n }, {\n // Name (subject) (RDNSequence)\n name: 'Certificate.TBSCertificate.subject',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n captureAsn1: 'certSubject'\n },\n // SubjectPublicKeyInfo\n publicKeyValidator,\n {\n // issuerUniqueID (optional)\n name: 'Certificate.TBSCertificate.issuerUniqueID',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 1,\n constructed: true,\n optional: true,\n value: [{\n name: 'Certificate.TBSCertificate.issuerUniqueID.id',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.BITSTRING,\n constructed: false,\n // TODO: support arbitrary bit length ids\n captureBitStringValue: 'certIssuerUniqueId'\n }]\n }, {\n // subjectUniqueID (optional)\n name: 'Certificate.TBSCertificate.subjectUniqueID',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 2,\n constructed: true,\n optional: true,\n value: [{\n name: 'Certificate.TBSCertificate.subjectUniqueID.id',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.BITSTRING,\n constructed: false,\n // TODO: support arbitrary bit length ids\n captureBitStringValue: 'certSubjectUniqueId'\n }]\n }, {\n // Extensions (optional)\n name: 'Certificate.TBSCertificate.extensions',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 3,\n constructed: true,\n captureAsn1: 'certExtensions',\n optional: true\n }]\n }, {\n // AlgorithmIdentifier (signature algorithm)\n name: 'Certificate.signatureAlgorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n // algorithm\n name: 'Certificate.signatureAlgorithm.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'certSignatureOid'\n }, {\n name: 'Certificate.TBSCertificate.signature.parameters',\n tagClass: asn1.Class.UNIVERSAL,\n optional: true,\n captureAsn1: 'certSignatureParams'\n }]\n }, {\n // SignatureValue\n name: 'Certificate.signatureValue',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.BITSTRING,\n constructed: false,\n captureBitStringValue: 'certSignature'\n }]\n};\n\nvar rsassaPssParameterValidator = {\n name: 'rsapss',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'rsapss.hashAlgorithm',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 0,\n constructed: true,\n value: [{\n name: 'rsapss.hashAlgorithm.AlgorithmIdentifier',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Class.SEQUENCE,\n constructed: true,\n optional: true,\n value: [{\n name: 'rsapss.hashAlgorithm.AlgorithmIdentifier.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'hashOid'\n /* parameter block omitted, for SHA1 NULL anyhow. */\n }]\n }]\n }, {\n name: 'rsapss.maskGenAlgorithm',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 1,\n constructed: true,\n value: [{\n name: 'rsapss.maskGenAlgorithm.AlgorithmIdentifier',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Class.SEQUENCE,\n constructed: true,\n optional: true,\n value: [{\n name: 'rsapss.maskGenAlgorithm.AlgorithmIdentifier.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'maskGenOid'\n }, {\n name: 'rsapss.maskGenAlgorithm.AlgorithmIdentifier.params',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'rsapss.maskGenAlgorithm.AlgorithmIdentifier.params.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'maskGenHashOid'\n /* parameter block omitted, for SHA1 NULL anyhow. */\n }]\n }]\n }]\n }, {\n name: 'rsapss.saltLength',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 2,\n optional: true,\n value: [{\n name: 'rsapss.saltLength.saltLength',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Class.INTEGER,\n constructed: false,\n capture: 'saltLength'\n }]\n }, {\n name: 'rsapss.trailerField',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 3,\n optional: true,\n value: [{\n name: 'rsapss.trailer.trailer',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Class.INTEGER,\n constructed: false,\n capture: 'trailer'\n }]\n }]\n};\n\n// validator for a CertificationRequestInfo structure\nvar certificationRequestInfoValidator = {\n name: 'CertificationRequestInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n captureAsn1: 'certificationRequestInfo',\n value: [{\n name: 'CertificationRequestInfo.integer',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'certificationRequestInfoVersion'\n }, {\n // Name (subject) (RDNSequence)\n name: 'CertificationRequestInfo.subject',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n captureAsn1: 'certificationRequestInfoSubject'\n },\n // SubjectPublicKeyInfo\n publicKeyValidator,\n {\n name: 'CertificationRequestInfo.attributes',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 0,\n constructed: true,\n optional: true,\n capture: 'certificationRequestInfoAttributes',\n value: [{\n name: 'CertificationRequestInfo.attributes',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'CertificationRequestInfo.attributes.type',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false\n }, {\n name: 'CertificationRequestInfo.attributes.value',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SET,\n constructed: true\n }]\n }]\n }]\n};\n\n// validator for a CertificationRequest structure\nvar certificationRequestValidator = {\n name: 'CertificationRequest',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n captureAsn1: 'csr',\n value: [\n certificationRequestInfoValidator, {\n // AlgorithmIdentifier (signature algorithm)\n name: 'CertificationRequest.signatureAlgorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n // algorithm\n name: 'CertificationRequest.signatureAlgorithm.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'csrSignatureOid'\n }, {\n name: 'CertificationRequest.signatureAlgorithm.parameters',\n tagClass: asn1.Class.UNIVERSAL,\n optional: true,\n captureAsn1: 'csrSignatureParams'\n }]\n }, {\n // signature\n name: 'CertificationRequest.signature',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.BITSTRING,\n constructed: false,\n captureBitStringValue: 'csrSignature'\n }\n ]\n};\n\n/**\n * Converts an RDNSequence of ASN.1 DER-encoded RelativeDistinguishedName\n * sets into an array with objects that have type and value properties.\n *\n * @param rdn the RDNSequence to convert.\n * @param md a message digest to append type and value to if provided.\n */\npki.RDNAttributesAsArray = function(rdn, md) {\n var rval = [];\n\n // each value in 'rdn' in is a SET of RelativeDistinguishedName\n var set, attr, obj;\n for(var si = 0; si < rdn.value.length; ++si) {\n // get the RelativeDistinguishedName set\n set = rdn.value[si];\n\n // each value in the SET is an AttributeTypeAndValue sequence\n // containing first a type (an OID) and second a value (defined by\n // the OID)\n for(var i = 0; i < set.value.length; ++i) {\n obj = {};\n attr = set.value[i];\n obj.type = asn1.derToOid(attr.value[0].value);\n obj.value = attr.value[1].value;\n obj.valueTagClass = attr.value[1].type;\n // if the OID is known, get its name and short name\n if(obj.type in oids) {\n obj.name = oids[obj.type];\n if(obj.name in _shortNames) {\n obj.shortName = _shortNames[obj.name];\n }\n }\n if(md) {\n md.update(obj.type);\n md.update(obj.value);\n }\n rval.push(obj);\n }\n }\n\n return rval;\n};\n\n/**\n * Converts ASN.1 CRIAttributes into an array with objects that have type and\n * value properties.\n *\n * @param attributes the CRIAttributes to convert.\n */\npki.CRIAttributesAsArray = function(attributes) {\n var rval = [];\n\n // each value in 'attributes' in is a SEQUENCE with an OID and a SET\n for(var si = 0; si < attributes.length; ++si) {\n // get the attribute sequence\n var seq = attributes[si];\n\n // each value in the SEQUENCE containing first a type (an OID) and\n // second a set of values (defined by the OID)\n var type = asn1.derToOid(seq.value[0].value);\n var values = seq.value[1].value;\n for(var vi = 0; vi < values.length; ++vi) {\n var obj = {};\n obj.type = type;\n obj.value = values[vi].value;\n obj.valueTagClass = values[vi].type;\n // if the OID is known, get its name and short name\n if(obj.type in oids) {\n obj.name = oids[obj.type];\n if(obj.name in _shortNames) {\n obj.shortName = _shortNames[obj.name];\n }\n }\n // parse extensions\n if(obj.type === oids.extensionRequest) {\n obj.extensions = [];\n for(var ei = 0; ei < obj.value.length; ++ei) {\n obj.extensions.push(pki.certificateExtensionFromAsn1(obj.value[ei]));\n }\n }\n rval.push(obj);\n }\n }\n\n return rval;\n};\n\n/**\n * Gets an issuer or subject attribute from its name, type, or short name.\n *\n * @param obj the issuer or subject object.\n * @param options a short name string or an object with:\n * shortName the short name for the attribute.\n * name the name for the attribute.\n * type the type for the attribute.\n *\n * @return the attribute.\n */\nfunction _getAttribute(obj, options) {\n if(typeof options === 'string') {\n options = {shortName: options};\n }\n\n var rval = null;\n var attr;\n for(var i = 0; rval === null && i < obj.attributes.length; ++i) {\n attr = obj.attributes[i];\n if(options.type && options.type === attr.type) {\n rval = attr;\n } else if(options.name && options.name === attr.name) {\n rval = attr;\n } else if(options.shortName && options.shortName === attr.shortName) {\n rval = attr;\n }\n }\n return rval;\n}\n\n/**\n * Converts signature parameters from ASN.1 structure.\n *\n * Currently only RSASSA-PSS supported. The PKCS#1 v1.5 signature scheme had\n * no parameters.\n *\n * RSASSA-PSS-params ::= SEQUENCE {\n * hashAlgorithm [0] HashAlgorithm DEFAULT\n * sha1Identifier,\n * maskGenAlgorithm [1] MaskGenAlgorithm DEFAULT\n * mgf1SHA1Identifier,\n * saltLength [2] INTEGER DEFAULT 20,\n * trailerField [3] INTEGER DEFAULT 1\n * }\n *\n * HashAlgorithm ::= AlgorithmIdentifier\n *\n * MaskGenAlgorithm ::= AlgorithmIdentifier\n *\n * AlgorithmIdentifer ::= SEQUENCE {\n * algorithm OBJECT IDENTIFIER,\n * parameters ANY DEFINED BY algorithm OPTIONAL\n * }\n *\n * @param oid The OID specifying the signature algorithm\n * @param obj The ASN.1 structure holding the parameters\n * @param fillDefaults Whether to use return default values where omitted\n * @return signature parameter object\n */\nvar _readSignatureParameters = function(oid, obj, fillDefaults) {\n var params = {};\n\n if(oid !== oids['RSASSA-PSS']) {\n return params;\n }\n\n if(fillDefaults) {\n params = {\n hash: {\n algorithmOid: oids['sha1']\n },\n mgf: {\n algorithmOid: oids['mgf1'],\n hash: {\n algorithmOid: oids['sha1']\n }\n },\n saltLength: 20\n };\n }\n\n var capture = {};\n var errors = [];\n if(!asn1.validate(obj, rsassaPssParameterValidator, capture, errors)) {\n var error = new Error('Cannot read RSASSA-PSS parameter block.');\n error.errors = errors;\n throw error;\n }\n\n if(capture.hashOid !== undefined) {\n params.hash = params.hash || {};\n params.hash.algorithmOid = asn1.derToOid(capture.hashOid);\n }\n\n if(capture.maskGenOid !== undefined) {\n params.mgf = params.mgf || {};\n params.mgf.algorithmOid = asn1.derToOid(capture.maskGenOid);\n params.mgf.hash = params.mgf.hash || {};\n params.mgf.hash.algorithmOid = asn1.derToOid(capture.maskGenHashOid);\n }\n\n if(capture.saltLength !== undefined) {\n params.saltLength = capture.saltLength.charCodeAt(0);\n }\n\n return params;\n};\n\n/**\n * Converts an X.509 certificate from PEM format.\n *\n * Note: If the certificate is to be verified then compute hash should\n * be set to true. This will scan the TBSCertificate part of the ASN.1\n * object while it is converted so it doesn't need to be converted back\n * to ASN.1-DER-encoding later.\n *\n * @param pem the PEM-formatted certificate.\n * @param computeHash true to compute the hash for verification.\n * @param strict true to be strict when checking ASN.1 value lengths, false to\n * allow truncated values (default: true).\n *\n * @return the certificate.\n */\npki.certificateFromPem = function(pem, computeHash, strict) {\n var msg = forge.pem.decode(pem)[0];\n\n if(msg.type !== 'CERTIFICATE' &&\n msg.type !== 'X509 CERTIFICATE' &&\n msg.type !== 'TRUSTED CERTIFICATE') {\n var error = new Error(\n 'Could not convert certificate from PEM; PEM header type ' +\n 'is not \"CERTIFICATE\", \"X509 CERTIFICATE\", or \"TRUSTED CERTIFICATE\".');\n error.headerType = msg.type;\n throw error;\n }\n if(msg.procType && msg.procType.type === 'ENCRYPTED') {\n throw new Error(\n 'Could not convert certificate from PEM; PEM is encrypted.');\n }\n\n // convert DER to ASN.1 object\n var obj = asn1.fromDer(msg.body, strict);\n\n return pki.certificateFromAsn1(obj, computeHash);\n};\n\n/**\n * Converts an X.509 certificate to PEM format.\n *\n * @param cert the certificate.\n * @param maxline the maximum characters per line, defaults to 64.\n *\n * @return the PEM-formatted certificate.\n */\npki.certificateToPem = function(cert, maxline) {\n // convert to ASN.1, then DER, then PEM-encode\n var msg = {\n type: 'CERTIFICATE',\n body: asn1.toDer(pki.certificateToAsn1(cert)).getBytes()\n };\n return forge.pem.encode(msg, {maxline: maxline});\n};\n\n/**\n * Converts an RSA public key from PEM format.\n *\n * @param pem the PEM-formatted public key.\n *\n * @return the public key.\n */\npki.publicKeyFromPem = function(pem) {\n var msg = forge.pem.decode(pem)[0];\n\n if(msg.type !== 'PUBLIC KEY' && msg.type !== 'RSA PUBLIC KEY') {\n var error = new Error('Could not convert public key from PEM; PEM header ' +\n 'type is not \"PUBLIC KEY\" or \"RSA PUBLIC KEY\".');\n error.headerType = msg.type;\n throw error;\n }\n if(msg.procType && msg.procType.type === 'ENCRYPTED') {\n throw new Error('Could not convert public key from PEM; PEM is encrypted.');\n }\n\n // convert DER to ASN.1 object\n var obj = asn1.fromDer(msg.body);\n\n return pki.publicKeyFromAsn1(obj);\n};\n\n/**\n * Converts an RSA public key to PEM format (using a SubjectPublicKeyInfo).\n *\n * @param key the public key.\n * @param maxline the maximum characters per line, defaults to 64.\n *\n * @return the PEM-formatted public key.\n */\npki.publicKeyToPem = function(key, maxline) {\n // convert to ASN.1, then DER, then PEM-encode\n var msg = {\n type: 'PUBLIC KEY',\n body: asn1.toDer(pki.publicKeyToAsn1(key)).getBytes()\n };\n return forge.pem.encode(msg, {maxline: maxline});\n};\n\n/**\n * Converts an RSA public key to PEM format (using an RSAPublicKey).\n *\n * @param key the public key.\n * @param maxline the maximum characters per line, defaults to 64.\n *\n * @return the PEM-formatted public key.\n */\npki.publicKeyToRSAPublicKeyPem = function(key, maxline) {\n // convert to ASN.1, then DER, then PEM-encode\n var msg = {\n type: 'RSA PUBLIC KEY',\n body: asn1.toDer(pki.publicKeyToRSAPublicKey(key)).getBytes()\n };\n return forge.pem.encode(msg, {maxline: maxline});\n};\n\n/**\n * Gets a fingerprint for the given public key.\n *\n * @param options the options to use.\n * [md] the message digest object to use (defaults to forge.md.sha1).\n * [type] the type of fingerprint, such as 'RSAPublicKey',\n * 'SubjectPublicKeyInfo' (defaults to 'RSAPublicKey').\n * [encoding] an alternative output encoding, such as 'hex'\n * (defaults to none, outputs a byte buffer).\n * [delimiter] the delimiter to use between bytes for 'hex' encoded\n * output, eg: ':' (defaults to none).\n *\n * @return the fingerprint as a byte buffer or other encoding based on options.\n */\npki.getPublicKeyFingerprint = function(key, options) {\n options = options || {};\n var md = options.md || forge.md.sha1.create();\n var type = options.type || 'RSAPublicKey';\n\n var bytes;\n switch(type) {\n case 'RSAPublicKey':\n bytes = asn1.toDer(pki.publicKeyToRSAPublicKey(key)).getBytes();\n break;\n case 'SubjectPublicKeyInfo':\n bytes = asn1.toDer(pki.publicKeyToAsn1(key)).getBytes();\n break;\n default:\n throw new Error('Unknown fingerprint type \"' + options.type + '\".');\n }\n\n // hash public key bytes\n md.start();\n md.update(bytes);\n var digest = md.digest();\n if(options.encoding === 'hex') {\n var hex = digest.toHex();\n if(options.delimiter) {\n return hex.match(/.{2}/g).join(options.delimiter);\n }\n return hex;\n } else if(options.encoding === 'binary') {\n return digest.getBytes();\n } else if(options.encoding) {\n throw new Error('Unknown encoding \"' + options.encoding + '\".');\n }\n return digest;\n};\n\n/**\n * Converts a PKCS#10 certification request (CSR) from PEM format.\n *\n * Note: If the certification request is to be verified then compute hash\n * should be set to true. This will scan the CertificationRequestInfo part of\n * the ASN.1 object while it is converted so it doesn't need to be converted\n * back to ASN.1-DER-encoding later.\n *\n * @param pem the PEM-formatted certificate.\n * @param computeHash true to compute the hash for verification.\n * @param strict true to be strict when checking ASN.1 value lengths, false to\n * allow truncated values (default: true).\n *\n * @return the certification request (CSR).\n */\npki.certificationRequestFromPem = function(pem, computeHash, strict) {\n var msg = forge.pem.decode(pem)[0];\n\n if(msg.type !== 'CERTIFICATE REQUEST') {\n var error = new Error('Could not convert certification request from PEM; ' +\n 'PEM header type is not \"CERTIFICATE REQUEST\".');\n error.headerType = msg.type;\n throw error;\n }\n if(msg.procType && msg.procType.type === 'ENCRYPTED') {\n throw new Error('Could not convert certification request from PEM; ' +\n 'PEM is encrypted.');\n }\n\n // convert DER to ASN.1 object\n var obj = asn1.fromDer(msg.body, strict);\n\n return pki.certificationRequestFromAsn1(obj, computeHash);\n};\n\n/**\n * Converts a PKCS#10 certification request (CSR) to PEM format.\n *\n * @param csr the certification request.\n * @param maxline the maximum characters per line, defaults to 64.\n *\n * @return the PEM-formatted certification request.\n */\npki.certificationRequestToPem = function(csr, maxline) {\n // convert to ASN.1, then DER, then PEM-encode\n var msg = {\n type: 'CERTIFICATE REQUEST',\n body: asn1.toDer(pki.certificationRequestToAsn1(csr)).getBytes()\n };\n return forge.pem.encode(msg, {maxline: maxline});\n};\n\n/**\n * Creates an empty X.509v3 RSA certificate.\n *\n * @return the certificate.\n */\npki.createCertificate = function() {\n var cert = {};\n cert.version = 0x02;\n cert.serialNumber = '00';\n cert.signatureOid = null;\n cert.signature = null;\n cert.siginfo = {};\n cert.siginfo.algorithmOid = null;\n cert.validity = {};\n cert.validity.notBefore = new Date();\n cert.validity.notAfter = new Date();\n\n cert.issuer = {};\n cert.issuer.getField = function(sn) {\n return _getAttribute(cert.issuer, sn);\n };\n cert.issuer.addField = function(attr) {\n _fillMissingFields([attr]);\n cert.issuer.attributes.push(attr);\n };\n cert.issuer.attributes = [];\n cert.issuer.hash = null;\n\n cert.subject = {};\n cert.subject.getField = function(sn) {\n return _getAttribute(cert.subject, sn);\n };\n cert.subject.addField = function(attr) {\n _fillMissingFields([attr]);\n cert.subject.attributes.push(attr);\n };\n cert.subject.attributes = [];\n cert.subject.hash = null;\n\n cert.extensions = [];\n cert.publicKey = null;\n cert.md = null;\n\n /**\n * Sets the subject of this certificate.\n *\n * @param attrs the array of subject attributes to use.\n * @param uniqueId an optional a unique ID to use.\n */\n cert.setSubject = function(attrs, uniqueId) {\n // set new attributes, clear hash\n _fillMissingFields(attrs);\n cert.subject.attributes = attrs;\n delete cert.subject.uniqueId;\n if(uniqueId) {\n // TODO: support arbitrary bit length ids\n cert.subject.uniqueId = uniqueId;\n }\n cert.subject.hash = null;\n };\n\n /**\n * Sets the issuer of this certificate.\n *\n * @param attrs the array of issuer attributes to use.\n * @param uniqueId an optional a unique ID to use.\n */\n cert.setIssuer = function(attrs, uniqueId) {\n // set new attributes, clear hash\n _fillMissingFields(attrs);\n cert.issuer.attributes = attrs;\n delete cert.issuer.uniqueId;\n if(uniqueId) {\n // TODO: support arbitrary bit length ids\n cert.issuer.uniqueId = uniqueId;\n }\n cert.issuer.hash = null;\n };\n\n /**\n * Sets the extensions of this certificate.\n *\n * @param exts the array of extensions to use.\n */\n cert.setExtensions = function(exts) {\n for(var i = 0; i < exts.length; ++i) {\n _fillMissingExtensionFields(exts[i], {cert: cert});\n }\n // set new extensions\n cert.extensions = exts;\n };\n\n /**\n * Gets an extension by its name or id.\n *\n * @param options the name to use or an object with:\n * name the name to use.\n * id the id to use.\n *\n * @return the extension or null if not found.\n */\n cert.getExtension = function(options) {\n if(typeof options === 'string') {\n options = {name: options};\n }\n\n var rval = null;\n var ext;\n for(var i = 0; rval === null && i < cert.extensions.length; ++i) {\n ext = cert.extensions[i];\n if(options.id && ext.id === options.id) {\n rval = ext;\n } else if(options.name && ext.name === options.name) {\n rval = ext;\n }\n }\n return rval;\n };\n\n /**\n * Signs this certificate using the given private key.\n *\n * @param key the private key to sign with.\n * @param md the message digest object to use (defaults to forge.md.sha1).\n */\n cert.sign = function(key, md) {\n // TODO: get signature OID from private key\n cert.md = md || forge.md.sha1.create();\n var algorithmOid = oids[cert.md.algorithm + 'WithRSAEncryption'];\n if(!algorithmOid) {\n var error = new Error('Could not compute certificate digest. ' +\n 'Unknown message digest algorithm OID.');\n error.algorithm = cert.md.algorithm;\n throw error;\n }\n cert.signatureOid = cert.siginfo.algorithmOid = algorithmOid;\n\n // get TBSCertificate, convert to DER\n cert.tbsCertificate = pki.getTBSCertificate(cert);\n var bytes = asn1.toDer(cert.tbsCertificate);\n\n // digest and sign\n cert.md.update(bytes.getBytes());\n cert.signature = key.sign(cert.md);\n };\n\n /**\n * Attempts verify the signature on the passed certificate using this\n * certificate's public key.\n *\n * @param child the certificate to verify.\n *\n * @return true if verified, false if not.\n */\n cert.verify = function(child) {\n var rval = false;\n\n if(!cert.issued(child)) {\n var issuer = child.issuer;\n var subject = cert.subject;\n var error = new Error(\n 'The parent certificate did not issue the given child ' +\n 'certificate; the child certificate\\'s issuer does not match the ' +\n 'parent\\'s subject.');\n error.expectedIssuer = issuer.attributes;\n error.actualIssuer = subject.attributes;\n throw error;\n }\n\n var md = child.md;\n if(md === null) {\n // check signature OID for supported signature types\n if(child.signatureOid in oids) {\n var oid = oids[child.signatureOid];\n switch(oid) {\n case 'sha1WithRSAEncryption':\n md = forge.md.sha1.create();\n break;\n case 'md5WithRSAEncryption':\n md = forge.md.md5.create();\n break;\n case 'sha256WithRSAEncryption':\n md = forge.md.sha256.create();\n break;\n case 'sha384WithRSAEncryption':\n md = forge.md.sha384.create();\n break;\n case 'sha512WithRSAEncryption':\n md = forge.md.sha512.create();\n break;\n case 'RSASSA-PSS':\n md = forge.md.sha256.create();\n break;\n }\n }\n if(md === null) {\n var error = new Error('Could not compute certificate digest. ' +\n 'Unknown signature OID.');\n error.signatureOid = child.signatureOid;\n throw error;\n }\n\n // produce DER formatted TBSCertificate and digest it\n var tbsCertificate = child.tbsCertificate || pki.getTBSCertificate(child);\n var bytes = asn1.toDer(tbsCertificate);\n md.update(bytes.getBytes());\n }\n\n if(md !== null) {\n var scheme;\n\n switch(child.signatureOid) {\n case oids.sha1WithRSAEncryption:\n scheme = undefined; /* use PKCS#1 v1.5 padding scheme */\n break;\n case oids['RSASSA-PSS']:\n var hash, mgf;\n\n /* initialize mgf */\n hash = oids[child.signatureParameters.mgf.hash.algorithmOid];\n if(hash === undefined || forge.md[hash] === undefined) {\n var error = new Error('Unsupported MGF hash function.');\n error.oid = child.signatureParameters.mgf.hash.algorithmOid;\n error.name = hash;\n throw error;\n }\n\n mgf = oids[child.signatureParameters.mgf.algorithmOid];\n if(mgf === undefined || forge.mgf[mgf] === undefined) {\n var error = new Error('Unsupported MGF function.');\n error.oid = child.signatureParameters.mgf.algorithmOid;\n error.name = mgf;\n throw error;\n }\n\n mgf = forge.mgf[mgf].create(forge.md[hash].create());\n\n /* initialize hash function */\n hash = oids[child.signatureParameters.hash.algorithmOid];\n if(hash === undefined || forge.md[hash] === undefined) {\n throw {\n message: 'Unsupported RSASSA-PSS hash function.',\n oid: child.signatureParameters.hash.algorithmOid,\n name: hash\n };\n }\n\n scheme = forge.pss.create(forge.md[hash].create(), mgf,\n child.signatureParameters.saltLength);\n break;\n }\n\n // verify signature on cert using public key\n rval = cert.publicKey.verify(\n md.digest().getBytes(), child.signature, scheme);\n }\n\n return rval;\n };\n\n /**\n * Returns true if this certificate's issuer matches the passed\n * certificate's subject. Note that no signature check is performed.\n *\n * @param parent the certificate to check.\n *\n * @return true if this certificate's issuer matches the passed certificate's\n * subject.\n */\n cert.isIssuer = function(parent) {\n var rval = false;\n\n var i = cert.issuer;\n var s = parent.subject;\n\n // compare hashes if present\n if(i.hash && s.hash) {\n rval = (i.hash === s.hash);\n } else if(i.attributes.length === s.attributes.length) {\n // all attributes are the same so issuer matches subject\n rval = true;\n var iattr, sattr;\n for(var n = 0; rval && n < i.attributes.length; ++n) {\n iattr = i.attributes[n];\n sattr = s.attributes[n];\n if(iattr.type !== sattr.type || iattr.value !== sattr.value) {\n // attribute mismatch\n rval = false;\n }\n }\n }\n\n return rval;\n };\n\n /**\n * Returns true if this certificate's subject matches the issuer of the\n * given certificate). Note that not signature check is performed.\n *\n * @param child the certificate to check.\n *\n * @return true if this certificate's subject matches the passed\n * certificate's issuer.\n */\n cert.issued = function(child) {\n return child.isIssuer(cert);\n };\n\n /**\n * Generates the subjectKeyIdentifier for this certificate as byte buffer.\n *\n * @return the subjectKeyIdentifier for this certificate as byte buffer.\n */\n cert.generateSubjectKeyIdentifier = function() {\n /* See: 4.2.1.2 section of the the RFC3280, keyIdentifier is either:\n\n (1) The keyIdentifier is composed of the 160-bit SHA-1 hash of the\n value of the BIT STRING subjectPublicKey (excluding the tag,\n length, and number of unused bits).\n\n (2) The keyIdentifier is composed of a four bit type field with\n the value 0100 followed by the least significant 60 bits of the\n SHA-1 hash of the value of the BIT STRING subjectPublicKey\n (excluding the tag, length, and number of unused bit string bits).\n */\n\n // skipping the tag, length, and number of unused bits is the same\n // as just using the RSAPublicKey (for RSA keys, which are the\n // only ones supported)\n return pki.getPublicKeyFingerprint(cert.publicKey, {type: 'RSAPublicKey'});\n };\n\n /**\n * Verifies the subjectKeyIdentifier extension value for this certificate\n * against its public key. If no extension is found, false will be\n * returned.\n *\n * @return true if verified, false if not.\n */\n cert.verifySubjectKeyIdentifier = function() {\n var oid = oids['subjectKeyIdentifier'];\n for(var i = 0; i < cert.extensions.length; ++i) {\n var ext = cert.extensions[i];\n if(ext.id === oid) {\n var ski = cert.generateSubjectKeyIdentifier().getBytes();\n return (forge.util.hexToBytes(ext.subjectKeyIdentifier) === ski);\n }\n }\n return false;\n };\n\n return cert;\n};\n\n/**\n * Converts an X.509v3 RSA certificate from an ASN.1 object.\n *\n * Note: If the certificate is to be verified then compute hash should\n * be set to true. There is currently no implementation for converting\n * a certificate back to ASN.1 so the TBSCertificate part of the ASN.1\n * object needs to be scanned before the cert object is created.\n *\n * @param obj the asn1 representation of an X.509v3 RSA certificate.\n * @param computeHash true to compute the hash for verification.\n *\n * @return the certificate.\n */\npki.certificateFromAsn1 = function(obj, computeHash) {\n // validate certificate and capture data\n var capture = {};\n var errors = [];\n if(!asn1.validate(obj, x509CertificateValidator, capture, errors)) {\n var error = new Error('Cannot read X.509 certificate. ' +\n 'ASN.1 object is not an X509v3 Certificate.');\n error.errors = errors;\n throw error;\n }\n\n // get oid\n var oid = asn1.derToOid(capture.publicKeyOid);\n if(oid !== pki.oids.rsaEncryption) {\n throw new Error('Cannot read public key. OID is not RSA.');\n }\n\n // create certificate\n var cert = pki.createCertificate();\n cert.version = capture.certVersion ?\n capture.certVersion.charCodeAt(0) : 0;\n var serial = forge.util.createBuffer(capture.certSerialNumber);\n cert.serialNumber = serial.toHex();\n cert.signatureOid = forge.asn1.derToOid(capture.certSignatureOid);\n cert.signatureParameters = _readSignatureParameters(\n cert.signatureOid, capture.certSignatureParams, true);\n cert.siginfo.algorithmOid = forge.asn1.derToOid(capture.certinfoSignatureOid);\n cert.siginfo.parameters = _readSignatureParameters(cert.siginfo.algorithmOid,\n capture.certinfoSignatureParams, false);\n cert.signature = capture.certSignature;\n\n var validity = [];\n if(capture.certValidity1UTCTime !== undefined) {\n validity.push(asn1.utcTimeToDate(capture.certValidity1UTCTime));\n }\n if(capture.certValidity2GeneralizedTime !== undefined) {\n validity.push(asn1.generalizedTimeToDate(\n capture.certValidity2GeneralizedTime));\n }\n if(capture.certValidity3UTCTime !== undefined) {\n validity.push(asn1.utcTimeToDate(capture.certValidity3UTCTime));\n }\n if(capture.certValidity4GeneralizedTime !== undefined) {\n validity.push(asn1.generalizedTimeToDate(\n capture.certValidity4GeneralizedTime));\n }\n if(validity.length > 2) {\n throw new Error('Cannot read notBefore/notAfter validity times; more ' +\n 'than two times were provided in the certificate.');\n }\n if(validity.length < 2) {\n throw new Error('Cannot read notBefore/notAfter validity times; they ' +\n 'were not provided as either UTCTime or GeneralizedTime.');\n }\n cert.validity.notBefore = validity[0];\n cert.validity.notAfter = validity[1];\n\n // keep TBSCertificate to preserve signature when exporting\n cert.tbsCertificate = capture.tbsCertificate;\n\n if(computeHash) {\n // check signature OID for supported signature types\n cert.md = null;\n if(cert.signatureOid in oids) {\n var oid = oids[cert.signatureOid];\n switch(oid) {\n case 'sha1WithRSAEncryption':\n cert.md = forge.md.sha1.create();\n break;\n case 'md5WithRSAEncryption':\n cert.md = forge.md.md5.create();\n break;\n case 'sha256WithRSAEncryption':\n cert.md = forge.md.sha256.create();\n break;\n case 'sha384WithRSAEncryption':\n cert.md = forge.md.sha384.create();\n break;\n case 'sha512WithRSAEncryption':\n cert.md = forge.md.sha512.create();\n break;\n case 'RSASSA-PSS':\n cert.md = forge.md.sha256.create();\n break;\n }\n }\n if(cert.md === null) {\n var error = new Error('Could not compute certificate digest. ' +\n 'Unknown signature OID.');\n error.signatureOid = cert.signatureOid;\n throw error;\n }\n\n // produce DER formatted TBSCertificate and digest it\n var bytes = asn1.toDer(cert.tbsCertificate);\n cert.md.update(bytes.getBytes());\n }\n\n // handle issuer, build issuer message digest\n var imd = forge.md.sha1.create();\n cert.issuer.getField = function(sn) {\n return _getAttribute(cert.issuer, sn);\n };\n cert.issuer.addField = function(attr) {\n _fillMissingFields([attr]);\n cert.issuer.attributes.push(attr);\n };\n cert.issuer.attributes = pki.RDNAttributesAsArray(capture.certIssuer, imd);\n if(capture.certIssuerUniqueId) {\n cert.issuer.uniqueId = capture.certIssuerUniqueId;\n }\n cert.issuer.hash = imd.digest().toHex();\n\n // handle subject, build subject message digest\n var smd = forge.md.sha1.create();\n cert.subject.getField = function(sn) {\n return _getAttribute(cert.subject, sn);\n };\n cert.subject.addField = function(attr) {\n _fillMissingFields([attr]);\n cert.subject.attributes.push(attr);\n };\n cert.subject.attributes = pki.RDNAttributesAsArray(capture.certSubject, smd);\n if(capture.certSubjectUniqueId) {\n cert.subject.uniqueId = capture.certSubjectUniqueId;\n }\n cert.subject.hash = smd.digest().toHex();\n\n // handle extensions\n if(capture.certExtensions) {\n cert.extensions = pki.certificateExtensionsFromAsn1(capture.certExtensions);\n } else {\n cert.extensions = [];\n }\n\n // convert RSA public key from ASN.1\n cert.publicKey = pki.publicKeyFromAsn1(capture.subjectPublicKeyInfo);\n\n return cert;\n};\n\n/**\n * Converts an ASN.1 extensions object (with extension sequences as its\n * values) into an array of extension objects with types and values.\n *\n * Supported extensions:\n *\n * id-ce-keyUsage OBJECT IDENTIFIER ::= { id-ce 15 }\n * KeyUsage ::= BIT STRING {\n * digitalSignature (0),\n * nonRepudiation (1),\n * keyEncipherment (2),\n * dataEncipherment (3),\n * keyAgreement (4),\n * keyCertSign (5),\n * cRLSign (6),\n * encipherOnly (7),\n * decipherOnly (8)\n * }\n *\n * id-ce-basicConstraints OBJECT IDENTIFIER ::= { id-ce 19 }\n * BasicConstraints ::= SEQUENCE {\n * cA BOOLEAN DEFAULT FALSE,\n * pathLenConstraint INTEGER (0..MAX) OPTIONAL\n * }\n *\n * subjectAltName EXTENSION ::= {\n * SYNTAX GeneralNames\n * IDENTIFIED BY id-ce-subjectAltName\n * }\n *\n * GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName\n *\n * GeneralName ::= CHOICE {\n * otherName [0] INSTANCE OF OTHER-NAME,\n * rfc822Name [1] IA5String,\n * dNSName [2] IA5String,\n * x400Address [3] ORAddress,\n * directoryName [4] Name,\n * ediPartyName [5] EDIPartyName,\n * uniformResourceIdentifier [6] IA5String,\n * IPAddress [7] OCTET STRING,\n * registeredID [8] OBJECT IDENTIFIER\n * }\n *\n * OTHER-NAME ::= TYPE-IDENTIFIER\n *\n * EDIPartyName ::= SEQUENCE {\n * nameAssigner [0] DirectoryString {ub-name} OPTIONAL,\n * partyName [1] DirectoryString {ub-name}\n * }\n *\n * @param exts the extensions ASN.1 with extension sequences to parse.\n *\n * @return the array.\n */\npki.certificateExtensionsFromAsn1 = function(exts) {\n var rval = [];\n for(var i = 0; i < exts.value.length; ++i) {\n // get extension sequence\n var extseq = exts.value[i];\n for(var ei = 0; ei < extseq.value.length; ++ei) {\n rval.push(pki.certificateExtensionFromAsn1(extseq.value[ei]));\n }\n }\n\n return rval;\n};\n\n/**\n * Parses a single certificate extension from ASN.1.\n *\n * @param ext the extension in ASN.1 format.\n *\n * @return the parsed extension as an object.\n */\npki.certificateExtensionFromAsn1 = function(ext) {\n // an extension has:\n // [0] extnID OBJECT IDENTIFIER\n // [1] critical BOOLEAN DEFAULT FALSE\n // [2] extnValue OCTET STRING\n var e = {};\n e.id = asn1.derToOid(ext.value[0].value);\n e.critical = false;\n if(ext.value[1].type === asn1.Type.BOOLEAN) {\n e.critical = (ext.value[1].value.charCodeAt(0) !== 0x00);\n e.value = ext.value[2].value;\n } else {\n e.value = ext.value[1].value;\n }\n // if the oid is known, get its name\n if(e.id in oids) {\n e.name = oids[e.id];\n\n // handle key usage\n if(e.name === 'keyUsage') {\n // get value as BIT STRING\n var ev = asn1.fromDer(e.value);\n var b2 = 0x00;\n var b3 = 0x00;\n if(ev.value.length > 1) {\n // skip first byte, just indicates unused bits which\n // will be padded with 0s anyway\n // get bytes with flag bits\n b2 = ev.value.charCodeAt(1);\n b3 = ev.value.length > 2 ? ev.value.charCodeAt(2) : 0;\n }\n // set flags\n e.digitalSignature = (b2 & 0x80) === 0x80;\n e.nonRepudiation = (b2 & 0x40) === 0x40;\n e.keyEncipherment = (b2 & 0x20) === 0x20;\n e.dataEncipherment = (b2 & 0x10) === 0x10;\n e.keyAgreement = (b2 & 0x08) === 0x08;\n e.keyCertSign = (b2 & 0x04) === 0x04;\n e.cRLSign = (b2 & 0x02) === 0x02;\n e.encipherOnly = (b2 & 0x01) === 0x01;\n e.decipherOnly = (b3 & 0x80) === 0x80;\n } else if(e.name === 'basicConstraints') {\n // handle basic constraints\n // get value as SEQUENCE\n var ev = asn1.fromDer(e.value);\n // get cA BOOLEAN flag (defaults to false)\n if(ev.value.length > 0 && ev.value[0].type === asn1.Type.BOOLEAN) {\n e.cA = (ev.value[0].value.charCodeAt(0) !== 0x00);\n } else {\n e.cA = false;\n }\n // get path length constraint\n var value = null;\n if(ev.value.length > 0 && ev.value[0].type === asn1.Type.INTEGER) {\n value = ev.value[0].value;\n } else if(ev.value.length > 1) {\n value = ev.value[1].value;\n }\n if(value !== null) {\n e.pathLenConstraint = asn1.derToInteger(value);\n }\n } else if(e.name === 'extKeyUsage') {\n // handle extKeyUsage\n // value is a SEQUENCE of OIDs\n var ev = asn1.fromDer(e.value);\n for(var vi = 0; vi < ev.value.length; ++vi) {\n var oid = asn1.derToOid(ev.value[vi].value);\n if(oid in oids) {\n e[oids[oid]] = true;\n } else {\n e[oid] = true;\n }\n }\n } else if(e.name === 'nsCertType') {\n // handle nsCertType\n // get value as BIT STRING\n var ev = asn1.fromDer(e.value);\n var b2 = 0x00;\n if(ev.value.length > 1) {\n // skip first byte, just indicates unused bits which\n // will be padded with 0s anyway\n // get bytes with flag bits\n b2 = ev.value.charCodeAt(1);\n }\n // set flags\n e.client = (b2 & 0x80) === 0x80;\n e.server = (b2 & 0x40) === 0x40;\n e.email = (b2 & 0x20) === 0x20;\n e.objsign = (b2 & 0x10) === 0x10;\n e.reserved = (b2 & 0x08) === 0x08;\n e.sslCA = (b2 & 0x04) === 0x04;\n e.emailCA = (b2 & 0x02) === 0x02;\n e.objCA = (b2 & 0x01) === 0x01;\n } else if(\n e.name === 'subjectAltName' ||\n e.name === 'issuerAltName') {\n // handle subjectAltName/issuerAltName\n e.altNames = [];\n\n // ev is a SYNTAX SEQUENCE\n var gn;\n var ev = asn1.fromDer(e.value);\n for(var n = 0; n < ev.value.length; ++n) {\n // get GeneralName\n gn = ev.value[n];\n\n var altName = {\n type: gn.type,\n value: gn.value\n };\n e.altNames.push(altName);\n\n // Note: Support for types 1,2,6,7,8\n switch(gn.type) {\n // rfc822Name\n case 1:\n // dNSName\n case 2:\n // uniformResourceIdentifier (URI)\n case 6:\n break;\n // IPAddress\n case 7:\n // convert to IPv4/IPv6 string representation\n altName.ip = forge.util.bytesToIP(gn.value);\n break;\n // registeredID\n case 8:\n altName.oid = asn1.derToOid(gn.value);\n break;\n default:\n // unsupported\n }\n }\n } else if(e.name === 'subjectKeyIdentifier') {\n // value is an OCTETSTRING w/the hash of the key-type specific\n // public key structure (eg: RSAPublicKey)\n var ev = asn1.fromDer(e.value);\n e.subjectKeyIdentifier = forge.util.bytesToHex(ev.value);\n }\n }\n return e;\n};\n\n/**\n * Converts a PKCS#10 certification request (CSR) from an ASN.1 object.\n *\n * Note: If the certification request is to be verified then compute hash\n * should be set to true. There is currently no implementation for converting\n * a certificate back to ASN.1 so the CertificationRequestInfo part of the\n * ASN.1 object needs to be scanned before the csr object is created.\n *\n * @param obj the asn1 representation of a PKCS#10 certification request (CSR).\n * @param computeHash true to compute the hash for verification.\n *\n * @return the certification request (CSR).\n */\npki.certificationRequestFromAsn1 = function(obj, computeHash) {\n // validate certification request and capture data\n var capture = {};\n var errors = [];\n if(!asn1.validate(obj, certificationRequestValidator, capture, errors)) {\n var error = new Error('Cannot read PKCS#10 certificate request. ' +\n 'ASN.1 object is not a PKCS#10 CertificationRequest.');\n error.errors = errors;\n throw error;\n }\n\n // get oid\n var oid = asn1.derToOid(capture.publicKeyOid);\n if(oid !== pki.oids.rsaEncryption) {\n throw new Error('Cannot read public key. OID is not RSA.');\n }\n\n // create certification request\n var csr = pki.createCertificationRequest();\n csr.version = capture.csrVersion ? capture.csrVersion.charCodeAt(0) : 0;\n csr.signatureOid = forge.asn1.derToOid(capture.csrSignatureOid);\n csr.signatureParameters = _readSignatureParameters(\n csr.signatureOid, capture.csrSignatureParams, true);\n csr.siginfo.algorithmOid = forge.asn1.derToOid(capture.csrSignatureOid);\n csr.siginfo.parameters = _readSignatureParameters(\n csr.siginfo.algorithmOid, capture.csrSignatureParams, false);\n csr.signature = capture.csrSignature;\n\n // keep CertificationRequestInfo to preserve signature when exporting\n csr.certificationRequestInfo = capture.certificationRequestInfo;\n\n if(computeHash) {\n // check signature OID for supported signature types\n csr.md = null;\n if(csr.signatureOid in oids) {\n var oid = oids[csr.signatureOid];\n switch(oid) {\n case 'sha1WithRSAEncryption':\n csr.md = forge.md.sha1.create();\n break;\n case 'md5WithRSAEncryption':\n csr.md = forge.md.md5.create();\n break;\n case 'sha256WithRSAEncryption':\n csr.md = forge.md.sha256.create();\n break;\n case 'sha384WithRSAEncryption':\n csr.md = forge.md.sha384.create();\n break;\n case 'sha512WithRSAEncryption':\n csr.md = forge.md.sha512.create();\n break;\n case 'RSASSA-PSS':\n csr.md = forge.md.sha256.create();\n break;\n }\n }\n if(csr.md === null) {\n var error = new Error('Could not compute certification request digest. ' +\n 'Unknown signature OID.');\n error.signatureOid = csr.signatureOid;\n throw error;\n }\n\n // produce DER formatted CertificationRequestInfo and digest it\n var bytes = asn1.toDer(csr.certificationRequestInfo);\n csr.md.update(bytes.getBytes());\n }\n\n // handle subject, build subject message digest\n var smd = forge.md.sha1.create();\n csr.subject.getField = function(sn) {\n return _getAttribute(csr.subject, sn);\n };\n csr.subject.addField = function(attr) {\n _fillMissingFields([attr]);\n csr.subject.attributes.push(attr);\n };\n csr.subject.attributes = pki.RDNAttributesAsArray(\n capture.certificationRequestInfoSubject, smd);\n csr.subject.hash = smd.digest().toHex();\n\n // convert RSA public key from ASN.1\n csr.publicKey = pki.publicKeyFromAsn1(capture.subjectPublicKeyInfo);\n\n // convert attributes from ASN.1\n csr.getAttribute = function(sn) {\n return _getAttribute(csr, sn);\n };\n csr.addAttribute = function(attr) {\n _fillMissingFields([attr]);\n csr.attributes.push(attr);\n };\n csr.attributes = pki.CRIAttributesAsArray(\n capture.certificationRequestInfoAttributes || []);\n\n return csr;\n};\n\n/**\n * Creates an empty certification request (a CSR or certificate signing\n * request). Once created, its public key and attributes can be set and then\n * it can be signed.\n *\n * @return the empty certification request.\n */\npki.createCertificationRequest = function() {\n var csr = {};\n csr.version = 0x00;\n csr.signatureOid = null;\n csr.signature = null;\n csr.siginfo = {};\n csr.siginfo.algorithmOid = null;\n\n csr.subject = {};\n csr.subject.getField = function(sn) {\n return _getAttribute(csr.subject, sn);\n };\n csr.subject.addField = function(attr) {\n _fillMissingFields([attr]);\n csr.subject.attributes.push(attr);\n };\n csr.subject.attributes = [];\n csr.subject.hash = null;\n\n csr.publicKey = null;\n csr.attributes = [];\n csr.getAttribute = function(sn) {\n return _getAttribute(csr, sn);\n };\n csr.addAttribute = function(attr) {\n _fillMissingFields([attr]);\n csr.attributes.push(attr);\n };\n csr.md = null;\n\n /**\n * Sets the subject of this certification request.\n *\n * @param attrs the array of subject attributes to use.\n */\n csr.setSubject = function(attrs) {\n // set new attributes\n _fillMissingFields(attrs);\n csr.subject.attributes = attrs;\n csr.subject.hash = null;\n };\n\n /**\n * Sets the attributes of this certification request.\n *\n * @param attrs the array of attributes to use.\n */\n csr.setAttributes = function(attrs) {\n // set new attributes\n _fillMissingFields(attrs);\n csr.attributes = attrs;\n };\n\n /**\n * Signs this certification request using the given private key.\n *\n * @param key the private key to sign with.\n * @param md the message digest object to use (defaults to forge.md.sha1).\n */\n csr.sign = function(key, md) {\n // TODO: get signature OID from private key\n csr.md = md || forge.md.sha1.create();\n var algorithmOid = oids[csr.md.algorithm + 'WithRSAEncryption'];\n if(!algorithmOid) {\n var error = new Error('Could not compute certification request digest. ' +\n 'Unknown message digest algorithm OID.');\n error.algorithm = csr.md.algorithm;\n throw error;\n }\n csr.signatureOid = csr.siginfo.algorithmOid = algorithmOid;\n\n // get CertificationRequestInfo, convert to DER\n csr.certificationRequestInfo = pki.getCertificationRequestInfo(csr);\n var bytes = asn1.toDer(csr.certificationRequestInfo);\n\n // digest and sign\n csr.md.update(bytes.getBytes());\n csr.signature = key.sign(csr.md);\n };\n\n /**\n * Attempts verify the signature on the passed certification request using\n * its public key.\n *\n * A CSR that has been exported to a file in PEM format can be verified using\n * OpenSSL using this command:\n *\n * openssl req -in -verify -noout -text\n *\n * @return true if verified, false if not.\n */\n csr.verify = function() {\n var rval = false;\n\n var md = csr.md;\n if(md === null) {\n // check signature OID for supported signature types\n if(csr.signatureOid in oids) {\n // TODO: create DRY `OID to md` function\n var oid = oids[csr.signatureOid];\n switch(oid) {\n case 'sha1WithRSAEncryption':\n md = forge.md.sha1.create();\n break;\n case 'md5WithRSAEncryption':\n md = forge.md.md5.create();\n break;\n case 'sha256WithRSAEncryption':\n md = forge.md.sha256.create();\n break;\n case 'sha384WithRSAEncryption':\n md = forge.md.sha384.create();\n break;\n case 'sha512WithRSAEncryption':\n md = forge.md.sha512.create();\n break;\n case 'RSASSA-PSS':\n md = forge.md.sha256.create();\n break;\n }\n }\n if(md === null) {\n var error = new Error(\n 'Could not compute certification request digest. ' +\n 'Unknown signature OID.');\n error.signatureOid = csr.signatureOid;\n throw error;\n }\n\n // produce DER formatted CertificationRequestInfo and digest it\n var cri = csr.certificationRequestInfo ||\n pki.getCertificationRequestInfo(csr);\n var bytes = asn1.toDer(cri);\n md.update(bytes.getBytes());\n }\n\n if(md !== null) {\n var scheme;\n\n switch(csr.signatureOid) {\n case oids.sha1WithRSAEncryption:\n /* use PKCS#1 v1.5 padding scheme */\n break;\n case oids['RSASSA-PSS']:\n var hash, mgf;\n\n /* initialize mgf */\n hash = oids[csr.signatureParameters.mgf.hash.algorithmOid];\n if(hash === undefined || forge.md[hash] === undefined) {\n var error = new Error('Unsupported MGF hash function.');\n error.oid = csr.signatureParameters.mgf.hash.algorithmOid;\n error.name = hash;\n throw error;\n }\n\n mgf = oids[csr.signatureParameters.mgf.algorithmOid];\n if(mgf === undefined || forge.mgf[mgf] === undefined) {\n var error = new Error('Unsupported MGF function.');\n error.oid = csr.signatureParameters.mgf.algorithmOid;\n error.name = mgf;\n throw error;\n }\n\n mgf = forge.mgf[mgf].create(forge.md[hash].create());\n\n /* initialize hash function */\n hash = oids[csr.signatureParameters.hash.algorithmOid];\n if(hash === undefined || forge.md[hash] === undefined) {\n var error = new Error('Unsupported RSASSA-PSS hash function.');\n error.oid = csr.signatureParameters.hash.algorithmOid;\n error.name = hash;\n throw error;\n }\n\n scheme = forge.pss.create(forge.md[hash].create(), mgf,\n csr.signatureParameters.saltLength);\n break;\n }\n\n // verify signature on csr using its public key\n rval = csr.publicKey.verify(\n md.digest().getBytes(), csr.signature, scheme);\n }\n\n return rval;\n };\n\n return csr;\n};\n\n/**\n * Converts an X.509 subject or issuer to an ASN.1 RDNSequence.\n *\n * @param obj the subject or issuer (distinguished name).\n *\n * @return the ASN.1 RDNSequence.\n */\nfunction _dnToAsn1(obj) {\n // create an empty RDNSequence\n var rval = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []);\n\n // iterate over attributes\n var attr, set;\n var attrs = obj.attributes;\n for(var i = 0; i < attrs.length; ++i) {\n attr = attrs[i];\n var value = attr.value;\n\n // reuse tag class for attribute value if available\n var valueTagClass = asn1.Type.PRINTABLESTRING;\n if('valueTagClass' in attr) {\n valueTagClass = attr.valueTagClass;\n\n if(valueTagClass === asn1.Type.UTF8) {\n value = forge.util.encodeUtf8(value);\n }\n // FIXME: handle more encodings\n }\n\n // create a RelativeDistinguishedName set\n // each value in the set is an AttributeTypeAndValue first\n // containing the type (an OID) and second the value\n set = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SET, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // AttributeType\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(attr.type).getBytes()),\n // AttributeValue\n asn1.create(asn1.Class.UNIVERSAL, valueTagClass, false, value)\n ])\n ]);\n rval.value.push(set);\n }\n\n return rval;\n}\n\n/**\n * Gets all printable attributes (typically of an issuer or subject) in a\n * simplified JSON format for display.\n *\n * @param attrs the attributes.\n *\n * @return the JSON for display.\n */\nfunction _getAttributesAsJson(attrs) {\n var rval = {};\n for(var i = 0; i < attrs.length; ++i) {\n var attr = attrs[i];\n if(attr.shortName && (\n attr.valueTagClass === asn1.Type.UTF8 ||\n attr.valueTagClass === asn1.Type.PRINTABLESTRING ||\n attr.valueTagClass === asn1.Type.IA5STRING)) {\n var value = attr.value;\n if(attr.valueTagClass === asn1.Type.UTF8) {\n value = forge.util.encodeUtf8(attr.value);\n }\n if(!(attr.shortName in rval)) {\n rval[attr.shortName] = value;\n } else if(forge.util.isArray(rval[attr.shortName])) {\n rval[attr.shortName].push(value);\n } else {\n rval[attr.shortName] = [rval[attr.shortName], value];\n }\n }\n }\n return rval;\n}\n\n/**\n * Fills in missing fields in attributes.\n *\n * @param attrs the attributes to fill missing fields in.\n */\nfunction _fillMissingFields(attrs) {\n var attr;\n for(var i = 0; i < attrs.length; ++i) {\n attr = attrs[i];\n\n // populate missing name\n if(typeof attr.name === 'undefined') {\n if(attr.type && attr.type in pki.oids) {\n attr.name = pki.oids[attr.type];\n } else if(attr.shortName && attr.shortName in _shortNames) {\n attr.name = pki.oids[_shortNames[attr.shortName]];\n }\n }\n\n // populate missing type (OID)\n if(typeof attr.type === 'undefined') {\n if(attr.name && attr.name in pki.oids) {\n attr.type = pki.oids[attr.name];\n } else {\n var error = new Error('Attribute type not specified.');\n error.attribute = attr;\n throw error;\n }\n }\n\n // populate missing shortname\n if(typeof attr.shortName === 'undefined') {\n if(attr.name && attr.name in _shortNames) {\n attr.shortName = _shortNames[attr.name];\n }\n }\n\n // convert extensions to value\n if(attr.type === oids.extensionRequest) {\n attr.valueConstructed = true;\n attr.valueTagClass = asn1.Type.SEQUENCE;\n if(!attr.value && attr.extensions) {\n attr.value = [];\n for(var ei = 0; ei < attr.extensions.length; ++ei) {\n attr.value.push(pki.certificateExtensionToAsn1(\n _fillMissingExtensionFields(attr.extensions[ei])));\n }\n }\n }\n\n if(typeof attr.value === 'undefined') {\n var error = new Error('Attribute value not specified.');\n error.attribute = attr;\n throw error;\n }\n }\n}\n\n/**\n * Fills in missing fields in certificate extensions.\n *\n * @param e the extension.\n * @param [options] the options to use.\n * [cert] the certificate the extensions are for.\n *\n * @return the extension.\n */\nfunction _fillMissingExtensionFields(e, options) {\n options = options || {};\n\n // populate missing name\n if(typeof e.name === 'undefined') {\n if(e.id && e.id in pki.oids) {\n e.name = pki.oids[e.id];\n }\n }\n\n // populate missing id\n if(typeof e.id === 'undefined') {\n if(e.name && e.name in pki.oids) {\n e.id = pki.oids[e.name];\n } else {\n var error = new Error('Extension ID not specified.');\n error.extension = e;\n throw error;\n }\n }\n\n if(typeof e.value !== 'undefined') {\n return e;\n }\n\n // handle missing value:\n\n // value is a BIT STRING\n if(e.name === 'keyUsage') {\n // build flags\n var unused = 0;\n var b2 = 0x00;\n var b3 = 0x00;\n if(e.digitalSignature) {\n b2 |= 0x80;\n unused = 7;\n }\n if(e.nonRepudiation) {\n b2 |= 0x40;\n unused = 6;\n }\n if(e.keyEncipherment) {\n b2 |= 0x20;\n unused = 5;\n }\n if(e.dataEncipherment) {\n b2 |= 0x10;\n unused = 4;\n }\n if(e.keyAgreement) {\n b2 |= 0x08;\n unused = 3;\n }\n if(e.keyCertSign) {\n b2 |= 0x04;\n unused = 2;\n }\n if(e.cRLSign) {\n b2 |= 0x02;\n unused = 1;\n }\n if(e.encipherOnly) {\n b2 |= 0x01;\n unused = 0;\n }\n if(e.decipherOnly) {\n b3 |= 0x80;\n unused = 7;\n }\n\n // create bit string\n var value = String.fromCharCode(unused);\n if(b3 !== 0) {\n value += String.fromCharCode(b2) + String.fromCharCode(b3);\n } else if(b2 !== 0) {\n value += String.fromCharCode(b2);\n }\n e.value = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.BITSTRING, false, value);\n } else if(e.name === 'basicConstraints') {\n // basicConstraints is a SEQUENCE\n e.value = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []);\n // cA BOOLEAN flag defaults to false\n if(e.cA) {\n e.value.value.push(asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.BOOLEAN, false,\n String.fromCharCode(0xFF)));\n }\n if('pathLenConstraint' in e) {\n e.value.value.push(asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n asn1.integerToDer(e.pathLenConstraint).getBytes()));\n }\n } else if(e.name === 'extKeyUsage') {\n // extKeyUsage is a SEQUENCE of OIDs\n e.value = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []);\n var seq = e.value.value;\n for(var key in e) {\n if(e[key] !== true) {\n continue;\n }\n // key is name in OID map\n if(key in oids) {\n seq.push(asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID,\n false, asn1.oidToDer(oids[key]).getBytes()));\n } else if(key.indexOf('.') !== -1) {\n // assume key is an OID\n seq.push(asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID,\n false, asn1.oidToDer(key).getBytes()));\n }\n }\n } else if(e.name === 'nsCertType') {\n // nsCertType is a BIT STRING\n // build flags\n var unused = 0;\n var b2 = 0x00;\n\n if(e.client) {\n b2 |= 0x80;\n unused = 7;\n }\n if(e.server) {\n b2 |= 0x40;\n unused = 6;\n }\n if(e.email) {\n b2 |= 0x20;\n unused = 5;\n }\n if(e.objsign) {\n b2 |= 0x10;\n unused = 4;\n }\n if(e.reserved) {\n b2 |= 0x08;\n unused = 3;\n }\n if(e.sslCA) {\n b2 |= 0x04;\n unused = 2;\n }\n if(e.emailCA) {\n b2 |= 0x02;\n unused = 1;\n }\n if(e.objCA) {\n b2 |= 0x01;\n unused = 0;\n }\n\n // create bit string\n var value = String.fromCharCode(unused);\n if(b2 !== 0) {\n value += String.fromCharCode(b2);\n }\n e.value = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.BITSTRING, false, value);\n } else if(e.name === 'subjectAltName' || e.name === 'issuerAltName') {\n // SYNTAX SEQUENCE\n e.value = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []);\n\n var altName;\n for(var n = 0; n < e.altNames.length; ++n) {\n altName = e.altNames[n];\n var value = altName.value;\n // handle IP\n if(altName.type === 7 && altName.ip) {\n value = forge.util.bytesFromIP(altName.ip);\n if(value === null) {\n var error = new Error(\n 'Extension \"ip\" value is not a valid IPv4 or IPv6 address.');\n error.extension = e;\n throw error;\n }\n } else if(altName.type === 8) {\n // handle OID\n if(altName.oid) {\n value = asn1.oidToDer(asn1.oidToDer(altName.oid));\n } else {\n // deprecated ... convert value to OID\n value = asn1.oidToDer(value);\n }\n }\n e.value.value.push(asn1.create(\n asn1.Class.CONTEXT_SPECIFIC, altName.type, false,\n value));\n }\n } else if(e.name === 'nsComment' && options.cert) {\n // sanity check value is ASCII (req'd) and not too big\n if(!(/^[\\x00-\\x7F]*$/.test(e.comment)) ||\n (e.comment.length < 1) || (e.comment.length > 128)) {\n throw new Error('Invalid \"nsComment\" content.');\n }\n // IA5STRING opaque comment\n e.value = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.IA5STRING, false, e.comment);\n } else if(e.name === 'subjectKeyIdentifier' && options.cert) {\n var ski = options.cert.generateSubjectKeyIdentifier();\n e.subjectKeyIdentifier = ski.toHex();\n // OCTETSTRING w/digest\n e.value = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, ski.getBytes());\n } else if(e.name === 'authorityKeyIdentifier' && options.cert) {\n // SYNTAX SEQUENCE\n e.value = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []);\n var seq = e.value.value;\n\n if(e.keyIdentifier) {\n var keyIdentifier = (e.keyIdentifier === true ?\n options.cert.generateSubjectKeyIdentifier().getBytes() :\n e.keyIdentifier);\n seq.push(\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, false, keyIdentifier));\n }\n\n if(e.authorityCertIssuer) {\n var authorityCertIssuer = [\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 4, true, [\n _dnToAsn1(e.authorityCertIssuer === true ?\n options.cert.issuer : e.authorityCertIssuer)\n ])\n ];\n seq.push(\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 1, true, authorityCertIssuer));\n }\n\n if(e.serialNumber) {\n var serialNumber = forge.util.hexToBytes(e.serialNumber === true ?\n options.cert.serialNumber : e.serialNumber);\n seq.push(\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 2, false, serialNumber));\n }\n } else if(e.name === 'cRLDistributionPoints') {\n e.value = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []);\n var seq = e.value.value;\n\n // Create sub SEQUENCE of DistributionPointName\n var subSeq = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []);\n\n // Create fullName CHOICE\n var fullNameGeneralNames = asn1.create(\n asn1.Class.CONTEXT_SPECIFIC, 0, true, []);\n var altName;\n for(var n = 0; n < e.altNames.length; ++n) {\n altName = e.altNames[n];\n var value = altName.value;\n // handle IP\n if(altName.type === 7 && altName.ip) {\n value = forge.util.bytesFromIP(altName.ip);\n if(value === null) {\n var error = new Error(\n 'Extension \"ip\" value is not a valid IPv4 or IPv6 address.');\n error.extension = e;\n throw error;\n }\n } else if(altName.type === 8) {\n // handle OID\n if(altName.oid) {\n value = asn1.oidToDer(asn1.oidToDer(altName.oid));\n } else {\n // deprecated ... convert value to OID\n value = asn1.oidToDer(value);\n }\n }\n fullNameGeneralNames.value.push(asn1.create(\n asn1.Class.CONTEXT_SPECIFIC, altName.type, false,\n value));\n }\n\n // Add to the parent SEQUENCE\n subSeq.value.push(asn1.create(\n asn1.Class.CONTEXT_SPECIFIC, 0, true, [fullNameGeneralNames]));\n seq.push(subSeq);\n }\n\n // ensure value has been defined by now\n if(typeof e.value === 'undefined') {\n var error = new Error('Extension value not specified.');\n error.extension = e;\n throw error;\n }\n\n return e;\n}\n\n/**\n * Convert signature parameters object to ASN.1\n *\n * @param {String} oid Signature algorithm OID\n * @param params The signature parametrs object\n * @return ASN.1 object representing signature parameters\n */\nfunction _signatureParametersToAsn1(oid, params) {\n switch(oid) {\n case oids['RSASSA-PSS']:\n var parts = [];\n\n if(params.hash.algorithmOid !== undefined) {\n parts.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(params.hash.algorithmOid).getBytes()),\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, '')\n ])\n ]));\n }\n\n if(params.mgf.algorithmOid !== undefined) {\n parts.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC, 1, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(params.mgf.algorithmOid).getBytes()),\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(params.mgf.hash.algorithmOid).getBytes()),\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, '')\n ])\n ])\n ]));\n }\n\n if(params.saltLength !== undefined) {\n parts.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC, 2, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n asn1.integerToDer(params.saltLength).getBytes())\n ]));\n }\n\n return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, parts);\n\n default:\n return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, '');\n }\n}\n\n/**\n * Converts a certification request's attributes to an ASN.1 set of\n * CRIAttributes.\n *\n * @param csr certification request.\n *\n * @return the ASN.1 set of CRIAttributes.\n */\nfunction _CRIAttributesToAsn1(csr) {\n // create an empty context-specific container\n var rval = asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, []);\n\n // no attributes, return empty container\n if(csr.attributes.length === 0) {\n return rval;\n }\n\n // each attribute has a sequence with a type and a set of values\n var attrs = csr.attributes;\n for(var i = 0; i < attrs.length; ++i) {\n var attr = attrs[i];\n var value = attr.value;\n\n // reuse tag class for attribute value if available\n var valueTagClass = asn1.Type.UTF8;\n if('valueTagClass' in attr) {\n valueTagClass = attr.valueTagClass;\n }\n if(valueTagClass === asn1.Type.UTF8) {\n value = forge.util.encodeUtf8(value);\n }\n var valueConstructed = false;\n if('valueConstructed' in attr) {\n valueConstructed = attr.valueConstructed;\n }\n // FIXME: handle more encodings\n\n // create a RelativeDistinguishedName set\n // each value in the set is an AttributeTypeAndValue first\n // containing the type (an OID) and second the value\n var seq = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // AttributeType\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(attr.type).getBytes()),\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SET, true, [\n // AttributeValue\n asn1.create(\n asn1.Class.UNIVERSAL, valueTagClass, valueConstructed, value)\n ])\n ]);\n rval.value.push(seq);\n }\n\n return rval;\n}\n\nvar jan_1_1950 = new Date('1950-01-01T00:00:00Z');\nvar jan_1_2050 = new Date('2050-01-01T00:00:00Z');\n\n/**\n * Converts a Date object to ASN.1\n * Handles the different format before and after 1st January 2050\n *\n * @param date date object.\n *\n * @return the ASN.1 object representing the date.\n */\nfunction _dateToAsn1(date) {\n if(date >= jan_1_1950 && date < jan_1_2050) {\n return asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.UTCTIME, false,\n asn1.dateToUtcTime(date));\n } else {\n return asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.GENERALIZEDTIME, false,\n asn1.dateToGeneralizedTime(date));\n }\n}\n\n/**\n * Gets the ASN.1 TBSCertificate part of an X.509v3 certificate.\n *\n * @param cert the certificate.\n *\n * @return the asn1 TBSCertificate.\n */\npki.getTBSCertificate = function(cert) {\n // TBSCertificate\n var notBefore = _dateToAsn1(cert.validity.notBefore);\n var notAfter = _dateToAsn1(cert.validity.notAfter);\n var tbs = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // version\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [\n // integer\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n asn1.integerToDer(cert.version).getBytes())\n ]),\n // serialNumber\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n forge.util.hexToBytes(cert.serialNumber)),\n // signature\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // algorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(cert.siginfo.algorithmOid).getBytes()),\n // parameters\n _signatureParametersToAsn1(\n cert.siginfo.algorithmOid, cert.siginfo.parameters)\n ]),\n // issuer\n _dnToAsn1(cert.issuer),\n // validity\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n notBefore,\n notAfter\n ]),\n // subject\n _dnToAsn1(cert.subject),\n // SubjectPublicKeyInfo\n pki.publicKeyToAsn1(cert.publicKey)\n ]);\n\n if(cert.issuer.uniqueId) {\n // issuerUniqueID (optional)\n tbs.value.push(\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 1, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.BITSTRING, false,\n // TODO: support arbitrary bit length ids\n String.fromCharCode(0x00) +\n cert.issuer.uniqueId\n )\n ])\n );\n }\n if(cert.subject.uniqueId) {\n // subjectUniqueID (optional)\n tbs.value.push(\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 2, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.BITSTRING, false,\n // TODO: support arbitrary bit length ids\n String.fromCharCode(0x00) +\n cert.subject.uniqueId\n )\n ])\n );\n }\n\n if(cert.extensions.length > 0) {\n // extensions (optional)\n tbs.value.push(pki.certificateExtensionsToAsn1(cert.extensions));\n }\n\n return tbs;\n};\n\n/**\n * Gets the ASN.1 CertificationRequestInfo part of a\n * PKCS#10 CertificationRequest.\n *\n * @param csr the certification request.\n *\n * @return the asn1 CertificationRequestInfo.\n */\npki.getCertificationRequestInfo = function(csr) {\n // CertificationRequestInfo\n var cri = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // version\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n asn1.integerToDer(csr.version).getBytes()),\n // subject\n _dnToAsn1(csr.subject),\n // SubjectPublicKeyInfo\n pki.publicKeyToAsn1(csr.publicKey),\n // attributes\n _CRIAttributesToAsn1(csr)\n ]);\n\n return cri;\n};\n\n/**\n * Converts a DistinguishedName (subject or issuer) to an ASN.1 object.\n *\n * @param dn the DistinguishedName.\n *\n * @return the asn1 representation of a DistinguishedName.\n */\npki.distinguishedNameToAsn1 = function(dn) {\n return _dnToAsn1(dn);\n};\n\n/**\n * Converts an X.509v3 RSA certificate to an ASN.1 object.\n *\n * @param cert the certificate.\n *\n * @return the asn1 representation of an X.509v3 RSA certificate.\n */\npki.certificateToAsn1 = function(cert) {\n // prefer cached TBSCertificate over generating one\n var tbsCertificate = cert.tbsCertificate || pki.getTBSCertificate(cert);\n\n // Certificate\n return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // TBSCertificate\n tbsCertificate,\n // AlgorithmIdentifier (signature algorithm)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // algorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(cert.signatureOid).getBytes()),\n // parameters\n _signatureParametersToAsn1(cert.signatureOid, cert.signatureParameters)\n ]),\n // SignatureValue\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.BITSTRING, false,\n String.fromCharCode(0x00) + cert.signature)\n ]);\n};\n\n/**\n * Converts X.509v3 certificate extensions to ASN.1.\n *\n * @param exts the extensions to convert.\n *\n * @return the extensions in ASN.1 format.\n */\npki.certificateExtensionsToAsn1 = function(exts) {\n // create top-level extension container\n var rval = asn1.create(asn1.Class.CONTEXT_SPECIFIC, 3, true, []);\n\n // create extension sequence (stores a sequence for each extension)\n var seq = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []);\n rval.value.push(seq);\n\n for(var i = 0; i < exts.length; ++i) {\n seq.value.push(pki.certificateExtensionToAsn1(exts[i]));\n }\n\n return rval;\n};\n\n/**\n * Converts a single certificate extension to ASN.1.\n *\n * @param ext the extension to convert.\n *\n * @return the extension in ASN.1 format.\n */\npki.certificateExtensionToAsn1 = function(ext) {\n // create a sequence for each extension\n var extseq = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []);\n\n // extnID (OID)\n extseq.value.push(asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(ext.id).getBytes()));\n\n // critical defaults to false\n if(ext.critical) {\n // critical BOOLEAN DEFAULT FALSE\n extseq.value.push(asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.BOOLEAN, false,\n String.fromCharCode(0xFF)));\n }\n\n var value = ext.value;\n if(typeof ext.value !== 'string') {\n // value is asn.1\n value = asn1.toDer(value).getBytes();\n }\n\n // extnValue (OCTET STRING)\n extseq.value.push(asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, value));\n\n return extseq;\n};\n\n/**\n * Converts a PKCS#10 certification request to an ASN.1 object.\n *\n * @param csr the certification request.\n *\n * @return the asn1 representation of a certification request.\n */\npki.certificationRequestToAsn1 = function(csr) {\n // prefer cached CertificationRequestInfo over generating one\n var cri = csr.certificationRequestInfo ||\n pki.getCertificationRequestInfo(csr);\n\n // Certificate\n return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // CertificationRequestInfo\n cri,\n // AlgorithmIdentifier (signature algorithm)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // algorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(csr.signatureOid).getBytes()),\n // parameters\n _signatureParametersToAsn1(csr.signatureOid, csr.signatureParameters)\n ]),\n // signature\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.BITSTRING, false,\n String.fromCharCode(0x00) + csr.signature)\n ]);\n};\n\n/**\n * Creates a CA store.\n *\n * @param certs an optional array of certificate objects or PEM-formatted\n * certificate strings to add to the CA store.\n *\n * @return the CA store.\n */\npki.createCaStore = function(certs) {\n // create CA store\n var caStore = {\n // stored certificates\n certs: {}\n };\n\n /**\n * Gets the certificate that issued the passed certificate or its\n * 'parent'.\n *\n * @param cert the certificate to get the parent for.\n *\n * @return the parent certificate or null if none was found.\n */\n caStore.getIssuer = function(cert) {\n var rval = getBySubject(cert.issuer);\n\n // see if there are multiple matches\n /*if(forge.util.isArray(rval)) {\n // TODO: resolve multiple matches by checking\n // authorityKey/subjectKey/issuerUniqueID/other identifiers, etc.\n // FIXME: or alternatively do authority key mapping\n // if possible (X.509v1 certs can't work?)\n throw new Error('Resolving multiple issuer matches not implemented yet.');\n }*/\n\n return rval;\n };\n\n /**\n * Adds a trusted certificate to the store.\n *\n * @param cert the certificate to add as a trusted certificate (either a\n * pki.certificate object or a PEM-formatted certificate).\n */\n caStore.addCertificate = function(cert) {\n // convert from pem if necessary\n if(typeof cert === 'string') {\n cert = forge.pki.certificateFromPem(cert);\n }\n\n ensureSubjectHasHash(cert.subject);\n\n if(!caStore.hasCertificate(cert)) { // avoid duplicate certificates in store\n if(cert.subject.hash in caStore.certs) {\n // subject hash already exists, append to array\n var tmp = caStore.certs[cert.subject.hash];\n if(!forge.util.isArray(tmp)) {\n tmp = [tmp];\n }\n tmp.push(cert);\n caStore.certs[cert.subject.hash] = tmp;\n } else {\n caStore.certs[cert.subject.hash] = cert;\n }\n }\n };\n\n /**\n * Checks to see if the given certificate is in the store.\n *\n * @param cert the certificate to check (either a pki.certificate or a\n * PEM-formatted certificate).\n *\n * @return true if the certificate is in the store, false if not.\n */\n caStore.hasCertificate = function(cert) {\n // convert from pem if necessary\n if(typeof cert === 'string') {\n cert = forge.pki.certificateFromPem(cert);\n }\n\n var match = getBySubject(cert.subject);\n if(!match) {\n return false;\n }\n if(!forge.util.isArray(match)) {\n match = [match];\n }\n // compare DER-encoding of certificates\n var der1 = asn1.toDer(pki.certificateToAsn1(cert)).getBytes();\n for(var i = 0; i < match.length; ++i) {\n var der2 = asn1.toDer(pki.certificateToAsn1(match[i])).getBytes();\n if(der1 === der2) {\n return true;\n }\n }\n return false;\n };\n\n /**\n * Lists all of the certificates kept in the store.\n *\n * @return an array of all of the pki.certificate objects in the store.\n */\n caStore.listAllCertificates = function() {\n var certList = [];\n\n for(var hash in caStore.certs) {\n if(caStore.certs.hasOwnProperty(hash)) {\n var value = caStore.certs[hash];\n if(!forge.util.isArray(value)) {\n certList.push(value);\n } else {\n for(var i = 0; i < value.length; ++i) {\n certList.push(value[i]);\n }\n }\n }\n }\n\n return certList;\n };\n\n /**\n * Removes a certificate from the store.\n *\n * @param cert the certificate to remove (either a pki.certificate or a\n * PEM-formatted certificate).\n *\n * @return the certificate that was removed or null if the certificate\n * wasn't in store.\n */\n caStore.removeCertificate = function(cert) {\n var result;\n\n // convert from pem if necessary\n if(typeof cert === 'string') {\n cert = forge.pki.certificateFromPem(cert);\n }\n ensureSubjectHasHash(cert.subject);\n if(!caStore.hasCertificate(cert)) {\n return null;\n }\n\n var match = getBySubject(cert.subject);\n\n if(!forge.util.isArray(match)) {\n result = caStore.certs[cert.subject.hash];\n delete caStore.certs[cert.subject.hash];\n return result;\n }\n\n // compare DER-encoding of certificates\n var der1 = asn1.toDer(pki.certificateToAsn1(cert)).getBytes();\n for(var i = 0; i < match.length; ++i) {\n var der2 = asn1.toDer(pki.certificateToAsn1(match[i])).getBytes();\n if(der1 === der2) {\n result = match[i];\n match.splice(i, 1);\n }\n }\n if(match.length === 0) {\n delete caStore.certs[cert.subject.hash];\n }\n\n return result;\n };\n\n function getBySubject(subject) {\n ensureSubjectHasHash(subject);\n return caStore.certs[subject.hash] || null;\n }\n\n function ensureSubjectHasHash(subject) {\n // produce subject hash if it doesn't exist\n if(!subject.hash) {\n var md = forge.md.sha1.create();\n subject.attributes = pki.RDNAttributesAsArray(_dnToAsn1(subject), md);\n subject.hash = md.digest().toHex();\n }\n }\n\n // auto-add passed in certs\n if(certs) {\n // parse PEM-formatted certificates as necessary\n for(var i = 0; i < certs.length; ++i) {\n var cert = certs[i];\n caStore.addCertificate(cert);\n }\n }\n\n return caStore;\n};\n\n/**\n * Certificate verification errors, based on TLS.\n */\npki.certificateError = {\n bad_certificate: 'forge.pki.BadCertificate',\n unsupported_certificate: 'forge.pki.UnsupportedCertificate',\n certificate_revoked: 'forge.pki.CertificateRevoked',\n certificate_expired: 'forge.pki.CertificateExpired',\n certificate_unknown: 'forge.pki.CertificateUnknown',\n unknown_ca: 'forge.pki.UnknownCertificateAuthority'\n};\n\n/**\n * Verifies a certificate chain against the given Certificate Authority store\n * with an optional custom verify callback.\n *\n * @param caStore a certificate store to verify against.\n * @param chain the certificate chain to verify, with the root or highest\n * authority at the end (an array of certificates).\n * @param options a callback to be called for every certificate in the chain or\n * an object with:\n * verify a callback to be called for every certificate in the\n * chain\n * validityCheckDate the date against which the certificate\n * validity period should be checked. Pass null to not check\n * the validity period. By default, the current date is used.\n *\n * The verify callback has the following signature:\n *\n * verified - Set to true if certificate was verified, otherwise the\n * pki.certificateError for why the certificate failed.\n * depth - The current index in the chain, where 0 is the end point's cert.\n * certs - The certificate chain, *NOTE* an empty chain indicates an anonymous\n * end point.\n *\n * The function returns true on success and on failure either the appropriate\n * pki.certificateError or an object with 'error' set to the appropriate\n * pki.certificateError and 'message' set to a custom error message.\n *\n * @return true if successful, error thrown if not.\n */\npki.verifyCertificateChain = function(caStore, chain, options) {\n /* From: RFC3280 - Internet X.509 Public Key Infrastructure Certificate\n Section 6: Certification Path Validation\n See inline parentheticals related to this particular implementation.\n\n The primary goal of path validation is to verify the binding between\n a subject distinguished name or a subject alternative name and subject\n public key, as represented in the end entity certificate, based on the\n public key of the trust anchor. This requires obtaining a sequence of\n certificates that support that binding. That sequence should be provided\n in the passed 'chain'. The trust anchor should be in the given CA\n store. The 'end entity' certificate is the certificate provided by the\n end point (typically a server) and is the first in the chain.\n\n To meet this goal, the path validation process verifies, among other\n things, that a prospective certification path (a sequence of n\n certificates or a 'chain') satisfies the following conditions:\n\n (a) for all x in {1, ..., n-1}, the subject of certificate x is\n the issuer of certificate x+1;\n\n (b) certificate 1 is issued by the trust anchor;\n\n (c) certificate n is the certificate to be validated; and\n\n (d) for all x in {1, ..., n}, the certificate was valid at the\n time in question.\n\n Note that here 'n' is index 0 in the chain and 1 is the last certificate\n in the chain and it must be signed by a certificate in the connection's\n CA store.\n\n The path validation process also determines the set of certificate\n policies that are valid for this path, based on the certificate policies\n extension, policy mapping extension, policy constraints extension, and\n inhibit any-policy extension.\n\n Note: Policy mapping extension not supported (Not Required).\n\n Note: If the certificate has an unsupported critical extension, then it\n must be rejected.\n\n Note: A certificate is self-issued if the DNs that appear in the subject\n and issuer fields are identical and are not empty.\n\n The path validation algorithm assumes the following seven inputs are\n provided to the path processing logic. What this specific implementation\n will use is provided parenthetically:\n\n (a) a prospective certification path of length n (the 'chain')\n (b) the current date/time: ('now').\n (c) user-initial-policy-set: A set of certificate policy identifiers\n naming the policies that are acceptable to the certificate user.\n The user-initial-policy-set contains the special value any-policy\n if the user is not concerned about certificate policy\n (Not implemented. Any policy is accepted).\n (d) trust anchor information, describing a CA that serves as a trust\n anchor for the certification path. The trust anchor information\n includes:\n\n (1) the trusted issuer name,\n (2) the trusted public key algorithm,\n (3) the trusted public key, and\n (4) optionally, the trusted public key parameters associated\n with the public key.\n\n (Trust anchors are provided via certificates in the CA store).\n\n The trust anchor information may be provided to the path processing\n procedure in the form of a self-signed certificate. The trusted anchor\n information is trusted because it was delivered to the path processing\n procedure by some trustworthy out-of-band procedure. If the trusted\n public key algorithm requires parameters, then the parameters are\n provided along with the trusted public key (No parameters used in this\n implementation).\n\n (e) initial-policy-mapping-inhibit, which indicates if policy mapping is\n allowed in the certification path.\n (Not implemented, no policy checking)\n\n (f) initial-explicit-policy, which indicates if the path must be valid\n for at least one of the certificate policies in the user-initial-\n policy-set.\n (Not implemented, no policy checking)\n\n (g) initial-any-policy-inhibit, which indicates whether the\n anyPolicy OID should be processed if it is included in a\n certificate.\n (Not implemented, so any policy is valid provided that it is\n not marked as critical) */\n\n /* Basic Path Processing:\n\n For each certificate in the 'chain', the following is checked:\n\n 1. The certificate validity period includes the current time.\n 2. The certificate was signed by its parent (where the parent is either\n the next in the chain or from the CA store). Allow processing to\n continue to the next step if no parent is found but the certificate is\n in the CA store.\n 3. TODO: The certificate has not been revoked.\n 4. The certificate issuer name matches the parent's subject name.\n 5. TODO: If the certificate is self-issued and not the final certificate\n in the chain, skip this step, otherwise verify that the subject name\n is within one of the permitted subtrees of X.500 distinguished names\n and that each of the alternative names in the subjectAltName extension\n (critical or non-critical) is within one of the permitted subtrees for\n that name type.\n 6. TODO: If the certificate is self-issued and not the final certificate\n in the chain, skip this step, otherwise verify that the subject name\n is not within one of the excluded subtrees for X.500 distinguished\n names and none of the subjectAltName extension names are excluded for\n that name type.\n 7. The other steps in the algorithm for basic path processing involve\n handling the policy extension which is not presently supported in this\n implementation. Instead, if a critical policy extension is found, the\n certificate is rejected as not supported.\n 8. If the certificate is not the first or if its the only certificate in\n the chain (having no parent from the CA store or is self-signed) and it\n has a critical key usage extension, verify that the keyCertSign bit is\n set. If the key usage extension exists, verify that the basic\n constraints extension exists. If the basic constraints extension exists,\n verify that the cA flag is set. If pathLenConstraint is set, ensure that\n the number of certificates that precede in the chain (come earlier\n in the chain as implemented below), excluding the very first in the\n chain (typically the end-entity one), isn't greater than the\n pathLenConstraint. This constraint limits the number of intermediate\n CAs that may appear below a CA before only end-entity certificates\n may be issued. */\n\n // if a verify callback is passed as the third parameter, package it within\n // the options object. This is to support a legacy function signature that\n // expected the verify callback as the third parameter.\n if(typeof options === 'function') {\n options = {verify: options};\n }\n options = options || {};\n\n // copy cert chain references to another array to protect against changes\n // in verify callback\n chain = chain.slice(0);\n var certs = chain.slice(0);\n\n var validityCheckDate = options.validityCheckDate;\n // if no validityCheckDate is specified, default to the current date. Make\n // sure to maintain the value null because it indicates that the validity\n // period should not be checked.\n if(typeof validityCheckDate === 'undefined') {\n validityCheckDate = new Date();\n }\n\n // verify each cert in the chain using its parent, where the parent\n // is either the next in the chain or from the CA store\n var first = true;\n var error = null;\n var depth = 0;\n do {\n var cert = chain.shift();\n var parent = null;\n var selfSigned = false;\n\n if(validityCheckDate) {\n // 1. check valid time\n if(validityCheckDate < cert.validity.notBefore ||\n validityCheckDate > cert.validity.notAfter) {\n error = {\n message: 'Certificate is not valid yet or has expired.',\n error: pki.certificateError.certificate_expired,\n notBefore: cert.validity.notBefore,\n notAfter: cert.validity.notAfter,\n // TODO: we might want to reconsider renaming 'now' to\n // 'validityCheckDate' should this API be changed in the future.\n now: validityCheckDate\n };\n }\n }\n\n // 2. verify with parent from chain or CA store\n if(error === null) {\n parent = chain[0] || caStore.getIssuer(cert);\n if(parent === null) {\n // check for self-signed cert\n if(cert.isIssuer(cert)) {\n selfSigned = true;\n parent = cert;\n }\n }\n\n if(parent) {\n // FIXME: current CA store implementation might have multiple\n // certificates where the issuer can't be determined from the\n // certificate (happens rarely with, eg: old certificates) so normalize\n // by always putting parents into an array\n // TODO: there's may be an extreme degenerate case currently uncovered\n // where an old intermediate certificate seems to have a matching parent\n // but none of the parents actually verify ... but the intermediate\n // is in the CA and it should pass this check; needs investigation\n var parents = parent;\n if(!forge.util.isArray(parents)) {\n parents = [parents];\n }\n\n // try to verify with each possible parent (typically only one)\n var verified = false;\n while(!verified && parents.length > 0) {\n parent = parents.shift();\n try {\n verified = parent.verify(cert);\n } catch(ex) {\n // failure to verify, don't care why, try next one\n }\n }\n\n if(!verified) {\n error = {\n message: 'Certificate signature is invalid.',\n error: pki.certificateError.bad_certificate\n };\n }\n }\n\n if(error === null && (!parent || selfSigned) &&\n !caStore.hasCertificate(cert)) {\n // no parent issuer and certificate itself is not trusted\n error = {\n message: 'Certificate is not trusted.',\n error: pki.certificateError.unknown_ca\n };\n }\n }\n\n // TODO: 3. check revoked\n\n // 4. check for matching issuer/subject\n if(error === null && parent && !cert.isIssuer(parent)) {\n // parent is not issuer\n error = {\n message: 'Certificate issuer is invalid.',\n error: pki.certificateError.bad_certificate\n };\n }\n\n // 5. TODO: check names with permitted names tree\n\n // 6. TODO: check names against excluded names tree\n\n // 7. check for unsupported critical extensions\n if(error === null) {\n // supported extensions\n var se = {\n keyUsage: true,\n basicConstraints: true\n };\n for(var i = 0; error === null && i < cert.extensions.length; ++i) {\n var ext = cert.extensions[i];\n if(ext.critical && !(ext.name in se)) {\n error = {\n message:\n 'Certificate has an unsupported critical extension.',\n error: pki.certificateError.unsupported_certificate\n };\n }\n }\n }\n\n // 8. check for CA if cert is not first or is the only certificate\n // remaining in chain with no parent or is self-signed\n if(error === null &&\n (!first || (chain.length === 0 && (!parent || selfSigned)))) {\n // first check keyUsage extension and then basic constraints\n var bcExt = cert.getExtension('basicConstraints');\n var keyUsageExt = cert.getExtension('keyUsage');\n if(keyUsageExt !== null) {\n // keyCertSign must be true and there must be a basic\n // constraints extension\n if(!keyUsageExt.keyCertSign || bcExt === null) {\n // bad certificate\n error = {\n message:\n 'Certificate keyUsage or basicConstraints conflict ' +\n 'or indicate that the certificate is not a CA. ' +\n 'If the certificate is the only one in the chain or ' +\n 'isn\\'t the first then the certificate must be a ' +\n 'valid CA.',\n error: pki.certificateError.bad_certificate\n };\n }\n }\n // basic constraints cA flag must be set\n if(error === null && bcExt !== null && !bcExt.cA) {\n // bad certificate\n error = {\n message:\n 'Certificate basicConstraints indicates the certificate ' +\n 'is not a CA.',\n error: pki.certificateError.bad_certificate\n };\n }\n // if error is not null and keyUsage is available, then we know it\n // has keyCertSign and there is a basic constraints extension too,\n // which means we can check pathLenConstraint (if it exists)\n if(error === null && keyUsageExt !== null &&\n 'pathLenConstraint' in bcExt) {\n // pathLen is the maximum # of intermediate CA certs that can be\n // found between the current certificate and the end-entity (depth 0)\n // certificate; this number does not include the end-entity (depth 0,\n // last in the chain) even if it happens to be a CA certificate itself\n var pathLen = depth - 1;\n if(pathLen > bcExt.pathLenConstraint) {\n // pathLenConstraint violated, bad certificate\n error = {\n message:\n 'Certificate basicConstraints pathLenConstraint violated.',\n error: pki.certificateError.bad_certificate\n };\n }\n }\n }\n\n // call application callback\n var vfd = (error === null) ? true : error.error;\n var ret = options.verify ? options.verify(vfd, depth, certs) : vfd;\n if(ret === true) {\n // clear any set error\n error = null;\n } else {\n // if passed basic tests, set default message and alert\n if(vfd === true) {\n error = {\n message: 'The application rejected the certificate.',\n error: pki.certificateError.bad_certificate\n };\n }\n\n // check for custom error info\n if(ret || ret === 0) {\n // set custom message and error\n if(typeof ret === 'object' && !forge.util.isArray(ret)) {\n if(ret.message) {\n error.message = ret.message;\n }\n if(ret.error) {\n error.error = ret.error;\n }\n } else if(typeof ret === 'string') {\n // set custom error\n error.error = ret;\n }\n }\n\n // throw error\n throw error;\n }\n\n // no longer first cert in chain\n first = false;\n ++depth;\n } while(chain.length > 0);\n\n return true;\n};\n","var noop = function () {}\n\nfunction abortAll(ary, abort, cb) {\n var n = ary.length\n if(!n) return cb(abort)\n ary.forEach(function (f) {\n if(f) f(abort, next)\n else next()\n })\n\n function next() {\n if(--n) return\n cb(abort)\n }\n if(!n) next()\n}\n\nmodule.exports = function (streams) {\n return function (abort, cb) {\n ;(function next () {\n if(abort)\n abortAll(streams, abort, cb)\n else if(!streams.length)\n cb(true)\n else if(!streams[0])\n streams.shift(), next()\n else\n streams[0](null, function (err, data) {\n if(err) {\n streams.shift() //drop the first, has already ended.\n if(err === true) next()\n else abortAll(streams, err, cb)\n }\n else\n cb(null, data)\n })\n })()\n }\n}\n\n\n","'use strict'\n\nclass Base {\n constructor (name, code, implementation, alphabet) {\n this.name = name\n this.code = code\n this.alphabet = alphabet\n if (implementation && alphabet) {\n this.engine = implementation(alphabet)\n }\n }\n\n encode (stringOrBuffer) {\n return this.engine.encode(stringOrBuffer)\n }\n\n decode (stringOrBuffer) {\n return this.engine.decode(stringOrBuffer)\n }\n\n isImplemented () {\n return this.engine\n }\n}\n\nmodule.exports = Base\n","'use strict'\n\nconst setImmediate = require('async/setImmediate')\n\nconst EE = require('events').EventEmitter\nconst Connection = require('interface-connection').Connection\nconst utilsFactory = require('./utils')\nconst PeerInfo = require('peer-info')\nconst proto = require('../protocol').CircuitRelay\nconst series = require('async/series')\n\nconst debug = require('debug')\n\nconst log = debug('libp2p:circuit:stop')\nlog.err = debug('libp2p:circuit:error:stop')\n\nclass Stop extends EE {\n constructor (swarm) {\n super()\n this.swarm = swarm\n this.utils = utilsFactory(swarm)\n }\n\n /**\n * Handle the incoming STOP message\n *\n * @param {{}} msg - the parsed protobuf message\n * @param {StreamHandler} sh - the stream handler wrapped connection\n * @param {Function} callback - callback\n * @returns {undefined}\n */\n handle (msg, sh, callback) {\n callback = callback || (() => {})\n\n series([\n (cb) => this.utils.validateAddrs(msg, sh, proto.Type.STOP, cb),\n (cb) => this.utils.writeResponse(sh, proto.Status.Success, cb)\n ], (err) => {\n if (err) {\n // we don't return the error here,\n // since multistream select don't expect one\n callback()\n return log(err)\n }\n\n const peerInfo = new PeerInfo(this.utils.peerIdFromId(msg.srcPeer.id))\n msg.srcPeer.addrs.forEach((addr) => peerInfo.multiaddrs.add(addr))\n const newConn = new Connection(sh.rest())\n newConn.setPeerInfo(peerInfo)\n setImmediate(() => this.emit('connection', newConn))\n callback(newConn)\n })\n }\n}\n\nmodule.exports = Stop\n","'use strict'\n\nvar defined = require('./utils').defined\nvar varint = require('varint')\n\nfunction compileEncodingLength (m, enc, oneofs) {\n var oneofsKeys = Object.keys(oneofs)\n var encLength = enc.length\n\n var hls = new Array(encLength)\n\n for (var i = 0; i < m.fields.length; i++) {\n hls[i] = varint.encodingLength(m.fields[i].tag << 3 | enc[i].type)\n\n var field = m.fields[i]\n m.fields[i].packed = field.repeated && field.options && field.options.packed && field.options.packed !== 'false'\n }\n\n return function encodingLength (obj) {\n var length = 0\n var i = 0\n var j = 0\n\n for (i = 0; i < oneofsKeys.length; i++) {\n var name = oneofsKeys[i]\n var props = oneofs[name]\n\n var match = false\n for (j = 0; j < props.length; j++) {\n if (defined(obj[props[j]])) {\n if (match) {\n throw new Error('only one of the properties defined in oneof ' + name + ' can be set')\n }\n match = true\n }\n }\n }\n\n for (i = 0; i < encLength; i++) {\n var e = enc[i]\n var field = m.fields[i]\n var val = obj[field.name]\n var hl = hls[i]\n var len\n\n if (!defined(val)) {\n if (field.required) {\n throw new Error(field.name + ' is required')\n }\n\n continue\n }\n\n if (field.map) {\n var tmp = Object.keys(val)\n for (j = 0; j < tmp.length; j++) {\n tmp[j] = {\n key: tmp[j],\n value: val[tmp[j]]\n }\n }\n\n val = tmp\n }\n\n if (field.packed) {\n var packedLen = 0\n for (j = 0; j < val.length; j++) {\n if (!defined(val[j])) {\n continue\n }\n len = e.encodingLength(val[j])\n packedLen += len\n\n if (e.message) {\n packedLen += varint.encodingLength(len)\n }\n }\n\n if (packedLen) {\n length += hl + packedLen + varint.encodingLength(packedLen)\n }\n } else if (field.repeated) {\n for (j = 0; j < val.length; j++) {\n if (!defined(val[j])) {\n continue\n }\n\n len = e.encodingLength(val[j])\n length += hl + len + (e.message ? varint.encodingLength(len) : 0)\n }\n } else {\n len = e.encodingLength(val)\n length += hl + len + (e.message ? varint.encodingLength(len) : 0)\n }\n }\n\n return length\n }\n}\n\nmodule.exports = compileEncodingLength\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction shuffled(array) {\n array = array.slice();\n for (var i = array.length - 1; i > 0; i--) {\n var j = Math.floor(Math.random() * (i + 1));\n var tmp = array[i];\n array[i] = array[j];\n array[j] = tmp;\n }\n return array;\n}\nexports.shuffled = shuffled;\n","'use strict'\n\nconst exporter = require('ipfs-unixfs-exporter')\nconst log = require('debug')('ipfs:mfs:utils:to-trail')\n\nconst toTrail = async (context, path) => {\n log(`Creating trail for path ${path}`)\n\n const output = []\n\n for await (const fsEntry of exporter.path(path, context.ipld)) {\n output.push({\n name: fsEntry.name,\n cid: fsEntry.cid,\n size: fsEntry.node.size,\n type: fsEntry.unixfs ? fsEntry.unixfs.type : undefined\n })\n }\n\n return output\n}\n\nmodule.exports = toTrail\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst util = require(\"util\");\nconst toString = Object.prototype.toString;\nconst isOfType = (type) => (value) => typeof value === type; // tslint:disable-line:strict-type-predicates\nconst getObjectType = (value) => {\n const objectName = toString.call(value).slice(8, -1);\n if (objectName) {\n return objectName;\n }\n return null;\n};\nconst isObjectOfType = (typeName) => (value) => {\n return getObjectType(value) === typeName;\n};\nfunction is(value) {\n if (value === null) {\n return \"null\" /* null */;\n }\n if (value === true || value === false) {\n return \"boolean\" /* boolean */;\n }\n const type = typeof value;\n if (type === 'undefined') {\n return \"undefined\" /* undefined */;\n }\n if (type === 'string') {\n return \"string\" /* string */;\n }\n if (type === 'number') {\n return \"number\" /* number */;\n }\n if (type === 'symbol') {\n return \"symbol\" /* symbol */;\n }\n if (is.function_(value)) {\n return \"Function\" /* Function */;\n }\n if (Array.isArray(value)) {\n return \"Array\" /* Array */;\n }\n if (Buffer.isBuffer(value)) {\n return \"Buffer\" /* Buffer */;\n }\n const tagType = getObjectType(value);\n if (tagType) {\n return tagType;\n }\n if (value instanceof String || value instanceof Boolean || value instanceof Number) {\n throw new TypeError('Please don\\'t use object wrappers for primitive types');\n }\n return \"Object\" /* Object */;\n}\n(function (is) {\n const isObject = (value) => typeof value === 'object';\n // tslint:disable:variable-name\n is.undefined = isOfType('undefined');\n is.string = isOfType('string');\n is.number = isOfType('number');\n is.function_ = isOfType('function');\n is.null_ = (value) => value === null;\n is.class_ = (value) => is.function_(value) && value.toString().startsWith('class ');\n is.boolean = (value) => value === true || value === false;\n // tslint:enable:variable-name\n is.symbol = isOfType('symbol');\n is.array = Array.isArray;\n is.buffer = Buffer.isBuffer;\n is.nullOrUndefined = (value) => is.null_(value) || is.undefined(value);\n is.object = (value) => !is.nullOrUndefined(value) && (is.function_(value) || isObject(value));\n is.iterable = (value) => !is.nullOrUndefined(value) && is.function_(value[Symbol.iterator]);\n is.generator = (value) => is.iterable(value) && is.function_(value.next) && is.function_(value.throw);\n is.nativePromise = isObjectOfType(\"Promise\" /* Promise */);\n const hasPromiseAPI = (value) => !is.null_(value) &&\n isObject(value) &&\n is.function_(value.then) &&\n is.function_(value.catch);\n is.promise = (value) => is.nativePromise(value) || hasPromiseAPI(value);\n // TODO: Change to use `isObjectOfType` once Node.js 6 or higher is targeted\n const isFunctionOfType = (type) => (value) => is.function_(value) && is.function_(value.constructor) && value.constructor.name === type;\n is.generatorFunction = isFunctionOfType('GeneratorFunction');\n is.asyncFunction = isFunctionOfType('AsyncFunction');\n is.boundFunction = (value) => is.function_(value) && !value.hasOwnProperty('prototype');\n is.regExp = isObjectOfType(\"RegExp\" /* RegExp */);\n is.date = isObjectOfType(\"Date\" /* Date */);\n is.error = isObjectOfType(\"Error\" /* Error */);\n is.map = isObjectOfType(\"Map\" /* Map */);\n is.set = isObjectOfType(\"Set\" /* Set */);\n is.weakMap = isObjectOfType(\"WeakMap\" /* WeakMap */);\n is.weakSet = isObjectOfType(\"WeakSet\" /* WeakSet */);\n is.int8Array = isObjectOfType(\"Int8Array\" /* Int8Array */);\n is.uint8Array = isObjectOfType(\"Uint8Array\" /* Uint8Array */);\n is.uint8ClampedArray = isObjectOfType(\"Uint8ClampedArray\" /* Uint8ClampedArray */);\n is.int16Array = isObjectOfType(\"Int16Array\" /* Int16Array */);\n is.uint16Array = isObjectOfType(\"Uint16Array\" /* Uint16Array */);\n is.int32Array = isObjectOfType(\"Int32Array\" /* Int32Array */);\n is.uint32Array = isObjectOfType(\"Uint32Array\" /* Uint32Array */);\n is.float32Array = isObjectOfType(\"Float32Array\" /* Float32Array */);\n is.float64Array = isObjectOfType(\"Float64Array\" /* Float64Array */);\n is.arrayBuffer = isObjectOfType(\"ArrayBuffer\" /* ArrayBuffer */);\n is.sharedArrayBuffer = isObjectOfType(\"SharedArrayBuffer\" /* SharedArrayBuffer */);\n is.dataView = isObjectOfType(\"DataView\" /* DataView */);\n // TODO: Remove `object` checks when targeting ES2015 or higher\n // See `Notes`: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getPrototypeOf\n is.directInstanceOf = (instance, klass) => is.object(instance) && is.object(klass) && Object.getPrototypeOf(instance) === klass.prototype;\n is.truthy = (value) => Boolean(value);\n is.falsy = (value) => !value;\n is.nan = (value) => Number.isNaN(value);\n const primitiveTypes = new Set([\n 'undefined',\n 'string',\n 'number',\n 'boolean',\n 'symbol'\n ]);\n is.primitive = (value) => is.null_(value) || primitiveTypes.has(typeof value);\n is.integer = (value) => Number.isInteger(value);\n is.safeInteger = (value) => Number.isSafeInteger(value);\n is.plainObject = (value) => {\n // From: https://github.com/sindresorhus/is-plain-obj/blob/master/index.js\n let prototype;\n return getObjectType(value) === \"Object\" /* Object */ &&\n (prototype = Object.getPrototypeOf(value), prototype === null || // tslint:disable-line:ban-comma-operator\n prototype === Object.getPrototypeOf({}));\n };\n const typedArrayTypes = new Set([\n \"Int8Array\" /* Int8Array */,\n \"Uint8Array\" /* Uint8Array */,\n \"Uint8ClampedArray\" /* Uint8ClampedArray */,\n \"Int16Array\" /* Int16Array */,\n \"Uint16Array\" /* Uint16Array */,\n \"Int32Array\" /* Int32Array */,\n \"Uint32Array\" /* Uint32Array */,\n \"Float32Array\" /* Float32Array */,\n \"Float64Array\" /* Float64Array */\n ]);\n is.typedArray = (value) => {\n const objectType = getObjectType(value);\n if (objectType === null) {\n return false;\n }\n return typedArrayTypes.has(objectType);\n };\n const isValidLength = (value) => is.safeInteger(value) && value > -1;\n is.arrayLike = (value) => !is.nullOrUndefined(value) && !is.function_(value) && isValidLength(value.length);\n is.inRange = (value, range) => {\n if (is.number(range)) {\n return value >= Math.min(0, range) && value <= Math.max(range, 0);\n }\n if (is.array(range) && range.length === 2) {\n // TODO: Use spread operator here when targeting Node.js 6 or higher\n return value >= Math.min.apply(null, range) && value <= Math.max.apply(null, range);\n }\n throw new TypeError(`Invalid range: ${util.inspect(range)}`);\n };\n const NODE_TYPE_ELEMENT = 1;\n const DOM_PROPERTIES_TO_CHECK = [\n 'innerHTML',\n 'ownerDocument',\n 'style',\n 'attributes',\n 'nodeValue'\n ];\n is.domElement = (value) => is.object(value) && value.nodeType === NODE_TYPE_ELEMENT && is.string(value.nodeName) &&\n !is.plainObject(value) && DOM_PROPERTIES_TO_CHECK.every(property => property in value);\n is.nodeStream = (value) => !is.nullOrUndefined(value) && isObject(value) && is.function_(value.pipe);\n is.infinite = (value) => value === Infinity || value === -Infinity;\n const isAbsoluteMod2 = (value) => (rem) => is.integer(rem) && Math.abs(rem % 2) === value;\n is.even = isAbsoluteMod2(0);\n is.odd = isAbsoluteMod2(1);\n const isWhiteSpaceString = (value) => is.string(value) && /\\S/.test(value) === false;\n const isEmptyStringOrArray = (value) => (is.string(value) || is.array(value)) && value.length === 0;\n const isEmptyObject = (value) => !is.map(value) && !is.set(value) && is.object(value) && Object.keys(value).length === 0;\n const isEmptyMapOrSet = (value) => (is.map(value) || is.set(value)) && value.size === 0;\n is.empty = (value) => is.falsy(value) || isEmptyStringOrArray(value) || isEmptyObject(value) || isEmptyMapOrSet(value);\n is.emptyOrWhitespace = (value) => is.empty(value) || isWhiteSpaceString(value);\n const predicateOnArray = (method, predicate, args) => {\n // `args` is the calling function's \"arguments object\".\n // We have to do it this way to keep node v4 support.\n // So here we convert it to an array and slice off the first item.\n const values = Array.prototype.slice.call(args, 1);\n if (is.function_(predicate) === false) {\n throw new TypeError(`Invalid predicate: ${util.inspect(predicate)}`);\n }\n if (values.length === 0) {\n throw new TypeError('Invalid number of values');\n }\n return method.call(values, predicate);\n };\n function any(predicate) {\n return predicateOnArray(Array.prototype.some, predicate, arguments);\n }\n is.any = any;\n function all(predicate) {\n return predicateOnArray(Array.prototype.every, predicate, arguments);\n }\n is.all = all;\n // tslint:enable:only-arrow-functions no-function-expression\n})(is || (is = {}));\n// Some few keywords are reserved, but we'll populate them for Node.js users\n// See https://github.com/Microsoft/TypeScript/issues/2536\nObject.defineProperties(is, {\n class: {\n value: is.class_\n },\n function: {\n value: is.function_\n },\n null: {\n value: is.null_\n }\n});\nexports.default = is;\n// For CommonJS default export support\nmodule.exports = is;\nmodule.exports.default = is;\n","'use strict'\n\nconst utils = require('../../utils')\n\nmodule.exports = (dht) => {\n const log = utils.logger(dht.peerInfo.id, 'rpc:ping')\n\n /**\n * Process `Ping` DHT messages.\n *\n * @param {PeerInfo} peer\n * @param {Message} msg\n * @param {function(Error, Message)} callback\n * @returns {undefined}\n */\n return function ping (peer, msg, callback) {\n log('from %s', peer.id.toB58String())\n callback(null, msg)\n }\n}\n","'use strict'\n\nconst blake = require('blakejs')\n\nconst toCallback = require('./utils').toCallback\n\nconst minB = 0xb201\nconst minS = 0xb241\n\nconst blake2b = {\n init: blake.blake2bInit,\n update: blake.blake2bUpdate,\n digest: blake.blake2bFinal\n}\n\nconst blake2s = {\n init: blake.blake2sInit,\n update: blake.blake2sUpdate,\n digest: blake.blake2sFinal\n}\n\nconst makeB2Hash = (size, hf) => toCallback((buf) => {\n const ctx = hf.init(size, null)\n hf.update(ctx, buf)\n return Buffer.from(hf.digest(ctx))\n})\n\nmodule.exports = (table) => {\n for (let i = 0; i < 64; i++) {\n table[minB + i] = makeB2Hash(i + 1, blake2b)\n }\n for (let i = 0; i < 32; i++) {\n table[minS + i] = makeB2Hash(i + 1, blake2s)\n }\n}\n","'use strict'\n\nconst first = async (iterator) => {\n for await (const entry of iterator) {\n return entry\n }\n}\n\nmodule.exports = first\n","/* @flow */\n'use strict'\n\nconst uuid = require('uuid/v4')\nconst withIs = require('class-is')\n\nconst pathSepS = '/'\nconst pathSepB = Buffer.from(pathSepS)\nconst pathSep = pathSepB[0]\n\n/**\n * A Key represents the unique identifier of an object.\n * Our Key scheme is inspired by file systems and Google App Engine key model.\n * Keys are meant to be unique across a system. Keys are hierarchical,\n * incorporating more and more specific namespaces. Thus keys can be deemed\n * 'children' or 'ancestors' of other keys:\n * - `new Key('/Comedy')`\n * - `new Key('/Comedy/MontyPython')`\n * Also, every namespace can be parametrized to embed relevant object\n * information. For example, the Key `name` (most specific namespace) could\n * include the object type:\n * - `new Key('/Comedy/MontyPython/Actor:JohnCleese')`\n * - `new Key('/Comedy/MontyPython/Sketch:CheeseShop')`\n * - `new Key('/Comedy/MontyPython/Sketch:CheeseShop/Character:Mousebender')`\n *\n */\nclass Key {\n /* :: _buf: Buffer */\n\n constructor (s /* : string|Buffer */, clean /* : ?bool */) {\n if (typeof s === 'string') {\n this._buf = Buffer.from(s)\n } else if (Buffer.isBuffer(s)) {\n this._buf = s\n }\n\n if (clean == null) {\n clean = true\n }\n\n if (clean) {\n this.clean()\n }\n\n if (this._buf.length === 0 || this._buf[0] !== pathSep) {\n throw new Error(`Invalid key: ${this.toString()}`)\n }\n }\n\n /**\n * Convert to the string representation\n *\n * @param {string} [encoding='utf8']\n * @returns {string}\n */\n toString (encoding/* : ?buffer$Encoding */)/* : string */ {\n return this._buf.toString(encoding || 'utf8')\n }\n\n /**\n * Return the buffer representation of the key\n *\n * @returns {Buffer}\n */\n toBuffer () /* : Buffer */ {\n return this._buf\n }\n\n // waiting on https://github.com/facebook/flow/issues/2286\n // $FlowFixMe\n get [Symbol.toStringTag] () /* : string */ {\n return `[Key ${this.toString()}]`\n }\n\n /**\n * Constructs a key out of a namespace array.\n *\n * @param {Array} list\n * @returns {Key}\n *\n * @example\n * Key.withNamespaces(['one', 'two'])\n * // => Key('/one/two')\n *\n */\n static withNamespaces (list /* : Array */) /* : Key */ {\n return new _Key(list.join(pathSepS))\n }\n\n /**\n * Returns a randomly (uuid) generated key.\n *\n * @returns {Key}\n *\n * @example\n * Key.random()\n * // => Key('/f98719ea086343f7b71f32ea9d9d521d')\n *\n */\n static random () /* : Key */ {\n return new _Key(uuid().replace(/-/g, ''))\n }\n\n /**\n * Cleanup the current key\n *\n * @returns {void}\n */\n clean () {\n if (!this._buf || this._buf.length === 0) {\n this._buf = Buffer.from(pathSepS)\n }\n\n if (this._buf[0] !== pathSep) {\n this._buf = Buffer.concat([pathSepB, this._buf])\n }\n\n // normalize does not remove trailing slashes\n while (this._buf.length > 1 && this._buf[this._buf.length - 1] === pathSep) {\n this._buf = this._buf.slice(0, -1)\n }\n }\n\n /**\n * Check if the given key is sorted lower than ourself.\n *\n * @param {Key} key\n * @returns {bool}\n */\n less (key /* : Key */) /* : bool */ {\n const list1 = this.list()\n const list2 = key.list()\n\n for (let i = 0; i < list1.length; i++) {\n if (list2.length < i + 1) {\n return false\n }\n\n const c1 = list1[i]\n const c2 = list2[i]\n\n if (c1 < c2) {\n return true\n } else if (c1 > c2) {\n return false\n }\n }\n\n return list1.length < list2.length\n }\n\n /**\n * Returns the key with all parts in reversed order.\n *\n * @returns {Key}\n *\n * @example\n * new Key('/Comedy/MontyPython/Actor:JohnCleese').reverse()\n * // => Key('/Actor:JohnCleese/MontyPython/Comedy')\n */\n reverse () /* : Key */ {\n return Key.withNamespaces(this.list().slice().reverse())\n }\n\n /**\n * Returns the `namespaces` making up this Key.\n *\n * @returns {Array}\n */\n namespaces () /* : Array */ {\n return this.list()\n }\n\n /** Returns the \"base\" namespace of this key.\n *\n * @returns {string}\n *\n * @example\n * new Key('/Comedy/MontyPython/Actor:JohnCleese').baseNamespace()\n * // => 'Actor:JohnCleese'\n *\n */\n baseNamespace () /* : string */ {\n const ns = this.namespaces()\n return ns[ns.length - 1]\n }\n\n /**\n * Returns the `list` representation of this key.\n *\n * @returns {Array}\n *\n * @example\n * new Key('/Comedy/MontyPython/Actor:JohnCleese').list()\n * // => ['Comedy', 'MontyPythong', 'Actor:JohnCleese']\n *\n */\n list () /* : Array */ {\n return this.toString().split(pathSepS).slice(1)\n }\n\n /**\n * Returns the \"type\" of this key (value of last namespace).\n *\n * @returns {string}\n *\n * @example\n * new Key('/Comedy/MontyPython/Actor:JohnCleese').type()\n * // => 'Actor'\n *\n */\n type () /* : string */ {\n return namespaceType(this.baseNamespace())\n }\n\n /**\n * Returns the \"name\" of this key (field of last namespace).\n *\n * @returns {string}\n *\n * @example\n * new Key('/Comedy/MontyPython/Actor:JohnCleese').name()\n * // => 'JohnCleese'\n */\n name () /* : string */ {\n return namespaceValue(this.baseNamespace())\n }\n\n /**\n * Returns an \"instance\" of this type key (appends value to namespace).\n *\n * @param {string} s\n * @returns {Key}\n *\n * @example\n * new Key('/Comedy/MontyPython/Actor').instance('JohnClesse')\n * // => Key('/Comedy/MontyPython/Actor:JohnCleese')\n */\n instance (s /* : string */) /* : Key */ {\n return new _Key(this.toString() + ':' + s)\n }\n\n /**\n * Returns the \"path\" of this key (parent + type).\n *\n * @returns {Key}\n *\n * @example\n * new Key('/Comedy/MontyPython/Actor:JohnCleese').path()\n * // => Key('/Comedy/MontyPython/Actor')\n *\n */\n path () /* : Key */ {\n let p = this.parent().toString()\n if (!p.endsWith(pathSepS)) {\n p += pathSepS\n }\n p += this.type()\n return new _Key(p)\n }\n\n /**\n * Returns the `parent` Key of this Key.\n *\n * @returns {Key}\n *\n * @example\n * new Key(\"/Comedy/MontyPython/Actor:JohnCleese\").parent()\n * // => Key(\"/Comedy/MontyPython\")\n *\n */\n parent () /* : Key */ {\n const list = this.list()\n if (list.length === 1) {\n return new _Key(pathSepS)\n }\n\n return new _Key(list.slice(0, -1).join(pathSepS))\n }\n\n /**\n * Returns the `child` Key of this Key.\n *\n * @param {Key} key\n * @returns {Key}\n *\n * @example\n * new Key('/Comedy/MontyPython').child(new Key('Actor:JohnCleese'))\n * // => Key('/Comedy/MontyPython/Actor:JohnCleese')\n *\n */\n child (key /* : Key */) /* : Key */ {\n if (this.toString() === pathSepS) {\n return key\n } else if (key.toString() === pathSepS) {\n return this\n }\n\n return new _Key(this.toString() + key.toString(), false)\n }\n\n /**\n * Returns whether this key is a prefix of `other`\n *\n * @param {Key} other\n * @returns {bool}\n *\n * @example\n * new Key('/Comedy').isAncestorOf('/Comedy/MontyPython')\n * // => true\n *\n */\n isAncestorOf (other /* : Key */) /* : bool */ {\n if (other.toString() === this.toString()) {\n return false\n }\n\n return other.toString().startsWith(this.toString())\n }\n\n /**\n * Returns whether this key is a contains another as prefix.\n *\n * @param {Key} other\n * @returns {bool}\n *\n * @example\n * new Key('/Comedy/MontyPython').isDecendantOf('/Comedy')\n * // => true\n *\n */\n isDecendantOf (other /* : Key */) /* : bool */ {\n if (other.toString() === this.toString()) {\n return false\n }\n\n return this.toString().startsWith(other.toString())\n }\n\n /**\n * Returns wether this key has only one namespace.\n *\n * @returns {bool}\n *\n */\n isTopLevel () /* : bool */ {\n return this.list().length === 1\n }\n}\n\n/**\n * The first component of a namespace. `foo` in `foo:bar`\n *\n * @param {string} ns\n * @returns {string}\n */\nfunction namespaceType (ns /* : string */) /* : string */ {\n const parts = ns.split(':')\n if (parts.length < 2) {\n return ''\n }\n return parts.slice(0, -1).join(':')\n}\n\n/**\n * The last component of a namespace, `baz` in `foo:bar:baz`.\n *\n * @param {string} ns\n * @returns {string}\n */\nfunction namespaceValue (ns /* : string */) /* : string */ {\n const parts = ns.split(':')\n return parts[parts.length - 1]\n}\n\nconst _Key = withIs(Key, { className: 'Key', symbolName: '@ipfs/interface-datastore/key' })\n\nmodule.exports = _Key\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = options.decoder(part.slice(pos + 1), defaults.decoder, charset, 'value');\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n val = val.split(',');\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n if (has.call(obj, key)) {\n obj[key] = utils.combine(obj[key], val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options) {\n var leaf = val;\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new Error('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n return {\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options);\n obj = utils.merge(obj, newObj, options);\n }\n\n return utils.compact(obj);\n};\n","/**\n * Node.js module for Forge mask generation functions.\n *\n * @author Stefan Siegl\n *\n * Copyright 2012 Stefan Siegl \n */\nvar forge = require('./forge');\nrequire('./mgf1');\n\nmodule.exports = forge.mgf = forge.mgf || {};\nforge.mgf.mgf1 = forge.mgf1;\n","/* eslint-env browser */\n'use strict'\n\nconst TLRU = require('../../utils/tlru')\nconst { default: PQueue } = require('p-queue')\nconst { default: ky } = require('ky-universal')\n\n// Avoid sending multiple queries for the same hostname by caching results\nconst cache = new TLRU(1000)\n// TODO: /api/v0/dns does not return TTL yet: https://github.com/ipfs/go-ipfs/issues/5884\n// However we know browsers themselves cache DNS records for at least 1 minute,\n// which acts a provisional default ttl: https://stackoverflow.com/a/36917902/11518426\nconst ttl = 60 * 1000\n\n// browsers limit concurrent connections per host,\n// we don't want preload calls to exhaust the limit (~6)\nconst httpQueue = new PQueue({ concurrency: 4 })\n\n// Delegated HTTP resolver sending DNSLink queries to ipfs.io\n// TODO: replace hardcoded host with configurable DNS over HTTPS: https://github.com/ipfs/js-ipfs/issues/2212\nconst api = ky.create({\n prefixUrl: 'https://ipfs.io/api/v0/',\n hooks: {\n afterResponse: [\n async (input, options, response) => {\n const query = new URL(response.url).search.slice(1)\n const json = await response.json()\n cache.set(query, json, ttl)\n }\n ]\n }\n})\n\nconst ipfsPath = (response) => {\n if (response.Path) return response.Path\n throw new Error(response.Message)\n}\n\nmodule.exports = async (fqdn, opts) => { // eslint-disable-line require-await\n const resolveDnslink = async (fqdn, opts) => {\n opts = opts || {}\n\n const searchParams = new URLSearchParams(opts)\n searchParams.set('arg', fqdn)\n\n // try cache first\n const query = searchParams.toString()\n if (!opts.nocache && cache.has(query)) {\n const response = cache.get(query)\n return ipfsPath(response)\n }\n\n // fallback to delegated DNS resolver\n const response = await httpQueue.add(() => api.get('dns', { searchParams }).json())\n return ipfsPath(response)\n }\n\n return resolveDnslink(fqdn, opts)\n}\n","'use strict';\nmodule.exports = (promise, onFinally) => {\n\tonFinally = onFinally || (() => {});\n\n\treturn promise.then(\n\t\tval => new Promise(resolve => {\n\t\t\tresolve(onFinally());\n\t\t}).then(() => val),\n\t\terr => new Promise(resolve => {\n\t\t\tresolve(onFinally());\n\t\t}).then(() => {\n\t\t\tthrow err;\n\t\t})\n\t);\n};\n","/**\n * Supported cipher modes.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\n\nforge.cipher = forge.cipher || {};\n\n// supported cipher modes\nvar modes = module.exports = forge.cipher.modes = forge.cipher.modes || {};\n\n/** Electronic codebook (ECB) (Don't use this; it's not secure) **/\n\nmodes.ecb = function(options) {\n options = options || {};\n this.name = 'ECB';\n this.cipher = options.cipher;\n this.blockSize = options.blockSize || 16;\n this._ints = this.blockSize / 4;\n this._inBlock = new Array(this._ints);\n this._outBlock = new Array(this._ints);\n};\n\nmodes.ecb.prototype.start = function(options) {};\n\nmodes.ecb.prototype.encrypt = function(input, output, finish) {\n // not enough input to encrypt\n if(input.length() < this.blockSize && !(finish && input.length() > 0)) {\n return true;\n }\n\n // get next block\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = input.getInt32();\n }\n\n // encrypt block\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // write output\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(this._outBlock[i]);\n }\n};\n\nmodes.ecb.prototype.decrypt = function(input, output, finish) {\n // not enough input to decrypt\n if(input.length() < this.blockSize && !(finish && input.length() > 0)) {\n return true;\n }\n\n // get next block\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = input.getInt32();\n }\n\n // decrypt block\n this.cipher.decrypt(this._inBlock, this._outBlock);\n\n // write output\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(this._outBlock[i]);\n }\n};\n\nmodes.ecb.prototype.pad = function(input, options) {\n // add PKCS#7 padding to block (each pad byte is the\n // value of the number of pad bytes)\n var padding = (input.length() === this.blockSize ?\n this.blockSize : (this.blockSize - input.length()));\n input.fillWithByte(padding, padding);\n return true;\n};\n\nmodes.ecb.prototype.unpad = function(output, options) {\n // check for error: input data not a multiple of blockSize\n if(options.overflow > 0) {\n return false;\n }\n\n // ensure padding byte count is valid\n var len = output.length();\n var count = output.at(len - 1);\n if(count > (this.blockSize << 2)) {\n return false;\n }\n\n // trim off padding bytes\n output.truncate(count);\n return true;\n};\n\n/** Cipher-block Chaining (CBC) **/\n\nmodes.cbc = function(options) {\n options = options || {};\n this.name = 'CBC';\n this.cipher = options.cipher;\n this.blockSize = options.blockSize || 16;\n this._ints = this.blockSize / 4;\n this._inBlock = new Array(this._ints);\n this._outBlock = new Array(this._ints);\n};\n\nmodes.cbc.prototype.start = function(options) {\n // Note: legacy support for using IV residue (has security flaws)\n // if IV is null, reuse block from previous processing\n if(options.iv === null) {\n // must have a previous block\n if(!this._prev) {\n throw new Error('Invalid IV parameter.');\n }\n this._iv = this._prev.slice(0);\n } else if(!('iv' in options)) {\n throw new Error('Invalid IV parameter.');\n } else {\n // save IV as \"previous\" block\n this._iv = transformIV(options.iv, this.blockSize);\n this._prev = this._iv.slice(0);\n }\n};\n\nmodes.cbc.prototype.encrypt = function(input, output, finish) {\n // not enough input to encrypt\n if(input.length() < this.blockSize && !(finish && input.length() > 0)) {\n return true;\n }\n\n // get next block\n // CBC XOR's IV (or previous block) with plaintext\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = this._prev[i] ^ input.getInt32();\n }\n\n // encrypt block\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // write output, save previous block\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(this._outBlock[i]);\n }\n this._prev = this._outBlock;\n};\n\nmodes.cbc.prototype.decrypt = function(input, output, finish) {\n // not enough input to decrypt\n if(input.length() < this.blockSize && !(finish && input.length() > 0)) {\n return true;\n }\n\n // get next block\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = input.getInt32();\n }\n\n // decrypt block\n this.cipher.decrypt(this._inBlock, this._outBlock);\n\n // write output, save previous ciphered block\n // CBC XOR's IV (or previous block) with ciphertext\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(this._prev[i] ^ this._outBlock[i]);\n }\n this._prev = this._inBlock.slice(0);\n};\n\nmodes.cbc.prototype.pad = function(input, options) {\n // add PKCS#7 padding to block (each pad byte is the\n // value of the number of pad bytes)\n var padding = (input.length() === this.blockSize ?\n this.blockSize : (this.blockSize - input.length()));\n input.fillWithByte(padding, padding);\n return true;\n};\n\nmodes.cbc.prototype.unpad = function(output, options) {\n // check for error: input data not a multiple of blockSize\n if(options.overflow > 0) {\n return false;\n }\n\n // ensure padding byte count is valid\n var len = output.length();\n var count = output.at(len - 1);\n if(count > (this.blockSize << 2)) {\n return false;\n }\n\n // trim off padding bytes\n output.truncate(count);\n return true;\n};\n\n/** Cipher feedback (CFB) **/\n\nmodes.cfb = function(options) {\n options = options || {};\n this.name = 'CFB';\n this.cipher = options.cipher;\n this.blockSize = options.blockSize || 16;\n this._ints = this.blockSize / 4;\n this._inBlock = null;\n this._outBlock = new Array(this._ints);\n this._partialBlock = new Array(this._ints);\n this._partialOutput = forge.util.createBuffer();\n this._partialBytes = 0;\n};\n\nmodes.cfb.prototype.start = function(options) {\n if(!('iv' in options)) {\n throw new Error('Invalid IV parameter.');\n }\n // use IV as first input\n this._iv = transformIV(options.iv, this.blockSize);\n this._inBlock = this._iv.slice(0);\n this._partialBytes = 0;\n};\n\nmodes.cfb.prototype.encrypt = function(input, output, finish) {\n // not enough input to encrypt\n var inputLength = input.length();\n if(inputLength === 0) {\n return true;\n }\n\n // encrypt block\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // handle full block\n if(this._partialBytes === 0 && inputLength >= this.blockSize) {\n // XOR input with output, write input as output\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = input.getInt32() ^ this._outBlock[i];\n output.putInt32(this._inBlock[i]);\n }\n return;\n }\n\n // handle partial block\n var partialBytes = (this.blockSize - inputLength) % this.blockSize;\n if(partialBytes > 0) {\n partialBytes = this.blockSize - partialBytes;\n }\n\n // XOR input with output, write input as partial output\n this._partialOutput.clear();\n for(var i = 0; i < this._ints; ++i) {\n this._partialBlock[i] = input.getInt32() ^ this._outBlock[i];\n this._partialOutput.putInt32(this._partialBlock[i]);\n }\n\n if(partialBytes > 0) {\n // block still incomplete, restore input buffer\n input.read -= this.blockSize;\n } else {\n // block complete, update input block\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = this._partialBlock[i];\n }\n }\n\n // skip any previous partial bytes\n if(this._partialBytes > 0) {\n this._partialOutput.getBytes(this._partialBytes);\n }\n\n if(partialBytes > 0 && !finish) {\n output.putBytes(this._partialOutput.getBytes(\n partialBytes - this._partialBytes));\n this._partialBytes = partialBytes;\n return true;\n }\n\n output.putBytes(this._partialOutput.getBytes(\n inputLength - this._partialBytes));\n this._partialBytes = 0;\n};\n\nmodes.cfb.prototype.decrypt = function(input, output, finish) {\n // not enough input to decrypt\n var inputLength = input.length();\n if(inputLength === 0) {\n return true;\n }\n\n // encrypt block (CFB always uses encryption mode)\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // handle full block\n if(this._partialBytes === 0 && inputLength >= this.blockSize) {\n // XOR input with output, write input as output\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = input.getInt32();\n output.putInt32(this._inBlock[i] ^ this._outBlock[i]);\n }\n return;\n }\n\n // handle partial block\n var partialBytes = (this.blockSize - inputLength) % this.blockSize;\n if(partialBytes > 0) {\n partialBytes = this.blockSize - partialBytes;\n }\n\n // XOR input with output, write input as partial output\n this._partialOutput.clear();\n for(var i = 0; i < this._ints; ++i) {\n this._partialBlock[i] = input.getInt32();\n this._partialOutput.putInt32(this._partialBlock[i] ^ this._outBlock[i]);\n }\n\n if(partialBytes > 0) {\n // block still incomplete, restore input buffer\n input.read -= this.blockSize;\n } else {\n // block complete, update input block\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = this._partialBlock[i];\n }\n }\n\n // skip any previous partial bytes\n if(this._partialBytes > 0) {\n this._partialOutput.getBytes(this._partialBytes);\n }\n\n if(partialBytes > 0 && !finish) {\n output.putBytes(this._partialOutput.getBytes(\n partialBytes - this._partialBytes));\n this._partialBytes = partialBytes;\n return true;\n }\n\n output.putBytes(this._partialOutput.getBytes(\n inputLength - this._partialBytes));\n this._partialBytes = 0;\n};\n\n/** Output feedback (OFB) **/\n\nmodes.ofb = function(options) {\n options = options || {};\n this.name = 'OFB';\n this.cipher = options.cipher;\n this.blockSize = options.blockSize || 16;\n this._ints = this.blockSize / 4;\n this._inBlock = null;\n this._outBlock = new Array(this._ints);\n this._partialOutput = forge.util.createBuffer();\n this._partialBytes = 0;\n};\n\nmodes.ofb.prototype.start = function(options) {\n if(!('iv' in options)) {\n throw new Error('Invalid IV parameter.');\n }\n // use IV as first input\n this._iv = transformIV(options.iv, this.blockSize);\n this._inBlock = this._iv.slice(0);\n this._partialBytes = 0;\n};\n\nmodes.ofb.prototype.encrypt = function(input, output, finish) {\n // not enough input to encrypt\n var inputLength = input.length();\n if(input.length() === 0) {\n return true;\n }\n\n // encrypt block (OFB always uses encryption mode)\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // handle full block\n if(this._partialBytes === 0 && inputLength >= this.blockSize) {\n // XOR input with output and update next input\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(input.getInt32() ^ this._outBlock[i]);\n this._inBlock[i] = this._outBlock[i];\n }\n return;\n }\n\n // handle partial block\n var partialBytes = (this.blockSize - inputLength) % this.blockSize;\n if(partialBytes > 0) {\n partialBytes = this.blockSize - partialBytes;\n }\n\n // XOR input with output\n this._partialOutput.clear();\n for(var i = 0; i < this._ints; ++i) {\n this._partialOutput.putInt32(input.getInt32() ^ this._outBlock[i]);\n }\n\n if(partialBytes > 0) {\n // block still incomplete, restore input buffer\n input.read -= this.blockSize;\n } else {\n // block complete, update input block\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = this._outBlock[i];\n }\n }\n\n // skip any previous partial bytes\n if(this._partialBytes > 0) {\n this._partialOutput.getBytes(this._partialBytes);\n }\n\n if(partialBytes > 0 && !finish) {\n output.putBytes(this._partialOutput.getBytes(\n partialBytes - this._partialBytes));\n this._partialBytes = partialBytes;\n return true;\n }\n\n output.putBytes(this._partialOutput.getBytes(\n inputLength - this._partialBytes));\n this._partialBytes = 0;\n};\n\nmodes.ofb.prototype.decrypt = modes.ofb.prototype.encrypt;\n\n/** Counter (CTR) **/\n\nmodes.ctr = function(options) {\n options = options || {};\n this.name = 'CTR';\n this.cipher = options.cipher;\n this.blockSize = options.blockSize || 16;\n this._ints = this.blockSize / 4;\n this._inBlock = null;\n this._outBlock = new Array(this._ints);\n this._partialOutput = forge.util.createBuffer();\n this._partialBytes = 0;\n};\n\nmodes.ctr.prototype.start = function(options) {\n if(!('iv' in options)) {\n throw new Error('Invalid IV parameter.');\n }\n // use IV as first input\n this._iv = transformIV(options.iv, this.blockSize);\n this._inBlock = this._iv.slice(0);\n this._partialBytes = 0;\n};\n\nmodes.ctr.prototype.encrypt = function(input, output, finish) {\n // not enough input to encrypt\n var inputLength = input.length();\n if(inputLength === 0) {\n return true;\n }\n\n // encrypt block (CTR always uses encryption mode)\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // handle full block\n if(this._partialBytes === 0 && inputLength >= this.blockSize) {\n // XOR input with output\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(input.getInt32() ^ this._outBlock[i]);\n }\n } else {\n // handle partial block\n var partialBytes = (this.blockSize - inputLength) % this.blockSize;\n if(partialBytes > 0) {\n partialBytes = this.blockSize - partialBytes;\n }\n\n // XOR input with output\n this._partialOutput.clear();\n for(var i = 0; i < this._ints; ++i) {\n this._partialOutput.putInt32(input.getInt32() ^ this._outBlock[i]);\n }\n\n if(partialBytes > 0) {\n // block still incomplete, restore input buffer\n input.read -= this.blockSize;\n }\n\n // skip any previous partial bytes\n if(this._partialBytes > 0) {\n this._partialOutput.getBytes(this._partialBytes);\n }\n\n if(partialBytes > 0 && !finish) {\n output.putBytes(this._partialOutput.getBytes(\n partialBytes - this._partialBytes));\n this._partialBytes = partialBytes;\n return true;\n }\n\n output.putBytes(this._partialOutput.getBytes(\n inputLength - this._partialBytes));\n this._partialBytes = 0;\n }\n\n // block complete, increment counter (input block)\n inc32(this._inBlock);\n};\n\nmodes.ctr.prototype.decrypt = modes.ctr.prototype.encrypt;\n\n/** Galois/Counter Mode (GCM) **/\n\nmodes.gcm = function(options) {\n options = options || {};\n this.name = 'GCM';\n this.cipher = options.cipher;\n this.blockSize = options.blockSize || 16;\n this._ints = this.blockSize / 4;\n this._inBlock = new Array(this._ints);\n this._outBlock = new Array(this._ints);\n this._partialOutput = forge.util.createBuffer();\n this._partialBytes = 0;\n\n // R is actually this value concatenated with 120 more zero bits, but\n // we only XOR against R so the other zeros have no effect -- we just\n // apply this value to the first integer in a block\n this._R = 0xE1000000;\n};\n\nmodes.gcm.prototype.start = function(options) {\n if(!('iv' in options)) {\n throw new Error('Invalid IV parameter.');\n }\n // ensure IV is a byte buffer\n var iv = forge.util.createBuffer(options.iv);\n\n // no ciphered data processed yet\n this._cipherLength = 0;\n\n // default additional data is none\n var additionalData;\n if('additionalData' in options) {\n additionalData = forge.util.createBuffer(options.additionalData);\n } else {\n additionalData = forge.util.createBuffer();\n }\n\n // default tag length is 128 bits\n if('tagLength' in options) {\n this._tagLength = options.tagLength;\n } else {\n this._tagLength = 128;\n }\n\n // if tag is given, ensure tag matches tag length\n this._tag = null;\n if(options.decrypt) {\n // save tag to check later\n this._tag = forge.util.createBuffer(options.tag).getBytes();\n if(this._tag.length !== (this._tagLength / 8)) {\n throw new Error('Authentication tag does not match tag length.');\n }\n }\n\n // create tmp storage for hash calculation\n this._hashBlock = new Array(this._ints);\n\n // no tag generated yet\n this.tag = null;\n\n // generate hash subkey\n // (apply block cipher to \"zero\" block)\n this._hashSubkey = new Array(this._ints);\n this.cipher.encrypt([0, 0, 0, 0], this._hashSubkey);\n\n // generate table M\n // use 4-bit tables (32 component decomposition of a 16 byte value)\n // 8-bit tables take more space and are known to have security\n // vulnerabilities (in native implementations)\n this.componentBits = 4;\n this._m = this.generateHashTable(this._hashSubkey, this.componentBits);\n\n // Note: support IV length different from 96 bits? (only supporting\n // 96 bits is recommended by NIST SP-800-38D)\n // generate J_0\n var ivLength = iv.length();\n if(ivLength === 12) {\n // 96-bit IV\n this._j0 = [iv.getInt32(), iv.getInt32(), iv.getInt32(), 1];\n } else {\n // IV is NOT 96-bits\n this._j0 = [0, 0, 0, 0];\n while(iv.length() > 0) {\n this._j0 = this.ghash(\n this._hashSubkey, this._j0,\n [iv.getInt32(), iv.getInt32(), iv.getInt32(), iv.getInt32()]);\n }\n this._j0 = this.ghash(\n this._hashSubkey, this._j0, [0, 0].concat(from64To32(ivLength * 8)));\n }\n\n // generate ICB (initial counter block)\n this._inBlock = this._j0.slice(0);\n inc32(this._inBlock);\n this._partialBytes = 0;\n\n // consume authentication data\n additionalData = forge.util.createBuffer(additionalData);\n // save additional data length as a BE 64-bit number\n this._aDataLength = from64To32(additionalData.length() * 8);\n // pad additional data to 128 bit (16 byte) block size\n var overflow = additionalData.length() % this.blockSize;\n if(overflow) {\n additionalData.fillWithByte(0, this.blockSize - overflow);\n }\n this._s = [0, 0, 0, 0];\n while(additionalData.length() > 0) {\n this._s = this.ghash(this._hashSubkey, this._s, [\n additionalData.getInt32(),\n additionalData.getInt32(),\n additionalData.getInt32(),\n additionalData.getInt32()\n ]);\n }\n};\n\nmodes.gcm.prototype.encrypt = function(input, output, finish) {\n // not enough input to encrypt\n var inputLength = input.length();\n if(inputLength === 0) {\n return true;\n }\n\n // encrypt block\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // handle full block\n if(this._partialBytes === 0 && inputLength >= this.blockSize) {\n // XOR input with output\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(this._outBlock[i] ^= input.getInt32());\n }\n this._cipherLength += this.blockSize;\n } else {\n // handle partial block\n var partialBytes = (this.blockSize - inputLength) % this.blockSize;\n if(partialBytes > 0) {\n partialBytes = this.blockSize - partialBytes;\n }\n\n // XOR input with output\n this._partialOutput.clear();\n for(var i = 0; i < this._ints; ++i) {\n this._partialOutput.putInt32(input.getInt32() ^ this._outBlock[i]);\n }\n\n if(partialBytes <= 0 || finish) {\n // handle overflow prior to hashing\n if(finish) {\n // get block overflow\n var overflow = inputLength % this.blockSize;\n this._cipherLength += overflow;\n // truncate for hash function\n this._partialOutput.truncate(this.blockSize - overflow);\n } else {\n this._cipherLength += this.blockSize;\n }\n\n // get output block for hashing\n for(var i = 0; i < this._ints; ++i) {\n this._outBlock[i] = this._partialOutput.getInt32();\n }\n this._partialOutput.read -= this.blockSize;\n }\n\n // skip any previous partial bytes\n if(this._partialBytes > 0) {\n this._partialOutput.getBytes(this._partialBytes);\n }\n\n if(partialBytes > 0 && !finish) {\n // block still incomplete, restore input buffer, get partial output,\n // and return early\n input.read -= this.blockSize;\n output.putBytes(this._partialOutput.getBytes(\n partialBytes - this._partialBytes));\n this._partialBytes = partialBytes;\n return true;\n }\n\n output.putBytes(this._partialOutput.getBytes(\n inputLength - this._partialBytes));\n this._partialBytes = 0;\n }\n\n // update hash block S\n this._s = this.ghash(this._hashSubkey, this._s, this._outBlock);\n\n // increment counter (input block)\n inc32(this._inBlock);\n};\n\nmodes.gcm.prototype.decrypt = function(input, output, finish) {\n // not enough input to decrypt\n var inputLength = input.length();\n if(inputLength < this.blockSize && !(finish && inputLength > 0)) {\n return true;\n }\n\n // encrypt block (GCM always uses encryption mode)\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // increment counter (input block)\n inc32(this._inBlock);\n\n // update hash block S\n this._hashBlock[0] = input.getInt32();\n this._hashBlock[1] = input.getInt32();\n this._hashBlock[2] = input.getInt32();\n this._hashBlock[3] = input.getInt32();\n this._s = this.ghash(this._hashSubkey, this._s, this._hashBlock);\n\n // XOR hash input with output\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(this._outBlock[i] ^ this._hashBlock[i]);\n }\n\n // increment cipher data length\n if(inputLength < this.blockSize) {\n this._cipherLength += inputLength % this.blockSize;\n } else {\n this._cipherLength += this.blockSize;\n }\n};\n\nmodes.gcm.prototype.afterFinish = function(output, options) {\n var rval = true;\n\n // handle overflow\n if(options.decrypt && options.overflow) {\n output.truncate(this.blockSize - options.overflow);\n }\n\n // handle authentication tag\n this.tag = forge.util.createBuffer();\n\n // concatenate additional data length with cipher length\n var lengths = this._aDataLength.concat(from64To32(this._cipherLength * 8));\n\n // include lengths in hash\n this._s = this.ghash(this._hashSubkey, this._s, lengths);\n\n // do GCTR(J_0, S)\n var tag = [];\n this.cipher.encrypt(this._j0, tag);\n for(var i = 0; i < this._ints; ++i) {\n this.tag.putInt32(this._s[i] ^ tag[i]);\n }\n\n // trim tag to length\n this.tag.truncate(this.tag.length() % (this._tagLength / 8));\n\n // check authentication tag\n if(options.decrypt && this.tag.bytes() !== this._tag) {\n rval = false;\n }\n\n return rval;\n};\n\n/**\n * See NIST SP-800-38D 6.3 (Algorithm 1). This function performs Galois\n * field multiplication. The field, GF(2^128), is defined by the polynomial:\n *\n * x^128 + x^7 + x^2 + x + 1\n *\n * Which is represented in little-endian binary form as: 11100001 (0xe1). When\n * the value of a coefficient is 1, a bit is set. The value R, is the\n * concatenation of this value and 120 zero bits, yielding a 128-bit value\n * which matches the block size.\n *\n * This function will multiply two elements (vectors of bytes), X and Y, in\n * the field GF(2^128). The result is initialized to zero. For each bit of\n * X (out of 128), x_i, if x_i is set, then the result is multiplied (XOR'd)\n * by the current value of Y. For each bit, the value of Y will be raised by\n * a power of x (multiplied by the polynomial x). This can be achieved by\n * shifting Y once to the right. If the current value of Y, prior to being\n * multiplied by x, has 0 as its LSB, then it is a 127th degree polynomial.\n * Otherwise, we must divide by R after shifting to find the remainder.\n *\n * @param x the first block to multiply by the second.\n * @param y the second block to multiply by the first.\n *\n * @return the block result of the multiplication.\n */\nmodes.gcm.prototype.multiply = function(x, y) {\n var z_i = [0, 0, 0, 0];\n var v_i = y.slice(0);\n\n // calculate Z_128 (block has 128 bits)\n for(var i = 0; i < 128; ++i) {\n // if x_i is 0, Z_{i+1} = Z_i (unchanged)\n // else Z_{i+1} = Z_i ^ V_i\n // get x_i by finding 32-bit int position, then left shift 1 by remainder\n var x_i = x[(i / 32) | 0] & (1 << (31 - i % 32));\n if(x_i) {\n z_i[0] ^= v_i[0];\n z_i[1] ^= v_i[1];\n z_i[2] ^= v_i[2];\n z_i[3] ^= v_i[3];\n }\n\n // if LSB(V_i) is 1, V_i = V_i >> 1\n // else V_i = (V_i >> 1) ^ R\n this.pow(v_i, v_i);\n }\n\n return z_i;\n};\n\nmodes.gcm.prototype.pow = function(x, out) {\n // if LSB(x) is 1, x = x >>> 1\n // else x = (x >>> 1) ^ R\n var lsb = x[3] & 1;\n\n // always do x >>> 1:\n // starting with the rightmost integer, shift each integer to the right\n // one bit, pulling in the bit from the integer to the left as its top\n // most bit (do this for the last 3 integers)\n for(var i = 3; i > 0; --i) {\n out[i] = (x[i] >>> 1) | ((x[i - 1] & 1) << 31);\n }\n // shift the first integer normally\n out[0] = x[0] >>> 1;\n\n // if lsb was not set, then polynomial had a degree of 127 and doesn't\n // need to divided; otherwise, XOR with R to find the remainder; we only\n // need to XOR the first integer since R technically ends w/120 zero bits\n if(lsb) {\n out[0] ^= this._R;\n }\n};\n\nmodes.gcm.prototype.tableMultiply = function(x) {\n // assumes 4-bit tables are used\n var z = [0, 0, 0, 0];\n for(var i = 0; i < 32; ++i) {\n var idx = (i / 8) | 0;\n var x_i = (x[idx] >>> ((7 - (i % 8)) * 4)) & 0xF;\n var ah = this._m[i][x_i];\n z[0] ^= ah[0];\n z[1] ^= ah[1];\n z[2] ^= ah[2];\n z[3] ^= ah[3];\n }\n return z;\n};\n\n/**\n * A continuing version of the GHASH algorithm that operates on a single\n * block. The hash block, last hash value (Ym) and the new block to hash\n * are given.\n *\n * @param h the hash block.\n * @param y the previous value for Ym, use [0, 0, 0, 0] for a new hash.\n * @param x the block to hash.\n *\n * @return the hashed value (Ym).\n */\nmodes.gcm.prototype.ghash = function(h, y, x) {\n y[0] ^= x[0];\n y[1] ^= x[1];\n y[2] ^= x[2];\n y[3] ^= x[3];\n return this.tableMultiply(y);\n //return this.multiply(y, h);\n};\n\n/**\n * Precomputes a table for multiplying against the hash subkey. This\n * mechanism provides a substantial speed increase over multiplication\n * performed without a table. The table-based multiplication this table is\n * for solves X * H by multiplying each component of X by H and then\n * composing the results together using XOR.\n *\n * This function can be used to generate tables with different bit sizes\n * for the components, however, this implementation assumes there are\n * 32 components of X (which is a 16 byte vector), therefore each component\n * takes 4-bits (so the table is constructed with bits=4).\n *\n * @param h the hash subkey.\n * @param bits the bit size for a component.\n */\nmodes.gcm.prototype.generateHashTable = function(h, bits) {\n // TODO: There are further optimizations that would use only the\n // first table M_0 (or some variant) along with a remainder table;\n // this can be explored in the future\n var multiplier = 8 / bits;\n var perInt = 4 * multiplier;\n var size = 16 * multiplier;\n var m = new Array(size);\n for(var i = 0; i < size; ++i) {\n var tmp = [0, 0, 0, 0];\n var idx = (i / perInt) | 0;\n var shft = ((perInt - 1 - (i % perInt)) * bits);\n tmp[idx] = (1 << (bits - 1)) << shft;\n m[i] = this.generateSubHashTable(this.multiply(tmp, h), bits);\n }\n return m;\n};\n\n/**\n * Generates a table for multiplying against the hash subkey for one\n * particular component (out of all possible component values).\n *\n * @param mid the pre-multiplied value for the middle key of the table.\n * @param bits the bit size for a component.\n */\nmodes.gcm.prototype.generateSubHashTable = function(mid, bits) {\n // compute the table quickly by minimizing the number of\n // POW operations -- they only need to be performed for powers of 2,\n // all other entries can be composed from those powers using XOR\n var size = 1 << bits;\n var half = size >>> 1;\n var m = new Array(size);\n m[half] = mid.slice(0);\n var i = half >>> 1;\n while(i > 0) {\n // raise m0[2 * i] and store in m0[i]\n this.pow(m[2 * i], m[i] = []);\n i >>= 1;\n }\n i = 2;\n while(i < half) {\n for(var j = 1; j < i; ++j) {\n var m_i = m[i];\n var m_j = m[j];\n m[i + j] = [\n m_i[0] ^ m_j[0],\n m_i[1] ^ m_j[1],\n m_i[2] ^ m_j[2],\n m_i[3] ^ m_j[3]\n ];\n }\n i *= 2;\n }\n m[0] = [0, 0, 0, 0];\n /* Note: We could avoid storing these by doing composition during multiply\n calculate top half using composition by speed is preferred. */\n for(i = half + 1; i < size; ++i) {\n var c = m[i ^ half];\n m[i] = [mid[0] ^ c[0], mid[1] ^ c[1], mid[2] ^ c[2], mid[3] ^ c[3]];\n }\n return m;\n};\n\n/** Utility functions */\n\nfunction transformIV(iv, blockSize) {\n if(typeof iv === 'string') {\n // convert iv string into byte buffer\n iv = forge.util.createBuffer(iv);\n }\n\n if(forge.util.isArray(iv) && iv.length > 4) {\n // convert iv byte array into byte buffer\n var tmp = iv;\n iv = forge.util.createBuffer();\n for(var i = 0; i < tmp.length; ++i) {\n iv.putByte(tmp[i]);\n }\n }\n\n if(iv.length() < blockSize) {\n throw new Error(\n 'Invalid IV length; got ' + iv.length() +\n ' bytes and expected ' + blockSize + ' bytes.');\n }\n\n if(!forge.util.isArray(iv)) {\n // convert iv byte buffer into 32-bit integer array\n var ints = [];\n var blocks = blockSize / 4;\n for(var i = 0; i < blocks; ++i) {\n ints.push(iv.getInt32());\n }\n iv = ints;\n }\n\n return iv;\n}\n\nfunction inc32(block) {\n // increment last 32 bits of block only\n block[block.length - 1] = (block[block.length - 1] + 1) & 0xFFFFFFFF;\n}\n\nfunction from64To32(num) {\n // convert 64-bit number to two BE Int32s\n return [(num / 0x100000000) | 0, num & 0xFFFFFFFF];\n}\n","var modeModules = {\n ECB: require('./ecb'),\n CBC: require('./cbc'),\n CFB: require('./cfb'),\n CFB8: require('./cfb8'),\n CFB1: require('./cfb1'),\n OFB: require('./ofb'),\n CTR: require('./ctr'),\n GCM: require('./ctr')\n}\n\nvar modes = require('./list.json')\n\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n","'use strict'\n\nconst table = require('./base-table.json')\n\n// map for codecConstant -> code\nconst constants = {}\n\nfor (const [name, code] of Object.entries(table)) {\n constants[name.toUpperCase().replace(/-/g, '_')] = code\n}\n\nmodule.exports = Object.freeze(constants)\n","/**\n * Password-Based Key-Derivation Function #2 implementation.\n *\n * See RFC 2898 for details.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2013 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./hmac');\nrequire('./md');\nrequire('./util');\n\nvar pkcs5 = forge.pkcs5 = forge.pkcs5 || {};\n\nvar crypto;\nif(forge.util.isNodejs && !forge.options.usePureJavaScript) {\n crypto = require('crypto');\n}\n\n/**\n * Derives a key from a password.\n *\n * @param p the password as a binary-encoded string of bytes.\n * @param s the salt as a binary-encoded string of bytes.\n * @param c the iteration count, a positive integer.\n * @param dkLen the intended length, in bytes, of the derived key,\n * (max: 2^32 - 1) * hash length of the PRF.\n * @param [md] the message digest (or algorithm identifier as a string) to use\n * in the PRF, defaults to SHA-1.\n * @param [callback(err, key)] presence triggers asynchronous version, called\n * once the operation completes.\n *\n * @return the derived key, as a binary-encoded string of bytes, for the\n * synchronous version (if no callback is specified).\n */\nmodule.exports = forge.pbkdf2 = pkcs5.pbkdf2 = function(\n p, s, c, dkLen, md, callback) {\n if(typeof md === 'function') {\n callback = md;\n md = null;\n }\n\n // use native implementation if possible and not disabled, note that\n // some node versions only support SHA-1, others allow digest to be changed\n if(forge.util.isNodejs && !forge.options.usePureJavaScript &&\n crypto.pbkdf2 && (md === null || typeof md !== 'object') &&\n (crypto.pbkdf2Sync.length > 4 || (!md || md === 'sha1'))) {\n if(typeof md !== 'string') {\n // default prf to SHA-1\n md = 'sha1';\n }\n p = Buffer.from(p, 'binary');\n s = Buffer.from(s, 'binary');\n if(!callback) {\n if(crypto.pbkdf2Sync.length === 4) {\n return crypto.pbkdf2Sync(p, s, c, dkLen).toString('binary');\n }\n return crypto.pbkdf2Sync(p, s, c, dkLen, md).toString('binary');\n }\n if(crypto.pbkdf2Sync.length === 4) {\n return crypto.pbkdf2(p, s, c, dkLen, function(err, key) {\n if(err) {\n return callback(err);\n }\n callback(null, key.toString('binary'));\n });\n }\n return crypto.pbkdf2(p, s, c, dkLen, md, function(err, key) {\n if(err) {\n return callback(err);\n }\n callback(null, key.toString('binary'));\n });\n }\n\n if(typeof md === 'undefined' || md === null) {\n // default prf to SHA-1\n md = 'sha1';\n }\n if(typeof md === 'string') {\n if(!(md in forge.md.algorithms)) {\n throw new Error('Unknown hash algorithm: ' + md);\n }\n md = forge.md[md].create();\n }\n\n var hLen = md.digestLength;\n\n /* 1. If dkLen > (2^32 - 1) * hLen, output \"derived key too long\" and\n stop. */\n if(dkLen > (0xFFFFFFFF * hLen)) {\n var err = new Error('Derived key is too long.');\n if(callback) {\n return callback(err);\n }\n throw err;\n }\n\n /* 2. Let len be the number of hLen-octet blocks in the derived key,\n rounding up, and let r be the number of octets in the last\n block:\n\n len = CEIL(dkLen / hLen),\n r = dkLen - (len - 1) * hLen. */\n var len = Math.ceil(dkLen / hLen);\n var r = dkLen - (len - 1) * hLen;\n\n /* 3. For each block of the derived key apply the function F defined\n below to the password P, the salt S, the iteration count c, and\n the block index to compute the block:\n\n T_1 = F(P, S, c, 1),\n T_2 = F(P, S, c, 2),\n ...\n T_len = F(P, S, c, len),\n\n where the function F is defined as the exclusive-or sum of the\n first c iterates of the underlying pseudorandom function PRF\n applied to the password P and the concatenation of the salt S\n and the block index i:\n\n F(P, S, c, i) = u_1 XOR u_2 XOR ... XOR u_c\n\n where\n\n u_1 = PRF(P, S || INT(i)),\n u_2 = PRF(P, u_1),\n ...\n u_c = PRF(P, u_{c-1}).\n\n Here, INT(i) is a four-octet encoding of the integer i, most\n significant octet first. */\n var prf = forge.hmac.create();\n prf.start(md, p);\n var dk = '';\n var xor, u_c, u_c1;\n\n // sync version\n if(!callback) {\n for(var i = 1; i <= len; ++i) {\n // PRF(P, S || INT(i)) (first iteration)\n prf.start(null, null);\n prf.update(s);\n prf.update(forge.util.int32ToBytes(i));\n xor = u_c1 = prf.digest().getBytes();\n\n // PRF(P, u_{c-1}) (other iterations)\n for(var j = 2; j <= c; ++j) {\n prf.start(null, null);\n prf.update(u_c1);\n u_c = prf.digest().getBytes();\n // F(p, s, c, i)\n xor = forge.util.xorBytes(xor, u_c, hLen);\n u_c1 = u_c;\n }\n\n /* 4. Concatenate the blocks and extract the first dkLen octets to\n produce a derived key DK:\n\n DK = T_1 || T_2 || ... || T_len<0..r-1> */\n dk += (i < len) ? xor : xor.substr(0, r);\n }\n /* 5. Output the derived key DK. */\n return dk;\n }\n\n // async version\n var i = 1, j;\n function outer() {\n if(i > len) {\n // done\n return callback(null, dk);\n }\n\n // PRF(P, S || INT(i)) (first iteration)\n prf.start(null, null);\n prf.update(s);\n prf.update(forge.util.int32ToBytes(i));\n xor = u_c1 = prf.digest().getBytes();\n\n // PRF(P, u_{c-1}) (other iterations)\n j = 2;\n inner();\n }\n\n function inner() {\n if(j <= c) {\n prf.start(null, null);\n prf.update(u_c1);\n u_c = prf.digest().getBytes();\n // F(p, s, c, i)\n xor = forge.util.xorBytes(xor, u_c, hLen);\n u_c1 = u_c;\n ++j;\n return forge.util.setImmediate(inner);\n }\n\n /* 4. Concatenate the blocks and extract the first dkLen octets to\n produce a derived key DK:\n\n DK = T_1 || T_2 || ... || T_len<0..r-1> */\n dk += (i < len) ? xor : xor.substr(0, r);\n\n ++i;\n outer();\n }\n\n outer();\n};\n","/**\n * Password-based encryption functions.\n *\n * @author Dave Longley\n * @author Stefan Siegl \n *\n * Copyright (c) 2010-2013 Digital Bazaar, Inc.\n * Copyright (c) 2012 Stefan Siegl \n *\n * An EncryptedPrivateKeyInfo:\n *\n * EncryptedPrivateKeyInfo ::= SEQUENCE {\n * encryptionAlgorithm EncryptionAlgorithmIdentifier,\n * encryptedData EncryptedData }\n *\n * EncryptionAlgorithmIdentifier ::= AlgorithmIdentifier\n *\n * EncryptedData ::= OCTET STRING\n */\nvar forge = require('./forge');\nrequire('./aes');\nrequire('./asn1');\nrequire('./des');\nrequire('./md');\nrequire('./oids');\nrequire('./pbkdf2');\nrequire('./pem');\nrequire('./random');\nrequire('./rc2');\nrequire('./rsa');\nrequire('./util');\n\nif(typeof BigInteger === 'undefined') {\n var BigInteger = forge.jsbn.BigInteger;\n}\n\n// shortcut for asn.1 API\nvar asn1 = forge.asn1;\n\n/* Password-based encryption implementation. */\nvar pki = forge.pki = forge.pki || {};\nmodule.exports = pki.pbe = forge.pbe = forge.pbe || {};\nvar oids = pki.oids;\n\n// validator for an EncryptedPrivateKeyInfo structure\n// Note: Currently only works w/algorithm params\nvar encryptedPrivateKeyValidator = {\n name: 'EncryptedPrivateKeyInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'EncryptedPrivateKeyInfo.encryptionAlgorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'AlgorithmIdentifier.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'encryptionOid'\n }, {\n name: 'AlgorithmIdentifier.parameters',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n captureAsn1: 'encryptionParams'\n }]\n }, {\n // encryptedData\n name: 'EncryptedPrivateKeyInfo.encryptedData',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'encryptedData'\n }]\n};\n\n// validator for a PBES2Algorithms structure\n// Note: Currently only works w/PBKDF2 + AES encryption schemes\nvar PBES2AlgorithmsValidator = {\n name: 'PBES2Algorithms',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'PBES2Algorithms.keyDerivationFunc',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'PBES2Algorithms.keyDerivationFunc.oid',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'kdfOid'\n }, {\n name: 'PBES2Algorithms.params',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'PBES2Algorithms.params.salt',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'kdfSalt'\n }, {\n name: 'PBES2Algorithms.params.iterationCount',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'kdfIterationCount'\n }, {\n name: 'PBES2Algorithms.params.keyLength',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n optional: true,\n capture: 'keyLength'\n }, {\n // prf\n name: 'PBES2Algorithms.params.prf',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n optional: true,\n value: [{\n name: 'PBES2Algorithms.params.prf.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'prfOid'\n }]\n }]\n }]\n }, {\n name: 'PBES2Algorithms.encryptionScheme',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'PBES2Algorithms.encryptionScheme.oid',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'encOid'\n }, {\n name: 'PBES2Algorithms.encryptionScheme.iv',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'encIv'\n }]\n }]\n};\n\nvar pkcs12PbeParamsValidator = {\n name: 'pkcs-12PbeParams',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'pkcs-12PbeParams.salt',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'salt'\n }, {\n name: 'pkcs-12PbeParams.iterations',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'iterations'\n }]\n};\n\n/**\n * Encrypts a ASN.1 PrivateKeyInfo object, producing an EncryptedPrivateKeyInfo.\n *\n * PBES2Algorithms ALGORITHM-IDENTIFIER ::=\n * { {PBES2-params IDENTIFIED BY id-PBES2}, ...}\n *\n * id-PBES2 OBJECT IDENTIFIER ::= {pkcs-5 13}\n *\n * PBES2-params ::= SEQUENCE {\n * keyDerivationFunc AlgorithmIdentifier {{PBES2-KDFs}},\n * encryptionScheme AlgorithmIdentifier {{PBES2-Encs}}\n * }\n *\n * PBES2-KDFs ALGORITHM-IDENTIFIER ::=\n * { {PBKDF2-params IDENTIFIED BY id-PBKDF2}, ... }\n *\n * PBES2-Encs ALGORITHM-IDENTIFIER ::= { ... }\n *\n * PBKDF2-params ::= SEQUENCE {\n * salt CHOICE {\n * specified OCTET STRING,\n * otherSource AlgorithmIdentifier {{PBKDF2-SaltSources}}\n * },\n * iterationCount INTEGER (1..MAX),\n * keyLength INTEGER (1..MAX) OPTIONAL,\n * prf AlgorithmIdentifier {{PBKDF2-PRFs}} DEFAULT algid-hmacWithSHA1\n * }\n *\n * @param obj the ASN.1 PrivateKeyInfo object.\n * @param password the password to encrypt with.\n * @param options:\n * algorithm the encryption algorithm to use\n * ('aes128', 'aes192', 'aes256', '3des'), defaults to 'aes128'.\n * count the iteration count to use.\n * saltSize the salt size to use.\n * prfAlgorithm the PRF message digest algorithm to use\n * ('sha1', 'sha224', 'sha256', 'sha384', 'sha512')\n *\n * @return the ASN.1 EncryptedPrivateKeyInfo.\n */\npki.encryptPrivateKeyInfo = function(obj, password, options) {\n // set default options\n options = options || {};\n options.saltSize = options.saltSize || 8;\n options.count = options.count || 2048;\n options.algorithm = options.algorithm || 'aes128';\n options.prfAlgorithm = options.prfAlgorithm || 'sha1';\n\n // generate PBE params\n var salt = forge.random.getBytesSync(options.saltSize);\n var count = options.count;\n var countBytes = asn1.integerToDer(count);\n var dkLen;\n var encryptionAlgorithm;\n var encryptedData;\n if(options.algorithm.indexOf('aes') === 0 || options.algorithm === 'des') {\n // do PBES2\n var ivLen, encOid, cipherFn;\n switch(options.algorithm) {\n case 'aes128':\n dkLen = 16;\n ivLen = 16;\n encOid = oids['aes128-CBC'];\n cipherFn = forge.aes.createEncryptionCipher;\n break;\n case 'aes192':\n dkLen = 24;\n ivLen = 16;\n encOid = oids['aes192-CBC'];\n cipherFn = forge.aes.createEncryptionCipher;\n break;\n case 'aes256':\n dkLen = 32;\n ivLen = 16;\n encOid = oids['aes256-CBC'];\n cipherFn = forge.aes.createEncryptionCipher;\n break;\n case 'des':\n dkLen = 8;\n ivLen = 8;\n encOid = oids['desCBC'];\n cipherFn = forge.des.createEncryptionCipher;\n break;\n default:\n var error = new Error('Cannot encrypt private key. Unknown encryption algorithm.');\n error.algorithm = options.algorithm;\n throw error;\n }\n\n // get PRF message digest\n var prfAlgorithm = 'hmacWith' + options.prfAlgorithm.toUpperCase();\n var md = prfAlgorithmToMessageDigest(prfAlgorithm);\n\n // encrypt private key using pbe SHA-1 and AES/DES\n var dk = forge.pkcs5.pbkdf2(password, salt, count, dkLen, md);\n var iv = forge.random.getBytesSync(ivLen);\n var cipher = cipherFn(dk);\n cipher.start(iv);\n cipher.update(asn1.toDer(obj));\n cipher.finish();\n encryptedData = cipher.output.getBytes();\n\n // get PBKDF2-params\n var params = createPbkdf2Params(salt, countBytes, dkLen, prfAlgorithm);\n\n encryptionAlgorithm = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(oids['pkcs5PBES2']).getBytes()),\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // keyDerivationFunc\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(oids['pkcs5PBKDF2']).getBytes()),\n // PBKDF2-params\n params\n ]),\n // encryptionScheme\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(encOid).getBytes()),\n // iv\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, iv)\n ])\n ])\n ]);\n } else if(options.algorithm === '3des') {\n // Do PKCS12 PBE\n dkLen = 24;\n\n var saltBytes = new forge.util.ByteBuffer(salt);\n var dk = pki.pbe.generatePkcs12Key(password, saltBytes, 1, count, dkLen);\n var iv = pki.pbe.generatePkcs12Key(password, saltBytes, 2, count, dkLen);\n var cipher = forge.des.createEncryptionCipher(dk);\n cipher.start(iv);\n cipher.update(asn1.toDer(obj));\n cipher.finish();\n encryptedData = cipher.output.getBytes();\n\n encryptionAlgorithm = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(oids['pbeWithSHAAnd3-KeyTripleDES-CBC']).getBytes()),\n // pkcs-12PbeParams\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // salt\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, salt),\n // iteration count\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n countBytes.getBytes())\n ])\n ]);\n } else {\n var error = new Error('Cannot encrypt private key. Unknown encryption algorithm.');\n error.algorithm = options.algorithm;\n throw error;\n }\n\n // EncryptedPrivateKeyInfo\n var rval = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // encryptionAlgorithm\n encryptionAlgorithm,\n // encryptedData\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, encryptedData)\n ]);\n return rval;\n};\n\n/**\n * Decrypts a ASN.1 PrivateKeyInfo object.\n *\n * @param obj the ASN.1 EncryptedPrivateKeyInfo object.\n * @param password the password to decrypt with.\n *\n * @return the ASN.1 PrivateKeyInfo on success, null on failure.\n */\npki.decryptPrivateKeyInfo = function(obj, password) {\n var rval = null;\n\n // get PBE params\n var capture = {};\n var errors = [];\n if(!asn1.validate(obj, encryptedPrivateKeyValidator, capture, errors)) {\n var error = new Error('Cannot read encrypted private key. ' +\n 'ASN.1 object is not a supported EncryptedPrivateKeyInfo.');\n error.errors = errors;\n throw error;\n }\n\n // get cipher\n var oid = asn1.derToOid(capture.encryptionOid);\n var cipher = pki.pbe.getCipher(oid, capture.encryptionParams, password);\n\n // get encrypted data\n var encrypted = forge.util.createBuffer(capture.encryptedData);\n\n cipher.update(encrypted);\n if(cipher.finish()) {\n rval = asn1.fromDer(cipher.output);\n }\n\n return rval;\n};\n\n/**\n * Converts a EncryptedPrivateKeyInfo to PEM format.\n *\n * @param epki the EncryptedPrivateKeyInfo.\n * @param maxline the maximum characters per line, defaults to 64.\n *\n * @return the PEM-formatted encrypted private key.\n */\npki.encryptedPrivateKeyToPem = function(epki, maxline) {\n // convert to DER, then PEM-encode\n var msg = {\n type: 'ENCRYPTED PRIVATE KEY',\n body: asn1.toDer(epki).getBytes()\n };\n return forge.pem.encode(msg, {maxline: maxline});\n};\n\n/**\n * Converts a PEM-encoded EncryptedPrivateKeyInfo to ASN.1 format. Decryption\n * is not performed.\n *\n * @param pem the EncryptedPrivateKeyInfo in PEM-format.\n *\n * @return the ASN.1 EncryptedPrivateKeyInfo.\n */\npki.encryptedPrivateKeyFromPem = function(pem) {\n var msg = forge.pem.decode(pem)[0];\n\n if(msg.type !== 'ENCRYPTED PRIVATE KEY') {\n var error = new Error('Could not convert encrypted private key from PEM; ' +\n 'PEM header type is \"ENCRYPTED PRIVATE KEY\".');\n error.headerType = msg.type;\n throw error;\n }\n if(msg.procType && msg.procType.type === 'ENCRYPTED') {\n throw new Error('Could not convert encrypted private key from PEM; ' +\n 'PEM is encrypted.');\n }\n\n // convert DER to ASN.1 object\n return asn1.fromDer(msg.body);\n};\n\n/**\n * Encrypts an RSA private key. By default, the key will be wrapped in\n * a PrivateKeyInfo and encrypted to produce a PKCS#8 EncryptedPrivateKeyInfo.\n * This is the standard, preferred way to encrypt a private key.\n *\n * To produce a non-standard PEM-encrypted private key that uses encapsulated\n * headers to indicate the encryption algorithm (old-style non-PKCS#8 OpenSSL\n * private key encryption), set the 'legacy' option to true. Note: Using this\n * option will cause the iteration count to be forced to 1.\n *\n * Note: The 'des' algorithm is supported, but it is not considered to be\n * secure because it only uses a single 56-bit key. If possible, it is highly\n * recommended that a different algorithm be used.\n *\n * @param rsaKey the RSA key to encrypt.\n * @param password the password to use.\n * @param options:\n * algorithm: the encryption algorithm to use\n * ('aes128', 'aes192', 'aes256', '3des', 'des').\n * count: the iteration count to use.\n * saltSize: the salt size to use.\n * legacy: output an old non-PKCS#8 PEM-encrypted+encapsulated\n * headers (DEK-Info) private key.\n *\n * @return the PEM-encoded ASN.1 EncryptedPrivateKeyInfo.\n */\npki.encryptRsaPrivateKey = function(rsaKey, password, options) {\n // standard PKCS#8\n options = options || {};\n if(!options.legacy) {\n // encrypt PrivateKeyInfo\n var rval = pki.wrapRsaPrivateKey(pki.privateKeyToAsn1(rsaKey));\n rval = pki.encryptPrivateKeyInfo(rval, password, options);\n return pki.encryptedPrivateKeyToPem(rval);\n }\n\n // legacy non-PKCS#8\n var algorithm;\n var iv;\n var dkLen;\n var cipherFn;\n switch(options.algorithm) {\n case 'aes128':\n algorithm = 'AES-128-CBC';\n dkLen = 16;\n iv = forge.random.getBytesSync(16);\n cipherFn = forge.aes.createEncryptionCipher;\n break;\n case 'aes192':\n algorithm = 'AES-192-CBC';\n dkLen = 24;\n iv = forge.random.getBytesSync(16);\n cipherFn = forge.aes.createEncryptionCipher;\n break;\n case 'aes256':\n algorithm = 'AES-256-CBC';\n dkLen = 32;\n iv = forge.random.getBytesSync(16);\n cipherFn = forge.aes.createEncryptionCipher;\n break;\n case '3des':\n algorithm = 'DES-EDE3-CBC';\n dkLen = 24;\n iv = forge.random.getBytesSync(8);\n cipherFn = forge.des.createEncryptionCipher;\n break;\n case 'des':\n algorithm = 'DES-CBC';\n dkLen = 8;\n iv = forge.random.getBytesSync(8);\n cipherFn = forge.des.createEncryptionCipher;\n break;\n default:\n var error = new Error('Could not encrypt RSA private key; unsupported ' +\n 'encryption algorithm \"' + options.algorithm + '\".');\n error.algorithm = options.algorithm;\n throw error;\n }\n\n // encrypt private key using OpenSSL legacy key derivation\n var dk = forge.pbe.opensslDeriveBytes(password, iv.substr(0, 8), dkLen);\n var cipher = cipherFn(dk);\n cipher.start(iv);\n cipher.update(asn1.toDer(pki.privateKeyToAsn1(rsaKey)));\n cipher.finish();\n\n var msg = {\n type: 'RSA PRIVATE KEY',\n procType: {\n version: '4',\n type: 'ENCRYPTED'\n },\n dekInfo: {\n algorithm: algorithm,\n parameters: forge.util.bytesToHex(iv).toUpperCase()\n },\n body: cipher.output.getBytes()\n };\n return forge.pem.encode(msg);\n};\n\n/**\n * Decrypts an RSA private key.\n *\n * @param pem the PEM-formatted EncryptedPrivateKeyInfo to decrypt.\n * @param password the password to use.\n *\n * @return the RSA key on success, null on failure.\n */\npki.decryptRsaPrivateKey = function(pem, password) {\n var rval = null;\n\n var msg = forge.pem.decode(pem)[0];\n\n if(msg.type !== 'ENCRYPTED PRIVATE KEY' &&\n msg.type !== 'PRIVATE KEY' &&\n msg.type !== 'RSA PRIVATE KEY') {\n var error = new Error('Could not convert private key from PEM; PEM header type ' +\n 'is not \"ENCRYPTED PRIVATE KEY\", \"PRIVATE KEY\", or \"RSA PRIVATE KEY\".');\n error.headerType = error;\n throw error;\n }\n\n if(msg.procType && msg.procType.type === 'ENCRYPTED') {\n var dkLen;\n var cipherFn;\n switch(msg.dekInfo.algorithm) {\n case 'DES-CBC':\n dkLen = 8;\n cipherFn = forge.des.createDecryptionCipher;\n break;\n case 'DES-EDE3-CBC':\n dkLen = 24;\n cipherFn = forge.des.createDecryptionCipher;\n break;\n case 'AES-128-CBC':\n dkLen = 16;\n cipherFn = forge.aes.createDecryptionCipher;\n break;\n case 'AES-192-CBC':\n dkLen = 24;\n cipherFn = forge.aes.createDecryptionCipher;\n break;\n case 'AES-256-CBC':\n dkLen = 32;\n cipherFn = forge.aes.createDecryptionCipher;\n break;\n case 'RC2-40-CBC':\n dkLen = 5;\n cipherFn = function(key) {\n return forge.rc2.createDecryptionCipher(key, 40);\n };\n break;\n case 'RC2-64-CBC':\n dkLen = 8;\n cipherFn = function(key) {\n return forge.rc2.createDecryptionCipher(key, 64);\n };\n break;\n case 'RC2-128-CBC':\n dkLen = 16;\n cipherFn = function(key) {\n return forge.rc2.createDecryptionCipher(key, 128);\n };\n break;\n default:\n var error = new Error('Could not decrypt private key; unsupported ' +\n 'encryption algorithm \"' + msg.dekInfo.algorithm + '\".');\n error.algorithm = msg.dekInfo.algorithm;\n throw error;\n }\n\n // use OpenSSL legacy key derivation\n var iv = forge.util.hexToBytes(msg.dekInfo.parameters);\n var dk = forge.pbe.opensslDeriveBytes(password, iv.substr(0, 8), dkLen);\n var cipher = cipherFn(dk);\n cipher.start(iv);\n cipher.update(forge.util.createBuffer(msg.body));\n if(cipher.finish()) {\n rval = cipher.output.getBytes();\n } else {\n return rval;\n }\n } else {\n rval = msg.body;\n }\n\n if(msg.type === 'ENCRYPTED PRIVATE KEY') {\n rval = pki.decryptPrivateKeyInfo(asn1.fromDer(rval), password);\n } else {\n // decryption already performed above\n rval = asn1.fromDer(rval);\n }\n\n if(rval !== null) {\n rval = pki.privateKeyFromAsn1(rval);\n }\n\n return rval;\n};\n\n/**\n * Derives a PKCS#12 key.\n *\n * @param password the password to derive the key material from, null or\n * undefined for none.\n * @param salt the salt, as a ByteBuffer, to use.\n * @param id the PKCS#12 ID byte (1 = key material, 2 = IV, 3 = MAC).\n * @param iter the iteration count.\n * @param n the number of bytes to derive from the password.\n * @param md the message digest to use, defaults to SHA-1.\n *\n * @return a ByteBuffer with the bytes derived from the password.\n */\npki.pbe.generatePkcs12Key = function(password, salt, id, iter, n, md) {\n var j, l;\n\n if(typeof md === 'undefined' || md === null) {\n if(!('sha1' in forge.md)) {\n throw new Error('\"sha1\" hash algorithm unavailable.');\n }\n md = forge.md.sha1.create();\n }\n\n var u = md.digestLength;\n var v = md.blockLength;\n var result = new forge.util.ByteBuffer();\n\n /* Convert password to Unicode byte buffer + trailing 0-byte. */\n var passBuf = new forge.util.ByteBuffer();\n if(password !== null && password !== undefined) {\n for(l = 0; l < password.length; l++) {\n passBuf.putInt16(password.charCodeAt(l));\n }\n passBuf.putInt16(0);\n }\n\n /* Length of salt and password in BYTES. */\n var p = passBuf.length();\n var s = salt.length();\n\n /* 1. Construct a string, D (the \"diversifier\"), by concatenating\n v copies of ID. */\n var D = new forge.util.ByteBuffer();\n D.fillWithByte(id, v);\n\n /* 2. Concatenate copies of the salt together to create a string S of length\n v * ceil(s / v) bytes (the final copy of the salt may be trunacted\n to create S).\n Note that if the salt is the empty string, then so is S. */\n var Slen = v * Math.ceil(s / v);\n var S = new forge.util.ByteBuffer();\n for(l = 0; l < Slen; l++) {\n S.putByte(salt.at(l % s));\n }\n\n /* 3. Concatenate copies of the password together to create a string P of\n length v * ceil(p / v) bytes (the final copy of the password may be\n truncated to create P).\n Note that if the password is the empty string, then so is P. */\n var Plen = v * Math.ceil(p / v);\n var P = new forge.util.ByteBuffer();\n for(l = 0; l < Plen; l++) {\n P.putByte(passBuf.at(l % p));\n }\n\n /* 4. Set I=S||P to be the concatenation of S and P. */\n var I = S;\n I.putBuffer(P);\n\n /* 5. Set c=ceil(n / u). */\n var c = Math.ceil(n / u);\n\n /* 6. For i=1, 2, ..., c, do the following: */\n for(var i = 1; i <= c; i++) {\n /* a) Set Ai=H^r(D||I). (l.e. the rth hash of D||I, H(H(H(...H(D||I)))) */\n var buf = new forge.util.ByteBuffer();\n buf.putBytes(D.bytes());\n buf.putBytes(I.bytes());\n for(var round = 0; round < iter; round++) {\n md.start();\n md.update(buf.getBytes());\n buf = md.digest();\n }\n\n /* b) Concatenate copies of Ai to create a string B of length v bytes (the\n final copy of Ai may be truncated to create B). */\n var B = new forge.util.ByteBuffer();\n for(l = 0; l < v; l++) {\n B.putByte(buf.at(l % u));\n }\n\n /* c) Treating I as a concatenation I0, I1, ..., Ik-1 of v-byte blocks,\n where k=ceil(s / v) + ceil(p / v), modify I by setting\n Ij=(Ij+B+1) mod 2v for each j. */\n var k = Math.ceil(s / v) + Math.ceil(p / v);\n var Inew = new forge.util.ByteBuffer();\n for(j = 0; j < k; j++) {\n var chunk = new forge.util.ByteBuffer(I.getBytes(v));\n var x = 0x1ff;\n for(l = B.length() - 1; l >= 0; l--) {\n x = x >> 8;\n x += B.at(l) + chunk.at(l);\n chunk.setAt(l, x & 0xff);\n }\n Inew.putBuffer(chunk);\n }\n I = Inew;\n\n /* Add Ai to A. */\n result.putBuffer(buf);\n }\n\n result.truncate(result.length() - n);\n return result;\n};\n\n/**\n * Get new Forge cipher object instance.\n *\n * @param oid the OID (in string notation).\n * @param params the ASN.1 params object.\n * @param password the password to decrypt with.\n *\n * @return new cipher object instance.\n */\npki.pbe.getCipher = function(oid, params, password) {\n switch(oid) {\n case pki.oids['pkcs5PBES2']:\n return pki.pbe.getCipherForPBES2(oid, params, password);\n\n case pki.oids['pbeWithSHAAnd3-KeyTripleDES-CBC']:\n case pki.oids['pbewithSHAAnd40BitRC2-CBC']:\n return pki.pbe.getCipherForPKCS12PBE(oid, params, password);\n\n default:\n var error = new Error('Cannot read encrypted PBE data block. Unsupported OID.');\n error.oid = oid;\n error.supportedOids = [\n 'pkcs5PBES2',\n 'pbeWithSHAAnd3-KeyTripleDES-CBC',\n 'pbewithSHAAnd40BitRC2-CBC'\n ];\n throw error;\n }\n};\n\n/**\n * Get new Forge cipher object instance according to PBES2 params block.\n *\n * The returned cipher instance is already started using the IV\n * from PBES2 parameter block.\n *\n * @param oid the PKCS#5 PBKDF2 OID (in string notation).\n * @param params the ASN.1 PBES2-params object.\n * @param password the password to decrypt with.\n *\n * @return new cipher object instance.\n */\npki.pbe.getCipherForPBES2 = function(oid, params, password) {\n // get PBE params\n var capture = {};\n var errors = [];\n if(!asn1.validate(params, PBES2AlgorithmsValidator, capture, errors)) {\n var error = new Error('Cannot read password-based-encryption algorithm ' +\n 'parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.');\n error.errors = errors;\n throw error;\n }\n\n // check oids\n oid = asn1.derToOid(capture.kdfOid);\n if(oid !== pki.oids['pkcs5PBKDF2']) {\n var error = new Error('Cannot read encrypted private key. ' +\n 'Unsupported key derivation function OID.');\n error.oid = oid;\n error.supportedOids = ['pkcs5PBKDF2'];\n throw error;\n }\n oid = asn1.derToOid(capture.encOid);\n if(oid !== pki.oids['aes128-CBC'] &&\n oid !== pki.oids['aes192-CBC'] &&\n oid !== pki.oids['aes256-CBC'] &&\n oid !== pki.oids['des-EDE3-CBC'] &&\n oid !== pki.oids['desCBC']) {\n var error = new Error('Cannot read encrypted private key. ' +\n 'Unsupported encryption scheme OID.');\n error.oid = oid;\n error.supportedOids = [\n 'aes128-CBC', 'aes192-CBC', 'aes256-CBC', 'des-EDE3-CBC', 'desCBC'];\n throw error;\n }\n\n // set PBE params\n var salt = capture.kdfSalt;\n var count = forge.util.createBuffer(capture.kdfIterationCount);\n count = count.getInt(count.length() << 3);\n var dkLen;\n var cipherFn;\n switch(pki.oids[oid]) {\n case 'aes128-CBC':\n dkLen = 16;\n cipherFn = forge.aes.createDecryptionCipher;\n break;\n case 'aes192-CBC':\n dkLen = 24;\n cipherFn = forge.aes.createDecryptionCipher;\n break;\n case 'aes256-CBC':\n dkLen = 32;\n cipherFn = forge.aes.createDecryptionCipher;\n break;\n case 'des-EDE3-CBC':\n dkLen = 24;\n cipherFn = forge.des.createDecryptionCipher;\n break;\n case 'desCBC':\n dkLen = 8;\n cipherFn = forge.des.createDecryptionCipher;\n break;\n }\n\n // get PRF message digest\n var md = prfOidToMessageDigest(capture.prfOid);\n\n // decrypt private key using pbe with chosen PRF and AES/DES\n var dk = forge.pkcs5.pbkdf2(password, salt, count, dkLen, md);\n var iv = capture.encIv;\n var cipher = cipherFn(dk);\n cipher.start(iv);\n\n return cipher;\n};\n\n/**\n * Get new Forge cipher object instance for PKCS#12 PBE.\n *\n * The returned cipher instance is already started using the key & IV\n * derived from the provided password and PKCS#12 PBE salt.\n *\n * @param oid The PKCS#12 PBE OID (in string notation).\n * @param params The ASN.1 PKCS#12 PBE-params object.\n * @param password The password to decrypt with.\n *\n * @return the new cipher object instance.\n */\npki.pbe.getCipherForPKCS12PBE = function(oid, params, password) {\n // get PBE params\n var capture = {};\n var errors = [];\n if(!asn1.validate(params, pkcs12PbeParamsValidator, capture, errors)) {\n var error = new Error('Cannot read password-based-encryption algorithm ' +\n 'parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.');\n error.errors = errors;\n throw error;\n }\n\n var salt = forge.util.createBuffer(capture.salt);\n var count = forge.util.createBuffer(capture.iterations);\n count = count.getInt(count.length() << 3);\n\n var dkLen, dIvLen, cipherFn;\n switch(oid) {\n case pki.oids['pbeWithSHAAnd3-KeyTripleDES-CBC']:\n dkLen = 24;\n dIvLen = 8;\n cipherFn = forge.des.startDecrypting;\n break;\n\n case pki.oids['pbewithSHAAnd40BitRC2-CBC']:\n dkLen = 5;\n dIvLen = 8;\n cipherFn = function(key, iv) {\n var cipher = forge.rc2.createDecryptionCipher(key, 40);\n cipher.start(iv, null);\n return cipher;\n };\n break;\n\n default:\n var error = new Error('Cannot read PKCS #12 PBE data block. Unsupported OID.');\n error.oid = oid;\n throw error;\n }\n\n // get PRF message digest\n var md = prfOidToMessageDigest(capture.prfOid);\n var key = pki.pbe.generatePkcs12Key(password, salt, 1, count, dkLen, md);\n md.start();\n var iv = pki.pbe.generatePkcs12Key(password, salt, 2, count, dIvLen, md);\n\n return cipherFn(key, iv);\n};\n\n/**\n * OpenSSL's legacy key derivation function.\n *\n * See: http://www.openssl.org/docs/crypto/EVP_BytesToKey.html\n *\n * @param password the password to derive the key from.\n * @param salt the salt to use, null for none.\n * @param dkLen the number of bytes needed for the derived key.\n * @param [options] the options to use:\n * [md] an optional message digest object to use.\n */\npki.pbe.opensslDeriveBytes = function(password, salt, dkLen, md) {\n if(typeof md === 'undefined' || md === null) {\n if(!('md5' in forge.md)) {\n throw new Error('\"md5\" hash algorithm unavailable.');\n }\n md = forge.md.md5.create();\n }\n if(salt === null) {\n salt = '';\n }\n var digests = [hash(md, password + salt)];\n for(var length = 16, i = 1; length < dkLen; ++i, length += 16) {\n digests.push(hash(md, digests[i - 1] + password + salt));\n }\n return digests.join('').substr(0, dkLen);\n};\n\nfunction hash(md, bytes) {\n return md.start().update(bytes).digest().getBytes();\n}\n\nfunction prfOidToMessageDigest(prfOid) {\n // get PRF algorithm, default to SHA-1\n var prfAlgorithm;\n if(!prfOid) {\n prfAlgorithm = 'hmacWithSHA1';\n } else {\n prfAlgorithm = pki.oids[asn1.derToOid(prfOid)];\n if(!prfAlgorithm) {\n var error = new Error('Unsupported PRF OID.');\n error.oid = prfOid;\n error.supported = [\n 'hmacWithSHA1', 'hmacWithSHA224', 'hmacWithSHA256', 'hmacWithSHA384',\n 'hmacWithSHA512'];\n throw error;\n }\n }\n return prfAlgorithmToMessageDigest(prfAlgorithm);\n}\n\nfunction prfAlgorithmToMessageDigest(prfAlgorithm) {\n var factory = forge.md;\n switch(prfAlgorithm) {\n case 'hmacWithSHA224':\n factory = forge.md.sha512;\n case 'hmacWithSHA1':\n case 'hmacWithSHA256':\n case 'hmacWithSHA384':\n case 'hmacWithSHA512':\n prfAlgorithm = prfAlgorithm.substr(8).toLowerCase();\n break;\n default:\n var error = new Error('Unsupported PRF algorithm.');\n error.algorithm = prfAlgorithm;\n error.supported = [\n 'hmacWithSHA1', 'hmacWithSHA224', 'hmacWithSHA256', 'hmacWithSHA384',\n 'hmacWithSHA512'];\n throw error;\n }\n if(!factory || !(prfAlgorithm in factory)) {\n throw new Error('Unknown hash algorithm: ' + prfAlgorithm);\n }\n return factory[prfAlgorithm].create();\n}\n\nfunction createPbkdf2Params(salt, countBytes, dkLen, prfAlgorithm) {\n var params = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // salt\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, salt),\n // iteration count\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n countBytes.getBytes())\n ]);\n // when PRF algorithm is not SHA-1 default, add key length and PRF algorithm\n if(prfAlgorithm !== 'hmacWithSHA1') {\n params.value.push(\n // key length\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n forge.util.hexToBytes(dkLen.toString(16))),\n // AlgorithmIdentifier\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // algorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(pki.oids[prfAlgorithm]).getBytes()),\n // parameters (null)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, '')\n ]));\n }\n return params;\n}\n","/**\n * RC2 implementation.\n *\n * @author Stefan Siegl\n *\n * Copyright (c) 2012 Stefan Siegl \n *\n * Information on the RC2 cipher is available from RFC #2268,\n * http://www.ietf.org/rfc/rfc2268.txt\n */\nvar forge = require('./forge');\nrequire('./util');\n\nvar piTable = [\n 0xd9, 0x78, 0xf9, 0xc4, 0x19, 0xdd, 0xb5, 0xed, 0x28, 0xe9, 0xfd, 0x79, 0x4a, 0xa0, 0xd8, 0x9d,\n 0xc6, 0x7e, 0x37, 0x83, 0x2b, 0x76, 0x53, 0x8e, 0x62, 0x4c, 0x64, 0x88, 0x44, 0x8b, 0xfb, 0xa2,\n 0x17, 0x9a, 0x59, 0xf5, 0x87, 0xb3, 0x4f, 0x13, 0x61, 0x45, 0x6d, 0x8d, 0x09, 0x81, 0x7d, 0x32,\n 0xbd, 0x8f, 0x40, 0xeb, 0x86, 0xb7, 0x7b, 0x0b, 0xf0, 0x95, 0x21, 0x22, 0x5c, 0x6b, 0x4e, 0x82,\n 0x54, 0xd6, 0x65, 0x93, 0xce, 0x60, 0xb2, 0x1c, 0x73, 0x56, 0xc0, 0x14, 0xa7, 0x8c, 0xf1, 0xdc,\n 0x12, 0x75, 0xca, 0x1f, 0x3b, 0xbe, 0xe4, 0xd1, 0x42, 0x3d, 0xd4, 0x30, 0xa3, 0x3c, 0xb6, 0x26,\n 0x6f, 0xbf, 0x0e, 0xda, 0x46, 0x69, 0x07, 0x57, 0x27, 0xf2, 0x1d, 0x9b, 0xbc, 0x94, 0x43, 0x03,\n 0xf8, 0x11, 0xc7, 0xf6, 0x90, 0xef, 0x3e, 0xe7, 0x06, 0xc3, 0xd5, 0x2f, 0xc8, 0x66, 0x1e, 0xd7,\n 0x08, 0xe8, 0xea, 0xde, 0x80, 0x52, 0xee, 0xf7, 0x84, 0xaa, 0x72, 0xac, 0x35, 0x4d, 0x6a, 0x2a,\n 0x96, 0x1a, 0xd2, 0x71, 0x5a, 0x15, 0x49, 0x74, 0x4b, 0x9f, 0xd0, 0x5e, 0x04, 0x18, 0xa4, 0xec,\n 0xc2, 0xe0, 0x41, 0x6e, 0x0f, 0x51, 0xcb, 0xcc, 0x24, 0x91, 0xaf, 0x50, 0xa1, 0xf4, 0x70, 0x39,\n 0x99, 0x7c, 0x3a, 0x85, 0x23, 0xb8, 0xb4, 0x7a, 0xfc, 0x02, 0x36, 0x5b, 0x25, 0x55, 0x97, 0x31,\n 0x2d, 0x5d, 0xfa, 0x98, 0xe3, 0x8a, 0x92, 0xae, 0x05, 0xdf, 0x29, 0x10, 0x67, 0x6c, 0xba, 0xc9,\n 0xd3, 0x00, 0xe6, 0xcf, 0xe1, 0x9e, 0xa8, 0x2c, 0x63, 0x16, 0x01, 0x3f, 0x58, 0xe2, 0x89, 0xa9,\n 0x0d, 0x38, 0x34, 0x1b, 0xab, 0x33, 0xff, 0xb0, 0xbb, 0x48, 0x0c, 0x5f, 0xb9, 0xb1, 0xcd, 0x2e,\n 0xc5, 0xf3, 0xdb, 0x47, 0xe5, 0xa5, 0x9c, 0x77, 0x0a, 0xa6, 0x20, 0x68, 0xfe, 0x7f, 0xc1, 0xad\n];\n\nvar s = [1, 2, 3, 5];\n\n/**\n * Rotate a word left by given number of bits.\n *\n * Bits that are shifted out on the left are put back in on the right\n * hand side.\n *\n * @param word The word to shift left.\n * @param bits The number of bits to shift by.\n * @return The rotated word.\n */\nvar rol = function(word, bits) {\n return ((word << bits) & 0xffff) | ((word & 0xffff) >> (16 - bits));\n};\n\n/**\n * Rotate a word right by given number of bits.\n *\n * Bits that are shifted out on the right are put back in on the left\n * hand side.\n *\n * @param word The word to shift right.\n * @param bits The number of bits to shift by.\n * @return The rotated word.\n */\nvar ror = function(word, bits) {\n return ((word & 0xffff) >> bits) | ((word << (16 - bits)) & 0xffff);\n};\n\n/* RC2 API */\nmodule.exports = forge.rc2 = forge.rc2 || {};\n\n/**\n * Perform RC2 key expansion as per RFC #2268, section 2.\n *\n * @param key variable-length user key (between 1 and 128 bytes)\n * @param effKeyBits number of effective key bits (default: 128)\n * @return the expanded RC2 key (ByteBuffer of 128 bytes)\n */\nforge.rc2.expandKey = function(key, effKeyBits) {\n if(typeof key === 'string') {\n key = forge.util.createBuffer(key);\n }\n effKeyBits = effKeyBits || 128;\n\n /* introduce variables that match the names used in RFC #2268 */\n var L = key;\n var T = key.length();\n var T1 = effKeyBits;\n var T8 = Math.ceil(T1 / 8);\n var TM = 0xff >> (T1 & 0x07);\n var i;\n\n for(i = T; i < 128; i++) {\n L.putByte(piTable[(L.at(i - 1) + L.at(i - T)) & 0xff]);\n }\n\n L.setAt(128 - T8, piTable[L.at(128 - T8) & TM]);\n\n for(i = 127 - T8; i >= 0; i--) {\n L.setAt(i, piTable[L.at(i + 1) ^ L.at(i + T8)]);\n }\n\n return L;\n};\n\n/**\n * Creates a RC2 cipher object.\n *\n * @param key the symmetric key to use (as base for key generation).\n * @param bits the number of effective key bits.\n * @param encrypt false for decryption, true for encryption.\n *\n * @return the cipher.\n */\nvar createCipher = function(key, bits, encrypt) {\n var _finish = false, _input = null, _output = null, _iv = null;\n var mixRound, mashRound;\n var i, j, K = [];\n\n /* Expand key and fill into K[] Array */\n key = forge.rc2.expandKey(key, bits);\n for(i = 0; i < 64; i++) {\n K.push(key.getInt16Le());\n }\n\n if(encrypt) {\n /**\n * Perform one mixing round \"in place\".\n *\n * @param R Array of four words to perform mixing on.\n */\n mixRound = function(R) {\n for(i = 0; i < 4; i++) {\n R[i] += K[j] + (R[(i + 3) % 4] & R[(i + 2) % 4]) +\n ((~R[(i + 3) % 4]) & R[(i + 1) % 4]);\n R[i] = rol(R[i], s[i]);\n j++;\n }\n };\n\n /**\n * Perform one mashing round \"in place\".\n *\n * @param R Array of four words to perform mashing on.\n */\n mashRound = function(R) {\n for(i = 0; i < 4; i++) {\n R[i] += K[R[(i + 3) % 4] & 63];\n }\n };\n } else {\n /**\n * Perform one r-mixing round \"in place\".\n *\n * @param R Array of four words to perform mixing on.\n */\n mixRound = function(R) {\n for(i = 3; i >= 0; i--) {\n R[i] = ror(R[i], s[i]);\n R[i] -= K[j] + (R[(i + 3) % 4] & R[(i + 2) % 4]) +\n ((~R[(i + 3) % 4]) & R[(i + 1) % 4]);\n j--;\n }\n };\n\n /**\n * Perform one r-mashing round \"in place\".\n *\n * @param R Array of four words to perform mashing on.\n */\n mashRound = function(R) {\n for(i = 3; i >= 0; i--) {\n R[i] -= K[R[(i + 3) % 4] & 63];\n }\n };\n }\n\n /**\n * Run the specified cipher execution plan.\n *\n * This function takes four words from the input buffer, applies the IV on\n * it (if requested) and runs the provided execution plan.\n *\n * The plan must be put together in form of a array of arrays. Where the\n * outer one is simply a list of steps to perform and the inner one needs\n * to have two elements: the first one telling how many rounds to perform,\n * the second one telling what to do (i.e. the function to call).\n *\n * @param {Array} plan The plan to execute.\n */\n var runPlan = function(plan) {\n var R = [];\n\n /* Get data from input buffer and fill the four words into R */\n for(i = 0; i < 4; i++) {\n var val = _input.getInt16Le();\n\n if(_iv !== null) {\n if(encrypt) {\n /* We're encrypting, apply the IV first. */\n val ^= _iv.getInt16Le();\n } else {\n /* We're decryption, keep cipher text for next block. */\n _iv.putInt16Le(val);\n }\n }\n\n R.push(val & 0xffff);\n }\n\n /* Reset global \"j\" variable as per spec. */\n j = encrypt ? 0 : 63;\n\n /* Run execution plan. */\n for(var ptr = 0; ptr < plan.length; ptr++) {\n for(var ctr = 0; ctr < plan[ptr][0]; ctr++) {\n plan[ptr][1](R);\n }\n }\n\n /* Write back result to output buffer. */\n for(i = 0; i < 4; i++) {\n if(_iv !== null) {\n if(encrypt) {\n /* We're encrypting in CBC-mode, feed back encrypted bytes into\n IV buffer to carry it forward to next block. */\n _iv.putInt16Le(R[i]);\n } else {\n R[i] ^= _iv.getInt16Le();\n }\n }\n\n _output.putInt16Le(R[i]);\n }\n };\n\n /* Create cipher object */\n var cipher = null;\n cipher = {\n /**\n * Starts or restarts the encryption or decryption process, whichever\n * was previously configured.\n *\n * To use the cipher in CBC mode, iv may be given either as a string\n * of bytes, or as a byte buffer. For ECB mode, give null as iv.\n *\n * @param iv the initialization vector to use, null for ECB mode.\n * @param output the output the buffer to write to, null to create one.\n */\n start: function(iv, output) {\n if(iv) {\n /* CBC mode */\n if(typeof iv === 'string') {\n iv = forge.util.createBuffer(iv);\n }\n }\n\n _finish = false;\n _input = forge.util.createBuffer();\n _output = output || new forge.util.createBuffer();\n _iv = iv;\n\n cipher.output = _output;\n },\n\n /**\n * Updates the next block.\n *\n * @param input the buffer to read from.\n */\n update: function(input) {\n if(!_finish) {\n // not finishing, so fill the input buffer with more input\n _input.putBuffer(input);\n }\n\n while(_input.length() >= 8) {\n runPlan([\n [ 5, mixRound ],\n [ 1, mashRound ],\n [ 6, mixRound ],\n [ 1, mashRound ],\n [ 5, mixRound ]\n ]);\n }\n },\n\n /**\n * Finishes encrypting or decrypting.\n *\n * @param pad a padding function to use, null for PKCS#7 padding,\n * signature(blockSize, buffer, decrypt).\n *\n * @return true if successful, false on error.\n */\n finish: function(pad) {\n var rval = true;\n\n if(encrypt) {\n if(pad) {\n rval = pad(8, _input, !encrypt);\n } else {\n // add PKCS#7 padding to block (each pad byte is the\n // value of the number of pad bytes)\n var padding = (_input.length() === 8) ? 8 : (8 - _input.length());\n _input.fillWithByte(padding, padding);\n }\n }\n\n if(rval) {\n // do final update\n _finish = true;\n cipher.update();\n }\n\n if(!encrypt) {\n // check for error: input data not a multiple of block size\n rval = (_input.length() === 0);\n if(rval) {\n if(pad) {\n rval = pad(8, _output, !encrypt);\n } else {\n // ensure padding byte count is valid\n var len = _output.length();\n var count = _output.at(len - 1);\n\n if(count > len) {\n rval = false;\n } else {\n // trim off padding bytes\n _output.truncate(count);\n }\n }\n }\n }\n\n return rval;\n }\n };\n\n return cipher;\n};\n\n/**\n * Creates an RC2 cipher object to encrypt data in ECB or CBC mode using the\n * given symmetric key. The output will be stored in the 'output' member\n * of the returned cipher.\n *\n * The key and iv may be given as a string of bytes or a byte buffer.\n * The cipher is initialized to use 128 effective key bits.\n *\n * @param key the symmetric key to use.\n * @param iv the initialization vector to use.\n * @param output the buffer to write to, null to create one.\n *\n * @return the cipher.\n */\nforge.rc2.startEncrypting = function(key, iv, output) {\n var cipher = forge.rc2.createEncryptionCipher(key, 128);\n cipher.start(iv, output);\n return cipher;\n};\n\n/**\n * Creates an RC2 cipher object to encrypt data in ECB or CBC mode using the\n * given symmetric key.\n *\n * The key may be given as a string of bytes or a byte buffer.\n *\n * To start encrypting call start() on the cipher with an iv and optional\n * output buffer.\n *\n * @param key the symmetric key to use.\n *\n * @return the cipher.\n */\nforge.rc2.createEncryptionCipher = function(key, bits) {\n return createCipher(key, bits, true);\n};\n\n/**\n * Creates an RC2 cipher object to decrypt data in ECB or CBC mode using the\n * given symmetric key. The output will be stored in the 'output' member\n * of the returned cipher.\n *\n * The key and iv may be given as a string of bytes or a byte buffer.\n * The cipher is initialized to use 128 effective key bits.\n *\n * @param key the symmetric key to use.\n * @param iv the initialization vector to use.\n * @param output the buffer to write to, null to create one.\n *\n * @return the cipher.\n */\nforge.rc2.startDecrypting = function(key, iv, output) {\n var cipher = forge.rc2.createDecryptionCipher(key, 128);\n cipher.start(iv, output);\n return cipher;\n};\n\n/**\n * Creates an RC2 cipher object to decrypt data in ECB or CBC mode using the\n * given symmetric key.\n *\n * The key may be given as a string of bytes or a byte buffer.\n *\n * To start decrypting call start() on the cipher with an iv and optional\n * output buffer.\n *\n * @param key the symmetric key to use.\n *\n * @return the cipher.\n */\nforge.rc2.createDecryptionCipher = function(key, bits) {\n return createCipher(key, bits, false);\n};\n","/**\n * Node.js module for Forge message digests.\n *\n * @author Dave Longley\n *\n * Copyright 2011-2017 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\n\nmodule.exports = forge.md = forge.md || {};\nforge.md.algorithms = forge.md.algorithms || {};\n","'use strict'\n\n/**\n * Interface for G-Set CRDT\n *\n * From:\n * \"A comprehensive study of Convergent and Commutative Replicated Data Types\"\n * https://hal.inria.fr/inria-00555588\n */\nclass GSet {\n constructor (values) {} // eslint-disable-line\n append (value) {}\n merge (set) {}\n get (value) {}\n has (value) {}\n get values () {}\n get length () {}\n}\n\nmodule.exports = GSet\n","/**\n * Node.js module for Forge.\n *\n * @author Dave Longley\n *\n * Copyright 2011-2016 Digital Bazaar, Inc.\n */\nmodule.exports = {\n // default options\n options: {\n usePureJavaScript: false\n }\n};\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","'use strict'\n\nconst path = require('path')\nconst os = require('os')\nconst uuid = require('uuid/v4')\n\nexports.filter = (iterable, filterer) => {\n return (async function * () {\n for await (const value of iterable) {\n const keep = await filterer(value)\n if (!keep) continue\n yield value\n }\n })()\n}\n\n// Not just sort, because the sorter is given all the values and should return\n// them all sorted\nexports.sortAll = (iterable, sorter) => {\n return (async function * () {\n let values = []\n for await (const value of iterable) values.push(value)\n values = await sorter(values)\n for (const value of values) yield value\n })()\n}\n\nexports.take = (iterable, n) => {\n return (async function * () {\n if (n <= 0) return\n let i = 0\n for await (const value of iterable) {\n yield value\n i++\n if (i >= n) return\n }\n })()\n}\n\nexports.map = (iterable, mapper) => {\n return (async function * () {\n for await (const value of iterable) {\n yield mapper(value)\n }\n })()\n}\n\nexports.replaceStartWith = function (s, r) {\n const matcher = new RegExp('^' + r)\n return s.replace(matcher, '')\n}\n\nexports.tmpdir = () => {\n return path.join(os.tmpdir(), uuid())\n}\n","'use strict'\n\n/**\n * Keeps track of all running queries.\n */\nclass QueryManager {\n /**\n * Creates a new QueryManager.\n */\n constructor () {\n this.queries = new Set()\n this.running = false\n }\n\n /**\n * Called when a query is started.\n *\n * @param {Query} query\n */\n queryStarted (query) {\n this.queries.add(query)\n }\n\n /**\n * Called when a query completes.\n *\n * @param {Query} query\n */\n queryCompleted (query) {\n this.queries.delete(query)\n }\n\n /**\n * Starts the query manager.\n */\n start () {\n this.running = true\n }\n\n /**\n * Stops all queries.\n */\n stop () {\n this.running = false\n for (const query of this.queries) {\n query.stop()\n }\n this.queries.clear()\n }\n}\n\nmodule.exports = QueryManager\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst blake = require('blakejs')\n\nconst minB = 0xb201\nconst minS = 0xb241\n\nconst blake2b = {\n init: blake.blake2bInit,\n update: blake.blake2bUpdate,\n digest: blake.blake2bFinal\n}\n\nconst blake2s = {\n init: blake.blake2sInit,\n update: blake.blake2sUpdate,\n digest: blake.blake2sFinal\n}\n\n// Note that although this function doesn't do any asynchronous work, we mark\n// the function as async because it must return a Promise to match the API\n// for other functions that do perform asynchronous work (see sha.browser.js)\nconst makeB2Hash = (size, hf) => async (data) => {\n const ctx = hf.init(size, null)\n hf.update(ctx, data)\n return Buffer.from(hf.digest(ctx))\n}\n\nmodule.exports = (table) => {\n for (let i = 0; i < 64; i++) {\n table[minB + i] = makeB2Hash(i + 1, blake2b)\n }\n for (let i = 0; i < 32; i++) {\n table[minS + i] = makeB2Hash(i + 1, blake2s)\n }\n}\n","'use strict'\nconst baseTable = require('./base-table.json')\n\n// map for hexString -> codecName\nconst nameTable = new Map()\n\nfor (const encodingName in baseTable) {\n const code = baseTable[encodingName]\n nameTable.set(code, encodingName)\n}\n\nmodule.exports = Object.freeze(nameTable)\n","export const version = \"transactions/5.0.0-beta.134\";\n","\"use strict\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexDataSlice, hexlify, hexZeroPad, isBytesLike, splitSignature, stripZeros, } from \"@ethersproject/bytes\";\nimport { Zero } from \"@ethersproject/constants\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { checkProperties } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey } from \"@ethersproject/signing-key\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nfunction handleAddress(value) {\n if (value === \"0x\") {\n return null;\n }\n return getAddress(value);\n}\nfunction handleNumber(value) {\n if (value === \"0x\") {\n return Zero;\n }\n return BigNumber.from(value);\n}\nconst transactionFields = [\n { name: \"nonce\", maxLength: 32, numeric: true },\n { name: \"gasPrice\", maxLength: 32, numeric: true },\n { name: \"gasLimit\", maxLength: 32, numeric: true },\n { name: \"to\", length: 20 },\n { name: \"value\", maxLength: 32, numeric: true },\n { name: \"data\" },\n];\nconst allowedTransactionKeys = {\n chainId: true, data: true, gasLimit: true, gasPrice: true, nonce: true, to: true, value: true\n};\nexport function computeAddress(key) {\n const publicKey = computePublicKey(key);\n return getAddress(hexDataSlice(keccak256(hexDataSlice(publicKey, 1)), 12));\n}\nexport function recoverAddress(digest, signature) {\n return computeAddress(recoverPublicKey(arrayify(digest), signature));\n}\nexport function serialize(transaction, signature) {\n checkProperties(transaction, allowedTransactionKeys);\n const raw = [];\n transactionFields.forEach(function (fieldInfo) {\n let value = transaction[fieldInfo.name] || ([]);\n const options = {};\n if (fieldInfo.numeric) {\n options.hexPad = \"left\";\n }\n value = arrayify(hexlify(value, options));\n // Fixed-width field\n if (fieldInfo.length && value.length !== fieldInfo.length && value.length > 0) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n // Variable-width (with a maximum)\n if (fieldInfo.maxLength) {\n value = stripZeros(value);\n if (value.length > fieldInfo.maxLength) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n }\n raw.push(hexlify(value));\n });\n let chainId = 0;\n if (transaction.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = transaction.chainId;\n if (typeof (chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid transaction.chainId\", \"transaction\", transaction);\n }\n }\n else if (signature && !isBytesLike(signature) && signature.v > 28) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n chainId = Math.floor((signature.v - 35) / 2);\n }\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== 0) {\n raw.push(hexlify(chainId));\n raw.push(\"0x\");\n raw.push(\"0x\");\n }\n // Requesting an unsigned transation\n if (!signature) {\n return RLP.encode(raw);\n }\n // The splitSignature will ensure the transaction has a recoveryParam in the\n // case that the signTransaction function only adds a v.\n const sig = splitSignature(signature);\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = 27 + sig.recoveryParam;\n if (chainId !== 0) {\n raw.pop();\n raw.pop();\n raw.pop();\n v += chainId * 2 + 8;\n // If an EIP-155 v (directly or indirectly; maybe _vs) was provided, check it!\n if (sig.v > 28 && sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n }\n else if (sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n raw.push(hexlify(v));\n raw.push(stripZeros(arrayify(sig.r)));\n raw.push(stripZeros(arrayify(sig.s)));\n return RLP.encode(raw);\n}\nexport function parse(rawTransaction) {\n const transaction = RLP.decode(rawTransaction);\n if (transaction.length !== 9 && transaction.length !== 6) {\n logger.throwArgumentError(\"invalid raw transaction\", \"rawTransactin\", rawTransaction);\n }\n const tx = {\n nonce: handleNumber(transaction[0]).toNumber(),\n gasPrice: handleNumber(transaction[1]),\n gasLimit: handleNumber(transaction[2]),\n to: handleAddress(transaction[3]),\n value: handleNumber(transaction[4]),\n data: transaction[5],\n chainId: 0\n };\n // Legacy unsigned transaction\n if (transaction.length === 6) {\n return tx;\n }\n try {\n tx.v = BigNumber.from(transaction[6]).toNumber();\n }\n catch (error) {\n console.log(error);\n return tx;\n }\n tx.r = hexZeroPad(transaction[7], 32);\n tx.s = hexZeroPad(transaction[8], 32);\n if (BigNumber.from(tx.r).isZero() && BigNumber.from(tx.s).isZero()) {\n // EIP-155 unsigned transaction\n tx.chainId = tx.v;\n tx.v = 0;\n }\n else {\n // Signed Tranasaction\n tx.chainId = Math.floor((tx.v - 35) / 2);\n if (tx.chainId < 0) {\n tx.chainId = 0;\n }\n let recoveryParam = tx.v - 27;\n const raw = transaction.slice(0, 6);\n if (tx.chainId !== 0) {\n raw.push(hexlify(tx.chainId));\n raw.push(\"0x\");\n raw.push(\"0x\");\n recoveryParam -= tx.chainId * 2 + 8;\n }\n const digest = keccak256(RLP.encode(raw));\n try {\n tx.from = recoverAddress(digest, { r: hexlify(tx.r), s: hexlify(tx.s), recoveryParam: recoveryParam });\n }\n catch (error) {\n console.log(error);\n }\n tx.hash = keccak256(rawTransaction);\n }\n return tx;\n}\n","/* global self */\n\n'use strict'\n\nconst nodeify = require('nodeify')\n\nconst webCrypto = getWebCrypto()\n\nfunction getWebCrypto () {\n if (self.crypto) {\n return self.crypto.subtle || self.crypto.webkitSubtle\n }\n\n if (self.msCrypto) {\n return self.msCrypto.subtle\n }\n}\n\nfunction webCryptoHash (type) {\n if (!webCrypto) {\n throw new Error('Please use a browser with webcrypto support and ensure the code has been delivered securely via HTTPS/TLS and run within a Secure Context')\n }\n\n return (data, callback) => {\n const res = webCrypto.digest({ name: type }, data)\n\n if (typeof res.then !== 'function') { // IE11\n res.onerror = () => {\n callback(new Error(`hashing data using ${type}`))\n }\n res.oncomplete = (e) => {\n callback(null, e.target.result)\n }\n return\n }\n\n nodeify(\n res.then((raw) => Buffer.from(new Uint8Array(raw))),\n callback\n )\n }\n}\n\nfunction sha1 (buf, callback) {\n webCryptoHash('SHA-1')(buf, callback)\n}\n\nfunction sha2256 (buf, callback) {\n webCryptoHash('SHA-256')(buf, callback)\n}\n\nfunction sha2512 (buf, callback) {\n webCryptoHash('SHA-512')(buf, callback)\n}\n\nmodule.exports = {\n sha1: sha1,\n sha2256: sha2256,\n sha2512: sha2512\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* Active `debug` instances.\n\t*/\n\tcreateDebug.instances = [];\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn match;\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.enabled = createDebug.enabled(namespace);\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = selectColor(namespace);\n\t\tdebug.destroy = destroy;\n\t\tdebug.extend = extend;\n\t\t// Debug.formatArgs = formatArgs;\n\t\t// debug.rawLog = rawLog;\n\n\t\t// env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\tcreateDebug.instances.push(debug);\n\n\t\treturn debug;\n\t}\n\n\tfunction destroy() {\n\t\tconst index = createDebug.instances.indexOf(this);\n\t\tif (index !== -1) {\n\t\t\tcreateDebug.instances.splice(index, 1);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0; i < createDebug.instances.length; i++) {\n\t\t\tconst instance = createDebug.instances[i];\n\t\t\tinstance.enabled = createDebug.enabled(instance.namespace);\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","'use strict';\n\nconst pDoWhilst = async (action, condition) => {\n\tconst actionResult = await action();\n\n\tif (condition(actionResult)) {\n\t\treturn pDoWhilst(action, condition);\n\t}\n};\n\nmodule.exports = pDoWhilst;\n// TODO: Remove this for the next major release\nmodule.exports.default = pDoWhilst;\n","var Reader = require('pull-reader')\nvar Writer = require('pull-pushable')\nvar cat = require('pull-cat')\nvar pair = require('pull-pair')\n\nfunction once (cb) {\n var called = 0\n return function (a, b, c) {\n if(called++) return\n cb(a, b, c)\n }\n}\n\nfunction isFunction (f) {\n return 'function' === typeof f\n}\n\nmodule.exports = function (opts, _cb) {\n if(isFunction(opts)) _cb = opts, opts = {}\n _cb = once(_cb || function noop () {})\n var reader = Reader(opts && opts.timeout || 5e3)\n var writer = Writer(function (err) {\n if(err) _cb(err)\n })\n\n var p = pair()\n\n return {\n handshake: {\n read: reader.read,\n abort: function (err) {\n writer.end(err)\n reader.abort(err, function (err) {\n })\n _cb(err)\n },\n write: writer.push,\n rest: function () {\n writer.end()\n return {\n source: reader.read(),\n sink: p.sink\n }\n }\n },\n sink: reader,\n source: cat([writer, p.source])\n }\n}\n","'use strict';\n\nfunction createError(msg, code, props) {\n var err = msg instanceof Error ? msg : new Error(msg);\n var key;\n\n if (typeof code === 'object') {\n props = code;\n } else if (code != null) {\n err.code = code;\n }\n\n if (props) {\n for (key in props) {\n err[key] = props[key];\n }\n }\n\n return err;\n}\n\nmodule.exports = createError;\n","'use strict'\n\nvar reduce = require('./reduce')\n\nmodule.exports = function concat (cb) {\n return reduce(function (a, b) {\n return a + b\n }, '', cb)\n}\n","'use strict';\nconst isPlainObject = require('is-plain-obj');\n\nmodule.exports = (object, options = {}) => {\n\tif (!isPlainObject(object)) {\n\t\tthrow new TypeError('Expected a plain object');\n\t}\n\n\tconst {deep} = options;\n\tconst seenInput = [];\n\tconst seenOutput = [];\n\n\tconst sortKeys = object => {\n\t\tconst seenIndex = seenInput.indexOf(object);\n\n\t\tif (seenIndex !== -1) {\n\t\t\treturn seenOutput[seenIndex];\n\t\t}\n\n\t\tconst result = {};\n\t\tconst keys = Object.keys(object).sort(options.compare);\n\n\t\tseenInput.push(object);\n\t\tseenOutput.push(result);\n\n\t\tfor (const key of keys) {\n\t\t\tconst value = object[key];\n\n\t\t\tif (deep && Array.isArray(value)) {\n\t\t\t\tresult[key] = value.map(arrayValue => isPlainObject(arrayValue) ? sortKeys(arrayValue) : arrayValue);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tresult[key] = deep && isPlainObject(value) ? sortKeys(value) : value;\n\t\t}\n\n\t\treturn result;\n\t};\n\n\treturn sortKeys(object);\n};\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = doParallel;\n\nvar _eachOf = require('../eachOf');\n\nvar _eachOf2 = _interopRequireDefault(_eachOf);\n\nvar _wrapAsync = require('./wrapAsync');\n\nvar _wrapAsync2 = _interopRequireDefault(_wrapAsync);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction doParallel(fn) {\n return function (obj, iteratee, callback) {\n return fn(_eachOf2.default, obj, (0, _wrapAsync2.default)(iteratee), callback);\n };\n}\nmodule.exports = exports['default'];","/**\n * Javascript implementation of mask generation function MGF1.\n *\n * @author Stefan Siegl\n * @author Dave Longley\n *\n * Copyright (c) 2012 Stefan Siegl \n * Copyright (c) 2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\n\nforge.mgf = forge.mgf || {};\nvar mgf1 = module.exports = forge.mgf.mgf1 = forge.mgf1 = forge.mgf1 || {};\n\n/**\n * Creates a MGF1 mask generation function object.\n *\n * @param md the message digest API to use (eg: forge.md.sha1.create()).\n *\n * @return a mask generation function object.\n */\nmgf1.create = function(md) {\n var mgf = {\n /**\n * Generate mask of specified length.\n *\n * @param {String} seed The seed for mask generation.\n * @param maskLen Number of bytes to generate.\n * @return {String} The generated mask.\n */\n generate: function(seed, maskLen) {\n /* 2. Let T be the empty octet string. */\n var t = new forge.util.ByteBuffer();\n\n /* 3. For counter from 0 to ceil(maskLen / hLen), do the following: */\n var len = Math.ceil(maskLen / md.digestLength);\n for(var i = 0; i < len; i++) {\n /* a. Convert counter to an octet string C of length 4 octets */\n var c = new forge.util.ByteBuffer();\n c.putInt32(i);\n\n /* b. Concatenate the hash of the seed mgfSeed and C to the octet\n * string T: */\n md.start();\n md.update(seed + c.getBytes());\n t.putBuffer(md.digest());\n }\n\n /* Output the leading maskLen octets of T as the octet string mask. */\n t.truncate(t.length() - maskLen);\n return t.getBytes();\n }\n };\n\n return mgf;\n};\n","'use strict'\n\nconst EventEmitter = require('events')\nconst LatencyMonitor = require('latency-monitor').default\nconst debug = require('debug')('libp2p:connection-manager')\n\nconst defaultOptions = {\n maxPeers: Infinity,\n minPeers: 0,\n maxData: Infinity,\n maxSentData: Infinity,\n maxReceivedData: Infinity,\n maxEventLoopDelay: Infinity,\n pollInterval: 2000,\n movingAverageInterval: 60000,\n defaultPeerValue: 1\n}\n\nclass ConnectionManager extends EventEmitter {\n constructor (libp2p, options) {\n super()\n this._libp2p = libp2p\n this._options = Object.assign({}, defaultOptions, options)\n this._options.maxPeersPerProtocol = fixMaxPeersPerProtocol(this._options.maxPeersPerProtocol)\n\n debug('options: %j', this._options)\n\n this._stats = libp2p.stats\n if (options && !this._stats) {\n throw new Error('No libp2p.stats')\n }\n\n this._peerValues = new Map()\n this._peers = new Map()\n this._peerProtocols = new Map()\n this._peerCountPerProtocol = new Map()\n this._onStatsUpdate = this._onStatsUpdate.bind(this)\n this._onPeerConnect = this._onPeerConnect.bind(this)\n this._onPeerDisconnect = this._onPeerDisconnect.bind(this)\n\n if (this._libp2p.isStarted()) {\n this._onceStarted()\n } else {\n this._libp2p.once('start', this._onceStarted.bind(this))\n }\n }\n\n start () {\n this._stats.on('update', this._onStatsUpdate)\n this._libp2p.on('connection:start', this._onPeerConnect)\n this._libp2p.on('connection:end', this._onPeerDisconnect)\n // latency monitor\n this._latencyMonitor = new LatencyMonitor({\n dataEmitIntervalMs: this._options.pollInterval\n })\n this._onLatencyMeasure = this._onLatencyMeasure.bind(this)\n this._latencyMonitor.on('data', this._onLatencyMeasure)\n }\n\n stop () {\n this._stats.removeListener('update', this._onStatsUpdate)\n this._libp2p.removeListener('connection:start', this._onPeerConnect)\n this._libp2p.removeListener('connection:end', this._onPeerDisconnect)\n this._latencyMonitor.removeListener('data', this._onLatencyMeasure)\n }\n\n setPeerValue (peerId, value) {\n if (value < 0 || value > 1) {\n throw new Error('value should be a number between 0 and 1')\n }\n if (peerId.toB58String) {\n peerId = peerId.toB58String()\n }\n this._peerValues.set(peerId, value)\n }\n\n _onceStarted () {\n this._peerId = this._libp2p.peerInfo.id.toB58String()\n }\n\n _onStatsUpdate () {\n const movingAvgs = this._stats.global.movingAverages\n const received = movingAvgs.dataReceived[this._options.movingAverageInterval].movingAverage()\n this._checkLimit('maxReceivedData', received)\n const sent = movingAvgs.dataSent[this._options.movingAverageInterval].movingAverage()\n this._checkLimit('maxSentData', sent)\n const total = received + sent\n this._checkLimit('maxData', total)\n debug('stats update', total)\n }\n\n _onPeerConnect (peerInfo) {\n const peerId = peerInfo.id.toB58String()\n debug('%s: connected to %s', this._peerId, peerId)\n this._peerValues.set(peerId, this._options.defaultPeerValue)\n this._peers.set(peerId, peerInfo)\n this.emit('connected', peerId)\n this._checkLimit('maxPeers', this._peers.size)\n\n protocolsFromPeerInfo(peerInfo).forEach((protocolTag) => {\n const protocol = this._peerCountPerProtocol[protocolTag]\n if (!protocol) {\n this._peerCountPerProtocol[protocolTag] = 0\n }\n this._peerCountPerProtocol[protocolTag]++\n\n let peerProtocols = this._peerProtocols[peerId]\n if (!peerProtocols) {\n peerProtocols = this._peerProtocols[peerId] = new Set()\n }\n peerProtocols.add(protocolTag)\n this._checkProtocolMaxPeersLimit(protocolTag, this._peerCountPerProtocol[protocolTag])\n })\n }\n\n _onPeerDisconnect (peerInfo) {\n const peerId = peerInfo.id.toB58String()\n debug('%s: disconnected from %s', this._peerId, peerId)\n this._peerValues.delete(peerId)\n this._peers.delete(peerId)\n\n const peerProtocols = this._peerProtocols[peerId]\n if (peerProtocols) {\n Array.from(peerProtocols).forEach((protocolTag) => {\n const peerCountForProtocol = this._peerCountPerProtocol[protocolTag]\n if (peerCountForProtocol) {\n this._peerCountPerProtocol[protocolTag]--\n }\n })\n }\n\n this.emit('disconnected', peerId)\n }\n\n _onLatencyMeasure (summary) {\n this._checkLimit('maxEventLoopDelay', summary.avgMs)\n }\n\n _checkLimit (name, value) {\n const limit = this._options[name]\n debug('checking limit of %s. current value: %d of %d', name, value, limit)\n if (value > limit) {\n debug('%s: limit exceeded: %s, %d', this._peerId, name, value)\n this.emit('limit:exceeded', name, value)\n this._maybeDisconnectOne()\n }\n }\n\n _checkProtocolMaxPeersLimit (protocolTag, value) {\n debug('checking protocol limit. current value of %s is %d', protocolTag, value)\n const limit = this._options.maxPeersPerProtocol[protocolTag]\n if (value > limit) {\n debug('%s: protocol max peers limit exceeded: %s, %d', this._peerId, protocolTag, value)\n this.emit('limit:exceeded', protocolTag, value)\n this._maybeDisconnectOne()\n }\n }\n\n _maybeDisconnectOne () {\n if (this._options.minPeers < this._peerValues.size) {\n const peerValues = Array.from(this._peerValues).sort(byPeerValue)\n debug('%s: sorted peer values: %j', this._peerId, peerValues)\n const disconnectPeer = peerValues[0]\n if (disconnectPeer) {\n const peerId = disconnectPeer[0]\n debug('%s: lowest value peer is %s', this._peerId, peerId)\n debug('%s: forcing disconnection from %j', this._peerId, peerId)\n this._disconnectPeer(peerId)\n }\n }\n }\n\n _disconnectPeer (peerId) {\n debug('preemptively disconnecting peer', peerId)\n this.emit('%s: disconnect:preemptive', this._peerId, peerId)\n const peer = this._peers.get(peerId)\n this._libp2p.hangUp(peer, (err) => {\n if (err) {\n this.emit('error', err)\n }\n })\n }\n}\n\nmodule.exports = ConnectionManager\n\nfunction byPeerValue (peerValueEntryA, peerValueEntryB) {\n return peerValueEntryA[1] - peerValueEntryB[1]\n}\n\nfunction fixMaxPeersPerProtocol (maxPeersPerProtocol) {\n if (!maxPeersPerProtocol) {\n maxPeersPerProtocol = {}\n }\n\n Object.keys(maxPeersPerProtocol).forEach((transportTag) => {\n const max = maxPeersPerProtocol[transportTag]\n delete maxPeersPerProtocol[transportTag]\n maxPeersPerProtocol[transportTag.toLowerCase()] = max\n })\n\n return maxPeersPerProtocol\n}\n\nfunction protocolsFromPeerInfo (peerInfo) {\n const protocolTags = new Set()\n peerInfo.multiaddrs.forEach((multiaddr) => {\n multiaddr.protos().map(protocolToProtocolTag).forEach((protocolTag) => {\n protocolTags.add(protocolTag)\n })\n })\n\n return Array.from(protocolTags)\n}\n\nfunction protocolToProtocolTag (protocol) {\n return protocol.name.toLowerCase()\n}\n","'use strict'\n\nconst Entry = require('./entry')\nconst EntryIO = require('./entry-io')\nconst Sorting = require('./log-sorting')\nconst { LastWriteWins, NoZeroes } = Sorting\nconst LogError = require('./log-errors')\nconst { isDefined, findUniques, difference, io } = require('./utils')\n\nconst IPLD_LINKS = ['heads']\nconst last = (arr, n) => arr.slice(arr.length - Math.min(arr.length, n), arr.length)\n\nclass LogIO {\n //\n /**\n * Get the multihash of a Log.\n * @param {IPFS} ipfs An IPFS instance\n * @param {Log} log Log to get a multihash for\n * @returns {Promise}\n * @deprecated\n */\n static async toMultihash (ipfs, log, { format } = {}) {\n if (!isDefined(ipfs)) throw LogError.IPFSNotDefinedError()\n if (!isDefined(log)) throw LogError.LogNotDefinedError()\n if (!isDefined(format)) format = 'dag-cbor'\n if (log.values.length < 1) throw new Error(`Can't serialize an empty log`)\n\n return io.write(ipfs, format, log.toJSON(), { links: IPLD_LINKS })\n }\n\n /**\n * Create a log from a hashes.\n * @param {IPFS} ipfs An IPFS instance\n * @param {string} hash The hash of the log\n * @param {Object} options\n * @param {number} options.length How many items to include in the log\n * @param {Array} options.exclude Entries to not fetch (cached)\n * @param {function(hash, entry, parent, depth)} options.onProgressCallback\n */\n static async fromMultihash (ipfs, hash,\n { length = -1, exclude = [], timeout, concurrency, sortFn, onProgressCallback }) {\n if (!isDefined(ipfs)) throw LogError.IPFSNotDefinedError()\n if (!isDefined(hash)) throw new Error(`Invalid hash: ${hash}`)\n\n const logData = await io.read(ipfs, hash, { links: IPLD_LINKS })\n\n if (!logData.heads || !logData.id) throw LogError.NotALogError()\n\n // Use user provided sorting function or the default one\n sortFn = sortFn || NoZeroes(LastWriteWins)\n const isHead = e => logData.heads.includes(e.hash)\n\n const all = await EntryIO.fetchAll(ipfs, logData.heads,\n { length, exclude, timeout, concurrency, onProgressCallback })\n\n const logId = logData.id\n const entries = length > -1 ? last(all.sort(sortFn), length) : all\n const heads = entries.filter(isHead)\n return { logId, entries, heads }\n }\n\n /**\n * Create a log from an entry hash.\n * @param {IPFS} ipfs An IPFS instance\n * @param {string} hash The hash of the entry\n * @param {Object} options\n * @param {number} options.length How many items to include in the log\n * @param {Array} options.exclude Entries to not fetch (cached)\n * @param {function(hash, entry, parent, depth)} options.onProgressCallback\n */\n static async fromEntryHash (ipfs, hash,\n { length = -1, exclude = [], timeout, concurrency, sortFn, onProgressCallback }) {\n if (!isDefined(ipfs)) throw LogError.IpfsNotDefinedError()\n if (!isDefined(hash)) throw new Error(\"'hash' must be defined\")\n // Convert input hash(s) to an array\n const hashes = Array.isArray(hash) ? hash : [hash]\n // Fetch given length, return size at least the given input entries\n length = length > -1 ? Math.max(length, 1) : length\n const all = await EntryIO.fetchParallel(ipfs, hashes,\n { length, exclude, timeout, concurrency, onProgressCallback })\n // Cap the result at the right size by taking the last n entries,\n // or if given length is -1, then take all\n sortFn = sortFn || NoZeroes(LastWriteWins)\n const entries = length > -1 ? last(all.sort(sortFn), length) : all\n return { entries }\n }\n\n /**\n * Creates a log data from a JSON object, to be passed to a Log constructor\n *\n * @param {IPFS} ipfs An IPFS instance\n * @param {json} json A json object containing valid log data\n * @param {Object} options\n * @param {number} options.length How many entries to include\n * @param {function(hash, entry, parent, depth)} options.onProgressCallback\n **/\n static async fromJSON (ipfs, json, { length = -1, timeout, concurrency, onProgressCallback }) {\n if (!isDefined(ipfs)) throw LogError.IPFSNotDefinedError()\n const { id, heads } = json\n const headHashes = heads.map(e => e.hash)\n const all = await EntryIO.fetchParallel(ipfs, headHashes,\n { length, timeout, concurrency, onProgressCallback })\n const entries = all.sort(Entry.compare)\n return { logId: id, entries, heads }\n }\n\n /**\n * Create a new log starting from an entry.\n * @param {IPFS} ipfs An IPFS instance\n * @param {Entry|Array} sourceEntries An entry or an array of entries to fetch a log from\n * @param {Object} options\n * @param {number} options.length How many entries to include\n * @param {Array} options.exclude Entries to not fetch (cached)\n * @param {function(hash, entry, parent, depth)} options.onProgressCallback\n */\n static async fromEntry (ipfs, sourceEntries,\n { length = -1, exclude = [], timeout, concurrency, onProgressCallback }) {\n if (!isDefined(ipfs)) throw LogError.IPFSNotDefinedError()\n if (!isDefined(sourceEntries)) throw new Error(\"'sourceEntries' must be defined\")\n\n // Make sure we only have Entry objects as input\n if (!Array.isArray(sourceEntries) && !Entry.isEntry(sourceEntries)) {\n throw new Error(`'sourceEntries' argument must be an array of Entry instances or a single Entry`)\n }\n\n if (!Array.isArray(sourceEntries)) {\n sourceEntries = [sourceEntries]\n }\n\n // Fetch given length, return size at least the given input entries\n length = length > -1 ? Math.max(length, sourceEntries.length) : length\n\n // Make sure we pass hashes instead of objects to the fetcher function\n const hashes = sourceEntries.map(e => e.hash)\n\n // Fetch the entries\n const all = await EntryIO.fetchParallel(ipfs, hashes,\n { length, exclude, timeout, concurrency, onProgressCallback })\n\n // Combine the fetches with the source entries and take only uniques\n const combined = sourceEntries.concat(all).concat(exclude)\n const uniques = findUniques(combined, 'hash').sort(Entry.compare)\n\n // Cap the result at the right size by taking the last n entries\n const sliced = uniques.slice(length > -1 ? -length : -uniques.length)\n\n // Make sure that the given input entries are present in the result\n // in order to not lose references\n const missingSourceEntries = difference(sliced, sourceEntries, 'hash')\n\n const replaceInFront = (a, withEntries) => {\n var sliced = a.slice(withEntries.length, a.length)\n return withEntries.concat(sliced)\n }\n\n // Add the input entries at the beginning of the array and remove\n // as many elements from the array before inserting the original entries\n const entries = replaceInFront(sliced, missingSourceEntries)\n const logId = entries[entries.length - 1].id\n return { logId, entries }\n }\n}\n\nmodule.exports = LogIO\n","const DID_PLACEHOLDER = 'GENESIS'\n\n/**\n * A class for creating ipfs based DID Documents.\n * Based on the DID spec: https://w3c-ccg.github.io/did-spec/\n */\nclass DidDocument {\n /**\n * Create a new DID Document.\n *\n * @param {Object} ipfs An js-ipfs instance\n * @param {String} method The name of the DID Method\n * @return {DidDocument} self\n */\n constructor (ipfs, method) {\n this._ipfs = ipfs\n this._content = {\n id: `did:${method}:${DID_PLACEHOLDER}`\n }\n }\n\n get DID () {\n if (this._content.id.includes(DID_PLACEHOLDER)) {\n throw new Error('DID is not available before commit')\n }\n return this._content.id\n }\n\n /**\n * Load an already existing DID Document.\n *\n * @param {Object} ipfs An js-ipfs instance\n * @param {String} documentCid The CID of the document\n * @return {Promise} self\n */\n static async load (ipfs, documentCid) {\n const doc = new DidDocument(ipfs)\n doc._content = await DidDocument.cidToDocument(ipfs, documentCid)\n doc._content.previousDocument = { '/': documentCid.toString() }\n return doc\n }\n\n /**\n * Add a new public key\n *\n * @param {String} id The id of the key, e.g. \"key1\"\n * @param {String} type The type of the key\n * @param {String} encoding The encoding of the key\n * @param {String} key The encoded public key\n * @param {String} owner The owner of the key (optional)\n */\n addPublicKey (id, type, encoding, key, owner) {\n if (!this._content.publicKey) {\n this._content.publicKey = []\n }\n let entry = {\n id: `${this._content.id}#${id}`,\n type\n }\n entry[encoding] = key\n if (owner) {\n entry.owner = owner\n }\n this._content.publicKey.push(entry)\n }\n\n /**\n * Remove a public key\n *\n * @param {String} id The id of the key, e.g. \"key1\"\n */\n removePublicKey (id) {\n const idx = this._content.publicKey.findIndex(e => e.id.endsWith(id))\n this._content.publicKey.splice(idx, 1)\n if (!this._content.publicKey.length) {\n delete this._content.publicKey\n }\n }\n\n /**\n * Add a new authentication\n *\n * @param {String} type The type of the authentication\n * @param {String} id The id of the key to be used, e.g. \"key1\"\n */\n addAuthentication (type, id) {\n if (!this._content.authentication) {\n this._content.authentication = []\n }\n this._content.authentication.push({\n type,\n publicKey: `${this._content.id}#${id}`\n })\n }\n\n /**\n * Remove an authentication\n *\n * @param {String} id The id of the key, e.g. \"key1\"\n */\n removeAuthentication (id) {\n const idx = this._content.authentication.findIndex(e => e.publicKey.endsWith(id))\n this._content.authentication.splice(idx, 1)\n if (!this._content.authentication.length) {\n delete this._content.authentication\n }\n }\n\n /**\n * Add a new service\n *\n * @param {String} id The id of the key to be used, e.g. \"key1\"\n * @param {String} type The type of the service\n * @param {String} serviceEndpoint The endpoint of the service\n * @param {Object} additionalFields Any additional fields (optional)\n */\n addService (id, type, serviceEndpoint, additionalFields) {\n if (!this._content.service) {\n this._content.service = []\n }\n this._content.service.push(Object.assign({\n id: `${this._content.id};${id}`,\n type,\n serviceEndpoint\n }, additionalFields))\n }\n\n /**\n * Remove a service\n *\n * @param {String} id The id of the key, e.g. \"key1\"\n */\n removeService (id) {\n const idx = this._content.service.findIndex(e => e.id.endsWith(id))\n this._content.service.splice(idx, 1)\n if (!this._content.service.length) {\n delete this._content.service\n }\n }\n\n /**\n * Set the revocationMethod. This can be of any js object\n * and is determined by the implementer of a revocation module.\n *\n * @param {Object} methodDescriptor the object that defines the revocation method\n */\n setRevocationMethod (methodDescriptor) {\n this._content.revocationMethod = methodDescriptor\n }\n\n /**\n * Add a new property\n *\n * @param {String} propName The name of the property\n * @param {Object} propValue The value of the property\n */\n addCustomProperty (propName, propValue) {\n this._content[propName] = propValue\n }\n\n /**\n * Remove a property\n *\n * @param {String} propName The name of the property\n */\n removeCustomProperty (propName) {\n delete this._content[propName]\n }\n\n /**\n * Commit all changes and create a new ipfs dag object.\n *\n * @param {Object} opts Optional parameters\n * @param {Boolean} noTimestamp Don't use timestamps if true\n *\n * @return {Promise} The CID of the object\n */\n async commit (opts = {}) {\n if (!this._content.created) {\n this._content['@context'] = 'https://w3id.org/did/v1'\n if (!opts.noTimestamp) {\n this._content.created = (new Date(Date.now())).toISOString()\n }\n } else if (!opts.noTimestamp) {\n this._content.updated = (new Date(Date.now())).toISOString()\n }\n const cid = await this._ipfs.dag.put(this._content, { format: 'dag-cbor', hashAlg: 'sha2-256' })\n // set up for further changes:\n this._content = await DidDocument.cidToDocument(this._ipfs, cid)\n this._content.previousDocument = { '/': cid.toString() }\n return cid\n }\n\n /**\n * Returns the DID document of a document CID\n *\n * @param {Object} ipfs An js-ipfs instance\n * @param {String} documentCid The CID of the document\n * @return {Promise} The DID document as a js object\n */\n static async cidToDocument (ipfs, documentCid) {\n let doc = (await ipfs.dag.get(documentCid)).value\n // If genesis document replace placeholder identifier with cid\n if (doc.id.includes(DID_PLACEHOLDER)) {\n const re = new RegExp(DID_PLACEHOLDER, 'gi')\n doc.id = doc.id.replace(re, documentCid)\n if (doc.publicKey) {\n doc.publicKey = JSON.parse(JSON.stringify(doc.publicKey).replace(re, documentCid))\n }\n if (doc.authentication) {\n doc.authentication = JSON.parse(JSON.stringify(doc.authentication).replace(re, documentCid))\n }\n if (doc.service) {\n doc.service = JSON.parse(JSON.stringify(doc.service).replace(re, documentCid))\n }\n }\n if (doc.previousDocument) {\n // make CID human readable\n doc.previousDocument = { '/': doc.previousDocument.toString() }\n }\n return doc\n }\n}\n\nmodule.exports = DidDocument\n","'use strict'\n\nconst IPFSRepo = require('ipfs-repo')\n\nmodule.exports = (options) => {\n const repoPath = options.repo || 'ipfs'\n return new IPFSRepo(repoPath, { autoMigrate: options.repoAutoMigrate })\n}\n","'use strict'\n\nconst debounce = require('just-debounce-it')\n\nconst Message = require('../types/message')\nconst logger = require('../utils').logger\n\nmodule.exports = class MsgQueue {\n constructor (selfPeerId, otherPeerId, network) {\n this.peerId = otherPeerId\n this.network = network\n this.refcnt = 1\n\n this._entries = []\n this._log = logger(selfPeerId, 'msgqueue', otherPeerId.toB58String().slice(0, 8))\n this.sendEntries = debounce(this._sendEntries.bind(this), 200)\n }\n\n addMessage (msg) {\n if (msg.empty) {\n return\n }\n\n this.send(msg)\n }\n\n addEntries (entries) {\n this._entries = this._entries.concat(entries)\n this.sendEntries()\n }\n\n _sendEntries () {\n if (!this._entries.length) {\n return\n }\n\n const msg = new Message(false)\n this._entries.forEach((entry) => {\n if (entry.cancel) {\n msg.cancel(entry.cid)\n } else {\n msg.addEntry(entry.cid, entry.priority)\n }\n })\n this._entries = []\n this.addMessage(msg)\n }\n\n async send (msg) {\n try {\n await this.network.connectTo(this.peerId)\n } catch (err) {\n this._log.error('cant connect to peer %s: %s', this.peerId.toB58String(), err.message)\n return\n }\n\n this._log('sending message to peer %s', this.peerId.toB58String())\n\n // Note: Don't wait for sendMessage() to complete\n this.network.sendMessage(this.peerId, msg).catch((err) => {\n this._log.error('send error: %s', err.message)\n })\n }\n}\n","'use strict'\n\nconst path = require('path')\nconst os = require('os')\nconst uuid = require('uuid/v4')\n\nexports.filter = (iterable, filterer) => {\n return (async function * () {\n for await (const value of iterable) {\n const keep = await filterer(value)\n if (!keep) continue\n yield value\n }\n })()\n}\n\n// Not just sort, because the sorter is given all the values and should return\n// them all sorted\nexports.sortAll = (iterable, sorter) => {\n return (async function * () {\n let values = []\n for await (const value of iterable) values.push(value)\n values = await sorter(values)\n for (const value of values) yield value\n })()\n}\n\nexports.take = (iterable, n) => {\n return (async function * () {\n if (n <= 0) return\n let i = 0\n for await (const value of iterable) {\n yield value\n i++\n if (i >= n) return\n }\n })()\n}\n\nexports.map = (iterable, mapper) => {\n return (async function * () {\n for await (const value of iterable) {\n yield mapper(value)\n }\n })()\n}\n\nexports.replaceStartWith = function (s, r) {\n const matcher = new RegExp('^' + r)\n return s.replace(matcher, '')\n}\n\nexports.tmpdir = () => {\n return path.join(os.tmpdir(), uuid())\n}\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.toSignatureObject = toSignatureObject;\nexports.verifyES256K = verifyES256K;\nexports.verifyRecoverableES256K = verifyRecoverableES256K;\nexports.verifyEd25519 = verifyEd25519;\n\nvar _elliptic = require(\"elliptic\");\n\nvar _Digest = require(\"./Digest\");\n\nvar _base64url = _interopRequireDefault(require(\"base64url\"));\n\nvar _tweetnacl = _interopRequireDefault(require(\"tweetnacl\"));\n\nvar _tweetnaclUtil = _interopRequireDefault(require(\"tweetnacl-util\"));\n\nvar secp256k1 = new _elliptic.ec('secp256k1'); // converts a JOSE signature to it's components\n\nfunction toSignatureObject(signature) {\n var recoverable = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var rawsig = _base64url.default.toBuffer(signature);\n\n if (rawsig.length !== (recoverable ? 65 : 64)) throw new Error('wrong signature length');\n var r = rawsig.slice(0, 32).toString('hex');\n var s = rawsig.slice(32, 64).toString('hex');\n var sigObj = {\n r: r,\n s: s\n };\n\n if (recoverable) {\n sigObj.recoveryParam = rawsig[64];\n }\n\n return sigObj;\n}\n\nfunction verifyES256K(data, signature, authenticators) {\n var hash = (0, _Digest.sha256)(data);\n var sigObj = toSignatureObject(signature);\n var signer = authenticators.find(function (_ref) {\n var publicKeyHex = _ref.publicKeyHex;\n return secp256k1.keyFromPublic(publicKeyHex, 'hex').verify(hash, sigObj);\n });\n if (!signer) throw new Error('Signature invalid for JWT');\n return signer;\n}\n\nfunction verifyRecoverableES256K(data, signature, authenticators) {\n var sigObj = toSignatureObject(signature, true);\n var hash = (0, _Digest.sha256)(data);\n var recoveredKey = secp256k1.recoverPubKey(hash, sigObj, sigObj.recoveryParam);\n var recoveredPublicKeyHex = recoveredKey.encode('hex');\n var recoveredCompressedPublicKeyHex = recoveredKey.encode('hex', true);\n var recoveredAddress = (0, _Digest.toEthereumAddress)(recoveredPublicKeyHex);\n var signer = authenticators.find(function (_ref2) {\n var publicKeyHex = _ref2.publicKeyHex,\n ethereumAddress = _ref2.ethereumAddress;\n return publicKeyHex === recoveredPublicKeyHex || publicKeyHex === recoveredCompressedPublicKeyHex || ethereumAddress === recoveredAddress;\n });\n if (!signer) throw new Error('Signature invalid for JWT');\n return signer;\n}\n\nfunction verifyEd25519(data, signature, authenticators) {\n var clear = _tweetnaclUtil.default.decodeUTF8(data);\n\n var sig = _tweetnaclUtil.default.decodeBase64(_base64url.default.toBase64(signature));\n\n var signer = authenticators.find(function (_ref3) {\n var publicKeyBase64 = _ref3.publicKeyBase64;\n return _tweetnacl.default.sign.detached.verify(clear, sig, _tweetnaclUtil.default.decodeBase64(publicKeyBase64));\n });\n if (!signer) throw new Error('Signature invalid for JWT');\n return signer;\n}\n\nvar algorithms = {\n ES256K: verifyES256K,\n 'ES256K-R': verifyRecoverableES256K,\n 'Ed25519': verifyEd25519\n};\n\nfunction VerifierAlgorithm(alg) {\n var impl = algorithms[alg];\n if (!impl) throw new Error(\"Unsupported algorithm \".concat(alg));\n return impl;\n}\n\nVerifierAlgorithm.toSignatureObject = toSignatureObject;\nmodule.exports = VerifierAlgorithm;","// Generated by CoffeeScript 1.8.0\n(function() {\n var Heap, defaultCmp, floor, heapify, heappop, heappush, heappushpop, heapreplace, insort, min, nlargest, nsmallest, updateItem, _siftdown, _siftup;\n\n floor = Math.floor, min = Math.min;\n\n\n /*\n Default comparison function to be used\n */\n\n defaultCmp = function(x, y) {\n if (x < y) {\n return -1;\n }\n if (x > y) {\n return 1;\n }\n return 0;\n };\n\n\n /*\n Insert item x in list a, and keep it sorted assuming a is sorted.\n \n If x is already in a, insert it to the right of the rightmost x.\n \n Optional args lo (default 0) and hi (default a.length) bound the slice\n of a to be searched.\n */\n\n insort = function(a, x, lo, hi, cmp) {\n var mid;\n if (lo == null) {\n lo = 0;\n }\n if (cmp == null) {\n cmp = defaultCmp;\n }\n if (lo < 0) {\n throw new Error('lo must be non-negative');\n }\n if (hi == null) {\n hi = a.length;\n }\n while (lo < hi) {\n mid = floor((lo + hi) / 2);\n if (cmp(x, a[mid]) < 0) {\n hi = mid;\n } else {\n lo = mid + 1;\n }\n }\n return ([].splice.apply(a, [lo, lo - lo].concat(x)), x);\n };\n\n\n /*\n Push item onto heap, maintaining the heap invariant.\n */\n\n heappush = function(array, item, cmp) {\n if (cmp == null) {\n cmp = defaultCmp;\n }\n array.push(item);\n return _siftdown(array, 0, array.length - 1, cmp);\n };\n\n\n /*\n Pop the smallest item off the heap, maintaining the heap invariant.\n */\n\n heappop = function(array, cmp) {\n var lastelt, returnitem;\n if (cmp == null) {\n cmp = defaultCmp;\n }\n lastelt = array.pop();\n if (array.length) {\n returnitem = array[0];\n array[0] = lastelt;\n _siftup(array, 0, cmp);\n } else {\n returnitem = lastelt;\n }\n return returnitem;\n };\n\n\n /*\n Pop and return the current smallest value, and add the new item.\n \n This is more efficient than heappop() followed by heappush(), and can be\n more appropriate when using a fixed size heap. Note that the value\n returned may be larger than item! That constrains reasonable use of\n this routine unless written as part of a conditional replacement:\n if item > array[0]\n item = heapreplace(array, item)\n */\n\n heapreplace = function(array, item, cmp) {\n var returnitem;\n if (cmp == null) {\n cmp = defaultCmp;\n }\n returnitem = array[0];\n array[0] = item;\n _siftup(array, 0, cmp);\n return returnitem;\n };\n\n\n /*\n Fast version of a heappush followed by a heappop.\n */\n\n heappushpop = function(array, item, cmp) {\n var _ref;\n if (cmp == null) {\n cmp = defaultCmp;\n }\n if (array.length && cmp(array[0], item) < 0) {\n _ref = [array[0], item], item = _ref[0], array[0] = _ref[1];\n _siftup(array, 0, cmp);\n }\n return item;\n };\n\n\n /*\n Transform list into a heap, in-place, in O(array.length) time.\n */\n\n heapify = function(array, cmp) {\n var i, _i, _j, _len, _ref, _ref1, _results, _results1;\n if (cmp == null) {\n cmp = defaultCmp;\n }\n _ref1 = (function() {\n _results1 = [];\n for (var _j = 0, _ref = floor(array.length / 2); 0 <= _ref ? _j < _ref : _j > _ref; 0 <= _ref ? _j++ : _j--){ _results1.push(_j); }\n return _results1;\n }).apply(this).reverse();\n _results = [];\n for (_i = 0, _len = _ref1.length; _i < _len; _i++) {\n i = _ref1[_i];\n _results.push(_siftup(array, i, cmp));\n }\n return _results;\n };\n\n\n /*\n Update the position of the given item in the heap.\n This function should be called every time the item is being modified.\n */\n\n updateItem = function(array, item, cmp) {\n var pos;\n if (cmp == null) {\n cmp = defaultCmp;\n }\n pos = array.indexOf(item);\n if (pos === -1) {\n return;\n }\n _siftdown(array, 0, pos, cmp);\n return _siftup(array, pos, cmp);\n };\n\n\n /*\n Find the n largest elements in a dataset.\n */\n\n nlargest = function(array, n, cmp) {\n var elem, result, _i, _len, _ref;\n if (cmp == null) {\n cmp = defaultCmp;\n }\n result = array.slice(0, n);\n if (!result.length) {\n return result;\n }\n heapify(result, cmp);\n _ref = array.slice(n);\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n elem = _ref[_i];\n heappushpop(result, elem, cmp);\n }\n return result.sort(cmp).reverse();\n };\n\n\n /*\n Find the n smallest elements in a dataset.\n */\n\n nsmallest = function(array, n, cmp) {\n var elem, i, los, result, _i, _j, _len, _ref, _ref1, _results;\n if (cmp == null) {\n cmp = defaultCmp;\n }\n if (n * 10 <= array.length) {\n result = array.slice(0, n).sort(cmp);\n if (!result.length) {\n return result;\n }\n los = result[result.length - 1];\n _ref = array.slice(n);\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n elem = _ref[_i];\n if (cmp(elem, los) < 0) {\n insort(result, elem, 0, null, cmp);\n result.pop();\n los = result[result.length - 1];\n }\n }\n return result;\n }\n heapify(array, cmp);\n _results = [];\n for (i = _j = 0, _ref1 = min(n, array.length); 0 <= _ref1 ? _j < _ref1 : _j > _ref1; i = 0 <= _ref1 ? ++_j : --_j) {\n _results.push(heappop(array, cmp));\n }\n return _results;\n };\n\n _siftdown = function(array, startpos, pos, cmp) {\n var newitem, parent, parentpos;\n if (cmp == null) {\n cmp = defaultCmp;\n }\n newitem = array[pos];\n while (pos > startpos) {\n parentpos = (pos - 1) >> 1;\n parent = array[parentpos];\n if (cmp(newitem, parent) < 0) {\n array[pos] = parent;\n pos = parentpos;\n continue;\n }\n break;\n }\n return array[pos] = newitem;\n };\n\n _siftup = function(array, pos, cmp) {\n var childpos, endpos, newitem, rightpos, startpos;\n if (cmp == null) {\n cmp = defaultCmp;\n }\n endpos = array.length;\n startpos = pos;\n newitem = array[pos];\n childpos = 2 * pos + 1;\n while (childpos < endpos) {\n rightpos = childpos + 1;\n if (rightpos < endpos && !(cmp(array[childpos], array[rightpos]) < 0)) {\n childpos = rightpos;\n }\n array[pos] = array[childpos];\n pos = childpos;\n childpos = 2 * pos + 1;\n }\n array[pos] = newitem;\n return _siftdown(array, startpos, pos, cmp);\n };\n\n Heap = (function() {\n Heap.push = heappush;\n\n Heap.pop = heappop;\n\n Heap.replace = heapreplace;\n\n Heap.pushpop = heappushpop;\n\n Heap.heapify = heapify;\n\n Heap.updateItem = updateItem;\n\n Heap.nlargest = nlargest;\n\n Heap.nsmallest = nsmallest;\n\n function Heap(cmp) {\n this.cmp = cmp != null ? cmp : defaultCmp;\n this.nodes = [];\n }\n\n Heap.prototype.push = function(x) {\n return heappush(this.nodes, x, this.cmp);\n };\n\n Heap.prototype.pop = function() {\n return heappop(this.nodes, this.cmp);\n };\n\n Heap.prototype.peek = function() {\n return this.nodes[0];\n };\n\n Heap.prototype.contains = function(x) {\n return this.nodes.indexOf(x) !== -1;\n };\n\n Heap.prototype.replace = function(x) {\n return heapreplace(this.nodes, x, this.cmp);\n };\n\n Heap.prototype.pushpop = function(x) {\n return heappushpop(this.nodes, x, this.cmp);\n };\n\n Heap.prototype.heapify = function() {\n return heapify(this.nodes, this.cmp);\n };\n\n Heap.prototype.updateItem = function(x) {\n return updateItem(this.nodes, x, this.cmp);\n };\n\n Heap.prototype.clear = function() {\n return this.nodes = [];\n };\n\n Heap.prototype.empty = function() {\n return this.nodes.length === 0;\n };\n\n Heap.prototype.size = function() {\n return this.nodes.length;\n };\n\n Heap.prototype.clone = function() {\n var heap;\n heap = new Heap();\n heap.nodes = this.nodes.slice(0);\n return heap;\n };\n\n Heap.prototype.toArray = function() {\n return this.nodes.slice(0);\n };\n\n Heap.prototype.insert = Heap.prototype.push;\n\n Heap.prototype.top = Heap.prototype.peek;\n\n Heap.prototype.front = Heap.prototype.peek;\n\n Heap.prototype.has = Heap.prototype.contains;\n\n Heap.prototype.copy = Heap.prototype.clone;\n\n return Heap;\n\n })();\n\n (function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n return define([], factory);\n } else if (typeof exports === 'object') {\n return module.exports = factory();\n } else {\n return root.Heap = factory();\n }\n })(this, function() {\n return Heap;\n });\n\n}).call(this);\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _events = require('events');\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _get = require('lodash/get');\n\nvar _get2 = _interopRequireDefault(_get);\n\nvar _isFunction = require('lodash/isFunction');\n\nvar _isFunction2 = _interopRequireDefault(_isFunction);\n\nvar _VisibilityChangeEmitter = require('./VisibilityChangeEmitter');\n\nvar _VisibilityChangeEmitter2 = _interopRequireDefault(_VisibilityChangeEmitter);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* global window */\n\n\nvar debug = require('debug')('latency-monitor:LatencyMonitor');\n\n/**\n * @typedef {Object} SummaryObject\n * @property {Number} events How many events were called\n * @property {Number} minMS What was the min time for a cb to be called\n * @property {Number} maxMS What was the max time for a cb to be called\n * @property {Number} avgMs What was the average time for a cb to be called\n * @property {Number} lengthMs How long this interval was in ms\n */\n\n/**\n * A class to monitor latency of any async function which works in a browser or node. This works by periodically calling\n * the asyncTestFn and timing how long it takes the callback to be called. It can also periodically emit stats about this.\n * This can be disabled and stats can be pulled via setting dataEmitIntervalMs = 0.\n *\n * The default implementation is an event loop latency monitor. This works by firing periodic events into the event loop\n * and timing how long it takes to get back.\n *\n * @example\n * const monitor = new LatencyMonitor();\n * monitor.on('data', (summary) => console.log('Event Loop Latency: %O', summary));\n *\n * @example\n * const monitor = new LatencyMonitor({latencyCheckIntervalMs: 1000, dataEmitIntervalMs: 60000, asyncTestFn:ping});\n * monitor.on('data', (summary) => console.log('Ping Pong Latency: %O', summary));\n */\n\nvar LatencyMonitor = function (_EventEmitter) {\n _inherits(LatencyMonitor, _EventEmitter);\n\n /**\n * @param {Number} [latencyCheckIntervalMs=500] How often to add a latency check event (ms)\n * @param {Number} [dataEmitIntervalMs=5000] How often to summarize latency check events. null or 0 disables event firing\n * @param {function} [asyncTestFn] What cb-style async function to use\n * @param {Number} [latencyRandomPercentage=5] What percent (+/-) of latencyCheckIntervalMs should we randomly use? This helps avoid alignment to other events.\n */\n function LatencyMonitor() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n latencyCheckIntervalMs = _ref.latencyCheckIntervalMs,\n dataEmitIntervalMs = _ref.dataEmitIntervalMs,\n asyncTestFn = _ref.asyncTestFn,\n latencyRandomPercentage = _ref.latencyRandomPercentage;\n\n _classCallCheck(this, LatencyMonitor);\n\n var _this = _possibleConstructorReturn(this, (LatencyMonitor.__proto__ || Object.getPrototypeOf(LatencyMonitor)).call(this));\n\n var that = _this;\n\n // 0 isn't valid here, so its ok to use ||\n that.latencyCheckIntervalMs = latencyCheckIntervalMs || 500; // 0.5s\n that.latencyRandomPercentage = latencyRandomPercentage || 10;\n that._latecyCheckMultiply = 2 * (that.latencyRandomPercentage / 100.0) * that.latencyCheckIntervalMs;\n that._latecyCheckSubtract = that._latecyCheckMultiply / 2;\n\n that.dataEmitIntervalMs = dataEmitIntervalMs === null || dataEmitIntervalMs === 0 ? undefined : dataEmitIntervalMs || 5 * 1000; // 5s\n debug('latencyCheckIntervalMs: %s dataEmitIntervalMs: %s', that.latencyCheckIntervalMs, that.dataEmitIntervalMs);\n if (that.dataEmitIntervalMs) {\n debug('Expecting ~%s events per summary', that.latencyCheckIntervalMs / that.dataEmitIntervalMs);\n } else {\n debug('Not emitting summaries');\n }\n\n that.asyncTestFn = asyncTestFn; // If there is no asyncFn, we measure latency\n\n // If process: use high resolution timer\n if (process && process.hrtime) {\n debug('Using process.hrtime for timing');\n that.now = process.hrtime;\n that.getDeltaMS = function (startTime) {\n var hrtime = that.now(startTime);\n return hrtime[0] * 1000 + hrtime[1] / 1000000;\n };\n // Let's try for a timer that only monotonically increases\n } else if (typeof window !== 'undefined' && (0, _get2.default)(window, 'performance.now')) {\n debug('Using performance.now for timing');\n that.now = window.performance.now.bind(window.performance);\n that.getDeltaMS = function (startTime) {\n return Math.round(that.now() - startTime);\n };\n } else {\n debug('Using Date.now for timing');\n that.now = Date.now;\n that.getDeltaMS = function (startTime) {\n return that.now() - startTime;\n };\n }\n\n that._latencyData = that._initLatencyData();\n\n // We check for isBrowser because of browsers set max rates of timeouts when a page is hidden,\n // so we fall back to another library\n // See: http://stackoverflow.com/questions/6032429/chrome-timeouts-interval-suspended-in-background-tabs\n if (isBrowser()) {\n that._visibilityChangeEmitter = new _VisibilityChangeEmitter2.default();\n that._visibilityChangeEmitter.on('visibilityChange', function (pageInFocus) {\n if (pageInFocus) {\n that._startTimers();\n } else {\n that._emitSummary();\n that._stopTimers();\n }\n });\n }\n\n if (!that._visibilityChangeEmitter || that._visibilityChangeEmitter.isVisible()) {\n that._startTimers();\n }\n return _this;\n }\n\n /**\n * Start internal timers\n * @private\n */\n\n\n _createClass(LatencyMonitor, [{\n key: '_startTimers',\n value: function _startTimers() {\n var _this2 = this;\n\n // Timer already started, ignore this\n if (this._checkLatencyID) {\n return;\n }\n this._checkLatency();\n if (this.dataEmitIntervalMs) {\n this._emitIntervalID = setInterval(function () {\n return _this2._emitSummary();\n }, this.dataEmitIntervalMs);\n if ((0, _isFunction2.default)(this._emitIntervalID.unref)) {\n this._emitIntervalID.unref(); // Doesn't block exit\n }\n }\n }\n\n /**\n * Stop internal timers\n * @private\n */\n\n }, {\n key: '_stopTimers',\n value: function _stopTimers() {\n if (this._checkLatencyID) {\n clearTimeout(this._checkLatencyID);\n this._checkLatencyID = undefined;\n }\n if (this._emitIntervalID) {\n clearInterval(this._emitIntervalID);\n this._emitIntervalID = undefined;\n }\n }\n\n /**\n * Emit summary only if there were events. It might not have any events if it was forced via a page hidden/show\n * @private\n */\n\n }, {\n key: '_emitSummary',\n value: function _emitSummary() {\n var summary = this.getSummary();\n if (summary.events > 0) {\n this.emit('data', summary);\n }\n }\n\n /**\n * Calling this function will end the collection period. If a timing event was already fired and somewhere in the queue,\n * it will not count for this time period\n * @returns {SummaryObject}\n */\n\n }, {\n key: 'getSummary',\n value: function getSummary() {\n // We might want to adjust for the number of expected events\n // Example: first 1 event it comes back, then such a long blocker that the next emit check comes\n // Then this fires - looks like no latency!!\n var latency = {\n events: this._latencyData.events,\n minMs: this._latencyData.minMs,\n maxMs: this._latencyData.maxMs,\n avgMs: this._latencyData.events ? this._latencyData.totalMs / this._latencyData.events : Number.POSITIVE_INFINITY,\n lengthMs: this.getDeltaMS(this._latencyData.startTime)\n };\n this._latencyData = this._initLatencyData(); // Clear\n\n debug('Summary: %O', latency);\n return latency;\n }\n\n /**\n * Randomly calls an async fn every roughly latencyCheckIntervalMs (plus some randomness). If no async fn is found,\n * it will simply report on event loop latency.\n *\n * @private\n */\n\n }, {\n key: '_checkLatency',\n value: function _checkLatency() {\n var _this3 = this;\n\n var that = this;\n // Randomness is needed to avoid alignment by accident to regular things in the event loop\n var randomness = Math.random() * that._latecyCheckMultiply - that._latecyCheckSubtract;\n\n // We use this to ensure that in case some overlap somehow, we don't take the wrong startTime/offset\n var localData = {\n deltaOffset: Math.ceil(that.latencyCheckIntervalMs + randomness),\n startTime: that.now()\n };\n\n var cb = function cb() {\n // We are already stopped, ignore this datapoint\n if (!_this3._checkLatencyID) {\n return;\n }\n var deltaMS = that.getDeltaMS(localData.startTime) - localData.deltaOffset;\n that._checkLatency(); // Start again ASAP\n\n // Add the data point. If this gets complex, refactor it\n that._latencyData.events++;\n that._latencyData.minMs = Math.min(that._latencyData.minMs, deltaMS);\n that._latencyData.maxMs = Math.max(that._latencyData.maxMs, deltaMS);\n that._latencyData.totalMs += deltaMS;\n debug('MS: %s Data: %O', deltaMS, that._latencyData);\n };\n debug('localData: %O', localData);\n\n this._checkLatencyID = setTimeout(function () {\n // This gets rid of including event loop\n if (that.asyncTestFn) {\n // Clear timing related things\n localData.deltaOffset = 0;\n localData.startTime = that.now();\n that.asyncTestFn(cb);\n } else {\n // setTimeout is not more accurate than 1ms, so this will ensure positive numbers. Add 1 to emitted data to remove.\n // This is not the best, but for now it'll be just fine. This isn't meant to be sub ms accurate.\n localData.deltaOffset -= 1;\n // If there is no function to test, we mean check latency which is a special case that is really cb => cb()\n // We avoid that for the few extra function all overheads. Also, we want to keep the timers different\n cb();\n }\n }, localData.deltaOffset);\n\n if ((0, _isFunction2.default)(this._checkLatencyID.unref)) {\n this._checkLatencyID.unref(); // Doesn't block exit\n }\n }\n }, {\n key: '_initLatencyData',\n value: function _initLatencyData() {\n return {\n startTime: this.now(),\n minMs: Number.POSITIVE_INFINITY,\n maxMs: Number.NEGATIVE_INFINITY,\n events: 0,\n totalMs: 0\n };\n }\n }]);\n\n return LatencyMonitor;\n}(_events2.default);\n\nfunction isBrowser() {\n return typeof window !== 'undefined';\n}\n\nexports.default = LatencyMonitor;\n//# sourceMappingURL=LatencyMonitor.js.map\n","'use strict'\n\nconst BN = require('asn1.js').bignum\n\n// Convert a BN.js instance to a base64 encoded string without padding\n// Adapted from https://tools.ietf.org/html/draft-ietf-jose-json-web-signature-41#appendix-C\nexports.toBase64 = function toBase64 (bn, len) {\n // if len is defined then the bytes are leading-0 padded to the length\n const s = bn.toArrayLike(Buffer, 'be', len).toString('base64')\n\n return s\n .replace(/(=*)$/, '') // Remove any trailing '='s\n .replace(/\\+/g, '-') // 62nd char of encoding\n .replace(/\\//g, '_') // 63rd char of encoding\n}\n\n// Convert a base64 encoded string to a BN.js instance\nexports.toBn = function toBn (str) {\n return new BN(Buffer.from(str, 'base64'))\n}\n","'use strict'\n\nconst Key = require('interface-datastore').Key\n\nconst apiFile = new Key('api')\n\nmodule.exports = (store) => {\n return {\n /**\n * Get the current configuration from the repo.\n *\n * @returns {Promise}\n */\n async get () {\n const value = await store.get(apiFile)\n return value && value.toString()\n },\n /**\n * Set the current configuration for this repo.\n *\n * @param {Object} value - the api address to be written\n * @returns {Promise}\n */\n async set (value) { // eslint-disable-line require-await\n return store.put(apiFile, Buffer.from(value.toString()))\n },\n /**\n * Deletes api file\n *\n * @returns {Promise}\n */\n async delete () { // eslint-disable-line require-await\n return store.delete(apiFile)\n }\n }\n}\n","'use strict'\n\nconst ipns = require('ipns')\nconst crypto = require('libp2p-crypto')\nconst PeerId = require('peer-id')\nconst errcode = require('err-code')\nconst CID = require('cids')\n\nconst debug = require('debug')\nconst log = debug('ipfs:ipns:resolver')\nlog.error = debug('ipfs:ipns:resolver:error')\n\nconst { Errors } = require('interface-datastore')\nconst ERR_NOT_FOUND = Errors.notFoundError().code\n\nconst defaultMaximumRecursiveDepth = 32\n\nclass IpnsResolver {\n constructor (routing) {\n this._routing = routing\n }\n\n async resolve (name, options) {\n options = options || {}\n\n if (typeof name !== 'string') {\n throw errcode(new Error('invalid name'), 'ERR_INVALID_NAME')\n }\n\n options = options || {}\n const recursive = options.recursive && options.recursive.toString() === 'true'\n\n const nameSegments = name.split('/')\n\n if (nameSegments.length !== 3 || nameSegments[0] !== '') {\n throw errcode(new Error('invalid name'), 'ERR_INVALID_NAME')\n }\n\n const key = nameSegments[2]\n\n // Define a maximum depth if recursive option enabled\n let depth\n\n if (recursive) {\n depth = defaultMaximumRecursiveDepth\n }\n\n const res = await this.resolver(key, depth)\n\n log(`${name} was locally resolved correctly`)\n return res\n }\n\n // Recursive resolver according to the specified depth\n async resolver (name, depth) {\n // Exceeded recursive maximum depth\n if (depth === 0) {\n const errMsg = `could not resolve name (recursion limit of ${defaultMaximumRecursiveDepth} exceeded)`\n log.error(errMsg)\n\n throw errcode(new Error(errMsg), 'ERR_RESOLVE_RECURSION_LIMIT')\n }\n\n const res = await this._resolveName(name)\n const nameSegments = res.split('/')\n\n // If obtained a ipfs cid or recursive option is disabled\n if (nameSegments[1] === 'ipfs' || !depth) {\n return res\n }\n\n // continue recursively until depth equals 0\n return this.resolver(nameSegments[2], depth - 1)\n }\n\n // resolve ipns entries from the provided routing\n async _resolveName (name) {\n const peerId = PeerId.createFromBytes(new CID(name).multihash) // TODO: change to `PeerId.createFromCID` when https://github.com/libp2p/js-peer-id/pull/105 lands and js-ipfs switched to async peer-id lib\n const { routingKey } = ipns.getIdKeys(peerId.toBytes())\n let record\n\n try {\n record = await this._routing.get(routingKey.toBuffer())\n } catch (err) {\n log.error(err)\n\n if (err.code === ERR_NOT_FOUND) {\n throw errcode(new Error(`record requested for ${name} was not found in the network`), 'ERR_NO_RECORD_FOUND')\n }\n\n throw errcode(new Error(`unexpected error getting the ipns record ${peerId.id}`), 'ERR_UNEXPECTED_ERROR_GETTING_RECORD')\n }\n\n // IPNS entry\n let ipnsEntry\n try {\n ipnsEntry = ipns.unmarshal(record)\n } catch (err) {\n log.error(err)\n\n throw errcode(new Error('found ipns record that we couldn\\'t convert to a value'), 'ERR_INVALID_RECORD_RECEIVED')\n }\n\n // if the record has a public key validate it\n if (ipnsEntry.pubKey) {\n return this._validateRecord(peerId, ipnsEntry)\n }\n\n // Otherwise, try to get the public key from routing\n let pubKey\n try {\n pubKey = await this._routing.get(routingKey.toBuffer())\n } catch (err) {\n log.error(err)\n\n if (err.code === ERR_NOT_FOUND) {\n throw errcode(new Error(`public key requested for ${name} was not found in the network`), 'ERR_NO_RECORD_FOUND')\n }\n\n throw errcode(new Error(`unexpected error getting the public key for the ipns record ${peerId.id}`), 'ERR_UNEXPECTED_ERROR_GETTING_PUB_KEY')\n }\n\n try {\n // Insert it into the peer id, in order to be validated by IPNS validator\n peerId.pubKey = crypto.keys.unmarshalPublicKey(pubKey)\n } catch (err) {\n log.error(err)\n\n throw errcode(new Error('found public key record that we couldn\\'t convert to a value'), 'ERR_INVALID_PUB_KEY_RECEIVED')\n }\n\n return this._validateRecord(peerId, ipnsEntry)\n }\n\n // validate a resolved record\n async _validateRecord (peerId, ipnsEntry) {\n const pubKey = await ipns.extractPublicKey(peerId, ipnsEntry)\n\n // IPNS entry validation\n await ipns.validate(pubKey, ipnsEntry)\n\n return ipnsEntry.value.toString()\n }\n}\n\nexports = module.exports = IpnsResolver\n","var $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar has = require('../internals/has');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\n\n// `Reflect.get` method\n// https://tc39.github.io/ecma262/#sec-reflect.get\nfunction get(target, propertyKey /* , receiver */) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var descriptor, prototype;\n if (anObject(target) === receiver) return target[propertyKey];\n if (descriptor = getOwnPropertyDescriptorModule.f(target, propertyKey)) return has(descriptor, 'value')\n ? descriptor.value\n : descriptor.get === undefined\n ? undefined\n : descriptor.get.call(receiver);\n if (isObject(prototype = getPrototypeOf(target))) return get(prototype, propertyKey, receiver);\n}\n\n$({ target: 'Reflect', stat: true }, {\n get: get\n});\n","/**\n * Secure Hash Algorithm with 256-bit digest (SHA-256) implementation.\n *\n * See FIPS 180-2 for details.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2015 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./md');\nrequire('./util');\n\nvar sha256 = module.exports = forge.sha256 = forge.sha256 || {};\nforge.md.sha256 = forge.md.algorithms.sha256 = sha256;\n\n/**\n * Creates a SHA-256 message digest object.\n *\n * @return a message digest object.\n */\nsha256.create = function() {\n // do initialization as necessary\n if(!_initialized) {\n _init();\n }\n\n // SHA-256 state contains eight 32-bit integers\n var _state = null;\n\n // input buffer\n var _input = forge.util.createBuffer();\n\n // used for word storage\n var _w = new Array(64);\n\n // message digest object\n var md = {\n algorithm: 'sha256',\n blockLength: 64,\n digestLength: 32,\n // 56-bit length of message so far (does not including padding)\n messageLength: 0,\n // true message length\n fullMessageLength: null,\n // size of message length in bytes\n messageLengthSize: 8\n };\n\n /**\n * Starts the digest.\n *\n * @return this digest object.\n */\n md.start = function() {\n // up to 56-bit message length for convenience\n md.messageLength = 0;\n\n // full message length (set md.messageLength64 for backwards-compatibility)\n md.fullMessageLength = md.messageLength64 = [];\n var int32s = md.messageLengthSize / 4;\n for(var i = 0; i < int32s; ++i) {\n md.fullMessageLength.push(0);\n }\n _input = forge.util.createBuffer();\n _state = {\n h0: 0x6A09E667,\n h1: 0xBB67AE85,\n h2: 0x3C6EF372,\n h3: 0xA54FF53A,\n h4: 0x510E527F,\n h5: 0x9B05688C,\n h6: 0x1F83D9AB,\n h7: 0x5BE0CD19\n };\n return md;\n };\n // start digest automatically for first time\n md.start();\n\n /**\n * Updates the digest with the given message input. The given input can\n * treated as raw input (no encoding will be applied) or an encoding of\n * 'utf8' maybe given to encode the input using UTF-8.\n *\n * @param msg the message input to update with.\n * @param encoding the encoding to use (default: 'raw', other: 'utf8').\n *\n * @return this digest object.\n */\n md.update = function(msg, encoding) {\n if(encoding === 'utf8') {\n msg = forge.util.encodeUtf8(msg);\n }\n\n // update message length\n var len = msg.length;\n md.messageLength += len;\n len = [(len / 0x100000000) >>> 0, len >>> 0];\n for(var i = md.fullMessageLength.length - 1; i >= 0; --i) {\n md.fullMessageLength[i] += len[1];\n len[1] = len[0] + ((md.fullMessageLength[i] / 0x100000000) >>> 0);\n md.fullMessageLength[i] = md.fullMessageLength[i] >>> 0;\n len[0] = ((len[1] / 0x100000000) >>> 0);\n }\n\n // add bytes to input buffer\n _input.putBytes(msg);\n\n // process bytes\n _update(_state, _w, _input);\n\n // compact input buffer every 2K or if empty\n if(_input.read > 2048 || _input.length() === 0) {\n _input.compact();\n }\n\n return md;\n };\n\n /**\n * Produces the digest.\n *\n * @return a byte buffer containing the digest value.\n */\n md.digest = function() {\n /* Note: Here we copy the remaining bytes in the input buffer and\n add the appropriate SHA-256 padding. Then we do the final update\n on a copy of the state so that if the user wants to get\n intermediate digests they can do so. */\n\n /* Determine the number of bytes that must be added to the message\n to ensure its length is congruent to 448 mod 512. In other words,\n the data to be digested must be a multiple of 512 bits (or 128 bytes).\n This data includes the message, some padding, and the length of the\n message. Since the length of the message will be encoded as 8 bytes (64\n bits), that means that the last segment of the data must have 56 bytes\n (448 bits) of message and padding. Therefore, the length of the message\n plus the padding must be congruent to 448 mod 512 because\n 512 - 128 = 448.\n\n In order to fill up the message length it must be filled with\n padding that begins with 1 bit followed by all 0 bits. Padding\n must *always* be present, so if the message length is already\n congruent to 448 mod 512, then 512 padding bits must be added. */\n\n var finalBlock = forge.util.createBuffer();\n finalBlock.putBytes(_input.bytes());\n\n // compute remaining size to be digested (include message length size)\n var remaining = (\n md.fullMessageLength[md.fullMessageLength.length - 1] +\n md.messageLengthSize);\n\n // add padding for overflow blockSize - overflow\n // _padding starts with 1 byte with first bit is set (byte value 128), then\n // there may be up to (blockSize - 1) other pad bytes\n var overflow = remaining & (md.blockLength - 1);\n finalBlock.putBytes(_padding.substr(0, md.blockLength - overflow));\n\n // serialize message length in bits in big-endian order; since length\n // is stored in bytes we multiply by 8 and add carry from next int\n var next, carry;\n var bits = md.fullMessageLength[0] * 8;\n for(var i = 0; i < md.fullMessageLength.length - 1; ++i) {\n next = md.fullMessageLength[i + 1] * 8;\n carry = (next / 0x100000000) >>> 0;\n bits += carry;\n finalBlock.putInt32(bits >>> 0);\n bits = next >>> 0;\n }\n finalBlock.putInt32(bits);\n\n var s2 = {\n h0: _state.h0,\n h1: _state.h1,\n h2: _state.h2,\n h3: _state.h3,\n h4: _state.h4,\n h5: _state.h5,\n h6: _state.h6,\n h7: _state.h7\n };\n _update(s2, _w, finalBlock);\n var rval = forge.util.createBuffer();\n rval.putInt32(s2.h0);\n rval.putInt32(s2.h1);\n rval.putInt32(s2.h2);\n rval.putInt32(s2.h3);\n rval.putInt32(s2.h4);\n rval.putInt32(s2.h5);\n rval.putInt32(s2.h6);\n rval.putInt32(s2.h7);\n return rval;\n };\n\n return md;\n};\n\n// sha-256 padding bytes not initialized yet\nvar _padding = null;\nvar _initialized = false;\n\n// table of constants\nvar _k = null;\n\n/**\n * Initializes the constant tables.\n */\nfunction _init() {\n // create padding\n _padding = String.fromCharCode(128);\n _padding += forge.util.fillString(String.fromCharCode(0x00), 64);\n\n // create K table for SHA-256\n _k = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];\n\n // now initialized\n _initialized = true;\n}\n\n/**\n * Updates a SHA-256 state with the given byte buffer.\n *\n * @param s the SHA-256 state to update.\n * @param w the array to use to store words.\n * @param bytes the byte buffer to update with.\n */\nfunction _update(s, w, bytes) {\n // consume 512 bit (64 byte) chunks\n var t1, t2, s0, s1, ch, maj, i, a, b, c, d, e, f, g, h;\n var len = bytes.length();\n while(len >= 64) {\n // the w array will be populated with sixteen 32-bit big-endian words\n // and then extended into 64 32-bit words according to SHA-256\n for(i = 0; i < 16; ++i) {\n w[i] = bytes.getInt32();\n }\n for(; i < 64; ++i) {\n // XOR word 2 words ago rot right 17, rot right 19, shft right 10\n t1 = w[i - 2];\n t1 =\n ((t1 >>> 17) | (t1 << 15)) ^\n ((t1 >>> 19) | (t1 << 13)) ^\n (t1 >>> 10);\n // XOR word 15 words ago rot right 7, rot right 18, shft right 3\n t2 = w[i - 15];\n t2 =\n ((t2 >>> 7) | (t2 << 25)) ^\n ((t2 >>> 18) | (t2 << 14)) ^\n (t2 >>> 3);\n // sum(t1, word 7 ago, t2, word 16 ago) modulo 2^32\n w[i] = (t1 + w[i - 7] + t2 + w[i - 16]) | 0;\n }\n\n // initialize hash value for this chunk\n a = s.h0;\n b = s.h1;\n c = s.h2;\n d = s.h3;\n e = s.h4;\n f = s.h5;\n g = s.h6;\n h = s.h7;\n\n // round function\n for(i = 0; i < 64; ++i) {\n // Sum1(e)\n s1 =\n ((e >>> 6) | (e << 26)) ^\n ((e >>> 11) | (e << 21)) ^\n ((e >>> 25) | (e << 7));\n // Ch(e, f, g) (optimized the same way as SHA-1)\n ch = g ^ (e & (f ^ g));\n // Sum0(a)\n s0 =\n ((a >>> 2) | (a << 30)) ^\n ((a >>> 13) | (a << 19)) ^\n ((a >>> 22) | (a << 10));\n // Maj(a, b, c) (optimized the same way as SHA-1)\n maj = (a & b) | (c & (a ^ b));\n\n // main algorithm\n t1 = h + s1 + ch + _k[i] + w[i];\n t2 = s0 + maj;\n h = g;\n g = f;\n f = e;\n // `>>> 0` necessary to avoid iOS/Safari 10 optimization bug\n // can't truncate with `| 0`\n e = (d + t1) >>> 0;\n d = c;\n c = b;\n b = a;\n // `>>> 0` necessary to avoid iOS/Safari 10 optimization bug\n // can't truncate with `| 0`\n a = (t1 + t2) >>> 0;\n }\n\n // update hash state\n s.h0 = (s.h0 + a) | 0;\n s.h1 = (s.h1 + b) | 0;\n s.h2 = (s.h2 + c) | 0;\n s.h3 = (s.h3 + d) | 0;\n s.h4 = (s.h4 + e) | 0;\n s.h5 = (s.h5 + f) | 0;\n s.h6 = (s.h6 + g) | 0;\n s.h7 = (s.h7 + h) | 0;\n len -= 64;\n }\n}\n","var __self__ = (function (root) {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = root.DOMException\n}\nF.prototype = root;\nreturn new F();\n})(typeof self !== 'undefined' ? self : this);\n(function(self) {\n\nvar irrelevant = (function (exports) {\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n return exports;\n\n}({}));\n})(__self__);\ndelete __self__.fetch.polyfill\nexports = __self__.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = __self__.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = __self__.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = __self__.Headers\nexports.Request = __self__.Request\nexports.Response = __self__.Response\nmodule.exports = exports\n","/**\n * Implementation of the multicodec specification.\n *\n * @module multicodec\n * @example\n * const multicodec = require('multicodec')\n *\n * const prefixedProtobuf = multicodec.addPrefix('protobuf', protobufBuffer)\n * // prefixedProtobuf 0x50...\n *\n */\n'use strict'\n\nconst varint = require('varint')\nconst intTable = require('./int-table')\nconst codecNameToCodeVarint = require('./varint-table')\nconst util = require('./util')\n\nexports = module.exports\n\n/**\n * Prefix a buffer with a multicodec-packed.\n *\n * @param {string|number} multicodecStrOrCode\n * @param {Buffer} data\n * @returns {Buffer}\n */\nexports.addPrefix = (multicodecStrOrCode, data) => {\n let prefix\n\n if (Buffer.isBuffer(multicodecStrOrCode)) {\n prefix = util.varintBufferEncode(multicodecStrOrCode)\n } else {\n if (codecNameToCodeVarint[multicodecStrOrCode]) {\n prefix = codecNameToCodeVarint[multicodecStrOrCode]\n } else {\n throw new Error('multicodec not recognized')\n }\n }\n return Buffer.concat([prefix, data])\n}\n\n/**\n * Decapsulate the multicodec-packed prefix from the data.\n *\n * @param {Buffer} data\n * @returns {Buffer}\n */\nexports.rmPrefix = (data) => {\n varint.decode(data)\n return data.slice(varint.decode.bytes)\n}\n\n/**\n * Get the codec of the prefixed data.\n * @param {Buffer} prefixedData\n * @returns {string}\n */\nexports.getCodec = (prefixedData) => {\n const code = varint.decode(prefixedData)\n const codecName = intTable.get(code)\n if (codecName === undefined) {\n throw new Error(`Code ${code} not found`)\n }\n return codecName\n}\n\n/**\n * Get the name of the codec.\n * @param {number} codec\n * @returns {string}\n */\nexports.getName = (codec) => {\n return intTable.get(codec)\n}\n\n/**\n * Get the code of the codec\n * @param {string} name\n * @returns {number}\n */\nexports.getNumber = (name) => {\n const code = codecNameToCodeVarint[name]\n if (code === undefined) {\n throw new Error('Codec `' + name + '` not found')\n }\n return util.varintBufferDecode(code)[0]\n}\n\n/**\n * Get the code of the prefixed data.\n * @param {Buffer} prefixedData\n * @returns {number}\n */\nexports.getCode = (prefixedData) => {\n return varint.decode(prefixedData)\n}\n\n/**\n * Get the code as varint of a codec name.\n * @param {string} codecName\n * @returns {Buffer}\n */\nexports.getCodeVarint = (codecName) => {\n const code = codecNameToCodeVarint[codecName]\n if (code === undefined) {\n throw new Error('Codec `' + codecName + '` not found')\n }\n return code\n}\n\n/**\n * Get the varint of a code.\n * @param {Number} code\n * @returns {Array.}\n */\nexports.getVarint = (code) => {\n return varint.encode(code)\n}\n\n// Make the constants top-level constants\nconst constants = require('./constants')\nObject.assign(exports, constants)\n\n// Human friendly names for printing, e.g. in error messages\nexports.print = require('./print')\n","'use strict'\n\nconst errCode = require('err-code')\n\n// make sure the content only emits buffer-a-likes\nasync function * validateChunks (source) {\n for await (const content of source) {\n if (content.length === undefined) {\n throw errCode(new Error('Content was invalid'), 'ERR_INVALID_CONTENT')\n }\n\n if (typeof content === 'string' || content instanceof String) {\n yield Buffer.from(content, 'utf8')\n } else if (Array.isArray(content)) {\n yield Buffer.from(content)\n } else {\n yield content\n }\n }\n}\n\nmodule.exports = validateChunks\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","'use strict'\n\nconst path = require('path')\nconst os = require('os')\nconst uuid = require('uuid/v4')\n\nexports.filter = (iterable, filterer) => {\n return (async function * () {\n for await (const value of iterable) {\n const keep = await filterer(value)\n if (!keep) continue\n yield value\n }\n })()\n}\n\n// Not just sort, because the sorter is given all the values and should return\n// them all sorted\nexports.sortAll = (iterable, sorter) => {\n return (async function * () {\n let values = []\n for await (const value of iterable) values.push(value)\n values = await sorter(values)\n for (const value of values) yield value\n })()\n}\n\nexports.take = (iterable, n) => {\n return (async function * () {\n if (n <= 0) return\n let i = 0\n for await (const value of iterable) {\n yield value\n i++\n if (i >= n) return\n }\n })()\n}\n\nexports.map = (iterable, mapper) => {\n return (async function * () {\n for await (const value of iterable) {\n yield mapper(value)\n }\n })()\n}\n\nexports.replaceStartWith = function (s, r) {\n const matcher = new RegExp('^' + r)\n return s.replace(matcher, '')\n}\n\nexports.tmpdir = () => {\n return path.join(os.tmpdir(), uuid())\n}\n","'use strict';\n\nfunction createError(err, code, props) {\n var key;\n\n if (!(err instanceof Error)) {\n throw new TypeError('Please pass an Error to err-code');\n }\n\n if (typeof code === 'object') {\n props = code;\n } else if (code != null) {\n err.code = code;\n }\n\n if (props) {\n for (key in props) {\n err[key] = props[key];\n }\n }\n\n return err;\n}\n\nmodule.exports = createError;\n","var inherits = require('inherits')\nvar Readable = require('readable-stream').Readable\nvar extend = require('xtend')\n\nmodule.exports = ReadStream\ninherits(ReadStream, Readable)\n\nfunction ReadStream (iterator, options) {\n if (!(this instanceof ReadStream)) return new ReadStream(iterator, options)\n options = options || {}\n Readable.call(this, extend(options, {\n objectMode: true\n }))\n this._iterator = iterator\n this._options = options\n this.on('end', this.destroy.bind(this, null, null))\n}\n\nReadStream.prototype._read = function () {\n var self = this\n var options = this._options\n if (this.destroyed) return\n\n this._iterator.next(function (err, key, value) {\n if (self.destroyed) return\n if (err) return self.destroy(err)\n\n if (key === undefined && value === undefined) {\n self.push(null)\n } else if (options.keys !== false && options.values === false) {\n self.push(key)\n } else if (options.keys === false && options.values !== false) {\n self.push(value)\n } else {\n self.push({ key: key, value: value })\n }\n })\n}\n\nReadStream.prototype._destroy = function (err, callback) {\n this._iterator.end(function (err2) {\n callback(err || err2)\n })\n}\n","'use strict'\nvar abortCb = require('../util/abort-cb')\n\nmodule.exports = function values (array, onAbort) {\n if(!array)\n return function (abort, cb) {\n if(abort) return abortCb(cb, abort, onAbort)\n return cb(true)\n }\n if(!Array.isArray(array))\n array = Object.keys(array).map(function (k) {\n return array[k]\n })\n var i = 0\n return function (abort, cb) {\n if(abort)\n return abortCb(cb, abort, onAbort)\n if(i >= array.length)\n cb(true)\n else\n cb(null, array[i++])\n }\n}\n","'use strict'\n\nconst nacl = require('tweetnacl')\nconst nextTick = require('async/nextTick')\n\nexports.publicKeyLength = nacl.sign.publicKeyLength\nexports.privateKeyLength = nacl.sign.secretKeyLength\n\nexports.generateKey = function (callback) {\n nextTick(() => {\n let result\n try {\n result = nacl.sign.keyPair()\n } catch (err) {\n return callback(err)\n }\n callback(null, result)\n })\n}\n\n// seed should be a 32 byte uint8array\nexports.generateKeyFromSeed = function (seed, callback) {\n nextTick(() => {\n let result\n try {\n result = nacl.sign.keyPair.fromSeed(seed)\n } catch (err) {\n return callback(err)\n }\n callback(null, result)\n })\n}\n\nexports.hashAndSign = function (key, msg, callback) {\n nextTick(() => {\n callback(null, Buffer.from(nacl.sign.detached(msg, key)))\n })\n}\n\nexports.hashAndVerify = function (key, sig, msg, callback) {\n nextTick(() => {\n let result\n try {\n result = nacl.sign.detached.verify(msg, sig, key)\n } catch (err) {\n return callback(err)\n }\n\n callback(null, result)\n })\n}\n","'use strict'\n\nconst DEFAULTS = require('./defaults')\nconst isFunction = require('./util').isFunction\nconst isBoolean = require('./util').isBoolean\nconst isObject = require('./util').isObject\nconst isArray = require('./util').isArray\nconst isRegex = require('./util').isRegex\nconst assign = require('./util').assign\nconst keys = require('./util').keys\n\nfunction serialize (obj) {\n if (obj === null || obj === undefined) return obj\n if (isRegex(obj)) return obj.toString()\n return obj.toJSON ? obj.toJSON() : obj\n}\n\nfunction stringifyDeterministic (obj, opts) {\n opts = opts || assign({}, DEFAULTS)\n\n if (isFunction(opts)) opts = { compare: opts }\n\n const space = opts.space || DEFAULTS.space\n const cycles = isBoolean(opts.cycles) ? opts.cycles : DEFAULTS.cycles\n const replacer = opts.replacer || DEFAULTS.replacer\n const stringify = opts.stringify || DEFAULTS.stringify\n\n const compare = opts.compare && (function (f) {\n return function (node) {\n return function (a, b) {\n const aobj = {key: a, value: node[a]}\n const bobj = {key: b, value: node[b]}\n return f(aobj, bobj)\n }\n }\n })(opts.compare)\n\n // Detect circular structure in obj and raise error efficiently.\n if (!cycles) stringify(obj)\n\n const seen = []\n\n return (function _deterministic (parent, key, node, level) {\n const indent = space ? ('\\n' + new Array(level + 1).join(space)) : ''\n const colonSeparator = space ? ': ' : ':'\n\n node = serialize(node)\n node = replacer.call(parent, key, node)\n\n if (node === undefined) return\n\n if (!isObject(node) || node === null) return stringify(node)\n\n if (isArray(node)) {\n const out = []\n for (let i = 0; i < node.length; i++) {\n const item = _deterministic(node, i, node[i], level + 1) || stringify(null)\n out.push(indent + space + item)\n }\n return '[' + out.join(',') + indent + ']'\n } else {\n if (cycles) {\n if (seen.indexOf(node) !== -1) {\n return stringify('[Circular]')\n } else {\n seen.push(node)\n }\n }\n\n const nodeKeys = keys(node).sort(compare && compare(node))\n const out = []\n for (let i = 0; i < nodeKeys.length; i++) {\n const key = nodeKeys[i]\n const value = _deterministic(node, key, node[key], level + 1)\n\n if (!value) continue\n\n const keyValue = stringify(key) + colonSeparator + value\n out.push(indent + space + keyValue)\n }\n seen.splice(seen.indexOf(node), 1)\n return '{' + out.join(',') + indent + '}'\n }\n })({ '': obj }, '', obj, 0)\n}\n\nmodule.exports = stringifyDeterministic\n","/**\n * Utility functions for web applications.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2018 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nvar baseN = require('./baseN');\n\n/* Utilities API */\nvar util = module.exports = forge.util = forge.util || {};\n\n// define setImmediate and nextTick\n(function() {\n // use native nextTick (unless we're in webpack)\n // webpack (or better node-libs-browser polyfill) sets process.browser.\n // this way we can detect webpack properly\n if(typeof process !== 'undefined' && process.nextTick && !process.browser) {\n util.nextTick = process.nextTick;\n if(typeof setImmediate === 'function') {\n util.setImmediate = setImmediate;\n } else {\n // polyfill setImmediate with nextTick, older versions of node\n // (those w/o setImmediate) won't totally starve IO\n util.setImmediate = util.nextTick;\n }\n return;\n }\n\n // polyfill nextTick with native setImmediate\n if(typeof setImmediate === 'function') {\n util.setImmediate = function() { return setImmediate.apply(undefined, arguments); };\n util.nextTick = function(callback) {\n return setImmediate(callback);\n };\n return;\n }\n\n /* Note: A polyfill upgrade pattern is used here to allow combining\n polyfills. For example, MutationObserver is fast, but blocks UI updates,\n so it needs to allow UI updates periodically, so it falls back on\n postMessage or setTimeout. */\n\n // polyfill with setTimeout\n util.setImmediate = function(callback) {\n setTimeout(callback, 0);\n };\n\n // upgrade polyfill to use postMessage\n if(typeof window !== 'undefined' &&\n typeof window.postMessage === 'function') {\n var msg = 'forge.setImmediate';\n var callbacks = [];\n util.setImmediate = function(callback) {\n callbacks.push(callback);\n // only send message when one hasn't been sent in\n // the current turn of the event loop\n if(callbacks.length === 1) {\n window.postMessage(msg, '*');\n }\n };\n function handler(event) {\n if(event.source === window && event.data === msg) {\n event.stopPropagation();\n var copy = callbacks.slice();\n callbacks.length = 0;\n copy.forEach(function(callback) {\n callback();\n });\n }\n }\n window.addEventListener('message', handler, true);\n }\n\n // upgrade polyfill to use MutationObserver\n if(typeof MutationObserver !== 'undefined') {\n // polyfill with MutationObserver\n var now = Date.now();\n var attr = true;\n var div = document.createElement('div');\n var callbacks = [];\n new MutationObserver(function() {\n var copy = callbacks.slice();\n callbacks.length = 0;\n copy.forEach(function(callback) {\n callback();\n });\n }).observe(div, {attributes: true});\n var oldSetImmediate = util.setImmediate;\n util.setImmediate = function(callback) {\n if(Date.now() - now > 15) {\n now = Date.now();\n oldSetImmediate(callback);\n } else {\n callbacks.push(callback);\n // only trigger observer when it hasn't been triggered in\n // the current turn of the event loop\n if(callbacks.length === 1) {\n div.setAttribute('a', attr = !attr);\n }\n }\n };\n }\n\n util.nextTick = util.setImmediate;\n})();\n\n// check if running under Node.js\nutil.isNodejs =\n typeof process !== 'undefined' && process.versions && process.versions.node;\n\n\n// 'self' will also work in Web Workers (instance of WorkerGlobalScope) while\n// it will point to `window` in the main thread.\n// To remain compatible with older browsers, we fall back to 'window' if 'self'\n// is not available.\nutil.globalScope = (function() {\n if(util.isNodejs) {\n return global;\n }\n\n return typeof self === 'undefined' ? window : self;\n})();\n\n// define isArray\nutil.isArray = Array.isArray || function(x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n};\n\n// define isArrayBuffer\nutil.isArrayBuffer = function(x) {\n return typeof ArrayBuffer !== 'undefined' && x instanceof ArrayBuffer;\n};\n\n// define isArrayBufferView\nutil.isArrayBufferView = function(x) {\n return x && util.isArrayBuffer(x.buffer) && x.byteLength !== undefined;\n};\n\n/**\n * Ensure a bits param is 8, 16, 24, or 32. Used to validate input for\n * algorithms where bit manipulation, JavaScript limitations, and/or algorithm\n * design only allow for byte operations of a limited size.\n *\n * @param n number of bits.\n *\n * Throw Error if n invalid.\n */\nfunction _checkBitsParam(n) {\n if(!(n === 8 || n === 16 || n === 24 || n === 32)) {\n throw new Error('Only 8, 16, 24, or 32 bits supported: ' + n);\n }\n}\n\n// TODO: set ByteBuffer to best available backing\nutil.ByteBuffer = ByteStringBuffer;\n\n/** Buffer w/BinaryString backing */\n\n/**\n * Constructor for a binary string backed byte buffer.\n *\n * @param [b] the bytes to wrap (either encoded as string, one byte per\n * character, or as an ArrayBuffer or Typed Array).\n */\nfunction ByteStringBuffer(b) {\n // TODO: update to match DataBuffer API\n\n // the data in this buffer\n this.data = '';\n // the pointer for reading from this buffer\n this.read = 0;\n\n if(typeof b === 'string') {\n this.data = b;\n } else if(util.isArrayBuffer(b) || util.isArrayBufferView(b)) {\n if(typeof Buffer !== 'undefined' && b instanceof Buffer) {\n this.data = b.toString('binary');\n } else {\n // convert native buffer to forge buffer\n // FIXME: support native buffers internally instead\n var arr = new Uint8Array(b);\n try {\n this.data = String.fromCharCode.apply(null, arr);\n } catch(e) {\n for(var i = 0; i < arr.length; ++i) {\n this.putByte(arr[i]);\n }\n }\n }\n } else if(b instanceof ByteStringBuffer ||\n (typeof b === 'object' && typeof b.data === 'string' &&\n typeof b.read === 'number')) {\n // copy existing buffer\n this.data = b.data;\n this.read = b.read;\n }\n\n // used for v8 optimization\n this._constructedStringLength = 0;\n}\nutil.ByteStringBuffer = ByteStringBuffer;\n\n/* Note: This is an optimization for V8-based browsers. When V8 concatenates\n a string, the strings are only joined logically using a \"cons string\" or\n \"constructed/concatenated string\". These containers keep references to one\n another and can result in very large memory usage. For example, if a 2MB\n string is constructed by concatenating 4 bytes together at a time, the\n memory usage will be ~44MB; so ~22x increase. The strings are only joined\n together when an operation requiring their joining takes place, such as\n substr(). This function is called when adding data to this buffer to ensure\n these types of strings are periodically joined to reduce the memory\n footprint. */\nvar _MAX_CONSTRUCTED_STRING_LENGTH = 4096;\nutil.ByteStringBuffer.prototype._optimizeConstructedString = function(x) {\n this._constructedStringLength += x;\n if(this._constructedStringLength > _MAX_CONSTRUCTED_STRING_LENGTH) {\n // this substr() should cause the constructed string to join\n this.data.substr(0, 1);\n this._constructedStringLength = 0;\n }\n};\n\n/**\n * Gets the number of bytes in this buffer.\n *\n * @return the number of bytes in this buffer.\n */\nutil.ByteStringBuffer.prototype.length = function() {\n return this.data.length - this.read;\n};\n\n/**\n * Gets whether or not this buffer is empty.\n *\n * @return true if this buffer is empty, false if not.\n */\nutil.ByteStringBuffer.prototype.isEmpty = function() {\n return this.length() <= 0;\n};\n\n/**\n * Puts a byte in this buffer.\n *\n * @param b the byte to put.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putByte = function(b) {\n return this.putBytes(String.fromCharCode(b));\n};\n\n/**\n * Puts a byte in this buffer N times.\n *\n * @param b the byte to put.\n * @param n the number of bytes of value b to put.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.fillWithByte = function(b, n) {\n b = String.fromCharCode(b);\n var d = this.data;\n while(n > 0) {\n if(n & 1) {\n d += b;\n }\n n >>>= 1;\n if(n > 0) {\n b += b;\n }\n }\n this.data = d;\n this._optimizeConstructedString(n);\n return this;\n};\n\n/**\n * Puts bytes in this buffer.\n *\n * @param bytes the bytes (as a binary encoded string) to put.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putBytes = function(bytes) {\n this.data += bytes;\n this._optimizeConstructedString(bytes.length);\n return this;\n};\n\n/**\n * Puts a UTF-16 encoded string into this buffer.\n *\n * @param str the string to put.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putString = function(str) {\n return this.putBytes(util.encodeUtf8(str));\n};\n\n/**\n * Puts a 16-bit integer in this buffer in big-endian order.\n *\n * @param i the 16-bit integer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putInt16 = function(i) {\n return this.putBytes(\n String.fromCharCode(i >> 8 & 0xFF) +\n String.fromCharCode(i & 0xFF));\n};\n\n/**\n * Puts a 24-bit integer in this buffer in big-endian order.\n *\n * @param i the 24-bit integer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putInt24 = function(i) {\n return this.putBytes(\n String.fromCharCode(i >> 16 & 0xFF) +\n String.fromCharCode(i >> 8 & 0xFF) +\n String.fromCharCode(i & 0xFF));\n};\n\n/**\n * Puts a 32-bit integer in this buffer in big-endian order.\n *\n * @param i the 32-bit integer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putInt32 = function(i) {\n return this.putBytes(\n String.fromCharCode(i >> 24 & 0xFF) +\n String.fromCharCode(i >> 16 & 0xFF) +\n String.fromCharCode(i >> 8 & 0xFF) +\n String.fromCharCode(i & 0xFF));\n};\n\n/**\n * Puts a 16-bit integer in this buffer in little-endian order.\n *\n * @param i the 16-bit integer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putInt16Le = function(i) {\n return this.putBytes(\n String.fromCharCode(i & 0xFF) +\n String.fromCharCode(i >> 8 & 0xFF));\n};\n\n/**\n * Puts a 24-bit integer in this buffer in little-endian order.\n *\n * @param i the 24-bit integer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putInt24Le = function(i) {\n return this.putBytes(\n String.fromCharCode(i & 0xFF) +\n String.fromCharCode(i >> 8 & 0xFF) +\n String.fromCharCode(i >> 16 & 0xFF));\n};\n\n/**\n * Puts a 32-bit integer in this buffer in little-endian order.\n *\n * @param i the 32-bit integer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putInt32Le = function(i) {\n return this.putBytes(\n String.fromCharCode(i & 0xFF) +\n String.fromCharCode(i >> 8 & 0xFF) +\n String.fromCharCode(i >> 16 & 0xFF) +\n String.fromCharCode(i >> 24 & 0xFF));\n};\n\n/**\n * Puts an n-bit integer in this buffer in big-endian order.\n *\n * @param i the n-bit integer.\n * @param n the number of bits in the integer (8, 16, 24, or 32).\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putInt = function(i, n) {\n _checkBitsParam(n);\n var bytes = '';\n do {\n n -= 8;\n bytes += String.fromCharCode((i >> n) & 0xFF);\n } while(n > 0);\n return this.putBytes(bytes);\n};\n\n/**\n * Puts a signed n-bit integer in this buffer in big-endian order. Two's\n * complement representation is used.\n *\n * @param i the n-bit integer.\n * @param n the number of bits in the integer (8, 16, 24, or 32).\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putSignedInt = function(i, n) {\n // putInt checks n\n if(i < 0) {\n i += 2 << (n - 1);\n }\n return this.putInt(i, n);\n};\n\n/**\n * Puts the given buffer into this buffer.\n *\n * @param buffer the buffer to put into this one.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putBuffer = function(buffer) {\n return this.putBytes(buffer.getBytes());\n};\n\n/**\n * Gets a byte from this buffer and advances the read pointer by 1.\n *\n * @return the byte.\n */\nutil.ByteStringBuffer.prototype.getByte = function() {\n return this.data.charCodeAt(this.read++);\n};\n\n/**\n * Gets a uint16 from this buffer in big-endian order and advances the read\n * pointer by 2.\n *\n * @return the uint16.\n */\nutil.ByteStringBuffer.prototype.getInt16 = function() {\n var rval = (\n this.data.charCodeAt(this.read) << 8 ^\n this.data.charCodeAt(this.read + 1));\n this.read += 2;\n return rval;\n};\n\n/**\n * Gets a uint24 from this buffer in big-endian order and advances the read\n * pointer by 3.\n *\n * @return the uint24.\n */\nutil.ByteStringBuffer.prototype.getInt24 = function() {\n var rval = (\n this.data.charCodeAt(this.read) << 16 ^\n this.data.charCodeAt(this.read + 1) << 8 ^\n this.data.charCodeAt(this.read + 2));\n this.read += 3;\n return rval;\n};\n\n/**\n * Gets a uint32 from this buffer in big-endian order and advances the read\n * pointer by 4.\n *\n * @return the word.\n */\nutil.ByteStringBuffer.prototype.getInt32 = function() {\n var rval = (\n this.data.charCodeAt(this.read) << 24 ^\n this.data.charCodeAt(this.read + 1) << 16 ^\n this.data.charCodeAt(this.read + 2) << 8 ^\n this.data.charCodeAt(this.read + 3));\n this.read += 4;\n return rval;\n};\n\n/**\n * Gets a uint16 from this buffer in little-endian order and advances the read\n * pointer by 2.\n *\n * @return the uint16.\n */\nutil.ByteStringBuffer.prototype.getInt16Le = function() {\n var rval = (\n this.data.charCodeAt(this.read) ^\n this.data.charCodeAt(this.read + 1) << 8);\n this.read += 2;\n return rval;\n};\n\n/**\n * Gets a uint24 from this buffer in little-endian order and advances the read\n * pointer by 3.\n *\n * @return the uint24.\n */\nutil.ByteStringBuffer.prototype.getInt24Le = function() {\n var rval = (\n this.data.charCodeAt(this.read) ^\n this.data.charCodeAt(this.read + 1) << 8 ^\n this.data.charCodeAt(this.read + 2) << 16);\n this.read += 3;\n return rval;\n};\n\n/**\n * Gets a uint32 from this buffer in little-endian order and advances the read\n * pointer by 4.\n *\n * @return the word.\n */\nutil.ByteStringBuffer.prototype.getInt32Le = function() {\n var rval = (\n this.data.charCodeAt(this.read) ^\n this.data.charCodeAt(this.read + 1) << 8 ^\n this.data.charCodeAt(this.read + 2) << 16 ^\n this.data.charCodeAt(this.read + 3) << 24);\n this.read += 4;\n return rval;\n};\n\n/**\n * Gets an n-bit integer from this buffer in big-endian order and advances the\n * read pointer by ceil(n/8).\n *\n * @param n the number of bits in the integer (8, 16, 24, or 32).\n *\n * @return the integer.\n */\nutil.ByteStringBuffer.prototype.getInt = function(n) {\n _checkBitsParam(n);\n var rval = 0;\n do {\n // TODO: Use (rval * 0x100) if adding support for 33 to 53 bits.\n rval = (rval << 8) + this.data.charCodeAt(this.read++);\n n -= 8;\n } while(n > 0);\n return rval;\n};\n\n/**\n * Gets a signed n-bit integer from this buffer in big-endian order, using\n * two's complement, and advances the read pointer by n/8.\n *\n * @param n the number of bits in the integer (8, 16, 24, or 32).\n *\n * @return the integer.\n */\nutil.ByteStringBuffer.prototype.getSignedInt = function(n) {\n // getInt checks n\n var x = this.getInt(n);\n var max = 2 << (n - 2);\n if(x >= max) {\n x -= max << 1;\n }\n return x;\n};\n\n/**\n * Reads bytes out as a binary encoded string and clears them from the\n * buffer. Note that the resulting string is binary encoded (in node.js this\n * encoding is referred to as `binary`, it is *not* `utf8`).\n *\n * @param count the number of bytes to read, undefined or null for all.\n *\n * @return a binary encoded string of bytes.\n */\nutil.ByteStringBuffer.prototype.getBytes = function(count) {\n var rval;\n if(count) {\n // read count bytes\n count = Math.min(this.length(), count);\n rval = this.data.slice(this.read, this.read + count);\n this.read += count;\n } else if(count === 0) {\n rval = '';\n } else {\n // read all bytes, optimize to only copy when needed\n rval = (this.read === 0) ? this.data : this.data.slice(this.read);\n this.clear();\n }\n return rval;\n};\n\n/**\n * Gets a binary encoded string of the bytes from this buffer without\n * modifying the read pointer.\n *\n * @param count the number of bytes to get, omit to get all.\n *\n * @return a string full of binary encoded characters.\n */\nutil.ByteStringBuffer.prototype.bytes = function(count) {\n return (typeof(count) === 'undefined' ?\n this.data.slice(this.read) :\n this.data.slice(this.read, this.read + count));\n};\n\n/**\n * Gets a byte at the given index without modifying the read pointer.\n *\n * @param i the byte index.\n *\n * @return the byte.\n */\nutil.ByteStringBuffer.prototype.at = function(i) {\n return this.data.charCodeAt(this.read + i);\n};\n\n/**\n * Puts a byte at the given index without modifying the read pointer.\n *\n * @param i the byte index.\n * @param b the byte to put.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.setAt = function(i, b) {\n this.data = this.data.substr(0, this.read + i) +\n String.fromCharCode(b) +\n this.data.substr(this.read + i + 1);\n return this;\n};\n\n/**\n * Gets the last byte without modifying the read pointer.\n *\n * @return the last byte.\n */\nutil.ByteStringBuffer.prototype.last = function() {\n return this.data.charCodeAt(this.data.length - 1);\n};\n\n/**\n * Creates a copy of this buffer.\n *\n * @return the copy.\n */\nutil.ByteStringBuffer.prototype.copy = function() {\n var c = util.createBuffer(this.data);\n c.read = this.read;\n return c;\n};\n\n/**\n * Compacts this buffer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.compact = function() {\n if(this.read > 0) {\n this.data = this.data.slice(this.read);\n this.read = 0;\n }\n return this;\n};\n\n/**\n * Clears this buffer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.clear = function() {\n this.data = '';\n this.read = 0;\n return this;\n};\n\n/**\n * Shortens this buffer by triming bytes off of the end of this buffer.\n *\n * @param count the number of bytes to trim off.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.truncate = function(count) {\n var len = Math.max(0, this.length() - count);\n this.data = this.data.substr(this.read, len);\n this.read = 0;\n return this;\n};\n\n/**\n * Converts this buffer to a hexadecimal string.\n *\n * @return a hexadecimal string.\n */\nutil.ByteStringBuffer.prototype.toHex = function() {\n var rval = '';\n for(var i = this.read; i < this.data.length; ++i) {\n var b = this.data.charCodeAt(i);\n if(b < 16) {\n rval += '0';\n }\n rval += b.toString(16);\n }\n return rval;\n};\n\n/**\n * Converts this buffer to a UTF-16 string (standard JavaScript string).\n *\n * @return a UTF-16 string.\n */\nutil.ByteStringBuffer.prototype.toString = function() {\n return util.decodeUtf8(this.bytes());\n};\n\n/** End Buffer w/BinaryString backing */\n\n/** Buffer w/UInt8Array backing */\n\n/**\n * FIXME: Experimental. Do not use yet.\n *\n * Constructor for an ArrayBuffer-backed byte buffer.\n *\n * The buffer may be constructed from a string, an ArrayBuffer, DataView, or a\n * TypedArray.\n *\n * If a string is given, its encoding should be provided as an option,\n * otherwise it will default to 'binary'. A 'binary' string is encoded such\n * that each character is one byte in length and size.\n *\n * If an ArrayBuffer, DataView, or TypedArray is given, it will be used\n * *directly* without any copying. Note that, if a write to the buffer requires\n * more space, the buffer will allocate a new backing ArrayBuffer to\n * accommodate. The starting read and write offsets for the buffer may be\n * given as options.\n *\n * @param [b] the initial bytes for this buffer.\n * @param options the options to use:\n * [readOffset] the starting read offset to use (default: 0).\n * [writeOffset] the starting write offset to use (default: the\n * length of the first parameter).\n * [growSize] the minimum amount, in bytes, to grow the buffer by to\n * accommodate writes (default: 1024).\n * [encoding] the encoding ('binary', 'utf8', 'utf16', 'hex') for the\n * first parameter, if it is a string (default: 'binary').\n */\nfunction DataBuffer(b, options) {\n // default options\n options = options || {};\n\n // pointers for read from/write to buffer\n this.read = options.readOffset || 0;\n this.growSize = options.growSize || 1024;\n\n var isArrayBuffer = util.isArrayBuffer(b);\n var isArrayBufferView = util.isArrayBufferView(b);\n if(isArrayBuffer || isArrayBufferView) {\n // use ArrayBuffer directly\n if(isArrayBuffer) {\n this.data = new DataView(b);\n } else {\n // TODO: adjust read/write offset based on the type of view\n // or specify that this must be done in the options ... that the\n // offsets are byte-based\n this.data = new DataView(b.buffer, b.byteOffset, b.byteLength);\n }\n this.write = ('writeOffset' in options ?\n options.writeOffset : this.data.byteLength);\n return;\n }\n\n // initialize to empty array buffer and add any given bytes using putBytes\n this.data = new DataView(new ArrayBuffer(0));\n this.write = 0;\n\n if(b !== null && b !== undefined) {\n this.putBytes(b);\n }\n\n if('writeOffset' in options) {\n this.write = options.writeOffset;\n }\n}\nutil.DataBuffer = DataBuffer;\n\n/**\n * Gets the number of bytes in this buffer.\n *\n * @return the number of bytes in this buffer.\n */\nutil.DataBuffer.prototype.length = function() {\n return this.write - this.read;\n};\n\n/**\n * Gets whether or not this buffer is empty.\n *\n * @return true if this buffer is empty, false if not.\n */\nutil.DataBuffer.prototype.isEmpty = function() {\n return this.length() <= 0;\n};\n\n/**\n * Ensures this buffer has enough empty space to accommodate the given number\n * of bytes. An optional parameter may be given that indicates a minimum\n * amount to grow the buffer if necessary. If the parameter is not given,\n * the buffer will be grown by some previously-specified default amount\n * or heuristic.\n *\n * @param amount the number of bytes to accommodate.\n * @param [growSize] the minimum amount, in bytes, to grow the buffer by if\n * necessary.\n */\nutil.DataBuffer.prototype.accommodate = function(amount, growSize) {\n if(this.length() >= amount) {\n return this;\n }\n growSize = Math.max(growSize || this.growSize, amount);\n\n // grow buffer\n var src = new Uint8Array(\n this.data.buffer, this.data.byteOffset, this.data.byteLength);\n var dst = new Uint8Array(this.length() + growSize);\n dst.set(src);\n this.data = new DataView(dst.buffer);\n\n return this;\n};\n\n/**\n * Puts a byte in this buffer.\n *\n * @param b the byte to put.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putByte = function(b) {\n this.accommodate(1);\n this.data.setUint8(this.write++, b);\n return this;\n};\n\n/**\n * Puts a byte in this buffer N times.\n *\n * @param b the byte to put.\n * @param n the number of bytes of value b to put.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.fillWithByte = function(b, n) {\n this.accommodate(n);\n for(var i = 0; i < n; ++i) {\n this.data.setUint8(b);\n }\n return this;\n};\n\n/**\n * Puts bytes in this buffer. The bytes may be given as a string, an\n * ArrayBuffer, a DataView, or a TypedArray.\n *\n * @param bytes the bytes to put.\n * @param [encoding] the encoding for the first parameter ('binary', 'utf8',\n * 'utf16', 'hex'), if it is a string (default: 'binary').\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putBytes = function(bytes, encoding) {\n if(util.isArrayBufferView(bytes)) {\n var src = new Uint8Array(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n var len = src.byteLength - src.byteOffset;\n this.accommodate(len);\n var dst = new Uint8Array(this.data.buffer, this.write);\n dst.set(src);\n this.write += len;\n return this;\n }\n\n if(util.isArrayBuffer(bytes)) {\n var src = new Uint8Array(bytes);\n this.accommodate(src.byteLength);\n var dst = new Uint8Array(this.data.buffer);\n dst.set(src, this.write);\n this.write += src.byteLength;\n return this;\n }\n\n // bytes is a util.DataBuffer or equivalent\n if(bytes instanceof util.DataBuffer ||\n (typeof bytes === 'object' &&\n typeof bytes.read === 'number' && typeof bytes.write === 'number' &&\n util.isArrayBufferView(bytes.data))) {\n var src = new Uint8Array(bytes.data.byteLength, bytes.read, bytes.length());\n this.accommodate(src.byteLength);\n var dst = new Uint8Array(bytes.data.byteLength, this.write);\n dst.set(src);\n this.write += src.byteLength;\n return this;\n }\n\n if(bytes instanceof util.ByteStringBuffer) {\n // copy binary string and process as the same as a string parameter below\n bytes = bytes.data;\n encoding = 'binary';\n }\n\n // string conversion\n encoding = encoding || 'binary';\n if(typeof bytes === 'string') {\n var view;\n\n // decode from string\n if(encoding === 'hex') {\n this.accommodate(Math.ceil(bytes.length / 2));\n view = new Uint8Array(this.data.buffer, this.write);\n this.write += util.binary.hex.decode(bytes, view, this.write);\n return this;\n }\n if(encoding === 'base64') {\n this.accommodate(Math.ceil(bytes.length / 4) * 3);\n view = new Uint8Array(this.data.buffer, this.write);\n this.write += util.binary.base64.decode(bytes, view, this.write);\n return this;\n }\n\n // encode text as UTF-8 bytes\n if(encoding === 'utf8') {\n // encode as UTF-8 then decode string as raw binary\n bytes = util.encodeUtf8(bytes);\n encoding = 'binary';\n }\n\n // decode string as raw binary\n if(encoding === 'binary' || encoding === 'raw') {\n // one byte per character\n this.accommodate(bytes.length);\n view = new Uint8Array(this.data.buffer, this.write);\n this.write += util.binary.raw.decode(view);\n return this;\n }\n\n // encode text as UTF-16 bytes\n if(encoding === 'utf16') {\n // two bytes per character\n this.accommodate(bytes.length * 2);\n view = new Uint16Array(this.data.buffer, this.write);\n this.write += util.text.utf16.encode(view);\n return this;\n }\n\n throw new Error('Invalid encoding: ' + encoding);\n }\n\n throw Error('Invalid parameter: ' + bytes);\n};\n\n/**\n * Puts the given buffer into this buffer.\n *\n * @param buffer the buffer to put into this one.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putBuffer = function(buffer) {\n this.putBytes(buffer);\n buffer.clear();\n return this;\n};\n\n/**\n * Puts a string into this buffer.\n *\n * @param str the string to put.\n * @param [encoding] the encoding for the string (default: 'utf16').\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putString = function(str) {\n return this.putBytes(str, 'utf16');\n};\n\n/**\n * Puts a 16-bit integer in this buffer in big-endian order.\n *\n * @param i the 16-bit integer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putInt16 = function(i) {\n this.accommodate(2);\n this.data.setInt16(this.write, i);\n this.write += 2;\n return this;\n};\n\n/**\n * Puts a 24-bit integer in this buffer in big-endian order.\n *\n * @param i the 24-bit integer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putInt24 = function(i) {\n this.accommodate(3);\n this.data.setInt16(this.write, i >> 8 & 0xFFFF);\n this.data.setInt8(this.write, i >> 16 & 0xFF);\n this.write += 3;\n return this;\n};\n\n/**\n * Puts a 32-bit integer in this buffer in big-endian order.\n *\n * @param i the 32-bit integer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putInt32 = function(i) {\n this.accommodate(4);\n this.data.setInt32(this.write, i);\n this.write += 4;\n return this;\n};\n\n/**\n * Puts a 16-bit integer in this buffer in little-endian order.\n *\n * @param i the 16-bit integer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putInt16Le = function(i) {\n this.accommodate(2);\n this.data.setInt16(this.write, i, true);\n this.write += 2;\n return this;\n};\n\n/**\n * Puts a 24-bit integer in this buffer in little-endian order.\n *\n * @param i the 24-bit integer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putInt24Le = function(i) {\n this.accommodate(3);\n this.data.setInt8(this.write, i >> 16 & 0xFF);\n this.data.setInt16(this.write, i >> 8 & 0xFFFF, true);\n this.write += 3;\n return this;\n};\n\n/**\n * Puts a 32-bit integer in this buffer in little-endian order.\n *\n * @param i the 32-bit integer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putInt32Le = function(i) {\n this.accommodate(4);\n this.data.setInt32(this.write, i, true);\n this.write += 4;\n return this;\n};\n\n/**\n * Puts an n-bit integer in this buffer in big-endian order.\n *\n * @param i the n-bit integer.\n * @param n the number of bits in the integer (8, 16, 24, or 32).\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putInt = function(i, n) {\n _checkBitsParam(n);\n this.accommodate(n / 8);\n do {\n n -= 8;\n this.data.setInt8(this.write++, (i >> n) & 0xFF);\n } while(n > 0);\n return this;\n};\n\n/**\n * Puts a signed n-bit integer in this buffer in big-endian order. Two's\n * complement representation is used.\n *\n * @param i the n-bit integer.\n * @param n the number of bits in the integer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putSignedInt = function(i, n) {\n _checkBitsParam(n);\n this.accommodate(n / 8);\n if(i < 0) {\n i += 2 << (n - 1);\n }\n return this.putInt(i, n);\n};\n\n/**\n * Gets a byte from this buffer and advances the read pointer by 1.\n *\n * @return the byte.\n */\nutil.DataBuffer.prototype.getByte = function() {\n return this.data.getInt8(this.read++);\n};\n\n/**\n * Gets a uint16 from this buffer in big-endian order and advances the read\n * pointer by 2.\n *\n * @return the uint16.\n */\nutil.DataBuffer.prototype.getInt16 = function() {\n var rval = this.data.getInt16(this.read);\n this.read += 2;\n return rval;\n};\n\n/**\n * Gets a uint24 from this buffer in big-endian order and advances the read\n * pointer by 3.\n *\n * @return the uint24.\n */\nutil.DataBuffer.prototype.getInt24 = function() {\n var rval = (\n this.data.getInt16(this.read) << 8 ^\n this.data.getInt8(this.read + 2));\n this.read += 3;\n return rval;\n};\n\n/**\n * Gets a uint32 from this buffer in big-endian order and advances the read\n * pointer by 4.\n *\n * @return the word.\n */\nutil.DataBuffer.prototype.getInt32 = function() {\n var rval = this.data.getInt32(this.read);\n this.read += 4;\n return rval;\n};\n\n/**\n * Gets a uint16 from this buffer in little-endian order and advances the read\n * pointer by 2.\n *\n * @return the uint16.\n */\nutil.DataBuffer.prototype.getInt16Le = function() {\n var rval = this.data.getInt16(this.read, true);\n this.read += 2;\n return rval;\n};\n\n/**\n * Gets a uint24 from this buffer in little-endian order and advances the read\n * pointer by 3.\n *\n * @return the uint24.\n */\nutil.DataBuffer.prototype.getInt24Le = function() {\n var rval = (\n this.data.getInt8(this.read) ^\n this.data.getInt16(this.read + 1, true) << 8);\n this.read += 3;\n return rval;\n};\n\n/**\n * Gets a uint32 from this buffer in little-endian order and advances the read\n * pointer by 4.\n *\n * @return the word.\n */\nutil.DataBuffer.prototype.getInt32Le = function() {\n var rval = this.data.getInt32(this.read, true);\n this.read += 4;\n return rval;\n};\n\n/**\n * Gets an n-bit integer from this buffer in big-endian order and advances the\n * read pointer by n/8.\n *\n * @param n the number of bits in the integer (8, 16, 24, or 32).\n *\n * @return the integer.\n */\nutil.DataBuffer.prototype.getInt = function(n) {\n _checkBitsParam(n);\n var rval = 0;\n do {\n // TODO: Use (rval * 0x100) if adding support for 33 to 53 bits.\n rval = (rval << 8) + this.data.getInt8(this.read++);\n n -= 8;\n } while(n > 0);\n return rval;\n};\n\n/**\n * Gets a signed n-bit integer from this buffer in big-endian order, using\n * two's complement, and advances the read pointer by n/8.\n *\n * @param n the number of bits in the integer (8, 16, 24, or 32).\n *\n * @return the integer.\n */\nutil.DataBuffer.prototype.getSignedInt = function(n) {\n // getInt checks n\n var x = this.getInt(n);\n var max = 2 << (n - 2);\n if(x >= max) {\n x -= max << 1;\n }\n return x;\n};\n\n/**\n * Reads bytes out as a binary encoded string and clears them from the\n * buffer.\n *\n * @param count the number of bytes to read, undefined or null for all.\n *\n * @return a binary encoded string of bytes.\n */\nutil.DataBuffer.prototype.getBytes = function(count) {\n // TODO: deprecate this method, it is poorly named and\n // this.toString('binary') replaces it\n // add a toTypedArray()/toArrayBuffer() function\n var rval;\n if(count) {\n // read count bytes\n count = Math.min(this.length(), count);\n rval = this.data.slice(this.read, this.read + count);\n this.read += count;\n } else if(count === 0) {\n rval = '';\n } else {\n // read all bytes, optimize to only copy when needed\n rval = (this.read === 0) ? this.data : this.data.slice(this.read);\n this.clear();\n }\n return rval;\n};\n\n/**\n * Gets a binary encoded string of the bytes from this buffer without\n * modifying the read pointer.\n *\n * @param count the number of bytes to get, omit to get all.\n *\n * @return a string full of binary encoded characters.\n */\nutil.DataBuffer.prototype.bytes = function(count) {\n // TODO: deprecate this method, it is poorly named, add \"getString()\"\n return (typeof(count) === 'undefined' ?\n this.data.slice(this.read) :\n this.data.slice(this.read, this.read + count));\n};\n\n/**\n * Gets a byte at the given index without modifying the read pointer.\n *\n * @param i the byte index.\n *\n * @return the byte.\n */\nutil.DataBuffer.prototype.at = function(i) {\n return this.data.getUint8(this.read + i);\n};\n\n/**\n * Puts a byte at the given index without modifying the read pointer.\n *\n * @param i the byte index.\n * @param b the byte to put.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.setAt = function(i, b) {\n this.data.setUint8(i, b);\n return this;\n};\n\n/**\n * Gets the last byte without modifying the read pointer.\n *\n * @return the last byte.\n */\nutil.DataBuffer.prototype.last = function() {\n return this.data.getUint8(this.write - 1);\n};\n\n/**\n * Creates a copy of this buffer.\n *\n * @return the copy.\n */\nutil.DataBuffer.prototype.copy = function() {\n return new util.DataBuffer(this);\n};\n\n/**\n * Compacts this buffer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.compact = function() {\n if(this.read > 0) {\n var src = new Uint8Array(this.data.buffer, this.read);\n var dst = new Uint8Array(src.byteLength);\n dst.set(src);\n this.data = new DataView(dst);\n this.write -= this.read;\n this.read = 0;\n }\n return this;\n};\n\n/**\n * Clears this buffer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.clear = function() {\n this.data = new DataView(new ArrayBuffer(0));\n this.read = this.write = 0;\n return this;\n};\n\n/**\n * Shortens this buffer by triming bytes off of the end of this buffer.\n *\n * @param count the number of bytes to trim off.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.truncate = function(count) {\n this.write = Math.max(0, this.length() - count);\n this.read = Math.min(this.read, this.write);\n return this;\n};\n\n/**\n * Converts this buffer to a hexadecimal string.\n *\n * @return a hexadecimal string.\n */\nutil.DataBuffer.prototype.toHex = function() {\n var rval = '';\n for(var i = this.read; i < this.data.byteLength; ++i) {\n var b = this.data.getUint8(i);\n if(b < 16) {\n rval += '0';\n }\n rval += b.toString(16);\n }\n return rval;\n};\n\n/**\n * Converts this buffer to a string, using the given encoding. If no\n * encoding is given, 'utf8' (UTF-8) is used.\n *\n * @param [encoding] the encoding to use: 'binary', 'utf8', 'utf16', 'hex',\n * 'base64' (default: 'utf8').\n *\n * @return a string representation of the bytes in this buffer.\n */\nutil.DataBuffer.prototype.toString = function(encoding) {\n var view = new Uint8Array(this.data, this.read, this.length());\n encoding = encoding || 'utf8';\n\n // encode to string\n if(encoding === 'binary' || encoding === 'raw') {\n return util.binary.raw.encode(view);\n }\n if(encoding === 'hex') {\n return util.binary.hex.encode(view);\n }\n if(encoding === 'base64') {\n return util.binary.base64.encode(view);\n }\n\n // decode to text\n if(encoding === 'utf8') {\n return util.text.utf8.decode(view);\n }\n if(encoding === 'utf16') {\n return util.text.utf16.decode(view);\n }\n\n throw new Error('Invalid encoding: ' + encoding);\n};\n\n/** End Buffer w/UInt8Array backing */\n\n/**\n * Creates a buffer that stores bytes. A value may be given to populate the\n * buffer with data. This value can either be string of encoded bytes or a\n * regular string of characters. When passing a string of binary encoded\n * bytes, the encoding `raw` should be given. This is also the default. When\n * passing a string of characters, the encoding `utf8` should be given.\n *\n * @param [input] a string with encoded bytes to store in the buffer.\n * @param [encoding] (default: 'raw', other: 'utf8').\n */\nutil.createBuffer = function(input, encoding) {\n // TODO: deprecate, use new ByteBuffer() instead\n encoding = encoding || 'raw';\n if(input !== undefined && encoding === 'utf8') {\n input = util.encodeUtf8(input);\n }\n return new util.ByteBuffer(input);\n};\n\n/**\n * Fills a string with a particular value. If you want the string to be a byte\n * string, pass in String.fromCharCode(theByte).\n *\n * @param c the character to fill the string with, use String.fromCharCode\n * to fill the string with a byte value.\n * @param n the number of characters of value c to fill with.\n *\n * @return the filled string.\n */\nutil.fillString = function(c, n) {\n var s = '';\n while(n > 0) {\n if(n & 1) {\n s += c;\n }\n n >>>= 1;\n if(n > 0) {\n c += c;\n }\n }\n return s;\n};\n\n/**\n * Performs a per byte XOR between two byte strings and returns the result as a\n * string of bytes.\n *\n * @param s1 first string of bytes.\n * @param s2 second string of bytes.\n * @param n the number of bytes to XOR.\n *\n * @return the XOR'd result.\n */\nutil.xorBytes = function(s1, s2, n) {\n var s3 = '';\n var b = '';\n var t = '';\n var i = 0;\n var c = 0;\n for(; n > 0; --n, ++i) {\n b = s1.charCodeAt(i) ^ s2.charCodeAt(i);\n if(c >= 10) {\n s3 += t;\n t = '';\n c = 0;\n }\n t += String.fromCharCode(b);\n ++c;\n }\n s3 += t;\n return s3;\n};\n\n/**\n * Converts a hex string into a 'binary' encoded string of bytes.\n *\n * @param hex the hexadecimal string to convert.\n *\n * @return the binary-encoded string of bytes.\n */\nutil.hexToBytes = function(hex) {\n // TODO: deprecate: \"Deprecated. Use util.binary.hex.decode instead.\"\n var rval = '';\n var i = 0;\n if(hex.length & 1 == 1) {\n // odd number of characters, convert first character alone\n i = 1;\n rval += String.fromCharCode(parseInt(hex[0], 16));\n }\n // convert 2 characters (1 byte) at a time\n for(; i < hex.length; i += 2) {\n rval += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n }\n return rval;\n};\n\n/**\n * Converts a 'binary' encoded string of bytes to hex.\n *\n * @param bytes the byte string to convert.\n *\n * @return the string of hexadecimal characters.\n */\nutil.bytesToHex = function(bytes) {\n // TODO: deprecate: \"Deprecated. Use util.binary.hex.encode instead.\"\n return util.createBuffer(bytes).toHex();\n};\n\n/**\n * Converts an 32-bit integer to 4-big-endian byte string.\n *\n * @param i the integer.\n *\n * @return the byte string.\n */\nutil.int32ToBytes = function(i) {\n return (\n String.fromCharCode(i >> 24 & 0xFF) +\n String.fromCharCode(i >> 16 & 0xFF) +\n String.fromCharCode(i >> 8 & 0xFF) +\n String.fromCharCode(i & 0xFF));\n};\n\n// base64 characters, reverse mapping\nvar _base64 =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nvar _base64Idx = [\n/*43 -43 = 0*/\n/*'+', 1, 2, 3,'/' */\n 62, -1, -1, -1, 63,\n\n/*'0','1','2','3','4','5','6','7','8','9' */\n 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,\n\n/*15, 16, 17,'=', 19, 20, 21 */\n -1, -1, -1, 64, -1, -1, -1,\n\n/*65 - 43 = 22*/\n/*'A','B','C','D','E','F','G','H','I','J','K','L','M', */\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,\n\n/*'N','O','P','Q','R','S','T','U','V','W','X','Y','Z' */\n 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,\n\n/*91 - 43 = 48 */\n/*48, 49, 50, 51, 52, 53 */\n -1, -1, -1, -1, -1, -1,\n\n/*97 - 43 = 54*/\n/*'a','b','c','d','e','f','g','h','i','j','k','l','m' */\n 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,\n\n/*'n','o','p','q','r','s','t','u','v','w','x','y','z' */\n 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51\n];\n\n// base58 characters (Bitcoin alphabet)\nvar _base58 = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';\n\n/**\n * Base64 encodes a 'binary' encoded string of bytes.\n *\n * @param input the binary encoded string of bytes to base64-encode.\n * @param maxline the maximum number of encoded characters per line to use,\n * defaults to none.\n *\n * @return the base64-encoded output.\n */\nutil.encode64 = function(input, maxline) {\n // TODO: deprecate: \"Deprecated. Use util.binary.base64.encode instead.\"\n var line = '';\n var output = '';\n var chr1, chr2, chr3;\n var i = 0;\n while(i < input.length) {\n chr1 = input.charCodeAt(i++);\n chr2 = input.charCodeAt(i++);\n chr3 = input.charCodeAt(i++);\n\n // encode 4 character group\n line += _base64.charAt(chr1 >> 2);\n line += _base64.charAt(((chr1 & 3) << 4) | (chr2 >> 4));\n if(isNaN(chr2)) {\n line += '==';\n } else {\n line += _base64.charAt(((chr2 & 15) << 2) | (chr3 >> 6));\n line += isNaN(chr3) ? '=' : _base64.charAt(chr3 & 63);\n }\n\n if(maxline && line.length > maxline) {\n output += line.substr(0, maxline) + '\\r\\n';\n line = line.substr(maxline);\n }\n }\n output += line;\n return output;\n};\n\n/**\n * Base64 decodes a string into a 'binary' encoded string of bytes.\n *\n * @param input the base64-encoded input.\n *\n * @return the binary encoded string.\n */\nutil.decode64 = function(input) {\n // TODO: deprecate: \"Deprecated. Use util.binary.base64.decode instead.\"\n\n // remove all non-base64 characters\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n\n var output = '';\n var enc1, enc2, enc3, enc4;\n var i = 0;\n\n while(i < input.length) {\n enc1 = _base64Idx[input.charCodeAt(i++) - 43];\n enc2 = _base64Idx[input.charCodeAt(i++) - 43];\n enc3 = _base64Idx[input.charCodeAt(i++) - 43];\n enc4 = _base64Idx[input.charCodeAt(i++) - 43];\n\n output += String.fromCharCode((enc1 << 2) | (enc2 >> 4));\n if(enc3 !== 64) {\n // decoded at least 2 bytes\n output += String.fromCharCode(((enc2 & 15) << 4) | (enc3 >> 2));\n if(enc4 !== 64) {\n // decoded 3 bytes\n output += String.fromCharCode(((enc3 & 3) << 6) | enc4);\n }\n }\n }\n\n return output;\n};\n\n/**\n * Encodes the given string of characters (a standard JavaScript\n * string) as a binary encoded string where the bytes represent\n * a UTF-8 encoded string of characters. Non-ASCII characters will be\n * encoded as multiple bytes according to UTF-8.\n *\n * @param str a standard string of characters to encode.\n *\n * @return the binary encoded string.\n */\nutil.encodeUtf8 = function(str) {\n return unescape(encodeURIComponent(str));\n};\n\n/**\n * Decodes a binary encoded string that contains bytes that\n * represent a UTF-8 encoded string of characters -- into a\n * string of characters (a standard JavaScript string).\n *\n * @param str the binary encoded string to decode.\n *\n * @return the resulting standard string of characters.\n */\nutil.decodeUtf8 = function(str) {\n return decodeURIComponent(escape(str));\n};\n\n// binary encoding/decoding tools\n// FIXME: Experimental. Do not use yet.\nutil.binary = {\n raw: {},\n hex: {},\n base64: {},\n base58: {},\n baseN : {\n encode: baseN.encode,\n decode: baseN.decode\n }\n};\n\n/**\n * Encodes a Uint8Array as a binary-encoded string. This encoding uses\n * a value between 0 and 255 for each character.\n *\n * @param bytes the Uint8Array to encode.\n *\n * @return the binary-encoded string.\n */\nutil.binary.raw.encode = function(bytes) {\n return String.fromCharCode.apply(null, bytes);\n};\n\n/**\n * Decodes a binary-encoded string to a Uint8Array. This encoding uses\n * a value between 0 and 255 for each character.\n *\n * @param str the binary-encoded string to decode.\n * @param [output] an optional Uint8Array to write the output to; if it\n * is too small, an exception will be thrown.\n * @param [offset] the start offset for writing to the output (default: 0).\n *\n * @return the Uint8Array or the number of bytes written if output was given.\n */\nutil.binary.raw.decode = function(str, output, offset) {\n var out = output;\n if(!out) {\n out = new Uint8Array(str.length);\n }\n offset = offset || 0;\n var j = offset;\n for(var i = 0; i < str.length; ++i) {\n out[j++] = str.charCodeAt(i);\n }\n return output ? (j - offset) : out;\n};\n\n/**\n * Encodes a 'binary' string, ArrayBuffer, DataView, TypedArray, or\n * ByteBuffer as a string of hexadecimal characters.\n *\n * @param bytes the bytes to convert.\n *\n * @return the string of hexadecimal characters.\n */\nutil.binary.hex.encode = util.bytesToHex;\n\n/**\n * Decodes a hex-encoded string to a Uint8Array.\n *\n * @param hex the hexadecimal string to convert.\n * @param [output] an optional Uint8Array to write the output to; if it\n * is too small, an exception will be thrown.\n * @param [offset] the start offset for writing to the output (default: 0).\n *\n * @return the Uint8Array or the number of bytes written if output was given.\n */\nutil.binary.hex.decode = function(hex, output, offset) {\n var out = output;\n if(!out) {\n out = new Uint8Array(Math.ceil(hex.length / 2));\n }\n offset = offset || 0;\n var i = 0, j = offset;\n if(hex.length & 1) {\n // odd number of characters, convert first character alone\n i = 1;\n out[j++] = parseInt(hex[0], 16);\n }\n // convert 2 characters (1 byte) at a time\n for(; i < hex.length; i += 2) {\n out[j++] = parseInt(hex.substr(i, 2), 16);\n }\n return output ? (j - offset) : out;\n};\n\n/**\n * Base64-encodes a Uint8Array.\n *\n * @param input the Uint8Array to encode.\n * @param maxline the maximum number of encoded characters per line to use,\n * defaults to none.\n *\n * @return the base64-encoded output string.\n */\nutil.binary.base64.encode = function(input, maxline) {\n var line = '';\n var output = '';\n var chr1, chr2, chr3;\n var i = 0;\n while(i < input.byteLength) {\n chr1 = input[i++];\n chr2 = input[i++];\n chr3 = input[i++];\n\n // encode 4 character group\n line += _base64.charAt(chr1 >> 2);\n line += _base64.charAt(((chr1 & 3) << 4) | (chr2 >> 4));\n if(isNaN(chr2)) {\n line += '==';\n } else {\n line += _base64.charAt(((chr2 & 15) << 2) | (chr3 >> 6));\n line += isNaN(chr3) ? '=' : _base64.charAt(chr3 & 63);\n }\n\n if(maxline && line.length > maxline) {\n output += line.substr(0, maxline) + '\\r\\n';\n line = line.substr(maxline);\n }\n }\n output += line;\n return output;\n};\n\n/**\n * Decodes a base64-encoded string to a Uint8Array.\n *\n * @param input the base64-encoded input string.\n * @param [output] an optional Uint8Array to write the output to; if it\n * is too small, an exception will be thrown.\n * @param [offset] the start offset for writing to the output (default: 0).\n *\n * @return the Uint8Array or the number of bytes written if output was given.\n */\nutil.binary.base64.decode = function(input, output, offset) {\n var out = output;\n if(!out) {\n out = new Uint8Array(Math.ceil(input.length / 4) * 3);\n }\n\n // remove all non-base64 characters\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n\n offset = offset || 0;\n var enc1, enc2, enc3, enc4;\n var i = 0, j = offset;\n\n while(i < input.length) {\n enc1 = _base64Idx[input.charCodeAt(i++) - 43];\n enc2 = _base64Idx[input.charCodeAt(i++) - 43];\n enc3 = _base64Idx[input.charCodeAt(i++) - 43];\n enc4 = _base64Idx[input.charCodeAt(i++) - 43];\n\n out[j++] = (enc1 << 2) | (enc2 >> 4);\n if(enc3 !== 64) {\n // decoded at least 2 bytes\n out[j++] = ((enc2 & 15) << 4) | (enc3 >> 2);\n if(enc4 !== 64) {\n // decoded 3 bytes\n out[j++] = ((enc3 & 3) << 6) | enc4;\n }\n }\n }\n\n // make sure result is the exact decoded length\n return output ? (j - offset) : out.subarray(0, j);\n};\n\n// add support for base58 encoding/decoding with Bitcoin alphabet\nutil.binary.base58.encode = function(input, maxline) {\n return util.binary.baseN.encode(input, _base58, maxline);\n};\nutil.binary.base58.decode = function(input, maxline) {\n return util.binary.baseN.decode(input, _base58, maxline);\n};\n\n// text encoding/decoding tools\n// FIXME: Experimental. Do not use yet.\nutil.text = {\n utf8: {},\n utf16: {}\n};\n\n/**\n * Encodes the given string as UTF-8 in a Uint8Array.\n *\n * @param str the string to encode.\n * @param [output] an optional Uint8Array to write the output to; if it\n * is too small, an exception will be thrown.\n * @param [offset] the start offset for writing to the output (default: 0).\n *\n * @return the Uint8Array or the number of bytes written if output was given.\n */\nutil.text.utf8.encode = function(str, output, offset) {\n str = util.encodeUtf8(str);\n var out = output;\n if(!out) {\n out = new Uint8Array(str.length);\n }\n offset = offset || 0;\n var j = offset;\n for(var i = 0; i < str.length; ++i) {\n out[j++] = str.charCodeAt(i);\n }\n return output ? (j - offset) : out;\n};\n\n/**\n * Decodes the UTF-8 contents from a Uint8Array.\n *\n * @param bytes the Uint8Array to decode.\n *\n * @return the resulting string.\n */\nutil.text.utf8.decode = function(bytes) {\n return util.decodeUtf8(String.fromCharCode.apply(null, bytes));\n};\n\n/**\n * Encodes the given string as UTF-16 in a Uint8Array.\n *\n * @param str the string to encode.\n * @param [output] an optional Uint8Array to write the output to; if it\n * is too small, an exception will be thrown.\n * @param [offset] the start offset for writing to the output (default: 0).\n *\n * @return the Uint8Array or the number of bytes written if output was given.\n */\nutil.text.utf16.encode = function(str, output, offset) {\n var out = output;\n if(!out) {\n out = new Uint8Array(str.length * 2);\n }\n var view = new Uint16Array(out.buffer);\n offset = offset || 0;\n var j = offset;\n var k = offset;\n for(var i = 0; i < str.length; ++i) {\n view[k++] = str.charCodeAt(i);\n j += 2;\n }\n return output ? (j - offset) : out;\n};\n\n/**\n * Decodes the UTF-16 contents from a Uint8Array.\n *\n * @param bytes the Uint8Array to decode.\n *\n * @return the resulting string.\n */\nutil.text.utf16.decode = function(bytes) {\n return String.fromCharCode.apply(null, new Uint16Array(bytes.buffer));\n};\n\n/**\n * Deflates the given data using a flash interface.\n *\n * @param api the flash interface.\n * @param bytes the data.\n * @param raw true to return only raw deflate data, false to include zlib\n * header and trailer.\n *\n * @return the deflated data as a string.\n */\nutil.deflate = function(api, bytes, raw) {\n bytes = util.decode64(api.deflate(util.encode64(bytes)).rval);\n\n // strip zlib header and trailer if necessary\n if(raw) {\n // zlib header is 2 bytes (CMF,FLG) where FLG indicates that\n // there is a 4-byte DICT (alder-32) block before the data if\n // its 5th bit is set\n var start = 2;\n var flg = bytes.charCodeAt(1);\n if(flg & 0x20) {\n start = 6;\n }\n // zlib trailer is 4 bytes of adler-32\n bytes = bytes.substring(start, bytes.length - 4);\n }\n\n return bytes;\n};\n\n/**\n * Inflates the given data using a flash interface.\n *\n * @param api the flash interface.\n * @param bytes the data.\n * @param raw true if the incoming data has no zlib header or trailer and is\n * raw DEFLATE data.\n *\n * @return the inflated data as a string, null on error.\n */\nutil.inflate = function(api, bytes, raw) {\n // TODO: add zlib header and trailer if necessary/possible\n var rval = api.inflate(util.encode64(bytes)).rval;\n return (rval === null) ? null : util.decode64(rval);\n};\n\n/**\n * Sets a storage object.\n *\n * @param api the storage interface.\n * @param id the storage ID to use.\n * @param obj the storage object, null to remove.\n */\nvar _setStorageObject = function(api, id, obj) {\n if(!api) {\n throw new Error('WebStorage not available.');\n }\n\n var rval;\n if(obj === null) {\n rval = api.removeItem(id);\n } else {\n // json-encode and base64-encode object\n obj = util.encode64(JSON.stringify(obj));\n rval = api.setItem(id, obj);\n }\n\n // handle potential flash error\n if(typeof(rval) !== 'undefined' && rval.rval !== true) {\n var error = new Error(rval.error.message);\n error.id = rval.error.id;\n error.name = rval.error.name;\n throw error;\n }\n};\n\n/**\n * Gets a storage object.\n *\n * @param api the storage interface.\n * @param id the storage ID to use.\n *\n * @return the storage object entry or null if none exists.\n */\nvar _getStorageObject = function(api, id) {\n if(!api) {\n throw new Error('WebStorage not available.');\n }\n\n // get the existing entry\n var rval = api.getItem(id);\n\n /* Note: We check api.init because we can't do (api == localStorage)\n on IE because of \"Class doesn't support Automation\" exception. Only\n the flash api has an init method so this works too, but we need a\n better solution in the future. */\n\n // flash returns item wrapped in an object, handle special case\n if(api.init) {\n if(rval.rval === null) {\n if(rval.error) {\n var error = new Error(rval.error.message);\n error.id = rval.error.id;\n error.name = rval.error.name;\n throw error;\n }\n // no error, but also no item\n rval = null;\n } else {\n rval = rval.rval;\n }\n }\n\n // handle decoding\n if(rval !== null) {\n // base64-decode and json-decode data\n rval = JSON.parse(util.decode64(rval));\n }\n\n return rval;\n};\n\n/**\n * Stores an item in local storage.\n *\n * @param api the storage interface.\n * @param id the storage ID to use.\n * @param key the key for the item.\n * @param data the data for the item (any javascript object/primitive).\n */\nvar _setItem = function(api, id, key, data) {\n // get storage object\n var obj = _getStorageObject(api, id);\n if(obj === null) {\n // create a new storage object\n obj = {};\n }\n // update key\n obj[key] = data;\n\n // set storage object\n _setStorageObject(api, id, obj);\n};\n\n/**\n * Gets an item from local storage.\n *\n * @param api the storage interface.\n * @param id the storage ID to use.\n * @param key the key for the item.\n *\n * @return the item.\n */\nvar _getItem = function(api, id, key) {\n // get storage object\n var rval = _getStorageObject(api, id);\n if(rval !== null) {\n // return data at key\n rval = (key in rval) ? rval[key] : null;\n }\n\n return rval;\n};\n\n/**\n * Removes an item from local storage.\n *\n * @param api the storage interface.\n * @param id the storage ID to use.\n * @param key the key for the item.\n */\nvar _removeItem = function(api, id, key) {\n // get storage object\n var obj = _getStorageObject(api, id);\n if(obj !== null && key in obj) {\n // remove key\n delete obj[key];\n\n // see if entry has no keys remaining\n var empty = true;\n for(var prop in obj) {\n empty = false;\n break;\n }\n if(empty) {\n // remove entry entirely if no keys are left\n obj = null;\n }\n\n // set storage object\n _setStorageObject(api, id, obj);\n }\n};\n\n/**\n * Clears the local disk storage identified by the given ID.\n *\n * @param api the storage interface.\n * @param id the storage ID to use.\n */\nvar _clearItems = function(api, id) {\n _setStorageObject(api, id, null);\n};\n\n/**\n * Calls a storage function.\n *\n * @param func the function to call.\n * @param args the arguments for the function.\n * @param location the location argument.\n *\n * @return the return value from the function.\n */\nvar _callStorageFunction = function(func, args, location) {\n var rval = null;\n\n // default storage types\n if(typeof(location) === 'undefined') {\n location = ['web', 'flash'];\n }\n\n // apply storage types in order of preference\n var type;\n var done = false;\n var exception = null;\n for(var idx in location) {\n type = location[idx];\n try {\n if(type === 'flash' || type === 'both') {\n if(args[0] === null) {\n throw new Error('Flash local storage not available.');\n }\n rval = func.apply(this, args);\n done = (type === 'flash');\n }\n if(type === 'web' || type === 'both') {\n args[0] = localStorage;\n rval = func.apply(this, args);\n done = true;\n }\n } catch(ex) {\n exception = ex;\n }\n if(done) {\n break;\n }\n }\n\n if(!done) {\n throw exception;\n }\n\n return rval;\n};\n\n/**\n * Stores an item on local disk.\n *\n * The available types of local storage include 'flash', 'web', and 'both'.\n *\n * The type 'flash' refers to flash local storage (SharedObject). In order\n * to use flash local storage, the 'api' parameter must be valid. The type\n * 'web' refers to WebStorage, if supported by the browser. The type 'both'\n * refers to storing using both 'flash' and 'web', not just one or the\n * other.\n *\n * The location array should list the storage types to use in order of\n * preference:\n *\n * ['flash']: flash only storage\n * ['web']: web only storage\n * ['both']: try to store in both\n * ['flash','web']: store in flash first, but if not available, 'web'\n * ['web','flash']: store in web first, but if not available, 'flash'\n *\n * The location array defaults to: ['web', 'flash']\n *\n * @param api the flash interface, null to use only WebStorage.\n * @param id the storage ID to use.\n * @param key the key for the item.\n * @param data the data for the item (any javascript object/primitive).\n * @param location an array with the preferred types of storage to use.\n */\nutil.setItem = function(api, id, key, data, location) {\n _callStorageFunction(_setItem, arguments, location);\n};\n\n/**\n * Gets an item on local disk.\n *\n * Set setItem() for details on storage types.\n *\n * @param api the flash interface, null to use only WebStorage.\n * @param id the storage ID to use.\n * @param key the key for the item.\n * @param location an array with the preferred types of storage to use.\n *\n * @return the item.\n */\nutil.getItem = function(api, id, key, location) {\n return _callStorageFunction(_getItem, arguments, location);\n};\n\n/**\n * Removes an item on local disk.\n *\n * Set setItem() for details on storage types.\n *\n * @param api the flash interface.\n * @param id the storage ID to use.\n * @param key the key for the item.\n * @param location an array with the preferred types of storage to use.\n */\nutil.removeItem = function(api, id, key, location) {\n _callStorageFunction(_removeItem, arguments, location);\n};\n\n/**\n * Clears the local disk storage identified by the given ID.\n *\n * Set setItem() for details on storage types.\n *\n * @param api the flash interface if flash is available.\n * @param id the storage ID to use.\n * @param location an array with the preferred types of storage to use.\n */\nutil.clearItems = function(api, id, location) {\n _callStorageFunction(_clearItems, arguments, location);\n};\n\n/**\n * Parses the scheme, host, and port from an http(s) url.\n *\n * @param str the url string.\n *\n * @return the parsed url object or null if the url is invalid.\n */\nutil.parseUrl = function(str) {\n // FIXME: this regex looks a bit broken\n var regex = /^(https?):\\/\\/([^:&^\\/]*):?(\\d*)(.*)$/g;\n regex.lastIndex = 0;\n var m = regex.exec(str);\n var url = (m === null) ? null : {\n full: str,\n scheme: m[1],\n host: m[2],\n port: m[3],\n path: m[4]\n };\n if(url) {\n url.fullHost = url.host;\n if(url.port) {\n if(url.port !== 80 && url.scheme === 'http') {\n url.fullHost += ':' + url.port;\n } else if(url.port !== 443 && url.scheme === 'https') {\n url.fullHost += ':' + url.port;\n }\n } else if(url.scheme === 'http') {\n url.port = 80;\n } else if(url.scheme === 'https') {\n url.port = 443;\n }\n url.full = url.scheme + '://' + url.fullHost;\n }\n return url;\n};\n\n/* Storage for query variables */\nvar _queryVariables = null;\n\n/**\n * Returns the window location query variables. Query is parsed on the first\n * call and the same object is returned on subsequent calls. The mapping\n * is from keys to an array of values. Parameters without values will have\n * an object key set but no value added to the value array. Values are\n * unescaped.\n *\n * ...?k1=v1&k2=v2:\n * {\n * \"k1\": [\"v1\"],\n * \"k2\": [\"v2\"]\n * }\n *\n * ...?k1=v1&k1=v2:\n * {\n * \"k1\": [\"v1\", \"v2\"]\n * }\n *\n * ...?k1=v1&k2:\n * {\n * \"k1\": [\"v1\"],\n * \"k2\": []\n * }\n *\n * ...?k1=v1&k1:\n * {\n * \"k1\": [\"v1\"]\n * }\n *\n * ...?k1&k1:\n * {\n * \"k1\": []\n * }\n *\n * @param query the query string to parse (optional, default to cached\n * results from parsing window location search query).\n *\n * @return object mapping keys to variables.\n */\nutil.getQueryVariables = function(query) {\n var parse = function(q) {\n var rval = {};\n var kvpairs = q.split('&');\n for(var i = 0; i < kvpairs.length; i++) {\n var pos = kvpairs[i].indexOf('=');\n var key;\n var val;\n if(pos > 0) {\n key = kvpairs[i].substring(0, pos);\n val = kvpairs[i].substring(pos + 1);\n } else {\n key = kvpairs[i];\n val = null;\n }\n if(!(key in rval)) {\n rval[key] = [];\n }\n // disallow overriding object prototype keys\n if(!(key in Object.prototype) && val !== null) {\n rval[key].push(unescape(val));\n }\n }\n return rval;\n };\n\n var rval;\n if(typeof(query) === 'undefined') {\n // set cached variables if needed\n if(_queryVariables === null) {\n if(typeof(window) !== 'undefined' && window.location && window.location.search) {\n // parse window search query\n _queryVariables = parse(window.location.search.substring(1));\n } else {\n // no query variables available\n _queryVariables = {};\n }\n }\n rval = _queryVariables;\n } else {\n // parse given query\n rval = parse(query);\n }\n return rval;\n};\n\n/**\n * Parses a fragment into a path and query. This method will take a URI\n * fragment and break it up as if it were the main URI. For example:\n * /bar/baz?a=1&b=2\n * results in:\n * {\n * path: [\"bar\", \"baz\"],\n * query: {\"k1\": [\"v1\"], \"k2\": [\"v2\"]}\n * }\n *\n * @return object with a path array and query object.\n */\nutil.parseFragment = function(fragment) {\n // default to whole fragment\n var fp = fragment;\n var fq = '';\n // split into path and query if possible at the first '?'\n var pos = fragment.indexOf('?');\n if(pos > 0) {\n fp = fragment.substring(0, pos);\n fq = fragment.substring(pos + 1);\n }\n // split path based on '/' and ignore first element if empty\n var path = fp.split('/');\n if(path.length > 0 && path[0] === '') {\n path.shift();\n }\n // convert query into object\n var query = (fq === '') ? {} : util.getQueryVariables(fq);\n\n return {\n pathString: fp,\n queryString: fq,\n path: path,\n query: query\n };\n};\n\n/**\n * Makes a request out of a URI-like request string. This is intended to\n * be used where a fragment id (after a URI '#') is parsed as a URI with\n * path and query parts. The string should have a path beginning and\n * delimited by '/' and optional query parameters following a '?'. The\n * query should be a standard URL set of key value pairs delimited by\n * '&'. For backwards compatibility the initial '/' on the path is not\n * required. The request object has the following API, (fully described\n * in the method code):\n * {\n * path: .\n * query: ,\n * getPath(i): get part or all of the split path array,\n * getQuery(k, i): get part or all of a query key array,\n * getQueryLast(k, _default): get last element of a query key array.\n * }\n *\n * @return object with request parameters.\n */\nutil.makeRequest = function(reqString) {\n var frag = util.parseFragment(reqString);\n var req = {\n // full path string\n path: frag.pathString,\n // full query string\n query: frag.queryString,\n /**\n * Get path or element in path.\n *\n * @param i optional path index.\n *\n * @return path or part of path if i provided.\n */\n getPath: function(i) {\n return (typeof(i) === 'undefined') ? frag.path : frag.path[i];\n },\n /**\n * Get query, values for a key, or value for a key index.\n *\n * @param k optional query key.\n * @param i optional query key index.\n *\n * @return query, values for a key, or value for a key index.\n */\n getQuery: function(k, i) {\n var rval;\n if(typeof(k) === 'undefined') {\n rval = frag.query;\n } else {\n rval = frag.query[k];\n if(rval && typeof(i) !== 'undefined') {\n rval = rval[i];\n }\n }\n return rval;\n },\n getQueryLast: function(k, _default) {\n var rval;\n var vals = req.getQuery(k);\n if(vals) {\n rval = vals[vals.length - 1];\n } else {\n rval = _default;\n }\n return rval;\n }\n };\n return req;\n};\n\n/**\n * Makes a URI out of a path, an object with query parameters, and a\n * fragment. Uses jQuery.param() internally for query string creation.\n * If the path is an array, it will be joined with '/'.\n *\n * @param path string path or array of strings.\n * @param query object with query parameters. (optional)\n * @param fragment fragment string. (optional)\n *\n * @return string object with request parameters.\n */\nutil.makeLink = function(path, query, fragment) {\n // join path parts if needed\n path = jQuery.isArray(path) ? path.join('/') : path;\n\n var qstr = jQuery.param(query || {});\n fragment = fragment || '';\n return path +\n ((qstr.length > 0) ? ('?' + qstr) : '') +\n ((fragment.length > 0) ? ('#' + fragment) : '');\n};\n\n/**\n * Follows a path of keys deep into an object hierarchy and set a value.\n * If a key does not exist or it's value is not an object, create an\n * object in it's place. This can be destructive to a object tree if\n * leaf nodes are given as non-final path keys.\n * Used to avoid exceptions from missing parts of the path.\n *\n * @param object the starting object.\n * @param keys an array of string keys.\n * @param value the value to set.\n */\nutil.setPath = function(object, keys, value) {\n // need to start at an object\n if(typeof(object) === 'object' && object !== null) {\n var i = 0;\n var len = keys.length;\n while(i < len) {\n var next = keys[i++];\n if(i == len) {\n // last\n object[next] = value;\n } else {\n // more\n var hasNext = (next in object);\n if(!hasNext ||\n (hasNext && typeof(object[next]) !== 'object') ||\n (hasNext && object[next] === null)) {\n object[next] = {};\n }\n object = object[next];\n }\n }\n }\n};\n\n/**\n * Follows a path of keys deep into an object hierarchy and return a value.\n * If a key does not exist, create an object in it's place.\n * Used to avoid exceptions from missing parts of the path.\n *\n * @param object the starting object.\n * @param keys an array of string keys.\n * @param _default value to return if path not found.\n *\n * @return the value at the path if found, else default if given, else\n * undefined.\n */\nutil.getPath = function(object, keys, _default) {\n var i = 0;\n var len = keys.length;\n var hasNext = true;\n while(hasNext && i < len &&\n typeof(object) === 'object' && object !== null) {\n var next = keys[i++];\n hasNext = next in object;\n if(hasNext) {\n object = object[next];\n }\n }\n return (hasNext ? object : _default);\n};\n\n/**\n * Follow a path of keys deep into an object hierarchy and delete the\n * last one. If a key does not exist, do nothing.\n * Used to avoid exceptions from missing parts of the path.\n *\n * @param object the starting object.\n * @param keys an array of string keys.\n */\nutil.deletePath = function(object, keys) {\n // need to start at an object\n if(typeof(object) === 'object' && object !== null) {\n var i = 0;\n var len = keys.length;\n while(i < len) {\n var next = keys[i++];\n if(i == len) {\n // last\n delete object[next];\n } else {\n // more\n if(!(next in object) ||\n (typeof(object[next]) !== 'object') ||\n (object[next] === null)) {\n break;\n }\n object = object[next];\n }\n }\n }\n};\n\n/**\n * Check if an object is empty.\n *\n * Taken from:\n * http://stackoverflow.com/questions/679915/how-do-i-test-for-an-empty-javascript-object-from-json/679937#679937\n *\n * @param object the object to check.\n */\nutil.isEmpty = function(obj) {\n for(var prop in obj) {\n if(obj.hasOwnProperty(prop)) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * Format with simple printf-style interpolation.\n *\n * %%: literal '%'\n * %s,%o: convert next argument into a string.\n *\n * @param format the string to format.\n * @param ... arguments to interpolate into the format string.\n */\nutil.format = function(format) {\n var re = /%./g;\n // current match\n var match;\n // current part\n var part;\n // current arg index\n var argi = 0;\n // collected parts to recombine later\n var parts = [];\n // last index found\n var last = 0;\n // loop while matches remain\n while((match = re.exec(format))) {\n part = format.substring(last, re.lastIndex - 2);\n // don't add empty strings (ie, parts between %s%s)\n if(part.length > 0) {\n parts.push(part);\n }\n last = re.lastIndex;\n // switch on % code\n var code = match[0][1];\n switch(code) {\n case 's':\n case 'o':\n // check if enough arguments were given\n if(argi < arguments.length) {\n parts.push(arguments[argi++ + 1]);\n } else {\n parts.push('');\n }\n break;\n // FIXME: do proper formating for numbers, etc\n //case 'f':\n //case 'd':\n case '%':\n parts.push('%');\n break;\n default:\n parts.push('<%' + code + '?>');\n }\n }\n // add trailing part of format string\n parts.push(format.substring(last));\n return parts.join('');\n};\n\n/**\n * Formats a number.\n *\n * http://snipplr.com/view/5945/javascript-numberformat--ported-from-php/\n */\nutil.formatNumber = function(number, decimals, dec_point, thousands_sep) {\n // http://kevin.vanzonneveld.net\n // + original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)\n // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n // + bugfix by: Michael White (http://crestidg.com)\n // + bugfix by: Benjamin Lupton\n // + bugfix by: Allan Jensen (http://www.winternet.no)\n // + revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)\n // * example 1: number_format(1234.5678, 2, '.', '');\n // * returns 1: 1234.57\n\n var n = number, c = isNaN(decimals = Math.abs(decimals)) ? 2 : decimals;\n var d = dec_point === undefined ? ',' : dec_point;\n var t = thousands_sep === undefined ?\n '.' : thousands_sep, s = n < 0 ? '-' : '';\n var i = parseInt((n = Math.abs(+n || 0).toFixed(c)), 10) + '';\n var j = (i.length > 3) ? i.length % 3 : 0;\n return s + (j ? i.substr(0, j) + t : '') +\n i.substr(j).replace(/(\\d{3})(?=\\d)/g, '$1' + t) +\n (c ? d + Math.abs(n - i).toFixed(c).slice(2) : '');\n};\n\n/**\n * Formats a byte size.\n *\n * http://snipplr.com/view/5949/format-humanize-file-byte-size-presentation-in-javascript/\n */\nutil.formatSize = function(size) {\n if(size >= 1073741824) {\n size = util.formatNumber(size / 1073741824, 2, '.', '') + ' GiB';\n } else if(size >= 1048576) {\n size = util.formatNumber(size / 1048576, 2, '.', '') + ' MiB';\n } else if(size >= 1024) {\n size = util.formatNumber(size / 1024, 0) + ' KiB';\n } else {\n size = util.formatNumber(size, 0) + ' bytes';\n }\n return size;\n};\n\n/**\n * Converts an IPv4 or IPv6 string representation into bytes (in network order).\n *\n * @param ip the IPv4 or IPv6 address to convert.\n *\n * @return the 4-byte IPv6 or 16-byte IPv6 address or null if the address can't\n * be parsed.\n */\nutil.bytesFromIP = function(ip) {\n if(ip.indexOf('.') !== -1) {\n return util.bytesFromIPv4(ip);\n }\n if(ip.indexOf(':') !== -1) {\n return util.bytesFromIPv6(ip);\n }\n return null;\n};\n\n/**\n * Converts an IPv4 string representation into bytes (in network order).\n *\n * @param ip the IPv4 address to convert.\n *\n * @return the 4-byte address or null if the address can't be parsed.\n */\nutil.bytesFromIPv4 = function(ip) {\n ip = ip.split('.');\n if(ip.length !== 4) {\n return null;\n }\n var b = util.createBuffer();\n for(var i = 0; i < ip.length; ++i) {\n var num = parseInt(ip[i], 10);\n if(isNaN(num)) {\n return null;\n }\n b.putByte(num);\n }\n return b.getBytes();\n};\n\n/**\n * Converts an IPv6 string representation into bytes (in network order).\n *\n * @param ip the IPv6 address to convert.\n *\n * @return the 16-byte address or null if the address can't be parsed.\n */\nutil.bytesFromIPv6 = function(ip) {\n var blanks = 0;\n ip = ip.split(':').filter(function(e) {\n if(e.length === 0) ++blanks;\n return true;\n });\n var zeros = (8 - ip.length + blanks) * 2;\n var b = util.createBuffer();\n for(var i = 0; i < 8; ++i) {\n if(!ip[i] || ip[i].length === 0) {\n b.fillWithByte(0, zeros);\n zeros = 0;\n continue;\n }\n var bytes = util.hexToBytes(ip[i]);\n if(bytes.length < 2) {\n b.putByte(0);\n }\n b.putBytes(bytes);\n }\n return b.getBytes();\n};\n\n/**\n * Converts 4-bytes into an IPv4 string representation or 16-bytes into\n * an IPv6 string representation. The bytes must be in network order.\n *\n * @param bytes the bytes to convert.\n *\n * @return the IPv4 or IPv6 string representation if 4 or 16 bytes,\n * respectively, are given, otherwise null.\n */\nutil.bytesToIP = function(bytes) {\n if(bytes.length === 4) {\n return util.bytesToIPv4(bytes);\n }\n if(bytes.length === 16) {\n return util.bytesToIPv6(bytes);\n }\n return null;\n};\n\n/**\n * Converts 4-bytes into an IPv4 string representation. The bytes must be\n * in network order.\n *\n * @param bytes the bytes to convert.\n *\n * @return the IPv4 string representation or null for an invalid # of bytes.\n */\nutil.bytesToIPv4 = function(bytes) {\n if(bytes.length !== 4) {\n return null;\n }\n var ip = [];\n for(var i = 0; i < bytes.length; ++i) {\n ip.push(bytes.charCodeAt(i));\n }\n return ip.join('.');\n};\n\n/**\n * Converts 16-bytes into an IPv16 string representation. The bytes must be\n * in network order.\n *\n * @param bytes the bytes to convert.\n *\n * @return the IPv16 string representation or null for an invalid # of bytes.\n */\nutil.bytesToIPv6 = function(bytes) {\n if(bytes.length !== 16) {\n return null;\n }\n var ip = [];\n var zeroGroups = [];\n var zeroMaxGroup = 0;\n for(var i = 0; i < bytes.length; i += 2) {\n var hex = util.bytesToHex(bytes[i] + bytes[i + 1]);\n // canonicalize zero representation\n while(hex[0] === '0' && hex !== '0') {\n hex = hex.substr(1);\n }\n if(hex === '0') {\n var last = zeroGroups[zeroGroups.length - 1];\n var idx = ip.length;\n if(!last || idx !== last.end + 1) {\n zeroGroups.push({start: idx, end: idx});\n } else {\n last.end = idx;\n if((last.end - last.start) >\n (zeroGroups[zeroMaxGroup].end - zeroGroups[zeroMaxGroup].start)) {\n zeroMaxGroup = zeroGroups.length - 1;\n }\n }\n }\n ip.push(hex);\n }\n if(zeroGroups.length > 0) {\n var group = zeroGroups[zeroMaxGroup];\n // only shorten group of length > 0\n if(group.end - group.start > 0) {\n ip.splice(group.start, group.end - group.start + 1, '');\n if(group.start === 0) {\n ip.unshift('');\n }\n if(group.end === 7) {\n ip.push('');\n }\n }\n }\n return ip.join(':');\n};\n\n/**\n * Estimates the number of processes that can be run concurrently. If\n * creating Web Workers, keep in mind that the main JavaScript process needs\n * its own core.\n *\n * @param options the options to use:\n * update true to force an update (not use the cached value).\n * @param callback(err, max) called once the operation completes.\n */\nutil.estimateCores = function(options, callback) {\n if(typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n if('cores' in util && !options.update) {\n return callback(null, util.cores);\n }\n if(typeof navigator !== 'undefined' &&\n 'hardwareConcurrency' in navigator &&\n navigator.hardwareConcurrency > 0) {\n util.cores = navigator.hardwareConcurrency;\n return callback(null, util.cores);\n }\n if(typeof Worker === 'undefined') {\n // workers not available\n util.cores = 1;\n return callback(null, util.cores);\n }\n if(typeof Blob === 'undefined') {\n // can't estimate, default to 2\n util.cores = 2;\n return callback(null, util.cores);\n }\n\n // create worker concurrency estimation code as blob\n var blobUrl = URL.createObjectURL(new Blob(['(',\n function() {\n self.addEventListener('message', function(e) {\n // run worker for 4 ms\n var st = Date.now();\n var et = st + 4;\n while(Date.now() < et);\n self.postMessage({st: st, et: et});\n });\n }.toString(),\n ')()'], {type: 'application/javascript'}));\n\n // take 5 samples using 16 workers\n sample([], 5, 16);\n\n function sample(max, samples, numWorkers) {\n if(samples === 0) {\n // get overlap average\n var avg = Math.floor(max.reduce(function(avg, x) {\n return avg + x;\n }, 0) / max.length);\n util.cores = Math.max(1, avg);\n URL.revokeObjectURL(blobUrl);\n return callback(null, util.cores);\n }\n map(numWorkers, function(err, results) {\n max.push(reduce(numWorkers, results));\n sample(max, samples - 1, numWorkers);\n });\n }\n\n function map(numWorkers, callback) {\n var workers = [];\n var results = [];\n for(var i = 0; i < numWorkers; ++i) {\n var worker = new Worker(blobUrl);\n worker.addEventListener('message', function(e) {\n results.push(e.data);\n if(results.length === numWorkers) {\n for(var i = 0; i < numWorkers; ++i) {\n workers[i].terminate();\n }\n callback(null, results);\n }\n });\n workers.push(worker);\n }\n for(var i = 0; i < numWorkers; ++i) {\n workers[i].postMessage(i);\n }\n }\n\n function reduce(numWorkers, results) {\n // find overlapping time windows\n var overlaps = [];\n for(var n = 0; n < numWorkers; ++n) {\n var r1 = results[n];\n var overlap = overlaps[n] = [];\n for(var i = 0; i < numWorkers; ++i) {\n if(n === i) {\n continue;\n }\n var r2 = results[i];\n if((r1.st > r2.st && r1.st < r2.et) ||\n (r2.st > r1.st && r2.st < r1.et)) {\n overlap.push(i);\n }\n }\n }\n // get maximum overlaps ... don't include overlapping worker itself\n // as the main JS process was also being scheduled during the work and\n // would have to be subtracted from the estimate anyway\n return overlaps.reduce(function(max, overlap) {\n return Math.max(max, overlap.length);\n }, 0);\n }\n};\n","'use strict'\n\nconst { Key, Errors, utils } = require('interface-datastore')\nconst { filter, map, take, sortAll } = utils\n\n/**\n * A datastore backed by leveldb.\n */\nclass LevelDatastore {\n constructor (path, opts) {\n let database\n\n if (opts && opts.db) {\n database = opts.db\n delete opts.db\n } else {\n database = require('level')\n }\n\n this.db = this._initDb(database, path, opts)\n }\n\n _initDb (database, path, opts) {\n return database(path, {\n ...opts,\n valueEncoding: 'binary',\n compression: false // same default as go\n })\n }\n\n async open () {\n try {\n await this.db.open()\n } catch (err) {\n throw Errors.dbOpenFailedError(err)\n }\n }\n\n async put (key, value) {\n try {\n await this.db.put(key.toString(), value)\n } catch (err) {\n throw Errors.dbWriteFailedError(err)\n }\n }\n\n async get (key) {\n let data\n try {\n data = await this.db.get(key.toString())\n } catch (err) {\n if (err.notFound) throw Errors.notFoundError(err)\n throw Errors.dbWriteFailedError(err)\n }\n return data\n }\n\n async has (key) {\n try {\n await this.db.get(key.toString())\n } catch (err) {\n if (err.notFound) return false\n throw err\n }\n return true\n }\n\n async delete (key) {\n try {\n await this.db.del(key.toString())\n } catch (err) {\n throw Errors.dbDeleteFailedError(err)\n }\n }\n\n close () {\n return this.db.close()\n }\n\n batch () {\n const ops = []\n return {\n put: (key, value) => {\n ops.push({\n type: 'put',\n key: key.toString(),\n value: value\n })\n },\n delete: (key) => {\n ops.push({\n type: 'del',\n key: key.toString()\n })\n },\n commit: () => {\n return this.db.batch(ops)\n }\n }\n }\n\n query (q) {\n let values = true\n if (q.keysOnly != null) {\n values = !q.keysOnly\n }\n\n const opts = {\n keys: true,\n values: values,\n keyAsBuffer: true\n }\n\n // Let the db do the prefix matching\n if (q.prefix != null) {\n const prefix = q.prefix.toString()\n // Match keys greater than or equal to `prefix` and\n opts.gte = prefix\n // less than `prefix` + \\xFF (hex escape sequence)\n opts.lt = prefix + '\\xFF'\n }\n\n let it = levelIteratorToIterator(\n this.db.iterator(opts)\n )\n\n it = map(it, ({ key, value }) => {\n const res = { key: new Key(key, false) }\n if (values) {\n res.value = Buffer.from(value)\n }\n return res\n })\n\n if (Array.isArray(q.filters)) {\n it = q.filters.reduce((it, f) => filter(it, f), it)\n }\n\n if (Array.isArray(q.orders)) {\n it = q.orders.reduce((it, f) => sortAll(it, f), it)\n }\n\n if (q.offset != null) {\n let i = 0\n it = filter(it, () => i++ >= q.offset)\n }\n\n if (q.limit != null) {\n it = take(it, q.limit)\n }\n\n return it\n }\n}\n\nfunction levelIteratorToIterator (li) {\n return {\n next: () => new Promise((resolve, reject) => {\n li.next((err, key, value) => {\n if (err) return reject(err)\n if (key == null) {\n return li.end(err => {\n if (err) return reject(err)\n resolve({ done: true })\n })\n }\n resolve({ done: false, value: { key, value } })\n })\n }),\n return: () => new Promise((resolve, reject) => {\n li.end(err => {\n if (err) return reject(err)\n resolve({ done: true })\n })\n }),\n [Symbol.asyncIterator] () {\n return this\n }\n }\n}\n\nmodule.exports = LevelDatastore\n","'use strict'\n\nconst errCode = require('err-code')\n\nconst chunkers = {\n fixed: require('../chunker/fixed-size'),\n rabin: require('../chunker/rabin')\n}\n\nmodule.exports = (type, source, options) => {\n const chunker = chunkers[type]\n\n if (!chunker) {\n throw errCode(new Error(`Unknkown chunker named ${type}`), 'ERR_UNKNOWN_CHUNKER')\n }\n\n return chunker(source, options)\n}\n","/*\nindex.js - Kademlia DHT K-bucket implementation as a binary tree.\n\nThe MIT License (MIT)\n\nCopyright (c) 2013-2018 Tristan Slominski\n\nPermission is hereby granted, free of charge, to any person\nobtaining a copy of this software and associated documentation\nfiles (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use,\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n*/\n'use strict'\n\nconst randomBytes = require('randombytes')\nconst { EventEmitter } = require('events')\n\n/**\n * @param {Uint8Array} array1\n * @param {Uint8Array} array2\n * @return {Boolean}\n */\nfunction arrayEquals (array1, array2) {\n if (array1 === array2) {\n return true\n }\n if (array1.length !== array2.length) {\n return false\n }\n for (let i = 0, length = array1.length; i < length; ++i) {\n if (array1[i] !== array2[i]) {\n return false\n }\n }\n return true\n}\n\nfunction createNode () {\n return { contacts: [], dontSplit: false, left: null, right: null }\n}\n\nfunction ensureInt8 (name, val) {\n if (!(val instanceof Uint8Array)) {\n throw new TypeError(name + ' is not a Uint8Array')\n }\n}\n\n/**\n * Implementation of a Kademlia DHT k-bucket used for storing\n * contact (peer node) information.\n *\n * @extends EventEmitter\n */\nclass KBucket extends EventEmitter {\n /**\n * `options`:\n * `distance`: _Function_\n * `function (firstId, secondId) { return distance }` An optional\n * `distance` function that gets two `id` Uint8Arrays\n * and return distance (as number) between them.\n * `arbiter`: _Function_ _(Default: vectorClock arbiter)_\n * `function (incumbent, candidate) { return contact; }` An optional\n * `arbiter` function that givent two `contact` objects with the same `id`\n * returns the desired object to be used for updating the k-bucket. For\n * more details, see [arbiter function](#arbiter-function).\n * `localNodeId`: _Uint8Array_ An optional Uint8Array representing the local node id.\n * If not provided, a local node id will be created via `randomBytes(20)`.\n * `metadata`: _Object_ _(Default: {})_ Optional satellite data to include\n * with the k-bucket. `metadata` property is guaranteed not be altered by,\n * it is provided as an explicit container for users of k-bucket to store\n * implementation-specific data.\n * `numberOfNodesPerKBucket`: _Integer_ _(Default: 20)_ The number of nodes\n * that a k-bucket can contain before being full or split.\n * `numberOfNodesToPing`: _Integer_ _(Default: 3)_ The number of nodes to\n * ping when a bucket that should not be split becomes full. KBucket will\n * emit a `ping` event that contains `numberOfNodesToPing` nodes that have\n * not been contacted the longest.\n *\n * @param {Object=} options optional\n */\n constructor (options = {}) {\n super()\n\n this.localNodeId = options.localNodeId || randomBytes(20)\n this.numberOfNodesPerKBucket = options.numberOfNodesPerKBucket || 20\n this.numberOfNodesToPing = options.numberOfNodesToPing || 3\n this.distance = options.distance || KBucket.distance\n // use an arbiter from options or vectorClock arbiter by default\n this.arbiter = options.arbiter || KBucket.arbiter\n this.metadata = Object.assign({}, options.metadata)\n\n ensureInt8('option.localNodeId as parameter 1', this.localNodeId)\n\n this.root = createNode()\n }\n\n /**\n * Default arbiter function for contacts with the same id. Uses\n * contact.vectorClock to select which contact to update the k-bucket with.\n * Contact with larger vectorClock field will be selected. If vectorClock is\n * the same, candidat will be selected.\n *\n * @param {Object} incumbent Contact currently stored in the k-bucket.\n * @param {Object} candidate Contact being added to the k-bucket.\n * @return {Object} Contact to updated the k-bucket with.\n */\n static arbiter (incumbent, candidate) {\n return incumbent.vectorClock > candidate.vectorClock ? incumbent : candidate\n }\n\n /**\n * Default distance function. Finds the XOR\n * distance between firstId and secondId.\n *\n * @param {Uint8Array} firstId Uint8Array containing first id.\n * @param {Uint8Array} secondId Uint8Array containing second id.\n * @return {Number} Integer The XOR distance between firstId\n * and secondId.\n */\n static distance (firstId, secondId) {\n let distance = 0\n let i = 0\n const min = Math.min(firstId.length, secondId.length)\n const max = Math.max(firstId.length, secondId.length)\n for (; i < min; ++i) {\n distance = distance * 256 + (firstId[i] ^ secondId[i])\n }\n for (; i < max; ++i) distance = distance * 256 + 255\n return distance\n }\n\n /**\n * Adds a contact to the k-bucket.\n *\n * @param {Object} contact the contact object to add\n */\n add (contact) {\n ensureInt8('contact.id', (contact || {}).id)\n\n let bitIndex = 0\n let node = this.root\n\n while (node.contacts === null) {\n // this is not a leaf node but an inner node with 'low' and 'high'\n // branches; we will check the appropriate bit of the identifier and\n // delegate to the appropriate node for further processing\n node = this._determineNode(node, contact.id, bitIndex++)\n }\n\n // check if the contact already exists\n const index = this._indexOf(node, contact.id)\n if (index >= 0) {\n this._update(node, index, contact)\n return this\n }\n\n if (node.contacts.length < this.numberOfNodesPerKBucket) {\n node.contacts.push(contact)\n this.emit('added', contact)\n return this\n }\n\n // the bucket is full\n if (node.dontSplit) {\n // we are not allowed to split the bucket\n // we need to ping the first this.numberOfNodesToPing\n // in order to determine if they are alive\n // only if one of the pinged nodes does not respond, can the new contact\n // be added (this prevents DoS flodding with new invalid contacts)\n this.emit('ping', node.contacts.slice(0, this.numberOfNodesToPing), contact)\n return this\n }\n\n this._split(node, bitIndex)\n return this.add(contact)\n }\n\n /**\n * Get the n closest contacts to the provided node id. \"Closest\" here means:\n * closest according to the XOR metric of the contact node id.\n *\n * @param {Uint8Array} id Contact node id\n * @param {Number=} n Integer (Default: Infinity) The maximum number of\n * closest contacts to return\n * @return {Array} Array Maximum of n closest contacts to the node id\n */\n closest (id, n = Infinity) {\n ensureInt8('id', id)\n\n if ((!Number.isInteger(n) && n !== Infinity) || n <= 0) {\n throw new TypeError('n is not positive number')\n }\n\n let contacts = []\n\n for (let nodes = [ this.root ], bitIndex = 0; nodes.length > 0 && contacts.length < n;) {\n const node = nodes.pop()\n if (node.contacts === null) {\n const detNode = this._determineNode(node, id, bitIndex++)\n nodes.push(node.left === detNode ? node.right : node.left)\n nodes.push(detNode)\n } else {\n contacts = contacts.concat(node.contacts)\n }\n }\n\n return contacts\n .map(a => [this.distance(a.id, id), a])\n .sort((a, b) => a[0] - b[0])\n .slice(0, n)\n .map(a => a[1])\n }\n\n /**\n * Counts the total number of contacts in the tree.\n *\n * @return {Number} The number of contacts held in the tree\n */\n count () {\n // return this.toArray().length\n let count = 0\n for (const nodes = [ this.root ]; nodes.length > 0;) {\n const node = nodes.pop()\n if (node.contacts === null) nodes.push(node.right, node.left)\n else count += node.contacts.length\n }\n return count\n }\n\n /**\n * Determines whether the id at the bitIndex is 0 or 1.\n * Return left leaf if `id` at `bitIndex` is 0, right leaf otherwise\n *\n * @param {Object} node internal object that has 2 leafs: left and right\n * @param {Uint8Array} id Id to compare localNodeId with.\n * @param {Number} bitIndex Integer (Default: 0) The bit index to which bit\n * to check in the id Uint8Array.\n * @return {Object} left leaf if id at bitIndex is 0, right leaf otherwise.\n */\n _determineNode (node, id, bitIndex) {\n // **NOTE** remember that id is a Uint8Array and has granularity of\n // bytes (8 bits), whereas the bitIndex is the _bit_ index (not byte)\n\n // id's that are too short are put in low bucket (1 byte = 8 bits)\n // (bitIndex >> 3) finds how many bytes the bitIndex describes\n // bitIndex % 8 checks if we have extra bits beyond byte multiples\n // if number of bytes is <= no. of bytes described by bitIndex and there\n // are extra bits to consider, this means id has less bits than what\n // bitIndex describes, id therefore is too short, and will be put in low\n // bucket\n const bytesDescribedByBitIndex = bitIndex >> 3\n const bitIndexWithinByte = bitIndex % 8\n if ((id.length <= bytesDescribedByBitIndex) && (bitIndexWithinByte !== 0)) {\n return node.left\n }\n\n const byteUnderConsideration = id[bytesDescribedByBitIndex]\n\n // byteUnderConsideration is an integer from 0 to 255 represented by 8 bits\n // where 255 is 11111111 and 0 is 00000000\n // in order to find out whether the bit at bitIndexWithinByte is set\n // we construct (1 << (7 - bitIndexWithinByte)) which will consist\n // of all bits being 0, with only one bit set to 1\n // for example, if bitIndexWithinByte is 3, we will construct 00010000 by\n // (1 << (7 - 3)) -> (1 << 4) -> 16\n if (byteUnderConsideration & (1 << (7 - bitIndexWithinByte))) {\n return node.right\n }\n\n return node.left\n }\n\n /**\n * Get a contact by its exact ID.\n * If this is a leaf, loop through the bucket contents and return the correct\n * contact if we have it or null if not. If this is an inner node, determine\n * which branch of the tree to traverse and repeat.\n *\n * @param {Uint8Array} id The ID of the contact to fetch.\n * @return {Object|Null} The contact if available, otherwise null\n */\n get (id) {\n ensureInt8('id', id)\n\n let bitIndex = 0\n\n let node = this.root\n while (node.contacts === null) {\n node = this._determineNode(node, id, bitIndex++)\n }\n\n // index of uses contact id for matching\n const index = this._indexOf(node, id)\n return index >= 0 ? node.contacts[index] : null\n }\n\n /**\n * Returns the index of the contact with provided\n * id if it exists, returns -1 otherwise.\n *\n * @param {Object} node internal object that has 2 leafs: left and right\n * @param {Uint8Array} id Contact node id.\n * @return {Number} Integer Index of contact with provided id if it\n * exists, -1 otherwise.\n */\n _indexOf (node, id) {\n for (let i = 0; i < node.contacts.length; ++i) {\n if (arrayEquals(node.contacts[i].id, id)) return i\n }\n\n return -1\n }\n\n /**\n * Removes contact with the provided id.\n *\n * @param {Uint8Array} id The ID of the contact to remove.\n * @return {Object} The k-bucket itself.\n */\n remove (id) {\n ensureInt8('the id as parameter 1', id)\n\n let bitIndex = 0\n let node = this.root\n\n while (node.contacts === null) {\n node = this._determineNode(node, id, bitIndex++)\n }\n\n const index = this._indexOf(node, id)\n if (index >= 0) {\n const contact = node.contacts.splice(index, 1)[0]\n this.emit('removed', contact)\n }\n\n return this\n }\n\n /**\n * Splits the node, redistributes contacts to the new nodes, and marks the\n * node that was split as an inner node of the binary tree of nodes by\n * setting this.root.contacts = null\n *\n * @param {Object} node node for splitting\n * @param {Number} bitIndex the bitIndex to which byte to check in the\n * Uint8Array for navigating the binary tree\n */\n _split (node, bitIndex) {\n node.left = createNode()\n node.right = createNode()\n\n // redistribute existing contacts amongst the two newly created nodes\n for (const contact of node.contacts) {\n this._determineNode(node, contact.id, bitIndex).contacts.push(contact)\n }\n\n node.contacts = null // mark as inner tree node\n\n // don't split the \"far away\" node\n // we check where the local node would end up and mark the other one as\n // \"dontSplit\" (i.e. \"far away\")\n const detNode = this._determineNode(node, this.localNodeId, bitIndex)\n const otherNode = node.left === detNode ? node.right : node.left\n otherNode.dontSplit = true\n }\n\n /**\n * Returns all the contacts contained in the tree as an array.\n * If this is a leaf, return a copy of the bucket. `slice` is used so that we\n * don't accidentally leak an internal reference out that might be\n * accidentally misused. If this is not a leaf, return the union of the low\n * and high branches (themselves also as arrays).\n *\n * @return {Array} All of the contacts in the tree, as an array\n */\n toArray () {\n let result = []\n for (const nodes = [ this.root ]; nodes.length > 0;) {\n const node = nodes.pop()\n if (node.contacts === null) nodes.push(node.right, node.left)\n else result = result.concat(node.contacts)\n }\n return result\n }\n\n /**\n * Updates the contact selected by the arbiter.\n * If the selection is our old contact and the candidate is some new contact\n * then the new contact is abandoned (not added).\n * If the selection is our old contact and the candidate is our old contact\n * then we are refreshing the contact and it is marked as most recently\n * contacted (by being moved to the right/end of the bucket array).\n * If the selection is our new contact, the old contact is removed and the new\n * contact is marked as most recently contacted.\n *\n * @param {Object} node internal object that has 2 leafs: left and right\n * @param {Number} index the index in the bucket where contact exists\n * (index has already been computed in a previous\n * calculation)\n * @param {Object} contact The contact object to update.\n */\n _update (node, index, contact) {\n // sanity check\n if (!arrayEquals(node.contacts[index].id, contact.id)) {\n throw new Error('wrong index for _update')\n }\n\n const incumbent = node.contacts[index]\n const selection = this.arbiter(incumbent, contact)\n // if the selection is our old contact and the candidate is some new\n // contact, then there is nothing to do\n if (selection === incumbent && incumbent !== contact) return\n\n node.contacts.splice(index, 1) // remove old contact\n node.contacts.push(selection) // add more recent contact version\n this.emit('updated', incumbent, selection)\n }\n}\n\nmodule.exports = KBucket\n","var debug = require('debug')('simple-peer')\nvar getBrowserRTC = require('get-browser-rtc')\nvar randombytes = require('randombytes')\nvar stream = require('readable-stream')\nvar queueMicrotask = require('queue-microtask') // TODO: remove when Node 10 is not supported\n\nvar MAX_BUFFERED_AMOUNT = 64 * 1024\nvar ICECOMPLETE_TIMEOUT = 5 * 1000\nvar CHANNEL_CLOSING_TIMEOUT = 5 * 1000\n\n// HACK: Filter trickle lines when trickle is disabled #354\nfunction filterTrickle (sdp) {\n return sdp.replace(/a=ice-options:trickle\\s\\n/g, '')\n}\n\nfunction makeError (message, code) {\n var err = new Error(message)\n err.code = code\n return err\n}\n\nfunction warn (message) {\n console.warn(message)\n}\n\n/**\n * WebRTC peer connection. Same API as node core `net.Socket`, plus a few extra methods.\n * Duplex stream.\n * @param {Object} opts\n */\nclass Peer extends stream.Duplex {\n constructor (opts) {\n opts = Object.assign({\n allowHalfOpen: false\n }, opts)\n\n super(opts)\n\n this._id = randombytes(4).toString('hex').slice(0, 7)\n this._debug('new peer %o', opts)\n\n this.channelName = opts.initiator\n ? opts.channelName || randombytes(20).toString('hex')\n : null\n\n this.initiator = opts.initiator || false\n this.channelConfig = opts.channelConfig || Peer.channelConfig\n this.config = Object.assign({}, Peer.config, opts.config)\n this.offerOptions = opts.offerOptions || {}\n this.answerOptions = opts.answerOptions || {}\n this.sdpTransform = opts.sdpTransform || (sdp => sdp)\n this.streams = opts.streams || (opts.stream ? [opts.stream] : []) // support old \"stream\" option\n this.trickle = opts.trickle !== undefined ? opts.trickle : true\n this.allowHalfTrickle = opts.allowHalfTrickle !== undefined ? opts.allowHalfTrickle : false\n this.iceCompleteTimeout = opts.iceCompleteTimeout || ICECOMPLETE_TIMEOUT\n\n this.destroyed = false\n this._connected = false\n\n this.remoteAddress = undefined\n this.remoteFamily = undefined\n this.remotePort = undefined\n this.localAddress = undefined\n this.localFamily = undefined\n this.localPort = undefined\n\n this._wrtc = (opts.wrtc && typeof opts.wrtc === 'object')\n ? opts.wrtc\n : getBrowserRTC()\n\n if (!this._wrtc) {\n if (typeof window === 'undefined') {\n throw makeError('No WebRTC support: Specify `opts.wrtc` option in this environment', 'ERR_WEBRTC_SUPPORT')\n } else {\n throw makeError('No WebRTC support: Not a supported browser', 'ERR_WEBRTC_SUPPORT')\n }\n }\n\n this._pcReady = false\n this._channelReady = false\n this._iceComplete = false // ice candidate trickle done (got null candidate)\n this._iceCompleteTimer = null // send an offer/answer anyway after some timeout\n this._channel = null\n this._pendingCandidates = []\n\n this._isNegotiating = !this.initiator // is this peer waiting for negotiation to complete?\n this._batchedNegotiation = false // batch synchronous negotiations\n this._queuedNegotiation = false // is there a queued negotiation request?\n this._sendersAwaitingStable = []\n this._senderMap = new Map()\n this._firstStable = true\n this._closingInterval = null\n\n this._remoteTracks = []\n this._remoteStreams = []\n\n this._chunk = null\n this._cb = null\n this._interval = null\n\n try {\n this._pc = new (this._wrtc.RTCPeerConnection)(this.config)\n } catch (err) {\n queueMicrotask(() => this.destroy(makeError(err, 'ERR_PC_CONSTRUCTOR')))\n return\n }\n\n // We prefer feature detection whenever possible, but sometimes that's not\n // possible for certain implementations.\n this._isReactNativeWebrtc = typeof this._pc._peerConnectionId === 'number'\n\n this._pc.oniceconnectionstatechange = () => {\n this._onIceStateChange()\n }\n this._pc.onicegatheringstatechange = () => {\n this._onIceStateChange()\n }\n this._pc.onconnectionstatechange = () => {\n this._onConnectionStateChange()\n }\n this._pc.onsignalingstatechange = () => {\n this._onSignalingStateChange()\n }\n this._pc.onicecandidate = event => {\n this._onIceCandidate(event)\n }\n\n // Other spec events, unused by this implementation:\n // - onconnectionstatechange\n // - onicecandidateerror\n // - onfingerprintfailure\n // - onnegotiationneeded\n\n if (this.initiator) {\n this._setupData({\n channel: this._pc.createDataChannel(this.channelName, this.channelConfig)\n })\n } else {\n this._pc.ondatachannel = event => {\n this._setupData(event)\n }\n }\n\n if (this.streams) {\n this.streams.forEach(stream => {\n this.addStream(stream)\n })\n }\n this._pc.ontrack = event => {\n this._onTrack(event)\n }\n\n if (this.initiator) {\n this._needsNegotiation()\n }\n\n this._onFinishBound = () => {\n this._onFinish()\n }\n this.once('finish', this._onFinishBound)\n }\n\n get bufferSize () {\n return (this._channel && this._channel.bufferedAmount) || 0\n }\n\n // HACK: it's possible channel.readyState is \"closing\" before peer.destroy() fires\n // https://bugs.chromium.org/p/chromium/issues/detail?id=882743\n get connected () {\n return (this._connected && this._channel.readyState === 'open')\n }\n\n address () {\n return { port: this.localPort, family: this.localFamily, address: this.localAddress }\n }\n\n signal (data) {\n if (this.destroyed) throw makeError('cannot signal after peer is destroyed', 'ERR_SIGNALING')\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data)\n } catch (err) {\n data = {}\n }\n }\n this._debug('signal()')\n\n if (data.renegotiate && this.initiator) {\n this._debug('got request to renegotiate')\n this._needsNegotiation()\n }\n if (data.transceiverRequest && this.initiator) {\n this._debug('got request for transceiver')\n this.addTransceiver(data.transceiverRequest.kind, data.transceiverRequest.init)\n }\n if (data.candidate) {\n if (this._pc.remoteDescription && this._pc.remoteDescription.type) {\n this._addIceCandidate(data.candidate)\n } else {\n this._pendingCandidates.push(data.candidate)\n }\n }\n if (data.sdp) {\n this._pc.setRemoteDescription(new (this._wrtc.RTCSessionDescription)(data))\n .then(() => {\n if (this.destroyed) return\n\n this._pendingCandidates.forEach(candidate => {\n this._addIceCandidate(candidate)\n })\n this._pendingCandidates = []\n\n if (this._pc.remoteDescription.type === 'offer') this._createAnswer()\n })\n .catch(err => {\n this.destroy(makeError(err, 'ERR_SET_REMOTE_DESCRIPTION'))\n })\n }\n if (!data.sdp && !data.candidate && !data.renegotiate && !data.transceiverRequest) {\n this.destroy(makeError('signal() called with invalid signal data', 'ERR_SIGNALING'))\n }\n }\n\n _addIceCandidate (candidate) {\n var iceCandidateObj = new this._wrtc.RTCIceCandidate(candidate)\n this._pc.addIceCandidate(iceCandidateObj)\n .catch(err => {\n if (!iceCandidateObj.address || iceCandidateObj.address.endsWith('.local')) {\n warn('Ignoring unsupported ICE candidate.')\n } else {\n this.destroy(makeError(err, 'ERR_ADD_ICE_CANDIDATE'))\n }\n })\n }\n\n /**\n * Send text/binary data to the remote peer.\n * @param {ArrayBufferView|ArrayBuffer|Buffer|string|Blob} chunk\n */\n send (chunk) {\n this._channel.send(chunk)\n }\n\n /**\n * Add a Transceiver to the connection.\n * @param {String} kind\n * @param {Object} init\n */\n addTransceiver (kind, init) {\n this._debug('addTransceiver()')\n\n if (this.initiator) {\n try {\n this._pc.addTransceiver(kind, init)\n this._needsNegotiation()\n } catch (err) {\n this.destroy(makeError(err, 'ERR_ADD_TRANSCEIVER'))\n }\n } else {\n this.emit('signal', { // request initiator to renegotiate\n transceiverRequest: { kind, init }\n })\n }\n }\n\n /**\n * Add a MediaStream to the connection.\n * @param {MediaStream} stream\n */\n addStream (stream) {\n this._debug('addStream()')\n\n stream.getTracks().forEach(track => {\n this.addTrack(track, stream)\n })\n }\n\n /**\n * Add a MediaStreamTrack to the connection.\n * @param {MediaStreamTrack} track\n * @param {MediaStream} stream\n */\n addTrack (track, stream) {\n this._debug('addTrack()')\n\n var submap = this._senderMap.get(track) || new Map() // nested Maps map [track, stream] to sender\n var sender = submap.get(stream)\n if (!sender) {\n sender = this._pc.addTrack(track, stream)\n submap.set(stream, sender)\n this._senderMap.set(track, submap)\n this._needsNegotiation()\n } else if (sender.removed) {\n throw makeError('Track has been removed. You should enable/disable tracks that you want to re-add.', 'ERR_SENDER_REMOVED')\n } else {\n throw makeError('Track has already been added to that stream.', 'ERR_SENDER_ALREADY_ADDED')\n }\n }\n\n /**\n * Replace a MediaStreamTrack by another in the connection.\n * @param {MediaStreamTrack} oldTrack\n * @param {MediaStreamTrack} newTrack\n * @param {MediaStream} stream\n */\n replaceTrack (oldTrack, newTrack, stream) {\n this._debug('replaceTrack()')\n\n var submap = this._senderMap.get(oldTrack)\n var sender = submap ? submap.get(stream) : null\n if (!sender) {\n throw makeError('Cannot replace track that was never added.', 'ERR_TRACK_NOT_ADDED')\n }\n if (newTrack) this._senderMap.set(newTrack, submap)\n\n if (sender.replaceTrack != null) {\n sender.replaceTrack(newTrack)\n } else {\n this.destroy(makeError('replaceTrack is not supported in this browser', 'ERR_UNSUPPORTED_REPLACETRACK'))\n }\n }\n\n /**\n * Remove a MediaStreamTrack from the connection.\n * @param {MediaStreamTrack} track\n * @param {MediaStream} stream\n */\n removeTrack (track, stream) {\n this._debug('removeSender()')\n\n var submap = this._senderMap.get(track)\n var sender = submap ? submap.get(stream) : null\n if (!sender) {\n throw makeError('Cannot remove track that was never added.', 'ERR_TRACK_NOT_ADDED')\n }\n try {\n sender.removed = true\n this._pc.removeTrack(sender)\n } catch (err) {\n if (err.name === 'NS_ERROR_UNEXPECTED') {\n this._sendersAwaitingStable.push(sender) // HACK: Firefox must wait until (signalingState === stable) https://bugzilla.mozilla.org/show_bug.cgi?id=1133874\n } else {\n this.destroy(makeError(err, 'ERR_REMOVE_TRACK'))\n }\n }\n this._needsNegotiation()\n }\n\n /**\n * Remove a MediaStream from the connection.\n * @param {MediaStream} stream\n */\n removeStream (stream) {\n this._debug('removeSenders()')\n\n stream.getTracks().forEach(track => {\n this.removeTrack(track, stream)\n })\n }\n\n _needsNegotiation () {\n this._debug('_needsNegotiation')\n if (this._batchedNegotiation) return // batch synchronous renegotiations\n this._batchedNegotiation = true\n queueMicrotask(() => {\n this._batchedNegotiation = false\n this._debug('starting batched negotiation')\n this.negotiate()\n })\n }\n\n negotiate () {\n if (this.initiator) {\n if (this._isNegotiating) {\n this._queuedNegotiation = true\n this._debug('already negotiating, queueing')\n } else {\n this._debug('start negotiation')\n setTimeout(() => { // HACK: Chrome crashes if we immediately call createOffer\n this._createOffer()\n }, 0)\n }\n } else {\n if (!this._isNegotiating) {\n this._debug('requesting negotiation from initiator')\n this.emit('signal', { // request initiator to renegotiate\n renegotiate: true\n })\n }\n }\n this._isNegotiating = true\n }\n\n // TODO: Delete this method once readable-stream is updated to contain a default\n // implementation of destroy() that automatically calls _destroy()\n // See: https://github.com/nodejs/readable-stream/issues/283\n destroy (err) {\n this._destroy(err, () => {})\n }\n\n _destroy (err, cb) {\n if (this.destroyed) return\n\n this._debug('destroy (error: %s)', err && (err.message || err))\n\n this.readable = this.writable = false\n\n if (!this._readableState.ended) this.push(null)\n if (!this._writableState.finished) this.end()\n\n this.destroyed = true\n this._connected = false\n this._pcReady = false\n this._channelReady = false\n this._remoteTracks = null\n this._remoteStreams = null\n this._senderMap = null\n\n clearInterval(this._closingInterval)\n this._closingInterval = null\n\n clearInterval(this._interval)\n this._interval = null\n this._chunk = null\n this._cb = null\n\n if (this._onFinishBound) this.removeListener('finish', this._onFinishBound)\n this._onFinishBound = null\n\n if (this._channel) {\n try {\n this._channel.close()\n } catch (err) {}\n\n this._channel.onmessage = null\n this._channel.onopen = null\n this._channel.onclose = null\n this._channel.onerror = null\n }\n if (this._pc) {\n try {\n this._pc.close()\n } catch (err) {}\n\n this._pc.oniceconnectionstatechange = null\n this._pc.onicegatheringstatechange = null\n this._pc.onsignalingstatechange = null\n this._pc.onicecandidate = null\n this._pc.ontrack = null\n this._pc.ondatachannel = null\n }\n this._pc = null\n this._channel = null\n\n if (err) this.emit('error', err)\n this.emit('close')\n cb()\n }\n\n _setupData (event) {\n if (!event.channel) {\n // In some situations `pc.createDataChannel()` returns `undefined` (in wrtc),\n // which is invalid behavior. Handle it gracefully.\n // See: https://github.com/feross/simple-peer/issues/163\n return this.destroy(makeError('Data channel event is missing `channel` property', 'ERR_DATA_CHANNEL'))\n }\n\n this._channel = event.channel\n this._channel.binaryType = 'arraybuffer'\n\n if (typeof this._channel.bufferedAmountLowThreshold === 'number') {\n this._channel.bufferedAmountLowThreshold = MAX_BUFFERED_AMOUNT\n }\n\n this.channelName = this._channel.label\n\n this._channel.onmessage = event => {\n this._onChannelMessage(event)\n }\n this._channel.onbufferedamountlow = () => {\n this._onChannelBufferedAmountLow()\n }\n this._channel.onopen = () => {\n this._onChannelOpen()\n }\n this._channel.onclose = () => {\n this._onChannelClose()\n }\n this._channel.onerror = err => {\n this.destroy(makeError(err, 'ERR_DATA_CHANNEL'))\n }\n\n // HACK: Chrome will sometimes get stuck in readyState \"closing\", let's check for this condition\n // https://bugs.chromium.org/p/chromium/issues/detail?id=882743\n var isClosing = false\n this._closingInterval = setInterval(() => { // No \"onclosing\" event\n if (this._channel && this._channel.readyState === 'closing') {\n if (isClosing) this._onChannelClose() // closing timed out: equivalent to onclose firing\n isClosing = true\n } else {\n isClosing = false\n }\n }, CHANNEL_CLOSING_TIMEOUT)\n }\n\n _read () {}\n\n _write (chunk, encoding, cb) {\n if (this.destroyed) return cb(makeError('cannot write after peer is destroyed', 'ERR_DATA_CHANNEL'))\n\n if (this._connected) {\n try {\n this.send(chunk)\n } catch (err) {\n return this.destroy(makeError(err, 'ERR_DATA_CHANNEL'))\n }\n if (this._channel.bufferedAmount > MAX_BUFFERED_AMOUNT) {\n this._debug('start backpressure: bufferedAmount %d', this._channel.bufferedAmount)\n this._cb = cb\n } else {\n cb(null)\n }\n } else {\n this._debug('write before connect')\n this._chunk = chunk\n this._cb = cb\n }\n }\n\n // When stream finishes writing, close socket. Half open connections are not\n // supported.\n _onFinish () {\n if (this.destroyed) return\n\n // Wait a bit before destroying so the socket flushes.\n // TODO: is there a more reliable way to accomplish this?\n const destroySoon = () => {\n setTimeout(() => this.destroy(), 1000)\n }\n\n if (this._connected) {\n destroySoon()\n } else {\n this.once('connect', destroySoon)\n }\n }\n\n _startIceCompleteTimeout () {\n if (this.destroyed) return\n if (this._iceCompleteTimer) return\n this._debug('started iceComplete timeout')\n this._iceCompleteTimer = setTimeout(() => {\n if (!this._iceComplete) {\n this._iceComplete = true\n this._debug('iceComplete timeout completed')\n this.emit('iceTimeout')\n this.emit('_iceComplete')\n }\n }, this.iceCompleteTimeout)\n }\n\n _createOffer () {\n if (this.destroyed) return\n\n this._pc.createOffer(this.offerOptions)\n .then(offer => {\n if (this.destroyed) return\n if (!this.trickle && !this.allowHalfTrickle) offer.sdp = filterTrickle(offer.sdp)\n offer.sdp = this.sdpTransform(offer.sdp)\n\n const sendOffer = () => {\n if (this.destroyed) return\n var signal = this._pc.localDescription || offer\n this._debug('signal')\n this.emit('signal', {\n type: signal.type,\n sdp: signal.sdp\n })\n }\n\n const onSuccess = () => {\n this._debug('createOffer success')\n if (this.destroyed) return\n if (this.trickle || this._iceComplete) sendOffer()\n else this.once('_iceComplete', sendOffer) // wait for candidates\n }\n\n const onError = err => {\n this.destroy(makeError(err, 'ERR_SET_LOCAL_DESCRIPTION'))\n }\n\n this._pc.setLocalDescription(offer)\n .then(onSuccess)\n .catch(onError)\n })\n .catch(err => {\n this.destroy(makeError(err, 'ERR_CREATE_OFFER'))\n })\n }\n\n _requestMissingTransceivers () {\n if (this._pc.getTransceivers) {\n this._pc.getTransceivers().forEach(transceiver => {\n if (!transceiver.mid && transceiver.sender.track && !transceiver.requested) {\n transceiver.requested = true // HACK: Safari returns negotiated transceivers with a null mid\n this.addTransceiver(transceiver.sender.track.kind)\n }\n })\n }\n }\n\n _createAnswer () {\n if (this.destroyed) return\n\n this._pc.createAnswer(this.answerOptions)\n .then(answer => {\n if (this.destroyed) return\n if (!this.trickle && !this.allowHalfTrickle) answer.sdp = filterTrickle(answer.sdp)\n answer.sdp = this.sdpTransform(answer.sdp)\n\n const sendAnswer = () => {\n if (this.destroyed) return\n var signal = this._pc.localDescription || answer\n this._debug('signal')\n this.emit('signal', {\n type: signal.type,\n sdp: signal.sdp\n })\n if (!this.initiator) this._requestMissingTransceivers()\n }\n\n const onSuccess = () => {\n if (this.destroyed) return\n if (this.trickle || this._iceComplete) sendAnswer()\n else this.once('_iceComplete', sendAnswer)\n }\n\n const onError = err => {\n this.destroy(makeError(err, 'ERR_SET_LOCAL_DESCRIPTION'))\n }\n\n this._pc.setLocalDescription(answer)\n .then(onSuccess)\n .catch(onError)\n })\n .catch(err => {\n this.destroy(makeError(err, 'ERR_CREATE_ANSWER'))\n })\n }\n\n _onConnectionStateChange () {\n if (this.destroyed) return\n if (this._pc.connectionState === 'failed') {\n this.destroy(makeError('Connection failed.', 'ERR_CONNECTION_FAILURE'))\n }\n }\n\n _onIceStateChange () {\n if (this.destroyed) return\n var iceConnectionState = this._pc.iceConnectionState\n var iceGatheringState = this._pc.iceGatheringState\n\n this._debug(\n 'iceStateChange (connection: %s) (gathering: %s)',\n iceConnectionState,\n iceGatheringState\n )\n this.emit('iceStateChange', iceConnectionState, iceGatheringState)\n\n if (iceConnectionState === 'connected' || iceConnectionState === 'completed') {\n this._pcReady = true\n this._maybeReady()\n }\n if (iceConnectionState === 'failed') {\n this.destroy(makeError('Ice connection failed.', 'ERR_ICE_CONNECTION_FAILURE'))\n }\n if (iceConnectionState === 'closed') {\n this.destroy(makeError('Ice connection closed.', 'ERR_ICE_CONNECTION_CLOSED'))\n }\n }\n\n getStats (cb) {\n // statreports can come with a value array instead of properties\n const flattenValues = report => {\n if (Object.prototype.toString.call(report.values) === '[object Array]') {\n report.values.forEach(value => {\n Object.assign(report, value)\n })\n }\n return report\n }\n\n // Promise-based getStats() (standard)\n if (this._pc.getStats.length === 0 || this._isReactNativeWebrtc) {\n this._pc.getStats()\n .then(res => {\n var reports = []\n res.forEach(report => {\n reports.push(flattenValues(report))\n })\n cb(null, reports)\n }, err => cb(err))\n\n // Single-parameter callback-based getStats() (non-standard)\n } else if (this._pc.getStats.length > 0) {\n this._pc.getStats(res => {\n // If we destroy connection in `connect` callback this code might happen to run when actual connection is already closed\n if (this.destroyed) return\n\n var reports = []\n res.result().forEach(result => {\n var report = {}\n result.names().forEach(name => {\n report[name] = result.stat(name)\n })\n report.id = result.id\n report.type = result.type\n report.timestamp = result.timestamp\n reports.push(flattenValues(report))\n })\n cb(null, reports)\n }, err => cb(err))\n\n // Unknown browser, skip getStats() since it's anyone's guess which style of\n // getStats() they implement.\n } else {\n cb(null, [])\n }\n }\n\n _maybeReady () {\n this._debug('maybeReady pc %s channel %s', this._pcReady, this._channelReady)\n if (this._connected || this._connecting || !this._pcReady || !this._channelReady) return\n\n this._connecting = true\n\n // HACK: We can't rely on order here, for details see https://github.com/js-platform/node-webrtc/issues/339\n const findCandidatePair = () => {\n if (this.destroyed) return\n\n this.getStats((err, items) => {\n if (this.destroyed) return\n\n // Treat getStats error as non-fatal. It's not essential.\n if (err) items = []\n\n var remoteCandidates = {}\n var localCandidates = {}\n var candidatePairs = {}\n var foundSelectedCandidatePair = false\n\n items.forEach(item => {\n // TODO: Once all browsers support the hyphenated stats report types, remove\n // the non-hypenated ones\n if (item.type === 'remotecandidate' || item.type === 'remote-candidate') {\n remoteCandidates[item.id] = item\n }\n if (item.type === 'localcandidate' || item.type === 'local-candidate') {\n localCandidates[item.id] = item\n }\n if (item.type === 'candidatepair' || item.type === 'candidate-pair') {\n candidatePairs[item.id] = item\n }\n })\n\n const setSelectedCandidatePair = selectedCandidatePair => {\n foundSelectedCandidatePair = true\n\n var local = localCandidates[selectedCandidatePair.localCandidateId]\n\n if (local && (local.ip || local.address)) {\n // Spec\n this.localAddress = local.ip || local.address\n this.localPort = Number(local.port)\n } else if (local && local.ipAddress) {\n // Firefox\n this.localAddress = local.ipAddress\n this.localPort = Number(local.portNumber)\n } else if (typeof selectedCandidatePair.googLocalAddress === 'string') {\n // TODO: remove this once Chrome 58 is released\n local = selectedCandidatePair.googLocalAddress.split(':')\n this.localAddress = local[0]\n this.localPort = Number(local[1])\n }\n if (this.localAddress) {\n this.localFamily = this.localAddress.includes(':') ? 'IPv6' : 'IPv4'\n }\n\n var remote = remoteCandidates[selectedCandidatePair.remoteCandidateId]\n\n if (remote && (remote.ip || remote.address)) {\n // Spec\n this.remoteAddress = remote.ip || remote.address\n this.remotePort = Number(remote.port)\n } else if (remote && remote.ipAddress) {\n // Firefox\n this.remoteAddress = remote.ipAddress\n this.remotePort = Number(remote.portNumber)\n } else if (typeof selectedCandidatePair.googRemoteAddress === 'string') {\n // TODO: remove this once Chrome 58 is released\n remote = selectedCandidatePair.googRemoteAddress.split(':')\n this.remoteAddress = remote[0]\n this.remotePort = Number(remote[1])\n }\n if (this.remoteAddress) {\n this.remoteFamily = this.remoteAddress.includes(':') ? 'IPv6' : 'IPv4'\n }\n\n this._debug(\n 'connect local: %s:%s remote: %s:%s',\n this.localAddress, this.localPort, this.remoteAddress, this.remotePort\n )\n }\n\n items.forEach(item => {\n // Spec-compliant\n if (item.type === 'transport' && item.selectedCandidatePairId) {\n setSelectedCandidatePair(candidatePairs[item.selectedCandidatePairId])\n }\n\n // Old implementations\n if (\n (item.type === 'googCandidatePair' && item.googActiveConnection === 'true') ||\n ((item.type === 'candidatepair' || item.type === 'candidate-pair') && item.selected)\n ) {\n setSelectedCandidatePair(item)\n }\n })\n\n // Ignore candidate pair selection in browsers like Safari 11 that do not have any local or remote candidates\n // But wait until at least 1 candidate pair is available\n if (!foundSelectedCandidatePair && (!Object.keys(candidatePairs).length || Object.keys(localCandidates).length)) {\n setTimeout(findCandidatePair, 100)\n return\n } else {\n this._connecting = false\n this._connected = true\n }\n\n if (this._chunk) {\n try {\n this.send(this._chunk)\n } catch (err) {\n return this.destroy(makeError(err, 'ERR_DATA_CHANNEL'))\n }\n this._chunk = null\n this._debug('sent chunk from \"write before connect\"')\n\n var cb = this._cb\n this._cb = null\n cb(null)\n }\n\n // If `bufferedAmountLowThreshold` and 'onbufferedamountlow' are unsupported,\n // fallback to using setInterval to implement backpressure.\n if (typeof this._channel.bufferedAmountLowThreshold !== 'number') {\n this._interval = setInterval(() => this._onInterval(), 150)\n if (this._interval.unref) this._interval.unref()\n }\n\n this._debug('connect')\n this.emit('connect')\n })\n }\n findCandidatePair()\n }\n\n _onInterval () {\n if (!this._cb || !this._channel || this._channel.bufferedAmount > MAX_BUFFERED_AMOUNT) {\n return\n }\n this._onChannelBufferedAmountLow()\n }\n\n _onSignalingStateChange () {\n if (this.destroyed) return\n\n if (this._pc.signalingState === 'stable' && !this._firstStable) {\n this._isNegotiating = false\n\n // HACK: Firefox doesn't yet support removing tracks when signalingState !== 'stable'\n this._debug('flushing sender queue', this._sendersAwaitingStable)\n this._sendersAwaitingStable.forEach(sender => {\n this._pc.removeTrack(sender)\n this._queuedNegotiation = true\n })\n this._sendersAwaitingStable = []\n\n if (this._queuedNegotiation) {\n this._debug('flushing negotiation queue')\n this._queuedNegotiation = false\n this._needsNegotiation() // negotiate again\n }\n\n this._debug('negotiate')\n this.emit('negotiate')\n }\n this._firstStable = false\n\n this._debug('signalingStateChange %s', this._pc.signalingState)\n this.emit('signalingStateChange', this._pc.signalingState)\n }\n\n _onIceCandidate (event) {\n if (this.destroyed) return\n if (event.candidate && this.trickle) {\n this.emit('signal', {\n candidate: {\n candidate: event.candidate.candidate,\n sdpMLineIndex: event.candidate.sdpMLineIndex,\n sdpMid: event.candidate.sdpMid\n }\n })\n } else if (!event.candidate && !this._iceComplete) {\n this._iceComplete = true\n this.emit('_iceComplete')\n }\n // as soon as we've received one valid candidate start timeout\n if (event.candidate) {\n this._startIceCompleteTimeout()\n }\n }\n\n _onChannelMessage (event) {\n if (this.destroyed) return\n var data = event.data\n if (data instanceof ArrayBuffer) data = Buffer.from(data)\n this.push(data)\n }\n\n _onChannelBufferedAmountLow () {\n if (this.destroyed || !this._cb) return\n this._debug('ending backpressure: bufferedAmount %d', this._channel.bufferedAmount)\n var cb = this._cb\n this._cb = null\n cb(null)\n }\n\n _onChannelOpen () {\n if (this._connected || this.destroyed) return\n this._debug('on channel open')\n this._channelReady = true\n this._maybeReady()\n }\n\n _onChannelClose () {\n if (this.destroyed) return\n this._debug('on channel close')\n this.destroy()\n }\n\n _onTrack (event) {\n if (this.destroyed) return\n\n event.streams.forEach(eventStream => {\n this._debug('on track')\n this.emit('track', event.track, eventStream)\n\n this._remoteTracks.push({\n track: event.track,\n stream: eventStream\n })\n\n if (this._remoteStreams.some(remoteStream => {\n return remoteStream.id === eventStream.id\n })) return // Only fire one 'stream' event, even though there may be multiple tracks per stream\n\n this._remoteStreams.push(eventStream)\n queueMicrotask(() => {\n this.emit('stream', eventStream) // ensure all tracks have been added\n })\n })\n }\n\n _debug () {\n var args = [].slice.call(arguments)\n args[0] = '[' + this._id + '] ' + args[0]\n debug.apply(null, args)\n }\n}\n\nPeer.WEBRTC_SUPPORT = !!getBrowserRTC()\n\n/**\n * Expose peer and data channel config for overriding all Peer\n * instances. Otherwise, just set opts.config or opts.channelConfig\n * when constructing a Peer.\n */\nPeer.config = {\n iceServers: [\n {\n urls: 'stun:stun.l.google.com:19302'\n },\n {\n urls: 'stun:global.stun.twilio.com:3478?transport=udp'\n }\n ],\n sdpSemantics: 'unified-plan'\n}\n\nPeer.channelConfig = {}\n\nmodule.exports = Peer\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _regenerator = _interopRequireDefault(require(\"@babel/runtime/regenerator\"));\n\nvar _asyncToGenerator2 = _interopRequireDefault(require(\"@babel/runtime/helpers/asyncToGenerator\"));\n\nvar _tweetnacl = _interopRequireDefault(require(\"tweetnacl\"));\n\nvar _tweetnaclUtil = _interopRequireDefault(require(\"tweetnacl-util\"));\n\nfunction encodeBase64Url(data) {\n return _tweetnaclUtil.default.encodeBase64(data).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\n}\n/**\n* The NaclSigner returns a configured function for signing data using the Ed25519 algorithm. It also defines\n* an interface that you can also implement yourself and use in our other modules.\n*\n* The signing function itself takes the data as a string parameter and returls a base64Url encoded signature\n*\n* @example\n* const signer = NaclSigner(process.env.PRIVATE_KEY)\n* signer(data, (err, signature) => {\n* ...\n* })\n*\n* @param {String} base64PrivateKey a 64 byte base64 encoded private key\n* @return {Function} a configured signer function\n*/\n\n\nfunction NaclSigner(base64PrivateKey) {\n var privateKey = _tweetnaclUtil.default.decodeBase64(base64PrivateKey);\n\n return (\n /*#__PURE__*/\n function () {\n var _ref = (0, _asyncToGenerator2.default)(\n /*#__PURE__*/\n _regenerator.default.mark(function _callee(data) {\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt(\"return\", encodeBase64Url(_tweetnacl.default.sign.detached(_tweetnaclUtil.default.decodeUTF8(data), privateKey)));\n\n case 1:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }()\n );\n}\n\nmodule.exports = NaclSigner;","'use strict'\n\nconst applyDefaultOptions = require('./utils/apply-default-options')\nconst toMfsPath = require('./utils/to-mfs-path')\nconst exporter = require('ipfs-unixfs-exporter')\nconst log = require('debug')('ipfs:mfs:stat')\nconst errCode = require('err-code')\n\nconst defaultOptions = {\n withLocal: false\n}\n\nmodule.exports = (context) => {\n return async function mfsStat (path, options) {\n options = applyDefaultOptions(options, defaultOptions)\n\n log(`Fetching stats for ${path}`)\n\n const {\n type,\n cid,\n mfsPath\n } = await toMfsPath(context, path)\n\n const exportPath = type === 'ipfs' && cid ? cid : mfsPath\n let file\n\n try {\n file = await exporter(exportPath, context.ipld)\n } catch (err) {\n if (err.code === 'ERR_NOT_FOUND') {\n throw errCode(new Error(`${path} does not exist`), 'ERR_NOT_FOUND')\n }\n\n throw err\n }\n\n if (!statters[file.cid.codec]) {\n throw new Error(`Cannot stat codec ${file.cid.codec}`)\n }\n\n return statters[file.cid.codec](file, options)\n }\n}\n\nconst statters = {\n raw: (file) => {\n return {\n cid: file.cid,\n size: file.node.length,\n cumulativeSize: file.node.length,\n blocks: 0,\n type: 'file', // for go compatibility\n local: undefined,\n sizeLocal: undefined,\n withLocality: false\n }\n },\n 'dag-pb': (file) => {\n let blocks = file.node.Links.length\n let size = file.node.size\n let cumulativeSize = file.node.size\n let nodeType = null\n\n if (file.unixfs) {\n size = file.unixfs.fileSize()\n nodeType = file.unixfs.type\n\n if (nodeType.includes('directory')) {\n size = 0\n cumulativeSize = file.node.size\n }\n\n if (nodeType === 'file') {\n blocks = file.unixfs.blockSizes.length\n }\n }\n\n return {\n cid: file.cid,\n size: size,\n cumulativeSize: cumulativeSize,\n blocks: blocks,\n type: nodeType,\n local: undefined,\n sizeLocal: undefined,\n withLocality: false\n }\n },\n 'dag-cbor': (file) => {\n return {\n cid: file.cid,\n local: undefined,\n sizeLocal: undefined,\n withLocality: false\n }\n }\n}\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst blake = require('blakejs')\n\nconst minB = 0xb201\nconst minS = 0xb241\n\nconst blake2b = {\n init: blake.blake2bInit,\n update: blake.blake2bUpdate,\n digest: blake.blake2bFinal\n}\n\nconst blake2s = {\n init: blake.blake2sInit,\n update: blake.blake2sUpdate,\n digest: blake.blake2sFinal\n}\n\n// Note that although this function doesn't do any asynchronous work, we mark\n// the function as async because it must return a Promise to match the API\n// for other functions that do perform asynchronous work (see sha.browser.js)\nconst makeB2Hash = (size, hf) => async (data) => {\n const ctx = hf.init(size, null)\n hf.update(ctx, data)\n return Buffer.from(hf.digest(ctx))\n}\n\nmodule.exports = (table) => {\n for (let i = 0; i < 64; i++) {\n table[minB + i] = makeB2Hash(i + 1, blake2b)\n }\n for (let i = 0; i < 32; i++) {\n table[minS + i] = makeB2Hash(i + 1, blake2s)\n }\n}\n","'use strict'\n\nconst protobuf = require('protons')\nconst keysPBM = protobuf(require('./keys.proto'))\nrequire('node-forge/lib/asn1')\nrequire('node-forge/lib/rsa')\nrequire('node-forge/lib/pbe')\nconst forge = require('node-forge/lib/forge')\n\nexports = module.exports\n\nconst supportedKeys = {\n rsa: require('./rsa-class'),\n ed25519: require('./ed25519-class'),\n secp256k1: require('libp2p-crypto-secp256k1')(keysPBM, require('../random-bytes'))\n}\n\nexports.supportedKeys = supportedKeys\nexports.keysPBM = keysPBM\n\nfunction isValidKeyType (keyType) {\n const key = supportedKeys[keyType.toLowerCase()]\n return key !== undefined\n}\n\nexports.keyStretcher = require('./key-stretcher')\nexports.generateEphemeralKeyPair = require('./ephemeral-keys')\n\n// Generates a keypair of the given type and bitsize\nexports.generateKeyPair = (type, bits, cb) => {\n const key = supportedKeys[type.toLowerCase()]\n\n if (!key) {\n return cb(new Error('invalid or unsupported key type'))\n }\n\n key.generateKeyPair(bits, cb)\n}\n\n// Generates a keypair of the given type and bitsize\n// seed is a 32 byte uint8array\nexports.generateKeyPairFromSeed = (type, seed, bits, cb) => {\n const key = supportedKeys[type.toLowerCase()]\n if (!key) {\n return cb(new Error('invalid or unsupported key type'))\n }\n if (type.toLowerCase() !== 'ed25519') {\n return cb(new Error('Seed key derivation is unimplemented for RSA or secp256k1'))\n }\n key.generateKeyPairFromSeed(seed, bits, cb)\n}\n\n// Converts a protobuf serialized public key into its\n// representative object\nexports.unmarshalPublicKey = (buf) => {\n const decoded = keysPBM.PublicKey.decode(buf)\n const data = decoded.Data\n\n switch (decoded.Type) {\n case keysPBM.KeyType.RSA:\n return supportedKeys.rsa.unmarshalRsaPublicKey(data)\n case keysPBM.KeyType.Ed25519:\n return supportedKeys.ed25519.unmarshalEd25519PublicKey(data)\n case keysPBM.KeyType.Secp256k1:\n if (supportedKeys.secp256k1) {\n return supportedKeys.secp256k1.unmarshalSecp256k1PublicKey(data)\n } else {\n throw new Error('secp256k1 support requires libp2p-crypto-secp256k1 package')\n }\n default:\n throw new Error('invalid or unsupported key type')\n }\n}\n\n// Converts a public key object into a protobuf serialized public key\nexports.marshalPublicKey = (key, type) => {\n type = (type || 'rsa').toLowerCase()\n if (!isValidKeyType(type)) {\n throw new Error('invalid or unsupported key type')\n }\n\n return key.bytes\n}\n\n// Converts a protobuf serialized private key into its\n// representative object\nexports.unmarshalPrivateKey = (buf, callback) => {\n let decoded\n try {\n decoded = keysPBM.PrivateKey.decode(buf)\n } catch (err) {\n return callback(err)\n }\n\n const data = decoded.Data\n\n switch (decoded.Type) {\n case keysPBM.KeyType.RSA:\n return supportedKeys.rsa.unmarshalRsaPrivateKey(data, callback)\n case keysPBM.KeyType.Ed25519:\n return supportedKeys.ed25519.unmarshalEd25519PrivateKey(data, callback)\n case keysPBM.KeyType.Secp256k1:\n if (supportedKeys.secp256k1) {\n return supportedKeys.secp256k1.unmarshalSecp256k1PrivateKey(data, callback)\n } else {\n return callback(new Error('secp256k1 support requires libp2p-crypto-secp256k1 package'))\n }\n default:\n callback(new Error('invalid or unsupported key type'))\n }\n}\n\n// Converts a private key object into a protobuf serialized private key\nexports.marshalPrivateKey = (key, type) => {\n type = (type || 'rsa').toLowerCase()\n if (!isValidKeyType(type)) {\n throw new Error('invalid or unsupported key type')\n }\n\n return key.bytes\n}\n\nexports.import = (pem, password, callback) => {\n try {\n const key = forge.pki.decryptRsaPrivateKey(pem, password)\n if (key === null) {\n throw new Error('Cannot read the key, most likely the password is wrong or not a RSA key')\n }\n let der = forge.asn1.toDer(forge.pki.privateKeyToAsn1(key))\n der = Buffer.from(der.getBytes(), 'binary')\n return supportedKeys.rsa.unmarshalRsaPrivateKey(der, callback)\n } catch (err) {\n callback(err)\n }\n}\n","'use strict';\n\nvar generate = require('./generate');\nvar alphabet = require('./alphabet');\n\n// Ignore all milliseconds before a certain time to reduce the size of the date entropy without sacrificing uniqueness.\n// This number should be updated every year or so to keep the generated id short.\n// To regenerate `new Date() - 0` and bump the version. Always bump the version!\nvar REDUCE_TIME = 1567752802062;\n\n// don't change unless we change the algos or REDUCE_TIME\n// must be an integer and less than 16\nvar version = 7;\n\n// Counter is used when shortid is called multiple times in one second.\nvar counter;\n\n// Remember the last time shortid was called in case counter is needed.\nvar previousSeconds;\n\n/**\n * Generate unique id\n * Returns string id\n */\nfunction build(clusterWorkerId) {\n var str = '';\n\n var seconds = Math.floor((Date.now() - REDUCE_TIME) * 0.001);\n\n if (seconds === previousSeconds) {\n counter++;\n } else {\n counter = 0;\n previousSeconds = seconds;\n }\n\n str = str + generate(version);\n str = str + generate(clusterWorkerId);\n if (counter > 0) {\n str = str + generate(counter);\n }\n str = str + generate(seconds);\n return str;\n}\n\nmodule.exports = build;\n","var Transform = require('readable-stream').Transform\n , inherits = require('util').inherits\n\nfunction DestroyableTransform(opts) {\n Transform.call(this, opts)\n this._destroyed = false\n}\n\ninherits(DestroyableTransform, Transform)\n\nDestroyableTransform.prototype.destroy = function(err) {\n if (this._destroyed) return\n this._destroyed = true\n \n var self = this\n process.nextTick(function() {\n if (err)\n self.emit('error', err)\n self.emit('close')\n })\n}\n\n// a noop _transform function\nfunction noop (chunk, enc, callback) {\n callback(null, chunk)\n}\n\n\n// create a new export function, used by both the main export and\n// the .ctor export, contains common logic for dealing with arguments\nfunction through2 (construct) {\n return function (options, transform, flush) {\n if (typeof options == 'function') {\n flush = transform\n transform = options\n options = {}\n }\n\n if (typeof transform != 'function')\n transform = noop\n\n if (typeof flush != 'function')\n flush = null\n\n return construct(options, transform, flush)\n }\n}\n\n\n// main export, just make me a transform stream!\nmodule.exports = through2(function (options, transform, flush) {\n var t2 = new DestroyableTransform(options)\n\n t2._transform = transform\n\n if (flush)\n t2._flush = flush\n\n return t2\n})\n\n\n// make me a reusable prototype that I can `new`, or implicitly `new`\n// with a constructor call\nmodule.exports.ctor = through2(function (options, transform, flush) {\n function Through2 (override) {\n if (!(this instanceof Through2))\n return new Through2(override)\n\n this.options = Object.assign({}, options, override)\n\n DestroyableTransform.call(this, this.options)\n }\n\n inherits(Through2, DestroyableTransform)\n\n Through2.prototype._transform = transform\n\n if (flush)\n Through2.prototype._flush = flush\n\n return Through2\n})\n\n\nmodule.exports.obj = through2(function (options, transform, flush) {\n var t2 = new DestroyableTransform(Object.assign({ objectMode: true, highWaterMark: 16 }, options))\n\n t2._transform = transform\n\n if (flush)\n t2._flush = flush\n\n return t2\n})\n","'use strict'\n\nconst errCode = require('err-code')\n\nconst validateOffsetAndLength = (size, offset, length) => {\n if (!offset) {\n offset = 0\n }\n\n if (offset < 0) {\n throw errCode(new Error('Offset must be greater than or equal to 0'), 'ERR_INVALID_PARAMS')\n }\n\n if (offset > size) {\n throw errCode(new Error('Offset must be less than the file size'), 'ERR_INVALID_PARAMS')\n }\n\n if (!length && length !== 0) {\n length = size - offset\n }\n\n if (length < 0) {\n throw errCode(new Error('Length must be greater than or equal to 0'), 'ERR_INVALID_PARAMS')\n }\n\n if (offset + length > size) {\n length = size - offset\n }\n\n return {\n offset,\n length\n }\n}\n\nmodule.exports = validateOffsetAndLength\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a ","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tests.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tests.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Tests.vue?vue&type=template&id=99502d6a&\"\nimport script from \"./Tests.vue?vue&type=script&lang=js&\"\nexport * from \"./Tests.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=style&index=0&lang=scss&\"","import Vue from 'vue'\nimport Vuex from 'vuex'\n\nVue.use(Vuex)\n\nexport default new Vuex.Store({\n state: {\n ethPrice: null,\n tokenPriceEth: null,\n user: {\n provider: null,\n // walletAddress: \"0xE0EC61841FCAf59c6650E5F9675345a10F9e31B9\"\n walletAddress: \"Connect Wallet\"\n }\n },\n mutations: {\n setEthPrice(state, price) {\n state.ethPrice = price;\n },\n setTokenPriceEth(state, priceEth) {\n state.tokenPriceEth = priceEth;\n },\n setProvider(state, provider) {\n state.user.provider = provider;\n },\n setUserWalletAddress(state, walletAddress) {\n state.user.walletAddress = walletAddress;\n }\n }\n})\n","module.exports = __webpack_public_path__ + \"img/boundLogo.62253b94.svg\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('Navbar'),_c('div',{attrs:{\"id\":\"content\"}},[_c('router-view')],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"navbar\"}},[_c('router-link',{attrs:{\"to\":\"/\"}},[_c('img',{attrs:{\"src\":require(\"../assets/boundLogo.svg\"),\"id\":\"logo\"}})]),_c('Wallet')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"wallet\"},on:{\"click\":_vm.connectWallet}},[(_vm.address == 'Connect Wallet')?_c('div',{staticClass:\"dot red\"}):_c('div',{staticClass:\"dot green\"}),_c('p',[_vm._v(_vm._s(_vm.trimmedAddress))])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Wallet.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Wallet.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Wallet.vue?vue&type=template&id=775c479b&\"\nimport script from \"./Wallet.vue?vue&type=script&lang=js&\"\nexport * from \"./Wallet.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Wallet.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Navbar.vue?vue&type=template&id=3e656ca5&\"\nimport script from \"./Navbar.vue?vue&type=script&lang=js&\"\nexport * from \"./Navbar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Navbar.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=a2040af2&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"home\"},[_c('div',{attrs:{\"id\":\"card-grid\"}},[_c('router-link',{attrs:{\"to\":\"/artist\"}},[_c('div',{staticClass:\"card\"},[_c('img',{attrs:{\"id\":\"artist-img\",\"src\":\"https://factmag-images.s3.amazonaws.com/wp-content/uploads/2016/05/Kaytranada_photoCarysHuws2a-1200x630.jpg\"}}),_c('p',{staticClass:\"artist-name\"},[_vm._v(\"Kaytranada\")])])]),_vm._m(0),_vm._m(1),_vm._m(2),_vm._m(3),_vm._m(4),_vm._m(5),_vm._m(6),_vm._m(7),_vm._m(8),_vm._m(9),_vm._m(10)],1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card\"},[_c('img',{attrs:{\"id\":\"artist-img\",\"src\":\"https://ichef.bbci.co.uk/images/ic/960x540/p041b0zn.jpg\"}}),_c('p',{staticClass:\"artist-name\"},[_vm._v(\"Khraungbin\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card\"},[_c('img',{attrs:{\"id\":\"artist-img\",\"src\":\"http://indietronica.org/wp-content/uploads/2016/11/Joe-Hertz-1024x575.jpg\"}}),_c('p',{staticClass:\"artist-name\"},[_vm._v(\"Joe Hertz\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card\"},[_c('img',{attrs:{\"id\":\"artist-img\",\"src\":\"http://assets.nydailynews.com/polopoly_fs/1.1109050.1341595620!/img/httpImage/image.jpg_gen/derivatives/article_1200/ocean7f-1-web.jpg\"}}),_c('p',{staticClass:\"artist-name\"},[_vm._v(\"Frank Ocean\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card\"},[_c('img',{attrs:{\"id\":\"artist-img\",\"src\":\"https://media.newyorker.com/photos/590973c88b51cf59fc422ca3/16:9/w_1200,h_630,c_limit/160208_r27647.jpg\"}}),_c('p',{staticClass:\"artist-name\"},[_vm._v(\"Madlib\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card\"},[_c('img',{attrs:{\"id\":\"artist-img\",\"src\":\"https://spiritualityhealth.com/assets/images/Articles/_articleSummaryImage/PhilipGlass_CreditStevePyke.jpg\"}}),_c('p',{staticClass:\"artist-name\"},[_vm._v(\"Philip Glass\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card\"},[_c('img',{attrs:{\"id\":\"artist-img\",\"src\":\"http://www.self-titledmag.com/wp-content/uploads/2018/04/Brian-Eno-2-2-1024x684.jpeg\"}}),_c('p',{staticClass:\"artist-name\"},[_vm._v(\"Brian Eno\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card\"},[_c('img',{attrs:{\"id\":\"artist-img\",\"src\":\"https://i1.sndcdn.com/avatars-000001254237-bhfhsf-t500x500.jpg\"}}),_c('p',{staticClass:\"artist-name\"},[_vm._v(\"Vanilla\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card\"},[_c('img',{attrs:{\"id\":\"artist-img\",\"src\":\"https://images.sxsw.com/kIPuU7_nbeqAXfafzOZFBxG8CSU=/0x823:4912x4332/950x0/images.sxsw.com/3/31fcc915-eb7b-44dd-ad91-032b41e23818/artist-10900\"}}),_c('p',{staticClass:\"artist-name\"},[_vm._v(\"Sam Gellaitry\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card\"},[_c('img',{attrs:{\"id\":\"artist-img\",\"src\":\"https://i.ytimg.com/vi/vS4F8Yoto6A/maxresdefault.jpg\"}}),_c('p',{staticClass:\"artist-name\"},[_vm._v(\"Men I Trust\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card\"},[_c('img',{attrs:{\"id\":\"artist-img\",\"src\":\"https://itswide.com/wp-content/uploads/2018/07/descarga.jpeg\"}}),_c('p',{staticClass:\"artist-name\"},[_vm._v(\"Melo-Zed\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card\"},[_c('img',{attrs:{\"id\":\"artist-img\",\"src\":\"https://lastfm.freetls.fastly.net/i/u/ar0/62d210110f96883a691fd1109b93068d.jpg\"}}),_c('p',{staticClass:\"artist-name\"},[_vm._v(\"HM Surf\")])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Home.vue?vue&type=template&id=73b6502a&scoped=true&\"\nimport script from \"./Home.vue?vue&type=script&lang=js&\"\nexport * from \"./Home.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Home.vue?vue&type=style&index=0&id=73b6502a&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"73b6502a\",\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\nimport VueRouter from 'vue-router'\nimport Home from '../views/Home.vue'\n\nVue.use(VueRouter)\n\nconst routes = [\n {\n path: '/',\n name: 'Home',\n component: Home\n },\n {\n path: '/artist',\n name: 'ArtistPage',\n // route level code-splitting\n // this generates a separate chunk (about.[hash].js) for this route\n // which is lazy-loaded when the route is visited.\n component: () => import(/* webpackChunkName: \"ArtistPage\" */ '../views/ArtistPage.vue')\n }\n]\n\nconst router = new VueRouter({\n mode: 'history',\n base: process.env.BASE_URL,\n routes\n})\n\nexport default router\n","import Vue from 'vue'\nimport App from './App.vue'\nimport router from './router'\nimport store from './store'\n\nVue.config.productionTip = false\n\nnew Vue({\n router,\n store,\n render: h => h(App)\n}).$mount('#app')\n","import mod from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=scss&\"","import Fortmatic from 'fortmatic';\nimport Web3 from \"web3\";\n\nconst customNodeOptions = {\n rpcUrl: 'http://127.0.0.1:7545',//, // your own node url\n chainId: 5777 // chainId of your own node\n}\n\n/** Setting network to localhost blockchain **/\nexport const fm = new Fortmatic('pk_test_F64FF8191AA41844', customNodeOptions);\nlet web3Fortmatic = new Web3(fm.getProvider());\nwindow.web3 = web3Fortmatic;\nexport const web3Provider = web3Fortmatic;\n\n/** production\nexport const fm = new Fortmatic(\"pk_test_F64FF8191AA41844\");\nexport const web3Provider = new Web3(fm.getProvider());\n**/\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=style&index=0&id=73b6502a&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=style&index=0&id=73b6502a&lang=scss&scoped=true&\""],"sourceRoot":""} \ No newline at end of file diff --git a/frontend/dist/js/chunk-vendors.40fd1149.js b/frontend/dist/js/chunk-vendors.40fd1149.js new file mode 100644 index 0000000..420d145 --- /dev/null +++ b/frontend/dist/js/chunk-vendors.40fd1149.js @@ -0,0 +1,63 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-vendors"],{"00dc":function(t,e,r){(function(t){var n=r("58a2"),i=r("c24d"),o=r("561d");function a(e){var r=new t(i[e].prime,"hex"),n=new t(i[e].gen,"hex");return new o(r,n)}var s={binary:!0,hex:!0,base64:!0};function u(e,r,i,a){return t.isBuffer(r)||void 0===s[r]?u(e,"binary",r,i):(r=r||"binary",a=a||"binary",i=i||new t([2]),t.isBuffer(i)||(i=new t(i,a)),"number"===typeof e?new o(n(e,i),i,!0):(t.isBuffer(e)||(e=new t(e,r)),new o(e,i,!0)))}e.DiffieHellmanGroup=e.createDiffieHellmanGroup=e.getDiffieHellman=a,e.createDiffieHellman=e.DiffieHellman=u}).call(this,r("b639").Buffer)},"00ee":function(t,e,r){var n=r("b622"),i=n("toStringTag"),o={};o[i]="z",t.exports="[object z]"===String(o)},"0145":function(t,e){e.encrypt=function(t,e){return t._cipher.encryptBlock(e)},e.decrypt=function(t,e){return t._cipher.decryptBlock(e)}},"0184":function(t,e,r){"use strict";var n=r("da3e");function i(t){this.options=t,this.type=this.options.type,this.blockSize=8,this._init(),this.buffer=new Array(this.blockSize),this.bufferOff=0}t.exports=i,i.prototype._init=function(){},i.prototype.update=function(t){return 0===t.length?[]:"decrypt"===this.type?this._updateDecrypt(t):this._updateEncrypt(t)},i.prototype._buffer=function(t,e){for(var r=Math.min(this.buffer.length-this.bufferOff,t.length-e),n=0;n0;n--)e+=this._buffer(t,e),r+=this._flushBuffer(i,r);return e+=this._buffer(t,e),i},i.prototype.final=function(t){var e,r;return t&&(e=this.update(t)),r="encrypt"===this.type?this._finalEncrypt():this._finalDecrypt(),e?e.concat(r):r},i.prototype._pad=function(t,e){if(0===e)return!1;while(e>>27}function f(t){return t<<30|t>>>2}function h(t,e,r,n){return 0===t?e&r|~e&n:2===t?e&r|e&n|r&n:e^r^n}n(u,i),u.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},u.prototype._update=function(t){for(var e=this._w,r=0|this._a,n=0|this._b,i=0|this._c,o=0|this._d,s=0|this._e,u=0;u<16;++u)e[u]=t.readInt32BE(4*u);for(;u<80;++u)e[u]=e[u-3]^e[u-8]^e[u-14]^e[u-16];for(var l=0;l<80;++l){var d=~~(l/20),p=c(r)+h(d,n,i,o)+s+e[l]+a[d]|0;s=o,o=i,i=f(n),n=r,r=p}this._a=r+this._a|0,this._b=n+this._b|0,this._c=i+this._c|0,this._d=o+this._d|0,this._e=s+this._e|0},u.prototype._hash=function(){var t=o.allocUnsafe(20);return t.writeInt32BE(0|this._a,0),t.writeInt32BE(0|this._b,4),t.writeInt32BE(0|this._c,8),t.writeInt32BE(0|this._d,12),t.writeInt32BE(0|this._e,16),t},t.exports=u},"092d":function(t){t.exports=JSON.parse('{"name":"goerli","chainId":5,"networkId":5,"comment":"Cross-client PoA test network","url":"https://github.com/goerli/testnet","genesis":{"hash":"0xbf7e331f7f7c1dd2e05159666b3bf8bc7a8a3a9eb1d518969eab529dd9b88c1a","timestamp":"0x5c51a607","gasLimit":10485760,"difficulty":1,"nonce":"0x0000000000000000","extraData":"0x22466c6578692069732061207468696e6722202d204166726900000000000000e0a2bd4258d2768837baa26a28fe71dc079f84c70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","stateRoot":"0x5d6cded585e73c4e322c30c2f782a336316f17dd85a4863b9d838d2d4b8b3008"},"hardforks":[{"name":"chainstart","block":0,"consensus":"poa","finality":null},{"name":"homestead","block":0,"consensus":"poa","finality":null},{"name":"dao","block":0,"consensus":"poa","finality":null},{"name":"tangerineWhistle","block":0,"consensus":"poa","finality":null},{"name":"spuriousDragon","block":0,"consensus":"poa","finality":null},{"name":"byzantium","block":0,"consensus":"poa","finality":null},{"name":"constantinople","block":0,"consensus":"poa","finality":null},{"name":"petersburg","block":0,"consensus":"poa","finality":null},{"name":"istanbul","block":1561651,"consensus":"poa","finality":null}],"bootstrapNodes":[{"ip":"51.141.78.53","port":30303,"id":"011f758e6552d105183b1761c5e2dea0111bc20fd5f6422bc7f91e0fabbec9a6595caf6239b37feb773dddd3f87240d99d859431891e4a642cf2a0a9e6cbb98a","location":"","comment":"Source: https://github.com/goerli/testnet/blob/master/bootnodes.txt"},{"ip":"13.93.54.137","port":30303,"id":"176b9417f511d05b6b2cf3e34b756cf0a7096b3094572a8f6ef4cdcb9d1f9d00683bf0f83347eebdf3b81c3521c2332086d9592802230bf528eaf606a1d9677b","location":"","comment":"Source: https://github.com/goerli/testnet/blob/master/bootnodes.txt"},{"ip":"94.237.54.114","port":30313,"id":"46add44b9f13965f7b9875ac6b85f016f341012d84f975377573800a863526f4da19ae2c620ec73d11591fa9510e992ecc03ad0751f53cc02f7c7ed6d55c7291","location":"","comment":"Source: https://github.com/goerli/testnet/blob/master/bootnodes.txt"},{"ip":"52.64.155.147","port":30303,"id":"c1f8b7c2ac4453271fa07d8e9ecf9a2e8285aa0bd0c07df0131f47153306b0736fd3db8924e7a9bf0bed6b1d8d4f87362a71b033dc7c64547728d953e43e59b2","location":"","comment":"Source: https://github.com/goerli/testnet/blob/master/bootnodes.txt"},{"ip":"213.186.16.82","port":30303,"id":"f4a9c6ee28586009fb5a96c8af13a58ed6d8315a9eee4772212c1d4d9cebe5a8b8a78ea4434f318726317d04a3f531a1ef0420cf9752605a562cfe858c46e263","location":"","comment":"Source: https://github.com/goerli/testnet/blob/master/bootnodes.txt"}]}')},"0960":function(t,e,r){t.exports=r("b19a")},"09f5":function(t,e,r){var n=r("39f5"),i=r("8707").Buffer,o=r("6430"),a=r("3fb5");function s(t,e,r,a){o.call(this),this._cipher=new n.AES(e),this._prev=i.from(r),this._cache=i.allocUnsafe(0),this._secCache=i.allocUnsafe(0),this._decrypt=a,this._mode=t}a(s,o),s.prototype._update=function(t){return this._mode.encrypt(this,t,this._decrypt)},s.prototype._final=function(){this._cipher.scrub()},t.exports=s},"0b16":function(t,e,r){"use strict";var n=r("1985"),i=r("35e8");function o(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}e.parse=_,e.resolve=E,e.resolveObject=x,e.format=A,e.Url=o;var a=/^([a-z0-9.+-]+:)/i,s=/:[0-9]*$/,u=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,c=["<",">",'"',"`"," ","\r","\n","\t"],f=["{","}","|","\\","^","`"].concat(c),h=["'"].concat(f),l=["%","/","?",";","#"].concat(h),d=["/","?","#"],p=255,m=/^[+a-z0-9A-Z_-]{0,63}$/,y=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,v={javascript:!0,"javascript:":!0},b={javascript:!0,"javascript:":!0},g={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},w=r("b383");function _(t,e,r){if(t&&i.isObject(t)&&t instanceof o)return t;var n=new o;return n.parse(t,e,r),n}function A(t){return i.isString(t)&&(t=_(t)),t instanceof o?t.format():o.prototype.format.call(t)}function E(t,e){return _(t,!1,!0).resolve(e)}function x(t,e){return t?_(t,!1,!0).resolveObject(e):e}o.prototype.parse=function(t,e,r){if(!i.isString(t))throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var o=t.indexOf("?"),s=-1!==o&&o127?N+="x":N+=R[B];if(!N.match(m)){var L=O.slice(0,C),D=O.slice(C+1),F=R.match(y);F&&(L.push(F[1]),D.unshift(F[2])),D.length&&(_="/"+D.join(".")+_),this.hostname=L.join(".");break}}}this.hostname.length>p?this.hostname="":this.hostname=this.hostname.toLowerCase(),U||(this.hostname=n.toASCII(this.hostname));var q=this.port?":"+this.port:"",H=this.hostname||"";this.host=H+q,this.href+=this.host,U&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==_[0]&&(_="/"+_))}if(!v[x])for(C=0,P=h.length;C0)&&r.host.split("@");M&&(r.auth=M.shift(),r.host=r.hostname=M.shift())}return r.search=t.search,r.query=t.query,i.isNull(r.pathname)&&i.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r}if(!E.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var k=E.slice(-1)[0],S=(r.host||t.host||E.length>1)&&("."===k||".."===k)||""===k,I=0,C=E.length;C>=0;C--)k=E[C],"."===k?E.splice(C,1):".."===k?(E.splice(C,1),I++):I&&(E.splice(C,1),I--);if(!_&&!A)for(;I--;I)E.unshift("..");!_||""===E[0]||E[0]&&"/"===E[0].charAt(0)||E.unshift(""),S&&"/"!==E.join("/").substr(-1)&&E.push("");var T=""===E[0]||E[0]&&"/"===E[0].charAt(0);if(x){r.hostname=r.host=T?"":E.length?E.shift():"";M=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@");M&&(r.auth=M.shift(),r.host=r.hostname=M.shift())}return _=_||r.host&&E.length,_&&!T&&E.unshift(""),E.length?r.pathname=E.join("/"):(r.pathname=null,r.path=null),i.isNull(r.pathname)&&i.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=t.auth||r.auth,r.slashes=r.slashes||t.slashes,r.href=r.format(),r},o.prototype.parseHost=function(){var t=this.host,e=s.exec(t);e&&(e=e[0],":"!==e&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)}},"0be8":function(t,e){e["des-ecb"]={key:8,iv:0},e["des-cbc"]=e.des={key:8,iv:8},e["des-ede3-cbc"]=e.des3={key:24,iv:8},e["des-ede3"]={key:24,iv:0},e["des-ede-cbc"]={key:16,iv:8},e["des-ede"]={key:16,iv:0}},"0c3d":function(t,e,r){(function(e){const n=r("7be5"),i=r("63c1"),o=r("3337"),a=(r("ed14"),new o.ec("secp256k1")),{keccak256:s,keccak256s:u}=r("1ecd"),c=t=>{const e=s(n.concat(n.random(32),t||n.random(32))),r=n.concat(n.concat(n.random(32),e),n.random(32)),i=s(r);return h(i)},f=t=>{const e=u(t.slice(2));let r="0x";for(let n=0;n<40;n++)r+=parseInt(e[n+2],16)>7?t[n+2].toUpperCase():t[n+2];return r},h=t=>{const r=new e(t.slice(2),"hex"),n=a.keyFromPrivate(r),i="0x"+n.getPublic(!1,"hex").slice(2),o=s(i),u=f("0x"+o.slice(-40));return{address:u,privateKey:t}},l=([t,e,r])=>n.flatten([e,r,t]),d=t=>[n.slice(64,n.length(t),t),n.slice(0,32,t),n.slice(32,64,t)],p=t=>(r,o)=>{const s=a.keyFromPrivate(new e(o.slice(2),"hex")).sign(new e(r.slice(2),"hex"),{canonical:!0});return l([i.fromString(n.fromNumber(t+s.recoveryParam)),n.pad(32,n.fromNat("0x"+s.r.toString(16))),n.pad(32,n.fromNat("0x"+s.s.toString(16)))])},m=p(27),y=(t,r)=>{const i=d(r),o={v:n.toNumber(i[0]),r:i[1].slice(2),s:i[2].slice(2)},u=a.recoverPubKey(new e(t.slice(2),"hex"),o,o.v<2?o.v:1-o.v%2),c="0x"+u.encode("hex",!1).slice(2),h=s(c),l=f("0x"+h.slice(-40));return l};t.exports={create:c,toChecksum:f,fromPrivate:h,sign:m,makeSigner:p,recover:y,encodeSignature:l,decodeSignature:d}}).call(this,r("b639").Buffer)},"0cbb":function(t,e,r){"use strict";var n,i=e,o=r("7d92"),a=r("4136"),s=r("f3a3"),u=s.assert;function c(t){"short"===t.type?this.curve=new a.short(t):"edwards"===t.type?this.curve=new a.edwards(t):this.curve=new a.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,u(this.g.validate(),"Invalid curve"),u(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function f(t,e){Object.defineProperty(i,t,{configurable:!0,enumerable:!0,get:function(){var r=new c(e);return Object.defineProperty(i,t,{configurable:!0,enumerable:!0,value:r}),r}})}i.PresetCurve=c,f("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:o.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),f("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:o.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),f("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:o.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),f("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:o.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),f("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:o.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),f("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:o.sha256,gRed:!1,g:["9"]}),f("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:o.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});try{n=r("409b")}catch(h){n=void 0}f("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:o.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",n]})},"0cfb":function(t,e,r){var n=r("83ab"),i=r("d039"),o=r("cc12");t.exports=!n&&!i((function(){return 7!=Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a}))},"0da4":function(t,e,r){"use strict";var n=r("da3e"),i=r("3fb5"),o={};function a(t){n.equal(t.length,8,"Invalid IV length"),this.iv=new Array(8);for(var e=0;e=e.length){o++;break}var a=e.slice(2,i-1);if(("0002"!==n.toString("hex")&&!r||"0001"!==n.toString("hex")&&r)&&o++,a.length<8&&o++,o)throw new Error("decryption error");return e.slice(i)}function d(t,e){t=f.from(t),e=f.from(e);var r=0,n=t.length;t.length!==e.length&&(r++,n=Math.min(t.length,e.length));var i=-1;while(++id||new a(e).cmp(u.modulus)>=0)throw new Error("decryption error");o=r?c(new a(e),u):s(e,u);var p=f.alloc(d-o.length);if(o=f.concat([p,o],d),4===i)return h(u,o);if(1===i)return l(u,o,r);if(3===i)return o;throw new Error("unknown padding")}},1037:function(t,e,r){(function(e,r){ +/** + * [js-sha3]{@link https://github.com/emn178/js-sha3} + * + * @version 0.5.7 + * @author Chen, Yi-Cyuan [emn178@gmail.com] + * @copyright Chen, Yi-Cyuan 2015-2016 + * @license MIT + */ +(function(){"use strict";var n="object"===typeof window?window:{},i=!n.JS_SHA3_NO_NODE_JS&&"object"===typeof e&&e.versions&&e.versions.node;i&&(n=r);for(var o=!n.JS_SHA3_NO_COMMON_JS&&"object"===typeof t&&t.exports,a="0123456789abcdef".split(""),s=[31,7936,2031616,520093696],u=[1,256,65536,16777216],c=[6,1536,393216,100663296],f=[0,8,16,24],h=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],l=[224,256,384,512],d=[128,256],p=["hex","buffer","arrayBuffer","array"],m=function(t,e,r){return function(n){return new S(t,e,t).update(n)[r]()}},y=function(t,e,r){return function(n,i){return new S(t,e,i).update(n)[r]()}},v=function(t,e){var r=m(t,e,"hex");r.create=function(){return new S(t,e,t)},r.update=function(t){return r.create().update(t)};for(var n=0;n>5,this.byteCount=this.blockCount<<2,this.outputBlocks=r>>5,this.extraBytes=(31&r)>>3;for(var n=0;n<50;++n)this.s[n]=0}S.prototype.update=function(t){var e="string"!==typeof t;e&&t.constructor===ArrayBuffer&&(t=new Uint8Array(t));var r,n,i=t.length,o=this.blocks,a=this.byteCount,s=this.blockCount,u=0,c=this.s;while(u>2]|=t[u]<>2]|=n<>2]|=(192|n>>6)<>2]|=(128|63&n)<=57344?(o[r>>2]|=(224|n>>12)<>2]|=(128|n>>6&63)<>2]|=(128|63&n)<>2]|=(240|n>>18)<>2]|=(128|n>>12&63)<>2]|=(128|n>>6&63)<>2]|=(128|63&n)<=a){for(this.start=r-a,this.block=o[s],r=0;r>2]|=this.padding[3&e],this.lastByteIndex===this.byteCount)for(t[0]=t[r],e=1;e>4&15]+a[15&t]+a[t>>12&15]+a[t>>8&15]+a[t>>20&15]+a[t>>16&15]+a[t>>28&15]+a[t>>24&15];s%e===0&&(I(r),o=0)}return i&&(t=r[o],i>0&&(u+=a[t>>4&15]+a[15&t]),i>1&&(u+=a[t>>12&15]+a[t>>8&15]),i>2&&(u+=a[t>>20&15]+a[t>>16&15])),u},S.prototype.arrayBuffer=function(){this.finalize();var t,e=this.blockCount,r=this.s,n=this.outputBlocks,i=this.extraBytes,o=0,a=0,s=this.outputBits>>3;t=i?new ArrayBuffer(n+1<<2):new ArrayBuffer(s);var u=new Uint32Array(t);while(a>8&255,u[t+2]=e>>16&255,u[t+3]=e>>24&255;s%r===0&&I(n)}return o&&(t=s<<2,e=n[a],o>0&&(u[t]=255&e),o>1&&(u[t+1]=e>>8&255),o>2&&(u[t+2]=e>>16&255)),u};var I=function(t){var e,r,n,i,o,a,s,u,c,f,l,d,p,m,y,v,b,g,w,_,A,E,x,M,k,S,I,C,T,U,O,P,R,N,B,j,L,D,F,q,H,z,K,V,G,$,Y,W,Z,J,X,Q,tt,et,rt,nt,it,ot,at,st,ut,ct,ft;for(n=0;n<48;n+=2)i=t[0]^t[10]^t[20]^t[30]^t[40],o=t[1]^t[11]^t[21]^t[31]^t[41],a=t[2]^t[12]^t[22]^t[32]^t[42],s=t[3]^t[13]^t[23]^t[33]^t[43],u=t[4]^t[14]^t[24]^t[34]^t[44],c=t[5]^t[15]^t[25]^t[35]^t[45],f=t[6]^t[16]^t[26]^t[36]^t[46],l=t[7]^t[17]^t[27]^t[37]^t[47],d=t[8]^t[18]^t[28]^t[38]^t[48],p=t[9]^t[19]^t[29]^t[39]^t[49],e=d^(a<<1|s>>>31),r=p^(s<<1|a>>>31),t[0]^=e,t[1]^=r,t[10]^=e,t[11]^=r,t[20]^=e,t[21]^=r,t[30]^=e,t[31]^=r,t[40]^=e,t[41]^=r,e=i^(u<<1|c>>>31),r=o^(c<<1|u>>>31),t[2]^=e,t[3]^=r,t[12]^=e,t[13]^=r,t[22]^=e,t[23]^=r,t[32]^=e,t[33]^=r,t[42]^=e,t[43]^=r,e=a^(f<<1|l>>>31),r=s^(l<<1|f>>>31),t[4]^=e,t[5]^=r,t[14]^=e,t[15]^=r,t[24]^=e,t[25]^=r,t[34]^=e,t[35]^=r,t[44]^=e,t[45]^=r,e=u^(d<<1|p>>>31),r=c^(p<<1|d>>>31),t[6]^=e,t[7]^=r,t[16]^=e,t[17]^=r,t[26]^=e,t[27]^=r,t[36]^=e,t[37]^=r,t[46]^=e,t[47]^=r,e=f^(i<<1|o>>>31),r=l^(o<<1|i>>>31),t[8]^=e,t[9]^=r,t[18]^=e,t[19]^=r,t[28]^=e,t[29]^=r,t[38]^=e,t[39]^=r,t[48]^=e,t[49]^=r,m=t[0],y=t[1],$=t[11]<<4|t[10]>>>28,Y=t[10]<<4|t[11]>>>28,C=t[20]<<3|t[21]>>>29,T=t[21]<<3|t[20]>>>29,st=t[31]<<9|t[30]>>>23,ut=t[30]<<9|t[31]>>>23,z=t[40]<<18|t[41]>>>14,K=t[41]<<18|t[40]>>>14,N=t[2]<<1|t[3]>>>31,B=t[3]<<1|t[2]>>>31,v=t[13]<<12|t[12]>>>20,b=t[12]<<12|t[13]>>>20,W=t[22]<<10|t[23]>>>22,Z=t[23]<<10|t[22]>>>22,U=t[33]<<13|t[32]>>>19,O=t[32]<<13|t[33]>>>19,ct=t[42]<<2|t[43]>>>30,ft=t[43]<<2|t[42]>>>30,et=t[5]<<30|t[4]>>>2,rt=t[4]<<30|t[5]>>>2,j=t[14]<<6|t[15]>>>26,L=t[15]<<6|t[14]>>>26,g=t[25]<<11|t[24]>>>21,w=t[24]<<11|t[25]>>>21,J=t[34]<<15|t[35]>>>17,X=t[35]<<15|t[34]>>>17,P=t[45]<<29|t[44]>>>3,R=t[44]<<29|t[45]>>>3,M=t[6]<<28|t[7]>>>4,k=t[7]<<28|t[6]>>>4,nt=t[17]<<23|t[16]>>>9,it=t[16]<<23|t[17]>>>9,D=t[26]<<25|t[27]>>>7,F=t[27]<<25|t[26]>>>7,_=t[36]<<21|t[37]>>>11,A=t[37]<<21|t[36]>>>11,Q=t[47]<<24|t[46]>>>8,tt=t[46]<<24|t[47]>>>8,V=t[8]<<27|t[9]>>>5,G=t[9]<<27|t[8]>>>5,S=t[18]<<20|t[19]>>>12,I=t[19]<<20|t[18]>>>12,ot=t[29]<<7|t[28]>>>25,at=t[28]<<7|t[29]>>>25,q=t[38]<<8|t[39]>>>24,H=t[39]<<8|t[38]>>>24,E=t[48]<<14|t[49]>>>18,x=t[49]<<14|t[48]>>>18,t[0]=m^~v&g,t[1]=y^~b&w,t[10]=M^~S&C,t[11]=k^~I&T,t[20]=N^~j&D,t[21]=B^~L&F,t[30]=V^~$&W,t[31]=G^~Y&Z,t[40]=et^~nt&ot,t[41]=rt^~it&at,t[2]=v^~g&_,t[3]=b^~w&A,t[12]=S^~C&U,t[13]=I^~T&O,t[22]=j^~D&q,t[23]=L^~F&H,t[32]=$^~W&J,t[33]=Y^~Z&X,t[42]=nt^~ot&st,t[43]=it^~at&ut,t[4]=g^~_&E,t[5]=w^~A&x,t[14]=C^~U&P,t[15]=T^~O&R,t[24]=D^~q&z,t[25]=F^~H&K,t[34]=W^~J&Q,t[35]=Z^~X&tt,t[44]=ot^~st&ct,t[45]=at^~ut&ft,t[6]=_^~E&m,t[7]=A^~x&y,t[16]=U^~P&M,t[17]=O^~R&k,t[26]=q^~z&N,t[27]=H^~K&B,t[36]=J^~Q&V,t[37]=X^~tt&G,t[46]=st^~ct&et,t[47]=ut^~ft&rt,t[8]=E^~m&v,t[9]=x^~y&b,t[18]=P^~M&S,t[19]=R^~k&I,t[28]=z^~N&j,t[29]=K^~B&L,t[38]=Q^~V&$,t[39]=tt^~G&Y,t[48]=ct^~et&nt,t[49]=ft^~rt&it,t[0]^=h[n],t[1]^=h[n+1]};if(o)t.exports=w;else for(A=0;A<_.length;++A)n[_[A]]=w[_[A]]})()}).call(this,r("4362"),r("c8ba"))},1131:function(t,e,r){var n=r("17fb"),i=r("70c1"),o=r("e870"),a=r("2091"),s=r("11dc"),u=function(t,e,r,i,o){return!n.isObject(t)||t instanceof Error||!t.data||((n.isObject(t.data)||n.isArray(t.data))&&(t.data=JSON.stringify(t.data,null,2)),t=t.message+"\n"+t.data),n.isString(t)&&(t=new Error(t)),n.isFunction(i)&&i(t,o),n.isFunction(r)&&((e&&n.isFunction(e.listeners)&&e.listeners("error").length||n.isFunction(i))&&e.catch((function(){})),setTimeout((function(){r(t)}),1)),e&&n.isFunction(e.emit)&&setTimeout((function(){e.emit("error",t,o),e.removeAllListeners()}),1),e},c=function(t){return n.isObject(t)&&t.name&&-1!==t.name.indexOf("(")?t.name:t.name+"("+f(!1,t.inputs).join(",")+")"},f=function(t,e){var r=[];return e.forEach((function(e){if("object"===typeof e.components){if("tuple"!==e.type.substring(0,5))throw new Error("components found but type is not tuple; report on GitHub");var i="",o=e.type.indexOf("[");o>=0&&(i=e.type.substring(o));var a=f(t,e.components);n.isArray(a)&&t?r.push("tuple("+a.join(",")+")"+i):t?r.push("("+a+")"):r.push("("+a.join(",")+")"+i)}else r.push(e.type)})),r},h=function(t){return"0x"+s(t).toString("hex")},l=function(t){if(!o.isHexStrict(t))throw new Error("The parameter must be a valid HEX string.");var e="",r=0,n=t.length;for("0x"===t.substring(0,2)&&(r=2);r7?r+=t[n].toUpperCase():r+=t[n];return r};t.exports={_fireError:u,_jsonInterfaceMethodToString:c,_flattenTypes:f,randomHex:h,_:n,BN:o.BN,isBN:o.isBN,isBigNumber:o.isBigNumber,isHex:o.isHex,isHexStrict:o.isHexStrict,sha3:o.sha3,sha3Raw:o.sha3Raw,keccak256:o.sha3,soliditySha3:a.soliditySha3,soliditySha3Raw:a.soliditySha3Raw,isAddress:o.isAddress,checkAddressChecksum:o.checkAddressChecksum,toChecksumAddress:v,toHex:o.toHex,toBN:o.toBN,bytesToHex:o.bytesToHex,hexToBytes:o.hexToBytes,hexToNumberString:o.hexToNumberString,hexToNumber:o.hexToNumber,toDecimal:o.hexToNumber,numberToHex:o.numberToHex,fromDecimal:o.numberToHex,hexToUtf8:o.hexToUtf8,hexToString:o.hexToUtf8,toUtf8:o.hexToUtf8,utf8ToHex:o.utf8ToHex,stringToHex:o.utf8ToHex,fromUtf8:o.utf8ToHex,hexToAscii:l,toAscii:l,asciiToHex:d,fromAscii:d,unitMap:i.unitMap,toWei:y,fromWei:m,padLeft:o.leftPad,leftPad:o.leftPad,padRight:o.rightPad,rightPad:o.rightPad,toTwosComplement:o.toTwosComplement,isBloom:o.isBloom,isUserEthereumAddressInBloom:o.isUserEthereumAddressInBloom,isContractAddressInBloom:o.isContractAddressInBloom,isTopic:o.isTopic,isTopicInBloom:o.isTopicInBloom,isInBloom:o.isInBloom}},"116d":function(t,e,r){t.exports=r("b4e8")},"11dc":function(t,e,r){"use strict";(function(e,n){var i=65536,o=4294967295;function a(){throw new Error("Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11")}var s=r("8707").Buffer,u=e.crypto||e.msCrypto;function c(t,e){if(t>o)throw new RangeError("requested too many random bytes");var r=s.allocUnsafe(t);if(t>0)if(t>i)for(var a=0;a=48&&t<=57)return t-48;if(t>=65&&t<=70)return t-55;if(t>=97&&t<=102)return t-87;throw new Error("invalid bloom")}function s(t,e){if(!i(t))throw new Error("Invalid bloom given");if(!h(e))throw new Error(`Invalid ethereum address given: "${e}"`);const r=n.padLeft(e,64);return o(t,r)}function u(t,e){if(!i(t))throw new Error("Invalid bloom given");if(!h(e))throw new Error(`Invalid contract address given: "${e}"`);return o(t,e)}function c(t,e){if(!i(t))throw new Error("Invalid bloom given");if(!f(e))throw new Error("Invalid topic");return o(t,e)}function f(t){return"string"===typeof t&&(!!/^(0x)?[0-9a-f]{64}$/i.test(t)&&!(!/^(0x)?[0-9a-f]{64}$/.test(t)&&!/^(0x)?[0-9A-F]{64}$/.test(t)))}function h(t){return"string"===typeof t&&(!!t.match(/^(0x)?[0-9a-fA-F]{40}$/)||!!t.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/))}e.isBloom=i,e.isInBloom=o,e.isUserEthereumAddressInBloom=s,e.isContractAddressInBloom=u,e.isTopicInBloom=c,e.isTopic=f,e.isAddress=h},1545:function(t,e,r){"use strict";e.utils=r("5ee7"),e.Cipher=r("0184"),e.DES=r("4e2b"),e.CBC=r("0da4"),e.EDE=r("1fec")},"175f":function(t,e,r){"use strict";var n=r("17fb"),i=r("1131"),o=r("da53"),a=function(t){return t.map(i.numberToHex)},s=function(t){return t.address=i.toChecksumAddress(t.address),t.nonce=i.hexToNumberString(t.nonce),t.balance=i.hexToNumberString(t.balance),t},u=function(t){return i.toBN(t).toString(10)},c=function(t){return"latest"===t||"pending"===t||"earliest"===t},f=function(t){return h(!this||void 0!==t&&null!==t?t:this.defaultBlock)},h=function(t){if(void 0!==t)return c(t)?t:"genesis"===t?"0x0":i.isHexStrict(t)?n.isString(t)?t.toLowerCase():t:i.numberToHex(t)},l=function(t){if(t.to&&(t.to=E(t.to)),t.data&&t.input)throw new Error('You can\'t have "data" and "input" as properties of transactions at the same time, please use either "data" or "input" instead.');if(!t.data&&t.input&&(t.data=t.input,delete t.input),t.data&&!i.isHex(t.data))throw new Error("The data field must be HEX encoded data.");return(t.gas||t.gasLimit)&&(t.gas=t.gas||t.gasLimit),["gasPrice","gas","value","nonce"].filter((function(e){return void 0!==t[e]})).forEach((function(e){t[e]=i.numberToHex(t[e])})),t},d=function(t){t=l(t);var e=t.from||(this?this.defaultAccount:null);return e&&(t.from=E(e)),t},p=function(t){if(t=l(t),!n.isNumber(t.from)&&!n.isObject(t.from)){if(t.from=t.from||(this?this.defaultAccount:null),!t.from&&!n.isNumber(t.from))throw new Error('The send transactions "from" field must be defined!');t.from=E(t.from)}return t},m=function(t){return i.isHexStrict(t)?t:i.utf8ToHex(t)},y=function(t){return null!==t.blockNumber&&(t.blockNumber=i.hexToNumber(t.blockNumber)),null!==t.transactionIndex&&(t.transactionIndex=i.hexToNumber(t.transactionIndex)),t.nonce=i.hexToNumber(t.nonce),t.gas=i.hexToNumber(t.gas),t.gasPrice=u(t.gasPrice),t.value=u(t.value),t.to&&i.isAddress(t.to)?t.to=i.toChecksumAddress(t.to):t.to=null,t.from&&(t.from=i.toChecksumAddress(t.from)),t},v=function(t){if("object"!==typeof t)throw new Error("Received receipt is invalid: "+t);return null!==t.blockNumber&&(t.blockNumber=i.hexToNumber(t.blockNumber)),null!==t.transactionIndex&&(t.transactionIndex=i.hexToNumber(t.transactionIndex)),t.cumulativeGasUsed=i.hexToNumber(t.cumulativeGasUsed),t.gasUsed=i.hexToNumber(t.gasUsed),n.isArray(t.logs)&&(t.logs=t.logs.map(w)),t.contractAddress&&(t.contractAddress=i.toChecksumAddress(t.contractAddress)),"undefined"!==typeof t.status&&null!==t.status&&(t.status=Boolean(parseInt(t.status))),t},b=function(t){return t.gasLimit=i.hexToNumber(t.gasLimit),t.gasUsed=i.hexToNumber(t.gasUsed),t.size=i.hexToNumber(t.size),t.timestamp=i.hexToNumber(t.timestamp),null!==t.number&&(t.number=i.hexToNumber(t.number)),t.difficulty&&(t.difficulty=u(t.difficulty)),t.totalDifficulty&&(t.totalDifficulty=u(t.totalDifficulty)),n.isArray(t.transactions)&&t.transactions.forEach((function(t){if(!n.isString(t))return y(t)})),t.miner&&(t.miner=i.toChecksumAddress(t.miner)),t},g=function(t){var e=function(t){return null===t||"undefined"===typeof t?null:(t=String(t),0===t.indexOf("0x")?t:i.fromUtf8(t))};return(t.fromBlock||0===t.fromBlock)&&(t.fromBlock=h(t.fromBlock)),(t.toBlock||0===t.toBlock)&&(t.toBlock=h(t.toBlock)),t.topics=t.topics||[],t.topics=t.topics.map((function(t){return n.isArray(t)?t.map(e):e(t)})),e=null,t.address&&(t.address=n.isArray(t.address)?t.address.map((function(t){return E(t)})):E(t.address)),t},w=function(t){if("string"===typeof t.blockHash&&"string"===typeof t.transactionHash&&"string"===typeof t.logIndex){var e=i.sha3(t.blockHash.replace("0x","")+t.transactionHash.replace("0x","")+t.logIndex.replace("0x",""));t.id="log_"+e.replace("0x","").substr(0,8)}else t.id||(t.id=null);return null!==t.blockNumber&&(t.blockNumber=i.hexToNumber(t.blockNumber)),null!==t.transactionIndex&&(t.transactionIndex=i.hexToNumber(t.transactionIndex)),null!==t.logIndex&&(t.logIndex=i.hexToNumber(t.logIndex)),t.address&&(t.address=i.toChecksumAddress(t.address)),t},_=function(t){return t.ttl&&(t.ttl=i.numberToHex(t.ttl)),t.workToProve&&(t.workToProve=i.numberToHex(t.workToProve)),t.priority&&(t.priority=i.numberToHex(t.priority)),n.isArray(t.topics)||(t.topics=t.topics?[t.topics]:[]),t.topics=t.topics.map((function(t){return 0===t.indexOf("0x")?t:i.fromUtf8(t)})),t},A=function(t){return t.expiry=i.hexToNumber(t.expiry),t.sent=i.hexToNumber(t.sent),t.ttl=i.hexToNumber(t.ttl),t.workProved=i.hexToNumber(t.workProved),t.topics||(t.topics=[]),t.topics=t.topics.map((function(t){return i.toUtf8(t)})),t},E=function(t){var e=new o(t);if(e.isValid()&&e.isDirect())return e.toAddress().toLowerCase();if(i.isAddress(t))return"0x"+t.toLowerCase().replace("0x","");throw new Error('Provided address "'+t+"\" is invalid, the capitalization checksum test failed, or its an indrect IBAN address which can't be converted.")},x=function(t){return t.startingBlock=i.hexToNumber(t.startingBlock),t.currentBlock=i.hexToNumber(t.currentBlock),t.highestBlock=i.hexToNumber(t.highestBlock),t.knownStates&&(t.knownStates=i.hexToNumber(t.knownStates),t.pulledStates=i.hexToNumber(t.pulledStates)),t};t.exports={inputDefaultBlockNumberFormatter:f,inputBlockNumberFormatter:h,inputCallFormatter:d,inputTransactionFormatter:p,inputAddressFormatter:E,inputPostFormatter:_,inputLogFormatter:g,inputSignFormatter:m,inputStorageKeysFormatter:a,outputProofFormatter:s,outputBigNumberFormatter:u,outputTransactionFormatter:y,outputTransactionReceiptFormatter:v,outputBlockFormatter:b,outputLogFormatter:w,outputPostFormatter:A,outputSyncingFormatter:x}},"176c":function(t,e,r){"use strict";var n=r("17fb"),i=r("39d4").errors,o=r("636c"),a=r("58ab"),s=r("ef84"),u=function t(e){this.provider=null,this.providers=t.providers,this.setProvider(e),this.subscriptions={}};u.givenProvider=s,u.providers={WebsocketProvider:r("3c3c"),HttpProvider:r("8148"),IpcProvider:r("93a0")},u.prototype.setProvider=function(t,e){var r=this;if(t&&"string"===typeof t&&this.providers)if(/^http(s)?:\/\//i.test(t))t=new this.providers.HttpProvider(t);else if(/^ws(s)?:\/\//i.test(t))t=new this.providers.WebsocketProvider(t);else if(t&&"object"===typeof e&&"function"===typeof e.connect)t=new this.providers.IpcProvider(t,e);else if(t)throw new Error("Can't autodetect provider for \""+t+'"');this.provider&&this.provider.connected&&this.clearSubscriptions(),this.provider=t||null,this.provider&&this.provider.on&&this.provider.on("data",(function(t,e){t=t||e,t.method&&r.subscriptions[t.params.subscription]&&r.subscriptions[t.params.subscription].callback&&r.subscriptions[t.params.subscription].callback(null,t.params.result)}))},u.prototype.send=function(t,e){if(e=e||function(){},!this.provider)return e(i.InvalidProvider());var r=o.toPayload(t.method,t.params);this.provider[this.provider.sendAsync?"sendAsync":"send"](r,(function(t,n){return n&&n.id&&r.id!==n.id?e(new Error('Wrong response id "'+n.id+'" (expected: "'+r.id+'") in '+JSON.stringify(r))):t?e(t):n&&n.error?e(i.ErrorResponse(n)):o.isValidResponse(n)?void e(null,n.result):e(i.InvalidResponse(n))}))},u.prototype.sendBatch=function(t,e){if(!this.provider)return e(i.InvalidProvider());var r=o.toBatchPayload(t);this.provider[this.provider.sendAsync?"sendAsync":"send"](r,(function(t,r){return t?e(t):n.isArray(r)?void e(null,r):e(i.InvalidResponse(r))}))},u.prototype.addSubscription=function(t,e,r,n){if(!this.provider.on)throw new Error("The provider doesn't support subscriptions: "+this.provider.constructor.name);this.subscriptions[t]={callback:n,type:r,name:e}},u.prototype.removeSubscription=function(t,e){var r=this;this.subscriptions[t]&&(this.send({method:this.subscriptions[t].type+"_unsubscribe",params:[t]},e),delete r.subscriptions[t])},u.prototype.clearSubscriptions=function(t){var e=this;this.subscriptions&&Object.keys(this.subscriptions).forEach((function(r){t&&"syncing"===e.subscriptions[r].name||e.removeSubscription(r)})),this.provider.reset&&this.provider.reset()},t.exports={Manager:u,BatchManager:a}},"17fb":function(t,e,r){(function(t,r){var n,i;(function(){var o="object"==typeof self&&self.self===self&&self||"object"==typeof t&&t.global===t&&t||this||{},a=o._,s=Array.prototype,u=Object.prototype,c="undefined"!==typeof Symbol?Symbol.prototype:null,f=s.push,h=s.slice,l=u.toString,d=u.hasOwnProperty,p=Array.isArray,m=Object.keys,y=Object.create,v=function(){},b=function(t){return t instanceof b?t:this instanceof b?void(this._wrapped=t):new b(t)};e.nodeType?o._=b:(!r.nodeType&&r.exports&&(e=r.exports=b),e._=b),b.VERSION="1.9.1";var g,w=function(t,e,r){if(void 0===e)return t;switch(null==r?3:r){case 1:return function(r){return t.call(e,r)};case 3:return function(r,n,i){return t.call(e,r,n,i)};case 4:return function(r,n,i,o){return t.call(e,r,n,i,o)}}return function(){return t.apply(e,arguments)}},_=function(t,e,r){return b.iteratee!==g?b.iteratee(t,e):null==t?b.identity:b.isFunction(t)?w(t,e,r):b.isObject(t)&&!b.isArray(t)?b.matcher(t):b.property(t)};b.iteratee=g=function(t,e){return _(t,e,1/0)};var A=function(t,e){return e=null==e?t.length-1:+e,function(){for(var r=Math.max(arguments.length-e,0),n=Array(r),i=0;i=0&&e<=S};b.each=b.forEach=function(t,e,r){var n,i;if(e=w(e,r),C(t))for(n=0,i=t.length;n0?0:a-1;for(i||(n=e[o?o[s]:s],s+=t);s>=0&&s=3;return e(t,w(r,i,4),n,o)}};b.reduce=b.foldl=b.inject=T(1),b.reduceRight=b.foldr=T(-1),b.find=b.detect=function(t,e,r){var n=C(t)?b.findIndex:b.findKey,i=n(t,e,r);if(void 0!==i&&-1!==i)return t[i]},b.filter=b.select=function(t,e,r){var n=[];return e=_(e,r),b.each(t,(function(t,r,i){e(t,r,i)&&n.push(t)})),n},b.reject=function(t,e,r){return b.filter(t,b.negate(_(e)),r)},b.every=b.all=function(t,e,r){e=_(e,r);for(var n=!C(t)&&b.keys(t),i=(n||t).length,o=0;o=0},b.invoke=A((function(t,e,r){var n,i;return b.isFunction(e)?i=e:b.isArray(e)&&(n=e.slice(0,-1),e=e[e.length-1]),b.map(t,(function(t){var o=i;if(!o){if(n&&n.length&&(t=k(t,n)),null==t)return;o=t[e]}return null==o?o:o.apply(t,r)}))})),b.pluck=function(t,e){return b.map(t,b.property(e))},b.where=function(t,e){return b.filter(t,b.matcher(e))},b.findWhere=function(t,e){return b.find(t,b.matcher(e))},b.max=function(t,e,r){var n,i,o=-1/0,a=-1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t){t=C(t)?t:b.values(t);for(var s=0,u=t.length;so&&(o=n)}else e=_(e,r),b.each(t,(function(t,r,n){i=e(t,r,n),(i>a||i===-1/0&&o===-1/0)&&(o=t,a=i)}));return o},b.min=function(t,e,r){var n,i,o=1/0,a=1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t){t=C(t)?t:b.values(t);for(var s=0,u=t.length;sn||void 0===r)return 1;if(r0?0:i-1;o>=0&&o0?a=o>=0?o:Math.max(o+s,a):s=o>=0?Math.min(o+1,s):o+s+1;else if(r&&o&&s)return o=r(n,i),n[o]===i?o:-1;if(i!==i)return o=e(h.call(n,a,s),b.isNaN),o>=0?o+a:-1;for(o=t>0?a:s-1;o>=0&&oe?(n&&(clearTimeout(n),n=null),s=c,a=t.apply(i,o),n||(i=o=null)):n||!1===r.trailing||(n=setTimeout(u,f)),a};return c.cancel=function(){clearTimeout(n),s=0,n=i=o=null},c},b.debounce=function(t,e,r){var n,i,o=function(e,r){n=null,r&&(i=t.apply(e,r))},a=A((function(a){if(n&&clearTimeout(n),r){var s=!n;n=setTimeout(o,e),s&&(i=t.apply(this,a))}else n=b.delay(o,e,this,a);return i}));return a.cancel=function(){clearTimeout(n),n=null},a},b.wrap=function(t,e){return b.partial(e,t)},b.negate=function(t){return function(){return!t.apply(this,arguments)}},b.compose=function(){var t=arguments,e=t.length-1;return function(){var r=e,n=t[e].apply(this,arguments);while(r--)n=t[r].call(this,n);return n}},b.after=function(t,e){return function(){if(--t<1)return e.apply(this,arguments)}},b.before=function(t,e){var r;return function(){return--t>0&&(r=e.apply(this,arguments)),t<=1&&(e=null),r}},b.once=b.partial(b.before,2),b.restArguments=A;var j=!{toString:null}.propertyIsEnumerable("toString"),L=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],D=function(t,e){var r=L.length,n=t.constructor,i=b.isFunction(n)&&n.prototype||u,o="constructor";M(t,o)&&!b.contains(e,o)&&e.push(o);while(r--)o=L[r],o in t&&t[o]!==i[o]&&!b.contains(e,o)&&e.push(o)};b.keys=function(t){if(!b.isObject(t))return[];if(m)return m(t);var e=[];for(var r in t)M(t,r)&&e.push(r);return j&&D(t,e),e},b.allKeys=function(t){if(!b.isObject(t))return[];var e=[];for(var r in t)e.push(r);return j&&D(t,e),e},b.values=function(t){for(var e=b.keys(t),r=e.length,n=Array(r),i=0;i1&&(n=w(n,e[1])),e=b.allKeys(t)):(n=z,e=P(e,!1,!1),t=Object(t));for(var i=0,o=e.length;i1&&(r=e[1])):(e=b.map(P(e,!1,!1),String),n=function(t,r){return!b.contains(e,r)}),b.pick(t,n,r)})),b.defaults=F(b.allKeys,!0),b.create=function(t,e){var r=E(t);return e&&b.extendOwn(r,e),r},b.clone=function(t){return b.isObject(t)?b.isArray(t)?t.slice():b.extend({},t):t},b.tap=function(t,e){return e(t),t},b.isMatch=function(t,e){var r=b.keys(e),n=r.length;if(null==t)return!n;for(var i=Object(t),o=0;o":">",'"':""","'":"'","`":"`"},G=b.invert(V),$=function(t){var e=function(e){return t[e]},r="(?:"+b.keys(t).join("|")+")",n=RegExp(r),i=RegExp(r,"g");return function(t){return t=null==t?"":""+t,n.test(t)?t.replace(i,e):t}};b.escape=$(V),b.unescape=$(G),b.result=function(t,e,r){b.isArray(e)||(e=[e]);var n=e.length;if(!n)return b.isFunction(r)?r.call(t):r;for(var i=0;i/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var W=/(.)^/,Z={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},J=/\\|'|\r|\n|\u2028|\u2029/g,X=function(t){return"\\"+Z[t]};b.template=function(t,e,r){!e&&r&&(e=r),e=b.defaults({},e,b.templateSettings);var n,i=RegExp([(e.escape||W).source,(e.interpolate||W).source,(e.evaluate||W).source].join("|")+"|$","g"),o=0,a="__p+='";t.replace(i,(function(e,r,n,i,s){return a+=t.slice(o,s).replace(J,X),o=s+e.length,r?a+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'":n?a+="'+\n((__t=("+n+"))==null?'':__t)+\n'":i&&(a+="';\n"+i+"\n__p+='"),e})),a+="';\n",e.variable||(a="with(obj||{}){\n"+a+"}\n"),a="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+a+"return __p;\n";try{n=new Function(e.variable||"obj","_",a)}catch(c){throw c.source=a,c}var s=function(t){return n.call(this,t,b)},u=e.variable||"obj";return s.source="function("+u+"){\n"+a+"}",s},b.chain=function(t){var e=b(t);return e._chain=!0,e};var Q=function(t,e){return t._chain?b(e).chain():e};b.mixin=function(t){return b.each(b.functions(t),(function(e){var r=b[e]=t[e];b.prototype[e]=function(){var t=[this._wrapped];return f.apply(t,arguments),Q(this,r.apply(b,t))}})),b},b.mixin(b),b.each(["pop","push","reverse","shift","sort","splice","unshift"],(function(t){var e=s[t];b.prototype[t]=function(){var r=this._wrapped;return e.apply(r,arguments),"shift"!==t&&"splice"!==t||0!==r.length||delete r[0],Q(this,r)}})),b.each(["concat","join","slice"],(function(t){var e=s[t];b.prototype[t]=function(){return Q(this,e.apply(this._wrapped,arguments))}})),b.prototype.value=function(){return this._wrapped},b.prototype.valueOf=b.prototype.toJSON=b.prototype.value,b.prototype.toString=function(){return String(this._wrapped)},n=[],i=function(){return b}.apply(e,n),void 0===i||(r.exports=i)})()}).call(this,r("c8ba"),r("62e4")(t))},"18fd":function(t,e,r){"use strict";var n=r("8707").Buffer,i=r("98e6"),o=r("399f"),a=r("3337").ec,s=r("f8c1"),u=new a("secp256k1"),c=u.curve;function f(t,e){var r=new o(e);if(r.cmp(c.p)>=0)return null;r=r.toRed(c.red);var n=r.redSqr().redIMul(r).redIAdd(c.b).redSqrt();return 3===t!==n.isOdd()&&(n=n.redNeg()),u.keyPair({pub:{x:r,y:n}})}function h(t,e,r){var n=new o(e),i=new o(r);if(n.cmp(c.p)>=0||i.cmp(c.p)>=0)return null;if(n=n.toRed(c.red),i=i.toRed(c.red),(6===t||7===t)&&i.isOdd()!==(7===t))return null;var a=n.redSqr().redIMul(n);return i.redSqr().redISub(a.redIAdd(c.b)).isZero()?u.keyPair({pub:{x:n,y:i}}):null}function l(t){var e=t[0];switch(e){case 2:case 3:return 33!==t.length?null:f(e,t.slice(1,33));case 4:case 6:case 7:return 65!==t.length?null:h(e,t.slice(1,33),t.slice(33,65));default:return null}}e.privateKeyVerify=function(t){var e=new o(t);return e.cmp(c.n)<0&&!e.isZero()},e.privateKeyExport=function(t,e){var r=new o(t);if(r.cmp(c.n)>=0||r.isZero())throw new Error(s.EC_PRIVATE_KEY_EXPORT_DER_FAIL);return n.from(u.keyFromPrivate(t).getPublic(e,!0))},e.privateKeyNegate=function(t){var e=new o(t);return e.isZero()?n.alloc(32):c.n.sub(e).umod(c.n).toArrayLike(n,"be",32)},e.privateKeyModInverse=function(t){var e=new o(t);if(e.cmp(c.n)>=0||e.isZero())throw new Error(s.EC_PRIVATE_KEY_RANGE_INVALID);return e.invm(c.n).toArrayLike(n,"be",32)},e.privateKeyTweakAdd=function(t,e){var r=new o(e);if(r.cmp(c.n)>=0)throw new Error(s.EC_PRIVATE_KEY_TWEAK_ADD_FAIL);if(r.iadd(new o(t)),r.cmp(c.n)>=0&&r.isub(c.n),r.isZero())throw new Error(s.EC_PRIVATE_KEY_TWEAK_ADD_FAIL);return r.toArrayLike(n,"be",32)},e.privateKeyTweakMul=function(t,e){var r=new o(e);if(r.cmp(c.n)>=0||r.isZero())throw new Error(s.EC_PRIVATE_KEY_TWEAK_MUL_FAIL);return r.imul(new o(t)),r.cmp(c.n)&&(r=r.umod(c.n)),r.toArrayLike(n,"be",32)},e.publicKeyCreate=function(t,e){var r=new o(t);if(r.cmp(c.n)>=0||r.isZero())throw new Error(s.EC_PUBLIC_KEY_CREATE_FAIL);return n.from(u.keyFromPrivate(t).getPublic(e,!0))},e.publicKeyConvert=function(t,e){var r=l(t);if(null===r)throw new Error(s.EC_PUBLIC_KEY_PARSE_FAIL);return n.from(r.getPublic(e,!0))},e.publicKeyVerify=function(t){return null!==l(t)},e.publicKeyTweakAdd=function(t,e,r){var i=l(t);if(null===i)throw new Error(s.EC_PUBLIC_KEY_PARSE_FAIL);if(e=new o(e),e.cmp(c.n)>=0)throw new Error(s.EC_PUBLIC_KEY_TWEAK_ADD_FAIL);var a=c.g.mul(e).add(i.pub);if(a.isInfinity())throw new Error(s.EC_PUBLIC_KEY_TWEAK_ADD_FAIL);return n.from(a.encode(!0,r))},e.publicKeyTweakMul=function(t,e,r){var i=l(t);if(null===i)throw new Error(s.EC_PUBLIC_KEY_PARSE_FAIL);if(e=new o(e),e.cmp(c.n)>=0||e.isZero())throw new Error(s.EC_PUBLIC_KEY_TWEAK_MUL_FAIL);return n.from(i.pub.mul(e).encode(!0,r))},e.publicKeyCombine=function(t,e){for(var r=new Array(t.length),i=0;i=0||r.cmp(c.n)>=0)throw new Error(s.ECDSA_SIGNATURE_PARSE_FAIL);var i=n.from(t);return 1===r.cmp(u.nh)&&c.n.sub(r).toArrayLike(n,"be",32).copy(i,32),i},e.signatureExport=function(t){var e=t.slice(0,32),r=t.slice(32,64);if(new o(e).cmp(c.n)>=0||new o(r).cmp(c.n)>=0)throw new Error(s.ECDSA_SIGNATURE_PARSE_FAIL);return{r:e,s:r}},e.signatureImport=function(t){var e=new o(t.r);e.cmp(c.n)>=0&&(e=new o(0));var r=new o(t.s);return r.cmp(c.n)>=0&&(r=new o(0)),n.concat([e.toArrayLike(n,"be",32),r.toArrayLike(n,"be",32)])},e.sign=function(t,e,r,i){if("function"===typeof r){var a=r;r=function(r){var u=a(t,e,null,i,r);if(!n.isBuffer(u)||32!==u.length)throw new Error(s.ECDSA_SIGN_FAIL);return new o(u)}}var f=new o(e);if(f.cmp(c.n)>=0||f.isZero())throw new Error(s.ECDSA_SIGN_FAIL);var h=u.sign(t,e,{canonical:!0,k:r,pers:i});return{signature:n.concat([h.r.toArrayLike(n,"be",32),h.s.toArrayLike(n,"be",32)]),recovery:h.recoveryParam}},e.verify=function(t,e,r){var n={r:e.slice(0,32),s:e.slice(32,64)},i=new o(n.r),a=new o(n.s);if(i.cmp(c.n)>=0||a.cmp(c.n)>=0)throw new Error(s.ECDSA_SIGNATURE_PARSE_FAIL);if(1===a.cmp(u.nh)||i.isZero()||a.isZero())return!1;var f=l(r);if(null===f)throw new Error(s.EC_PUBLIC_KEY_PARSE_FAIL);return u.verify(t,n,{x:f.pub.x,y:f.pub.y})},e.recover=function(t,e,r,i){var a={r:e.slice(0,32),s:e.slice(32,64)},f=new o(a.r),h=new o(a.s);if(f.cmp(c.n)>=0||h.cmp(c.n)>=0)throw new Error(s.ECDSA_SIGNATURE_PARSE_FAIL);try{if(f.isZero()||h.isZero())throw new Error;var l=u.recoverPubKey(t,a,r);return n.from(l.encode(!0,i))}catch(d){throw new Error(s.ECDSA_RECOVER_FAIL)}},e.ecdh=function(t,r){var n=e.ecdhUnsafe(t,r,!0);return i("sha256").update(n).digest()},e.ecdhUnsafe=function(t,e,r){var i=l(t);if(null===i)throw new Error(s.EC_PUBLIC_KEY_PARSE_FAIL);var a=new o(e);if(a.cmp(c.n)>=0||a.isZero())throw new Error(s.ECDH_FAIL);return n.from(i.pub.mul(a).encode(!0,r))}},1985:function(t,e,r){(function(t,n){var i;/*! https://mths.be/punycode v1.4.1 by @mathias */(function(o){e&&e.nodeType,t&&t.nodeType;var a="object"==typeof n&&n;a.global!==a&&a.window!==a&&a.self;var s,u=2147483647,c=36,f=1,h=26,l=38,d=700,p=72,m=128,y="-",v=/^xn--/,b=/[^\x20-\x7E]/,g=/[\x2E\u3002\uFF0E\uFF61]/g,w={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},_=c-f,A=Math.floor,E=String.fromCharCode;function x(t){throw new RangeError(w[t])}function M(t,e){var r=t.length,n=[];while(r--)n[r]=e(t[r]);return n}function k(t,e){var r=t.split("@"),n="";r.length>1&&(n=r[0]+"@",t=r[1]),t=t.replace(g,".");var i=t.split("."),o=M(i,e).join(".");return n+o}function S(t){var e,r,n=[],i=0,o=t.length;while(i=55296&&e<=56319&&i65535&&(t-=65536,e+=E(t>>>10&1023|55296),t=56320|1023&t),e+=E(t),e})).join("")}function C(t){return t-48<10?t-22:t-65<26?t-65:t-97<26?t-97:c}function T(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function U(t,e,r){var n=0;for(t=r?A(t/d):t>>1,t+=A(t/e);t>_*h>>1;n+=c)t=A(t/_);return A(n+(_+1)*t/(t+l))}function O(t){var e,r,n,i,o,a,s,l,d,v,b=[],g=t.length,w=0,_=m,E=p;for(r=t.lastIndexOf(y),r<0&&(r=0),n=0;n=128&&x("not-basic"),b.push(t.charCodeAt(n));for(i=r>0?r+1:0;i=g&&x("invalid-input"),l=C(t.charCodeAt(i++)),(l>=c||l>A((u-w)/a))&&x("overflow"),w+=l*a,d=s<=E?f:s>=E+h?h:s-E,lA(u/v)&&x("overflow"),a*=v}e=b.length+1,E=U(w-o,e,0==o),A(w/e)>u-_&&x("overflow"),_+=A(w/e),w%=e,b.splice(w++,0,_)}return I(b)}function P(t){var e,r,n,i,o,a,s,l,d,v,b,g,w,_,M,k=[];for(t=S(t),g=t.length,e=m,r=0,o=p,a=0;a=e&&bA((u-r)/w)&&x("overflow"),r+=(s-e)*w,e=s,a=0;au&&x("overflow"),b==e){for(l=r,d=c;;d+=c){if(v=d<=o?f:d>=o+h?h:d-o,lr){var n="rmd160"===t?new u:c(t);e=n.update(e).digest()}else e.length=8.0.0"},"gitHead":"c20bcf09b04f773406ce3532e88fd105bb04e244","homepage":"https://github.com/ethereum/web3.js#readme","keywords":["Ethereum","JavaScript","API"],"license":"LGPL-3.0","main":"src/index.js","name":"web3","repository":{"type":"git","url":"git+https://github.com/ethereum/web3.js.git"},"scripts":{"dtslint":"dtslint types --onlyTestTsNext","postinstall":"node angular-patch.js"},"types":"types/index.d.ts","version":"1.2.6"}')},"1b54":function(t,e,r){"use strict";var n=r("8707").Buffer,i=r("cd10"),o=n.from([48,129,211,2,1,1,4,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,129,133,48,129,130,2,1,1,48,44,6,7,42,134,72,206,61,1,1,2,33,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,255,255,252,47,48,6,4,1,0,4,1,7,4,33,2,121,190,102,126,249,220,187,172,85,160,98,149,206,135,11,7,2,155,252,219,45,206,40,217,89,242,129,91,22,248,23,152,2,33,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,186,174,220,230,175,72,160,59,191,210,94,140,208,54,65,65,2,1,1,161,36,3,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),a=n.from([48,130,1,19,2,1,1,4,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,129,165,48,129,162,2,1,1,48,44,6,7,42,134,72,206,61,1,1,2,33,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,255,255,252,47,48,6,4,1,0,4,1,7,4,65,4,121,190,102,126,249,220,187,172,85,160,98,149,206,135,11,7,2,155,252,219,45,206,40,217,89,242,129,91,22,248,23,152,72,58,218,119,38,163,196,101,93,164,251,252,14,17,8,168,253,23,180,72,166,133,84,25,156,71,208,143,251,16,212,184,2,33,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,186,174,220,230,175,72,160,59,191,210,94,140,208,54,65,65,2,1,1,161,68,3,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);e.privateKeyExport=function(t,e,r){var i=n.from(r?o:a);return t.copy(i,r?8:9),e.copy(i,r?181:214),i},e.privateKeyImport=function(t){var e=t.length,r=0;if(!(e2)&&!(e1?t[r+n-2]<<8:0);if(r+=n,!(e32||e1&&0===e[o]&&!(128&e[o+1]);--r,++o);for(var a=n.concat([n.from([0]),t.s]),s=33,u=0;s>1&&0===a[u]&&!(128&a[u+1]);--s,++u);return i.encode(e.slice(o),a.slice(u))},e.signatureImport=function(t){var e=n.alloc(32,0),r=n.alloc(32,0);try{var o=i.decode(t);if(33===o.r.length&&0===o.r[0]&&(o.r=o.r.slice(1)),o.r.length>32)throw new Error("R length is too long");if(33===o.s.length&&0===o.s[0]&&(o.s=o.s.slice(1)),o.s.length>32)throw new Error("S length is too long")}catch(a){return}return o.r.copy(e,32-o.r.length),o.s.copy(r,32-o.s.length),{r:e,s:r}},e.signatureImportLax=function(t){var e=n.alloc(32,0),r=n.alloc(32,0),i=t.length,o=0;if(48===t[o++]){var a=t[o++];if(!(128&a&&(o+=a-128,o>i))&&2===t[o++]){var s=t[o++];if(128&s){if(a=s-128,o+a>i)return;for(;a>0&&0===t[o];o+=1,a-=1);for(s=0;a>0;o+=1,a-=1)s=(s<<8)+t[o]}if(!(s>i-o)){var u=o;if(o+=s,2===t[o++]){var c=t[o++];if(128&c){if(a=c-128,o+a>i)return;for(;a>0&&0===t[o];o+=1,a-=1);for(c=0;a>0;o+=1,a-=1)c=(c<<8)+t[o]}if(!(c>i-o)){var f=o;for(o+=c;s>0&&0===t[u];s-=1,u+=1);if(!(s>32)){var h=t.slice(u,u+s);for(h.copy(e,32-h.length);c>0&&0===t[f];c-=1,f+=1);if(!(c>32)){var l=t.slice(f,f+c);return l.copy(r,32-l.length),{r:e,s:r}}}}}}}}}},"1be4":function(t,e,r){var n=r("d066");t.exports=n("document","documentElement")},"1c0b":function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t}},"1c46":function(t,e,r){"use strict";e.randomBytes=e.rng=e.pseudoRandomBytes=e.prng=r("11dc"),e.createHash=e.Hash=r("98e6"),e.createHmac=e.Hmac=r("1a2a");var n=r("116d"),i=Object.keys(n),o=["sha1","sha224","sha256","sha384","sha512","md5","rmd160"].concat(i);e.getHashes=function(){return o};var a=r("a099");e.pbkdf2=a.pbkdf2,e.pbkdf2Sync=a.pbkdf2Sync;var s=r("956a");e.Cipher=s.Cipher,e.createCipher=s.createCipher,e.Cipheriv=s.Cipheriv,e.createCipheriv=s.createCipheriv,e.Decipher=s.Decipher,e.createDecipher=s.createDecipher,e.Decipheriv=s.Decipheriv,e.createDecipheriv=s.createDecipheriv,e.getCiphers=s.getCiphers,e.listCiphers=s.listCiphers;var u=r("00dc");e.DiffieHellmanGroup=u.DiffieHellmanGroup,e.createDiffieHellmanGroup=u.createDiffieHellmanGroup,e.getDiffieHellman=u.getDiffieHellman,e.createDiffieHellman=u.createDiffieHellman,e.DiffieHellman=u.DiffieHellman;var c=r("b692");e.createSign=c.createSign,e.Sign=c.Sign,e.createVerify=c.createVerify,e.Verify=c.Verify,e.createECDH=r("e1d3");var f=r("6442");e.publicEncrypt=f.publicEncrypt,e.privateEncrypt=f.privateEncrypt,e.publicDecrypt=f.publicDecrypt,e.privateDecrypt=f.privateDecrypt;var h=r("75cc");e.randomFill=h.randomFill,e.randomFillSync=h.randomFillSync,e.createCredentials=function(){throw new Error(["sorry, createCredentials is not implemented yet","we accept pull requests","https://github.com/crypto-browserify/crypto-browserify"].join("\n"))},e.constants={DH_CHECK_P_NOT_SAFE_PRIME:2,DH_CHECK_P_NOT_PRIME:1,DH_UNABLE_TO_CHECK_GENERATOR:4,DH_NOT_SUITABLE_GENERATOR:8,NPN_ENABLED:1,ALPN_ENABLED:1,RSA_PKCS1_PADDING:1,RSA_SSLV23_PADDING:2,RSA_NO_PADDING:3,RSA_PKCS1_OAEP_PADDING:4,RSA_X931_PADDING:5,RSA_PKCS1_PSS_PADDING:6,POINT_CONVERSION_COMPRESSED:2,POINT_CONVERSION_UNCOMPRESSED:4,POINT_CONVERSION_HYBRID:6}},"1c55":function(t,e,r){(function(n,i){var o; +/** + * [js-sha3]{@link https://github.com/emn178/js-sha3} + * + * @version 0.8.0 + * @author Chen, Yi-Cyuan [emn178@gmail.com] + * @copyright Chen, Yi-Cyuan 2015-2018 + * @license MIT + */(function(){"use strict";var a="input is invalid type",s="finalize already called",u="object"===typeof window,c=u?window:{};c.JS_SHA3_NO_WINDOW&&(u=!1);var f=!u&&"object"===typeof self,h=!c.JS_SHA3_NO_NODE_JS&&"object"===typeof n&&n.versions&&n.versions.node;h?c=i:f&&(c=self);var l=!c.JS_SHA3_NO_COMMON_JS&&"object"===typeof t&&t.exports,d=r("3c35"),p=!c.JS_SHA3_NO_ARRAY_BUFFER&&"undefined"!==typeof ArrayBuffer,m="0123456789abcdef".split(""),y=[31,7936,2031616,520093696],v=[4,1024,262144,67108864],b=[1,256,65536,16777216],g=[6,1536,393216,100663296],w=[0,8,16,24],_=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],A=[224,256,384,512],E=[128,256],x=["hex","buffer","arrayBuffer","array","digest"],M={128:168,256:136};!c.JS_SHA3_NO_NODE_JS&&Array.isArray||(Array.isArray=function(t){return"[object Array]"===Object.prototype.toString.call(t)}),!p||!c.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(t){return"object"===typeof t&&t.buffer&&t.buffer.constructor===ArrayBuffer});for(var k=function(t,e,r){return function(n){return new K(t,e,t).update(n)[r]()}},S=function(t,e,r){return function(n,i){return new K(t,e,i).update(n)[r]()}},I=function(t,e,r){return function(e,n,i,o){return B["cshake"+t].update(e,n,i,o)[r]()}},C=function(t,e,r){return function(e,n,i,o){return B["kmac"+t].update(e,n,i,o)[r]()}},T=function(t,e,r,n){for(var i=0;i>5,this.byteCount=this.blockCount<<2,this.outputBlocks=r>>5,this.extraBytes=(31&r)>>3;for(var n=0;n<50;++n)this.s[n]=0}function V(t,e,r){K.call(this,t,e,r)}K.prototype.update=function(t){if(this.finalized)throw new Error(s);var e,r=typeof t;if("string"!==r){if("object"!==r)throw new Error(a);if(null===t)throw new Error(a);if(p&&t.constructor===ArrayBuffer)t=new Uint8Array(t);else if(!Array.isArray(t)&&(!p||!ArrayBuffer.isView(t)))throw new Error(a);e=!0}var n,i,o=this.blocks,u=this.byteCount,c=t.length,f=this.blockCount,h=0,l=this.s;while(h>2]|=t[h]<>2]|=i<>2]|=(192|i>>6)<>2]|=(128|63&i)<=57344?(o[n>>2]|=(224|i>>12)<>2]|=(128|i>>6&63)<>2]|=(128|63&i)<>2]|=(240|i>>18)<>2]|=(128|i>>12&63)<>2]|=(128|i>>6&63)<>2]|=(128|63&i)<=u){for(this.start=n-u,this.block=o[f],n=0;n>=8,r=255&t;while(r>0)i.unshift(r),t>>=8,r=255&t,++n;return e?i.push(n):i.unshift(n),this.update(i),i.length},K.prototype.encodeString=function(t){var e,r=typeof t;if("string"!==r){if("object"!==r)throw new Error(a);if(null===t)throw new Error(a);if(p&&t.constructor===ArrayBuffer)t=new Uint8Array(t);else if(!Array.isArray(t)&&(!p||!ArrayBuffer.isView(t)))throw new Error(a);e=!0}var n=0,i=t.length;if(e)n=i;else for(var o=0;o=57344?n+=3:(s=65536+((1023&s)<<10|1023&t.charCodeAt(++o)),n+=4)}return n+=this.encode(8*n),this.update(t),n},K.prototype.bytepad=function(t,e){for(var r=this.encode(e),n=0;n>2]|=this.padding[3&e],this.lastByteIndex===this.byteCount)for(t[0]=t[r],e=1;e>4&15]+m[15&t]+m[t>>12&15]+m[t>>8&15]+m[t>>20&15]+m[t>>16&15]+m[t>>28&15]+m[t>>24&15];a%e===0&&(G(r),o=0)}return i&&(t=r[o],s+=m[t>>4&15]+m[15&t],i>1&&(s+=m[t>>12&15]+m[t>>8&15]),i>2&&(s+=m[t>>20&15]+m[t>>16&15])),s},K.prototype.arrayBuffer=function(){this.finalize();var t,e=this.blockCount,r=this.s,n=this.outputBlocks,i=this.extraBytes,o=0,a=0,s=this.outputBits>>3;t=i?new ArrayBuffer(n+1<<2):new ArrayBuffer(s);var u=new Uint32Array(t);while(a>8&255,u[t+2]=e>>16&255,u[t+3]=e>>24&255;s%r===0&&G(n)}return o&&(t=s<<2,e=n[a],u[t]=255&e,o>1&&(u[t+1]=e>>8&255),o>2&&(u[t+2]=e>>16&255)),u},V.prototype=new K,V.prototype.finalize=function(){return this.encode(this.outputBits,!0),K.prototype.finalize.call(this)};var G=function(t){var e,r,n,i,o,a,s,u,c,f,h,l,d,p,m,y,v,b,g,w,A,E,x,M,k,S,I,C,T,U,O,P,R,N,B,j,L,D,F,q,H,z,K,V,G,$,Y,W,Z,J,X,Q,tt,et,rt,nt,it,ot,at,st,ut,ct,ft;for(n=0;n<48;n+=2)i=t[0]^t[10]^t[20]^t[30]^t[40],o=t[1]^t[11]^t[21]^t[31]^t[41],a=t[2]^t[12]^t[22]^t[32]^t[42],s=t[3]^t[13]^t[23]^t[33]^t[43],u=t[4]^t[14]^t[24]^t[34]^t[44],c=t[5]^t[15]^t[25]^t[35]^t[45],f=t[6]^t[16]^t[26]^t[36]^t[46],h=t[7]^t[17]^t[27]^t[37]^t[47],l=t[8]^t[18]^t[28]^t[38]^t[48],d=t[9]^t[19]^t[29]^t[39]^t[49],e=l^(a<<1|s>>>31),r=d^(s<<1|a>>>31),t[0]^=e,t[1]^=r,t[10]^=e,t[11]^=r,t[20]^=e,t[21]^=r,t[30]^=e,t[31]^=r,t[40]^=e,t[41]^=r,e=i^(u<<1|c>>>31),r=o^(c<<1|u>>>31),t[2]^=e,t[3]^=r,t[12]^=e,t[13]^=r,t[22]^=e,t[23]^=r,t[32]^=e,t[33]^=r,t[42]^=e,t[43]^=r,e=a^(f<<1|h>>>31),r=s^(h<<1|f>>>31),t[4]^=e,t[5]^=r,t[14]^=e,t[15]^=r,t[24]^=e,t[25]^=r,t[34]^=e,t[35]^=r,t[44]^=e,t[45]^=r,e=u^(l<<1|d>>>31),r=c^(d<<1|l>>>31),t[6]^=e,t[7]^=r,t[16]^=e,t[17]^=r,t[26]^=e,t[27]^=r,t[36]^=e,t[37]^=r,t[46]^=e,t[47]^=r,e=f^(i<<1|o>>>31),r=h^(o<<1|i>>>31),t[8]^=e,t[9]^=r,t[18]^=e,t[19]^=r,t[28]^=e,t[29]^=r,t[38]^=e,t[39]^=r,t[48]^=e,t[49]^=r,p=t[0],m=t[1],$=t[11]<<4|t[10]>>>28,Y=t[10]<<4|t[11]>>>28,C=t[20]<<3|t[21]>>>29,T=t[21]<<3|t[20]>>>29,st=t[31]<<9|t[30]>>>23,ut=t[30]<<9|t[31]>>>23,z=t[40]<<18|t[41]>>>14,K=t[41]<<18|t[40]>>>14,N=t[2]<<1|t[3]>>>31,B=t[3]<<1|t[2]>>>31,y=t[13]<<12|t[12]>>>20,v=t[12]<<12|t[13]>>>20,W=t[22]<<10|t[23]>>>22,Z=t[23]<<10|t[22]>>>22,U=t[33]<<13|t[32]>>>19,O=t[32]<<13|t[33]>>>19,ct=t[42]<<2|t[43]>>>30,ft=t[43]<<2|t[42]>>>30,et=t[5]<<30|t[4]>>>2,rt=t[4]<<30|t[5]>>>2,j=t[14]<<6|t[15]>>>26,L=t[15]<<6|t[14]>>>26,b=t[25]<<11|t[24]>>>21,g=t[24]<<11|t[25]>>>21,J=t[34]<<15|t[35]>>>17,X=t[35]<<15|t[34]>>>17,P=t[45]<<29|t[44]>>>3,R=t[44]<<29|t[45]>>>3,M=t[6]<<28|t[7]>>>4,k=t[7]<<28|t[6]>>>4,nt=t[17]<<23|t[16]>>>9,it=t[16]<<23|t[17]>>>9,D=t[26]<<25|t[27]>>>7,F=t[27]<<25|t[26]>>>7,w=t[36]<<21|t[37]>>>11,A=t[37]<<21|t[36]>>>11,Q=t[47]<<24|t[46]>>>8,tt=t[46]<<24|t[47]>>>8,V=t[8]<<27|t[9]>>>5,G=t[9]<<27|t[8]>>>5,S=t[18]<<20|t[19]>>>12,I=t[19]<<20|t[18]>>>12,ot=t[29]<<7|t[28]>>>25,at=t[28]<<7|t[29]>>>25,q=t[38]<<8|t[39]>>>24,H=t[39]<<8|t[38]>>>24,E=t[48]<<14|t[49]>>>18,x=t[49]<<14|t[48]>>>18,t[0]=p^~y&b,t[1]=m^~v&g,t[10]=M^~S&C,t[11]=k^~I&T,t[20]=N^~j&D,t[21]=B^~L&F,t[30]=V^~$&W,t[31]=G^~Y&Z,t[40]=et^~nt&ot,t[41]=rt^~it&at,t[2]=y^~b&w,t[3]=v^~g&A,t[12]=S^~C&U,t[13]=I^~T&O,t[22]=j^~D&q,t[23]=L^~F&H,t[32]=$^~W&J,t[33]=Y^~Z&X,t[42]=nt^~ot&st,t[43]=it^~at&ut,t[4]=b^~w&E,t[5]=g^~A&x,t[14]=C^~U&P,t[15]=T^~O&R,t[24]=D^~q&z,t[25]=F^~H&K,t[34]=W^~J&Q,t[35]=Z^~X&tt,t[44]=ot^~st&ct,t[45]=at^~ut&ft,t[6]=w^~E&p,t[7]=A^~x&m,t[16]=U^~P&M,t[17]=O^~R&k,t[26]=q^~z&N,t[27]=H^~K&B,t[36]=J^~Q&V,t[37]=X^~tt&G,t[46]=st^~ct&et,t[47]=ut^~ft&rt,t[8]=E^~p&y,t[9]=x^~m&v,t[18]=P^~M&S,t[19]=R^~k&I,t[28]=z^~N&j,t[29]=K^~B&L,t[38]=Q^~V&$,t[39]=tt^~G&Y,t[48]=ct^~et&nt,t[49]=ft^~rt&it,t[0]^=_[n],t[1]^=_[n+1]};if(l)t.exports=B;else{for(L=0;L{let r=[];for(var n=0;nr(t,()=>e),i=(t,e)=>t.concat(e),o=t=>{let e=[];for(let r=0,n=t.length;r{let r=[];for(let n=0,i=e.length;n({blocks:[],reset:!0,block:0,start:0,blockCount:1600-(t<<1)>>5,outputBlocks:t>>5,s:(t=>[].concat(t,t,t,t,t))([0,0,0,0,0,0,0,0,0,0])}),s=(t,e)=>{var o,a=e.length,s=t.blocks,c=t.blockCount<<2,f=t.blockCount,h=t.outputBlocks,l=t.s,d=0;while(d>2]|=e[d]<>2]|=o<>2]|=(192|o>>6)<>2]|=(128|63&o)<=57344?(s[y>>2]|=(224|o>>12)<>2]|=(128|o>>6&63)<>2]|=(128|63&o)<>2]|=(240|o>>18)<>2]|=(128|o>>12&63)<>2]|=(128|o>>6&63)<>2]|=(128|63&o)<=c){for(t.start=y-c,t.block=s[f],y=0;y>2]|=n[3&y],t.lastByteIndex===c)for(s[0]=s[f],y=1;y>4&15]+r[15&p]+r[p>>12&15]+r[p>>8&15]+r[p>>20&15]+r[p>>16&15]+r[p>>28&15]+r[p>>24&15];v%f===0&&(u(l),y=0)}return"0x"+m},u=t=>{var e,r,n,i,a,s,u,c,f,h,l,d,p,m,y,v,b,g,w,_,A,E,x,M,k,S,I,C,T,U,O,P,R,N,B,j,L,D,F,q,H,z,K,V,G,$,Y,W,Z,J,X,Q,tt,et,rt,nt,it,ot,at,st,ut,ct,ft;for(n=0;n<48;n+=2)i=t[0]^t[10]^t[20]^t[30]^t[40],a=t[1]^t[11]^t[21]^t[31]^t[41],s=t[2]^t[12]^t[22]^t[32]^t[42],u=t[3]^t[13]^t[23]^t[33]^t[43],c=t[4]^t[14]^t[24]^t[34]^t[44],f=t[5]^t[15]^t[25]^t[35]^t[45],h=t[6]^t[16]^t[26]^t[36]^t[46],l=t[7]^t[17]^t[27]^t[37]^t[47],d=t[8]^t[18]^t[28]^t[38]^t[48],p=t[9]^t[19]^t[29]^t[39]^t[49],e=d^(s<<1|u>>>31),r=p^(u<<1|s>>>31),t[0]^=e,t[1]^=r,t[10]^=e,t[11]^=r,t[20]^=e,t[21]^=r,t[30]^=e,t[31]^=r,t[40]^=e,t[41]^=r,e=i^(c<<1|f>>>31),r=a^(f<<1|c>>>31),t[2]^=e,t[3]^=r,t[12]^=e,t[13]^=r,t[22]^=e,t[23]^=r,t[32]^=e,t[33]^=r,t[42]^=e,t[43]^=r,e=s^(h<<1|l>>>31),r=u^(l<<1|h>>>31),t[4]^=e,t[5]^=r,t[14]^=e,t[15]^=r,t[24]^=e,t[25]^=r,t[34]^=e,t[35]^=r,t[44]^=e,t[45]^=r,e=c^(d<<1|p>>>31),r=f^(p<<1|d>>>31),t[6]^=e,t[7]^=r,t[16]^=e,t[17]^=r,t[26]^=e,t[27]^=r,t[36]^=e,t[37]^=r,t[46]^=e,t[47]^=r,e=h^(i<<1|a>>>31),r=l^(a<<1|i>>>31),t[8]^=e,t[9]^=r,t[18]^=e,t[19]^=r,t[28]^=e,t[29]^=r,t[38]^=e,t[39]^=r,t[48]^=e,t[49]^=r,m=t[0],y=t[1],$=t[11]<<4|t[10]>>>28,Y=t[10]<<4|t[11]>>>28,C=t[20]<<3|t[21]>>>29,T=t[21]<<3|t[20]>>>29,st=t[31]<<9|t[30]>>>23,ut=t[30]<<9|t[31]>>>23,z=t[40]<<18|t[41]>>>14,K=t[41]<<18|t[40]>>>14,N=t[2]<<1|t[3]>>>31,B=t[3]<<1|t[2]>>>31,v=t[13]<<12|t[12]>>>20,b=t[12]<<12|t[13]>>>20,W=t[22]<<10|t[23]>>>22,Z=t[23]<<10|t[22]>>>22,U=t[33]<<13|t[32]>>>19,O=t[32]<<13|t[33]>>>19,ct=t[42]<<2|t[43]>>>30,ft=t[43]<<2|t[42]>>>30,et=t[5]<<30|t[4]>>>2,rt=t[4]<<30|t[5]>>>2,j=t[14]<<6|t[15]>>>26,L=t[15]<<6|t[14]>>>26,g=t[25]<<11|t[24]>>>21,w=t[24]<<11|t[25]>>>21,J=t[34]<<15|t[35]>>>17,X=t[35]<<15|t[34]>>>17,P=t[45]<<29|t[44]>>>3,R=t[44]<<29|t[45]>>>3,M=t[6]<<28|t[7]>>>4,k=t[7]<<28|t[6]>>>4,nt=t[17]<<23|t[16]>>>9,it=t[16]<<23|t[17]>>>9,D=t[26]<<25|t[27]>>>7,F=t[27]<<25|t[26]>>>7,_=t[36]<<21|t[37]>>>11,A=t[37]<<21|t[36]>>>11,Q=t[47]<<24|t[46]>>>8,tt=t[46]<<24|t[47]>>>8,V=t[8]<<27|t[9]>>>5,G=t[9]<<27|t[8]>>>5,S=t[18]<<20|t[19]>>>12,I=t[19]<<20|t[18]>>>12,ot=t[29]<<7|t[28]>>>25,at=t[28]<<7|t[29]>>>25,q=t[38]<<8|t[39]>>>24,H=t[39]<<8|t[38]>>>24,E=t[48]<<14|t[49]>>>18,x=t[49]<<14|t[48]>>>18,t[0]=m^~v&g,t[1]=y^~b&w,t[10]=M^~S&C,t[11]=k^~I&T,t[20]=N^~j&D,t[21]=B^~L&F,t[30]=V^~$&W,t[31]=G^~Y&Z,t[40]=et^~nt&ot,t[41]=rt^~it&at,t[2]=v^~g&_,t[3]=b^~w&A,t[12]=S^~C&U,t[13]=I^~T&O,t[22]=j^~D&q,t[23]=L^~F&H,t[32]=$^~W&J,t[33]=Y^~Z&X,t[42]=nt^~ot&st,t[43]=it^~at&ut,t[4]=g^~_&E,t[5]=w^~A&x,t[14]=C^~U&P,t[15]=T^~O&R,t[24]=D^~q&z,t[25]=F^~H&K,t[34]=W^~J&Q,t[35]=Z^~X&tt,t[44]=ot^~st&ct,t[45]=at^~ut&ft,t[6]=_^~E&m,t[7]=A^~x&y,t[16]=U^~P&M,t[17]=O^~R&k,t[26]=q^~z&N,t[27]=H^~K&B,t[36]=J^~Q&V,t[37]=X^~tt&G,t[46]=st^~ct&et,t[47]=ut^~ft&rt,t[8]=E^~m&v,t[9]=x^~y&b,t[18]=P^~M&S,t[19]=R^~k&I,t[28]=z^~N&j,t[29]=K^~B&L,t[38]=Q^~V&$,t[39]=tt^~G&Y,t[48]=ct^~et&nt,t[49]=ft^~rt&it,t[0]^=o[n],t[1]^=o[n+1]},c=t=>e=>{var r;if("0x"===e.slice(0,2)){r=[];for(var n=2,i=e.length;n0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");-1===r&&(r=e);var n=r===e?0:4-r%4;return[r,n]}function f(t){var e=c(t),r=e[0],n=e[1];return 3*(r+n)/4-n}function h(t,e,r){return 3*(e+r)/4-r}function l(t){var e,r,n=c(t),a=n[0],s=n[1],u=new o(h(t,a,s)),f=0,l=s>0?a-4:a;for(r=0;r>16&255,u[f++]=e>>8&255,u[f++]=255&e;return 2===s&&(e=i[t.charCodeAt(r)]<<2|i[t.charCodeAt(r+1)]>>4,u[f++]=255&e),1===s&&(e=i[t.charCodeAt(r)]<<10|i[t.charCodeAt(r+1)]<<4|i[t.charCodeAt(r+2)]>>2,u[f++]=e>>8&255,u[f++]=255&e),u}function d(t){return n[t>>18&63]+n[t>>12&63]+n[t>>6&63]+n[63&t]}function p(t,e,r){for(var n,i=[],o=e;ou?u:s+a));return 1===i?(e=t[r-1],o.push(n[e>>2]+n[e<<4&63]+"==")):2===i&&(e=(t[r-2]<<8)+t[r-1],o.push(n[e>>10]+n[e>>4&63]+n[e<<2&63]+"=")),o.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},"1fc8":function(t,e,r){"use strict";var n=r("17fb"),i=r("f1ee"),o=r("39d4"),a=r("4923").subscriptions,s=r("6248"),u=r("1131"),c=r("ae52"),f=r("701e"),h=r("b3ce"),l=r("d100"),d=r("da53"),p=r("222f"),m=r("bbaf"),y=r("e199"),v=o.formatters,b=function(t){return n.isString(t[0])&&0===t[0].indexOf("0x")?"eth_getBlockByHash":"eth_getBlockByNumber"},g=function(t){return n.isString(t[0])&&0===t[0].indexOf("0x")?"eth_getTransactionByBlockHashAndIndex":"eth_getTransactionByBlockNumberAndIndex"},w=function(t){return n.isString(t[0])&&0===t[0].indexOf("0x")?"eth_getUncleByBlockHashAndIndex":"eth_getUncleByBlockNumberAndIndex"},_=function(t){return n.isString(t[0])&&0===t[0].indexOf("0x")?"eth_getBlockTransactionCountByHash":"eth_getBlockTransactionCountByNumber"},A=function(t){return n.isString(t[0])&&0===t[0].indexOf("0x")?"eth_getUncleCountByBlockHash":"eth_getUncleCountByBlockNumber"},E=function(){var t=this;i.packageInit(this,arguments);var e=this.setProvider;this.setProvider=function(){e.apply(t,arguments),t.net.setProvider.apply(t,arguments),t.personal.setProvider.apply(t,arguments),t.accounts.setProvider.apply(t,arguments),t.Contract.setProvider(t.currentProvider,t.accounts)};var r,o,E,x=!1,M=null,k="latest",S=50,I=24,C=750;Object.defineProperty(this,"handleRevert",{get:function(){return x},set:function(e){x=e,t.Contract.handleRevert=x,O.forEach((function(t){t.handleRevert=x}))},enumerable:!0}),Object.defineProperty(this,"defaultCommon",{get:function(){return E},set:function(e){E=e,t.Contract.defaultCommon=E,O.forEach((function(t){t.defaultCommon=E}))},enumerable:!0}),Object.defineProperty(this,"defaultHardfork",{get:function(){return o},set:function(e){o=e,t.Contract.defaultHardfork=o,O.forEach((function(t){t.defaultHardfork=o}))},enumerable:!0}),Object.defineProperty(this,"defaultChain",{get:function(){return r},set:function(e){r=e,t.Contract.defaultChain=r,O.forEach((function(t){t.defaultChain=r}))},enumerable:!0}),Object.defineProperty(this,"transactionPollingTimeout",{get:function(){return C},set:function(e){C=e,t.Contract.transactionPollingTimeout=C,O.forEach((function(t){t.transactionPollingTimeout=C}))},enumerable:!0}),Object.defineProperty(this,"transactionConfirmationBlocks",{get:function(){return I},set:function(e){I=e,t.Contract.transactionConfirmationBlocks=I,O.forEach((function(t){t.transactionConfirmationBlocks=I}))},enumerable:!0}),Object.defineProperty(this,"transactionBlockTimeout",{get:function(){return S},set:function(e){S=e,t.Contract.transactionBlockTimeout=S,O.forEach((function(t){t.transactionBlockTimeout=S}))},enumerable:!0}),Object.defineProperty(this,"defaultAccount",{get:function(){return M},set:function(e){return e&&(M=u.toChecksumAddress(v.inputAddressFormatter(e))),t.Contract.defaultAccount=M,t.personal.defaultAccount=M,O.forEach((function(t){t.defaultAccount=M})),e},enumerable:!0}),Object.defineProperty(this,"defaultBlock",{get:function(){return k},set:function(e){return k=e,t.Contract.defaultBlock=k,t.personal.defaultBlock=k,O.forEach((function(t){t.defaultBlock=k})),e},enumerable:!0}),this.clearSubscriptions=t._requestManager.clearSubscriptions,this.net=new c(this.currentProvider),this.net.getNetworkType=y.bind(this),this.accounts=new p(this.currentProvider),this.personal=new h(this.currentProvider),this.personal.defaultAccount=this.defaultAccount;var T=this,U=function(){l.apply(this,arguments);var t=this,e=T.setProvider;T.setProvider=function(){e.apply(T,arguments),i.packageInit(t,[T.currentProvider])}};U.setProvider=function(){l.setProvider.apply(this,arguments)},U.prototype=Object.create(l.prototype),U.prototype.constructor=U,this.Contract=U,this.Contract.defaultAccount=this.defaultAccount,this.Contract.defaultBlock=this.defaultBlock,this.Contract.transactionBlockTimeout=this.transactionBlockTimeout,this.Contract.transactionConfirmationBlocks=this.transactionConfirmationBlocks,this.Contract.transactionPollingTimeout=this.transactionPollingTimeout,this.Contract.handleRevert=this.handleRevert,this.Contract.setProvider(this.currentProvider,this.accounts),this.Iban=d,this.abi=m,this.ens=new f(this);var O=[new s({name:"getNodeInfo",call:"web3_clientVersion"}),new s({name:"getProtocolVersion",call:"eth_protocolVersion",params:0}),new s({name:"getCoinbase",call:"eth_coinbase",params:0}),new s({name:"isMining",call:"eth_mining",params:0}),new s({name:"getHashrate",call:"eth_hashrate",params:0,outputFormatter:u.hexToNumber}),new s({name:"isSyncing",call:"eth_syncing",params:0,outputFormatter:v.outputSyncingFormatter}),new s({name:"getGasPrice",call:"eth_gasPrice",params:0,outputFormatter:v.outputBigNumberFormatter}),new s({name:"getAccounts",call:"eth_accounts",params:0,outputFormatter:u.toChecksumAddress}),new s({name:"getBlockNumber",call:"eth_blockNumber",params:0,outputFormatter:u.hexToNumber}),new s({name:"getBalance",call:"eth_getBalance",params:2,inputFormatter:[v.inputAddressFormatter,v.inputDefaultBlockNumberFormatter],outputFormatter:v.outputBigNumberFormatter}),new s({name:"getStorageAt",call:"eth_getStorageAt",params:3,inputFormatter:[v.inputAddressFormatter,u.numberToHex,v.inputDefaultBlockNumberFormatter]}),new s({name:"getCode",call:"eth_getCode",params:2,inputFormatter:[v.inputAddressFormatter,v.inputDefaultBlockNumberFormatter]}),new s({name:"getBlock",call:b,params:2,inputFormatter:[v.inputBlockNumberFormatter,function(t){return!!t}],outputFormatter:v.outputBlockFormatter}),new s({name:"getUncle",call:w,params:2,inputFormatter:[v.inputBlockNumberFormatter,u.numberToHex],outputFormatter:v.outputBlockFormatter}),new s({name:"getBlockTransactionCount",call:_,params:1,inputFormatter:[v.inputBlockNumberFormatter],outputFormatter:u.hexToNumber}),new s({name:"getBlockUncleCount",call:A,params:1,inputFormatter:[v.inputBlockNumberFormatter],outputFormatter:u.hexToNumber}),new s({name:"getTransaction",call:"eth_getTransactionByHash",params:1,inputFormatter:[null],outputFormatter:v.outputTransactionFormatter}),new s({name:"getTransactionFromBlock",call:g,params:2,inputFormatter:[v.inputBlockNumberFormatter,u.numberToHex],outputFormatter:v.outputTransactionFormatter}),new s({name:"getTransactionReceipt",call:"eth_getTransactionReceipt",params:1,inputFormatter:[null],outputFormatter:v.outputTransactionReceiptFormatter}),new s({name:"getTransactionCount",call:"eth_getTransactionCount",params:2,inputFormatter:[v.inputAddressFormatter,v.inputDefaultBlockNumberFormatter],outputFormatter:u.hexToNumber}),new s({name:"sendSignedTransaction",call:"eth_sendRawTransaction",params:1,inputFormatter:[null]}),new s({name:"signTransaction",call:"eth_signTransaction",params:1,inputFormatter:[v.inputTransactionFormatter]}),new s({name:"sendTransaction",call:"eth_sendTransaction",params:1,inputFormatter:[v.inputTransactionFormatter],abiCoder:m}),new s({name:"sign",call:"eth_sign",params:2,inputFormatter:[v.inputSignFormatter,v.inputAddressFormatter],transformPayload:function(t){return t.params.reverse(),t}}),new s({name:"call",call:"eth_call",params:2,inputFormatter:[v.inputCallFormatter,v.inputDefaultBlockNumberFormatter],abiCoder:m}),new s({name:"estimateGas",call:"eth_estimateGas",params:1,inputFormatter:[v.inputCallFormatter],outputFormatter:u.hexToNumber}),new s({name:"submitWork",call:"eth_submitWork",params:3}),new s({name:"getWork",call:"eth_getWork",params:0}),new s({name:"getPastLogs",call:"eth_getLogs",params:1,inputFormatter:[v.inputLogFormatter],outputFormatter:v.outputLogFormatter}),new s({name:"getChainId",call:"eth_chainId",params:0,outputFormatter:u.hexToNumber}),new s({name:"requestAccounts",call:"eth_requestAccounts",params:0,outputFormatter:u.toChecksumAddress}),new s({name:"getProof",call:"eth_getProof",params:3,inputFormatter:[v.inputAddressFormatter,v.inputStorageKeysFormatter,v.inputDefaultBlockNumberFormatter],outputFormatter:v.outputProofFormatter}),new s({name:"getPendingTransactions",call:"eth_pendingTransactions",params:0,outputFormatter:v.outputTransactionFormatter}),new a({name:"subscribe",type:"eth",subscriptions:{newBlockHeaders:{subscriptionName:"newHeads",params:0,outputFormatter:v.outputBlockFormatter},pendingTransactions:{subscriptionName:"newPendingTransactions",params:0},logs:{params:1,inputFormatter:[v.inputLogFormatter],outputFormatter:v.outputLogFormatter,subscriptionHandler:function(t){t.removed?this.emit("changed",t):this.emit("data",t),n.isFunction(this.callback)&&this.callback(null,t,this)}},syncing:{params:0,outputFormatter:v.outputSyncingFormatter,subscriptionHandler:function(t){var e=this;!0!==this._isSyncing?(this._isSyncing=!0,this.emit("changed",e._isSyncing),n.isFunction(this.callback)&&this.callback(null,e._isSyncing,this),setTimeout((function(){e.emit("data",t),n.isFunction(e.callback)&&e.callback(null,t,e)}),0)):(this.emit("data",t),n.isFunction(e.callback)&&this.callback(null,t,this),clearTimeout(this._isSyncingTimeout),this._isSyncingTimeout=setTimeout((function(){t.currentBlock>t.highestBlock-200&&(e._isSyncing=!1,e.emit("changed",e._isSyncing),n.isFunction(e.callback)&&e.callback(null,e._isSyncing,e))}),500))}}}})];O.forEach((function(e){e.attachToObject(t),e.setRequestManager(t._requestManager,t.accounts),e.defaultBlock=t.defaultBlock,e.defaultAccount=t.defaultAccount,e.transactionBlockTimeout=t.transactionBlockTimeout,e.transactionConfirmationBlocks=t.transactionConfirmationBlocks,e.transactionPollingTimeout=t.transactionPollingTimeout,e.handleRevert=t.handleRevert}))};i.addProviders(E),t.exports=E},"1fec":function(t,e,r){"use strict";var n=r("da3e"),i=r("3fb5"),o=r("0184"),a=r("4e2b");function s(t,e){n.equal(e.length,24,"Invalid key length");var r=e.slice(0,8),i=e.slice(8,16),o=e.slice(16,24);this.ciphers="encrypt"===t?[a.create({type:"encrypt",key:r}),a.create({type:"decrypt",key:i}),a.create({type:"encrypt",key:o})]:[a.create({type:"decrypt",key:o}),a.create({type:"encrypt",key:i}),a.create({type:"decrypt",key:r})]}function u(t){o.call(this,t);var e=new s(this.type,this.options.key);this._edeState=e}i(u,o),t.exports=u,u.create=function(t){return new u(t)},u.prototype._update=function(t,e,r,n){var i=this._edeState;i.ciphers[0]._update(t,e,r,n),i.ciphers[1]._update(r,n,r,n),i.ciphers[2]._update(r,n,r,n)},u.prototype._pad=a.prototype._pad,u.prototype._unpad=a.prototype._unpad},2044:function(t){t.exports=JSON.parse('{"name":"petersburg","comment":"Aka constantinopleFix, removes EIP-1283, activate together with or after constantinople","eip":{"url":"https://github.com/ethereum/EIPs/pull/1716","status":"Draft"},"gasConfig":{},"gasPrices":{"netSstoreNoopGas":{"v":null,"d":"Removed along EIP-1283"},"netSstoreInitGas":{"v":null,"d":"Removed along EIP-1283"},"netSstoreCleanGas":{"v":null,"d":"Removed along EIP-1283"},"netSstoreDirtyGas":{"v":null,"d":"Removed along EIP-1283"},"netSstoreClearRefund":{"v":null,"d":"Removed along EIP-1283"},"netSstoreResetRefund":{"v":null,"d":"Removed along EIP-1283"},"netSstoreResetClearRefund":{"v":null,"d":"Removed along EIP-1283"}},"vm":{},"pow":{},"casper":{},"sharding":{}}')},"206d":function(t,e,r){(function(e,n){var i,o=r("7d2a"),a=r("9f9d"),s=r("e07b"),u=r("8707").Buffer,c=e.crypto&&e.crypto.subtle,f={sha:"SHA-1","sha-1":"SHA-1",sha1:"SHA-1",sha256:"SHA-256","sha-256":"SHA-256",sha384:"SHA-384","sha-384":"SHA-384","sha-512":"SHA-512",sha512:"SHA-512"},h=[];function l(t){if(e.process&&!e.process.browser)return Promise.resolve(!1);if(!c||!c.importKey||!c.deriveBits)return Promise.resolve(!1);if(void 0!==h[t])return h[t];i=i||u.alloc(8);var r=d(i,i,10,128,t).then((function(){return!0})).catch((function(){return!1}));return h[t]=r,r}function d(t,e,r,n,i){return c.importKey("raw",t,{name:"PBKDF2"},!1,["deriveBits"]).then((function(t){return c.deriveBits({name:"PBKDF2",salt:e,iterations:r,hash:{name:i}},t,n<<3)})).then((function(t){return u.from(t)}))}function p(t,e){t.then((function(t){n.nextTick((function(){e(null,t)}))}),(function(t){n.nextTick((function(){e(t)}))}))}t.exports=function(t,r,i,c,h,m){"function"===typeof h&&(m=h,h=void 0),h=h||"sha1";var y=f[h.toLowerCase()];if(!y||"function"!==typeof e.Promise)return n.nextTick((function(){var e;try{e=s(t,r,i,c,h)}catch(n){return m(n)}m(null,e)}));if(o(t,r,i,c),"function"!==typeof m)throw new Error("No callback provided to pbkdf2");u.isBuffer(t)||(t=u.from(t,a)),u.isBuffer(r)||(r=u.from(r,a)),p(l(y).then((function(e){return e?d(t,r,i,c,y):s(t,r,i,c,h)})),m)}}).call(this,r("c8ba"),r("4362"))},2091:function(t,e,r){var n=r("17fb"),i=r("399f"),o=r("e870"),a=function(t){return t.startsWith("int[")?"int256"+t.slice(3):"int"===t?"int256":t.startsWith("uint[")?"uint256"+t.slice(4):"uint"===t?"uint256":t.startsWith("fixed[")?"fixed128x128"+t.slice(5):"fixed"===t?"fixed128x128":t.startsWith("ufixed[")?"ufixed128x128"+t.slice(6):"ufixed"===t?"ufixed128x128":t},s=function(t){var e=/^\D+(\d+).*$/.exec(t);return e?parseInt(e[1],10):null},u=function(t){var e=/^\D+\d*\[(\d+)\]$/.exec(t);return e?parseInt(e[1],10):null},c=function(t){var e=typeof t;if("string"===e)return o.isHexStrict(t)?new i(t.replace(/0x/i,""),16):new i(t,10);if("number"===e)return new i(t);if(o.isBigNumber(t))return new i(t.toString(10));if(o.isBN(t))return t;throw new Error(t+" is not a number")},f=function(t,e,r){var n,u;if(t=a(t),"bytes"===t){if(e.replace(/^0x/i,"").length%2!==0)throw new Error("Invalid bytes characters "+e.length);return e}if("string"===t)return o.utf8ToHex(e);if("bool"===t)return e?"01":"00";if(t.startsWith("address")){if(n=r?64:40,!o.isAddress(e))throw new Error(e+" is not a valid address, or the checksum is invalid.");return o.leftPad(e.toLowerCase(),n)}if(n=s(t),t.startsWith("bytes")){if(!n)throw new Error("bytes[] not yet supported in solidity");if(r&&(n=32),n<1||n>32||n256)throw new Error("Invalid uint"+n+" size");if(u=c(e),u.bitLength()>n)throw new Error("Supplied uint exceeds width: "+n+" vs "+u.bitLength());if(u.lt(new i(0)))throw new Error("Supplied uint "+u.toString()+" is negative");return n?o.leftPad(u.toString("hex"),n/8*2):u}if(t.startsWith("int")){if(n%8||n<8||n>256)throw new Error("Invalid int"+n+" size");if(u=c(e),u.bitLength()>n)throw new Error("Supplied int exceeds width: "+n+" vs "+u.bitLength());return u.lt(new i(0))?u.toTwos(n).toString("hex"):n?o.leftPad(u.toString("hex"),n/8*2):u}throw new Error("Unsupported or invalid type: "+t)},h=function(t){if(n.isArray(t))throw new Error("Autodetection of array types is not supported.");var e,r,a,s="";if(n.isObject(t)&&(t.hasOwnProperty("v")||t.hasOwnProperty("t")||t.hasOwnProperty("value")||t.hasOwnProperty("type"))?(e=t.hasOwnProperty("t")?t.t:t.type,s=t.hasOwnProperty("v")?t.v:t.value):(e=o.toHex(t,!0),s=o.toHex(t),e.startsWith("int")||e.startsWith("uint")||(e="bytes")),!e.startsWith("int")&&!e.startsWith("uint")||"string"!==typeof s||/^(-)?0x/i.test(s)||(s=new i(s)),n.isArray(s)){if(a=u(e),a&&s.length!==a)throw new Error(e+" is not matching the given array "+JSON.stringify(s));a=s.length}return n.isArray(s)?(r=s.map((function(t){return f(e,t,a).toString("hex").replace("0x","")})),r.join("")):(r=f(e,s,a),r.toString("hex").replace("0x",""))},l=function(){var t=Array.prototype.slice.call(arguments),e=n.map(t,h);return o.sha3("0x"+e.join(""))},d=function(){return o.sha3Raw("0x"+n.map(Array.prototype.slice.call(arguments),h).join(""))};t.exports={soliditySha3:l,soliditySha3Raw:d}},"20f6":function(t,e,r){var n=e;n.der=r("cfbd"),n.pem=r("8df7")},2137:function(t,e,r){"use strict";var n=r("c3c0"),i=r("da3e");function o(t,e,r){if(!(this instanceof o))return new o(t,e,r);this.Hash=t,this.blockSize=t.blockSize/8,this.outSize=t.outSize/8,this.inner=null,this.outer=null,this._init(n.toArray(e,r))}t.exports=o,o.prototype._init=function(t){t.length>this.blockSize&&(t=(new this.Hash).update(t).digest()),i(t.length<=this.blockSize);for(var e=t.length;e>1),"0x","0x"],o=e.slice(0,6).concat(i),a=f.encode(o);return u.recover(c.keccak256(a),r)},w.prototype.hashMessage=function(t){var e=m.isHexStrict(t)?m.hexToBytes(t):t,r=n.from(e),i="Ethereum Signed Message:\n"+e.length,o=n.from(i),a=n.concat([o,r]);return c.keccak256s(a)},w.prototype.sign=function(t,e){var r=this.hashMessage(t),n=u.sign(r,e),i=u.decodeSignature(n);return{message:t,messageHash:r,v:i[0],r:i[1],s:i[2],signature:n}},w.prototype.recover=function(t,e,r){var n=[].slice.apply(arguments);return i.isObject(t)?this.recover(t.messageHash,u.encodeSignature([t.v,t.r,t.s]),!0):(r||(t=this.hashMessage(t)),n.length>=4?(r=n.slice(-1)[0],r=!!i.isBoolean(r)&&!!r,this.recover(t,u.encodeSignature(n.slice(1,4)),r)):u.recover(t,e))},w.prototype.decrypt=function(t,e,r){if(!i.isString(e))throw new Error("No password given.");var o,a,s=i.isObject(t)?t:JSON.parse(r?t.toLowerCase():t);if(3!==s.version)throw new Error("Not a valid V3 wallet");if("scrypt"===s.crypto.kdf)a=s.crypto.kdfparams,o=d(n.from(e),n.from(a.salt,"hex"),a.n,a.r,a.p,a.dklen);else{if("pbkdf2"!==s.crypto.kdf)throw new Error("Unsupported key derivation scheme");if(a=s.crypto.kdfparams,"hmac-sha256"!==a.prf)throw new Error("Unsupported parameters to PBKDF2");o=l.pbkdf2Sync(n.from(e),n.from(a.salt,"hex"),a.c,a.dklen,"sha256")}var u=n.from(s.crypto.ciphertext,"hex"),c=m.sha3(n.concat([o.slice(16,32),u])).replace("0x","");if(c!==s.crypto.mac)throw new Error("Key derivation failed - possibly wrong password");var f=l.createDecipheriv(s.crypto.cipher,o.slice(0,16),n.from(s.crypto.cipherparams.iv,"hex")),h="0x"+n.concat([f.update(u),f.final()]).toString("hex");return this.privateKeyToAccount(h)},w.prototype.encrypt=function(t,e,r){var i=this.privateKeyToAccount(t);r=r||{};var o,a=r.salt||l.randomBytes(32),s=r.iv||l.randomBytes(16),u=r.kdf||"scrypt",c={dklen:r.dklen||32,salt:a.toString("hex")};if("pbkdf2"===u)c.c=r.c||262144,c.prf="hmac-sha256",o=l.pbkdf2Sync(n.from(e),n.from(c.salt,"hex"),c.c,c.dklen,"sha256");else{if("scrypt"!==u)throw new Error("Unsupported kdf");c.n=r.n||8192,c.r=r.r||8,c.p=r.p||1,o=d(n.from(e),n.from(c.salt,"hex"),c.n,c.r,c.p,c.dklen)}var f=l.createCipheriv(r.cipher||"aes-128-ctr",o.slice(0,16),s);if(!f)throw new Error("Unsupported cipher");var h=n.concat([f.update(n.from(i.privateKey.replace("0x",""),"hex")),f.final()]),y=m.sha3(n.concat([o.slice(16,32),n.from(h,"hex")])).replace("0x","");return{version:3,id:p.v4({random:r.uuid||l.randomBytes(16)}),address:i.address.toLowerCase().replace("0x",""),crypto:{ciphertext:h.toString("hex"),cipherparams:{iv:s.toString("hex")},cipher:r.cipher||"aes-128-ctr",kdf:u,kdfparams:c,mac:y.toString("hex")}}},_.prototype._findSafeIndex=function(t){return t=t||0,i.has(this,t)?this._findSafeIndex(t+1):t},_.prototype._currentIndexes=function(){var t=Object.keys(this),e=t.map((function(t){return parseInt(t)})).filter((function(t){return t<9e20}));return e},_.prototype.create=function(t,e){for(var r=0;rp;p++)if(y=f?g(n(b=t[p])[0],b[1]):g(t[p]),y&&y instanceof c)return y;return new c(!1)}l=d.call(t)}v=l.next;while(!(b=v.call(l)).done)if(y=u(l,g,b.value,f),"object"==typeof y&&y&&y instanceof c)return y;return new c(!1)};f.stop=function(t){return new c(!0,t)}},2330:function(t,e,r){"use strict";t.exports=r("3a89")(r("18fd"))},"23cb":function(t,e,r){var n=r("a691"),i=Math.max,o=Math.min;t.exports=function(t,e){var r=n(t);return r<0?i(r+e,0):o(r,e)}},"23e7":function(t,e,r){var n=r("da84"),i=r("06cf").f,o=r("9112"),a=r("6eeb"),s=r("ce4e"),u=r("e893"),c=r("94ca");t.exports=function(t,e){var r,f,h,l,d,p,m=t.target,y=t.global,v=t.stat;if(f=y?n:v?n[m]||s(m,{}):(n[m]||{}).prototype,f)for(h in e){if(d=e[h],t.noTargetGet?(p=i(f,h),l=p&&p.value):l=f[h],r=c(y?h:m+(v?".":"#")+h,t.forced),!r&&void 0!==l){if(typeof d===typeof l)continue;u(d,l)}(t.sham||l&&l.sham)&&o(d,"sham",!0),a(f,h,d,t)}}},2416:function(t,e,r){"use strict";const n=r("97cc").Buffer,i=r("6fde");function o(){this.state=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],this.blockSize=null,this.count=0,this.squeezing=!1}o.prototype.initialize=function(t,e){for(let r=0;r<50;++r)this.state[r]=0;this.blockSize=t/8,this.count=0,this.squeezing=!1},o.prototype.absorb=function(t){for(let e=0;e>>this.count%4*8&255,this.count+=1,this.count===this.blockSize&&(i.p1600(this.state),this.count=0);return e},o.prototype.copy=function(t){for(let e=0;e<50;++e)t.state[e]=this.state[e];t.blockSize=this.blockSize,t.count=this.count,t.squeezing=this.squeezing},t.exports=o},"241c":function(t,e,r){var n=r("ca84"),i=r("7839"),o=i.concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return n(t,o)}},"24f8":function(t,e,r){var n=r("9490"),i=r("0b16"),o=t.exports;for(var a in n)n.hasOwnProperty(a)&&(o[a]=n[a]);function s(t){if("string"===typeof t&&(t=i.parse(t)),t.protocol||(t.protocol="https:"),"https:"!==t.protocol)throw new Error('Protocol "'+t.protocol+'" not supported. Expected "https:"');return t}o.request=function(t,e){return t=s(t),n.request.call(this,t,e)},o.get=function(t,e){return t=s(t),n.get.call(this,t,e)}},"25f2":function(t,e,r){var n=r("aaa4");t.exports=function(t,e){return new Promise((function(r,i){n(t,e,(function(t,e){t?i(t):r(e)}))}))}},2613:function(t){t.exports=JSON.parse('{"name":"ropsten","chainId":3,"networkId":3,"comment":"PoW test network","url":"https://github.com/ethereum/ropsten","genesis":{"hash":"0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d","timestamp":null,"gasLimit":16777216,"difficulty":1048576,"nonce":"0x0000000000000042","extraData":"0x3535353535353535353535353535353535353535353535353535353535353535","stateRoot":"0x217b0bbcfb72e2d57e28f33cb361b9983513177755dc3f33ce3e7022ed62b77b"},"hardforks":[{"name":"chainstart","block":0,"consensus":"pow","finality":null},{"name":"homestead","block":0,"consensus":"pow","finality":null},{"name":"dao","block":null,"consensus":"pow","finality":null},{"name":"tangerineWhistle","block":0,"consensus":"pow","finality":null},{"name":"spuriousDragon","block":10,"consensus":"pow","finality":null},{"name":"byzantium","block":1700000,"consensus":"pow","finality":null},{"name":"constantinople","block":4230000,"consensus":"pow","finality":null},{"name":"petersburg","block":4939394,"consensus":"pow","finality":null},{"name":"istanbul","block":6485846,"consensus":"pow","finality":null},{"name":"muirGlacier","block":7117117,"consensus":"pow","finality":null}],"bootstrapNodes":[{"ip":"52.176.7.10","port":"30303","id":"30b7ab30a01c124a6cceca36863ece12c4f5fa68e3ba9b0b51407ccc002eeed3b3102d20a88f1c1d3c3154e2449317b8ef95090e77b312d5cc39354f86d5d606","network":"Ropsten","chainId":3,"location":"US","comment":"US-Azure geth"},{"ip":"52.176.100.77","port":"30303","id":"865a63255b3bb68023b6bffd5095118fcc13e79dcf014fe4e47e065c350c7cc72af2e53eff895f11ba1bbb6a2b33271c1116ee870f266618eadfc2e78aa7349c","network":"Ropsten","chainId":3,"location":"US","comment":"US-Azure parity"},{"ip":"52.232.243.152","port":"30303","id":"6332792c4a00e3e4ee0926ed89e0d27ef985424d97b6a45bf0f23e51f0dcb5e66b875777506458aea7af6f9e4ffb69f43f3778ee73c81ed9d34c51c4b16b0b0f","network":"Ropsten","chainId":3,"location":"US","comment":"Parity"},{"ip":"192.81.208.223","port":"30303","id":"94c15d1b9e2fe7ce56e458b9a3b672ef11894ddedd0c6f247e0f1d3487f52b66208fb4aeb8179fce6e3a749ea93ed147c37976d67af557508d199d9594c35f09","network":"Ropsten","chainId":3,"location":"US","comment":"@gpip"}]}')},2626:function(t,e,r){"use strict";var n=r("d066"),i=r("9bf2"),o=r("b622"),a=r("83ab"),s=o("species");t.exports=function(t){var e=n(t),r=i.f;a&&e&&!e[s]&&r(e,s,{configurable:!0,get:function(){return this}})}},"27bf":function(t,e,r){"use strict";t.exports=a;var n=r("b19a"),i=Object.create(r("3a7c"));function o(t,e){var r=this._transformState;r.transforming=!1;var n=r.writecb;if(!n)return this.emit("error",new Error("write callback called multiple times"));r.writechunk=null,r.writecb=null,null!=e&&this.push(e),n(t);var i=this._readableState;i.reading=!1,(i.needReadable||i.length>6|192,r[o++]=63&s|128):55296==(64512&s)&&a+1>18|240,r[o++]=s>>12&63|128,r[o++]=s>>6&63|128,r[o++]=63&s|128):(r[o++]=s>>12|224,r[o++]=s>>6&63|128,r[o++]=63&s|128)}return i.arrayify(r)}function a(t){t=i.arrayify(t);var e="",r=0;while(r>7!=0){if(n>>6!=2){var o=null;if(n>>5==6)o=1;else if(n>>4==14)o=2;else if(n>>3==30)o=3;else if(n>>2==62)o=4;else{if(n>>1!=126)continue;o=5}if(r+o>t.length){for(;r>6!=2)break;if(r!=t.length)continue;return e}var a,s=n&(1<<8-o-1)-1;for(a=0;a>6!=2)break;s=s<<6|63&u}a==o?s<=65535?e+=String.fromCharCode(s):(s-=65536,e+=String.fromCharCode(55296+(s>>10&1023),56320+(1023&s))):r--}}else e+=String.fromCharCode(n)}return e}(function(t){t["current"]="",t["NFC"]="NFC",t["NFD"]="NFD",t["NFKC"]="NFKC",t["NFKD"]="NFKD"})(n=e.UnicodeNormalizationForm||(e.UnicodeNormalizationForm={})),e.toUtf8Bytes=o,e.toUtf8String=a},"2ad0":function(t,e,r){var n=r("a00b"),i=r("f5e1"),o=i;o.v1=n,o.v4=i,t.exports=o},"2aee":function(t,e,r){var n=r("4111"),i=r("d70e"),o=r("4dd0"),a=r("fda6"),s=r("a099"),u=r("8707").Buffer;function c(t){var e;"object"!==typeof t||u.isBuffer(t)||(e=t.passphrase,t=t.key),"string"===typeof t&&(t=u.from(t));var r,i,a=o(t,e),s=a.tag,c=a.data;switch(s){case"CERTIFICATE":i=n.certificate.decode(c,"der").tbsCertificate.subjectPublicKeyInfo;case"PUBLIC KEY":switch(i||(i=n.PublicKey.decode(c,"der")),r=i.algorithm.algorithm.join("."),r){case"1.2.840.113549.1.1.1":return n.RSAPublicKey.decode(i.subjectPublicKey.data,"der");case"1.2.840.10045.2.1":return i.subjectPrivateKey=i.subjectPublicKey,{type:"ec",data:i};case"1.2.840.10040.4.1":return i.algorithm.params.pub_key=n.DSAparam.decode(i.subjectPublicKey.data,"der"),{type:"dsa",data:i.algorithm.params};default:throw new Error("unknown key id "+r)}throw new Error("unknown key type "+s);case"ENCRYPTED PRIVATE KEY":c=n.EncryptedPrivateKey.decode(c,"der"),c=f(c,e);case"PRIVATE KEY":switch(i=n.PrivateKey.decode(c,"der"),r=i.algorithm.algorithm.join("."),r){case"1.2.840.113549.1.1.1":return n.RSAPrivateKey.decode(i.subjectPrivateKey,"der");case"1.2.840.10045.2.1":return{curve:i.algorithm.curve,privateKey:n.ECPrivateKey.decode(i.subjectPrivateKey,"der").privateKey};case"1.2.840.10040.4.1":return i.algorithm.params.priv_key=n.DSAparam.decode(i.subjectPrivateKey,"der"),{type:"dsa",params:i.algorithm.params};default:throw new Error("unknown key id "+r)}throw new Error("unknown key type "+s);case"RSA PUBLIC KEY":return n.RSAPublicKey.decode(c,"der");case"RSA PRIVATE KEY":return n.RSAPrivateKey.decode(c,"der");case"DSA PRIVATE KEY":return{type:"dsa",params:n.DSAPrivateKey.decode(c,"der")};case"EC PRIVATE KEY":return c=n.ECPrivateKey.decode(c,"der"),{curve:c.parameters.value,privateKey:c.privateKey};default:throw new Error("unknown key type "+s)}}function f(t,e){var r=t.algorithm.decrypt.kde.kdeparams.salt,n=parseInt(t.algorithm.decrypt.kde.kdeparams.iters.toString(),10),o=i[t.algorithm.decrypt.cipher.algo.join(".")],c=t.algorithm.decrypt.cipher.iv,f=t.subjectPrivateKey,h=parseInt(o.split("-")[1],10)/8,l=s.pbkdf2Sync(e,r,n,h,"sha1"),d=a.createDecipheriv(o,l,c),p=[];return p.push(d.update(f)),p.push(d.final()),u.concat(p)}t.exports=c,c.signature=n.signature},"2b0e":function(t,e,r){"use strict";(function(t){ +/*! + * Vue.js v2.6.11 + * (c) 2014-2019 Evan You + * Released under the MIT License. + */ +var r=Object.freeze({});function n(t){return void 0===t||null===t}function i(t){return void 0!==t&&null!==t}function o(t){return!0===t}function a(t){return!1===t}function s(t){return"string"===typeof t||"number"===typeof t||"symbol"===typeof t||"boolean"===typeof t}function u(t){return null!==t&&"object"===typeof t}var c=Object.prototype.toString;function f(t){return"[object Object]"===c.call(t)}function h(t){return"[object RegExp]"===c.call(t)}function l(t){var e=parseFloat(String(t));return e>=0&&Math.floor(e)===e&&isFinite(t)}function d(t){return i(t)&&"function"===typeof t.then&&"function"===typeof t.catch}function p(t){return null==t?"":Array.isArray(t)||f(t)&&t.toString===c?JSON.stringify(t,null,2):String(t)}function m(t){var e=parseFloat(t);return isNaN(e)?t:e}function y(t,e){for(var r=Object.create(null),n=t.split(","),i=0;i-1)return t.splice(r,1)}}var g=Object.prototype.hasOwnProperty;function w(t,e){return g.call(t,e)}function _(t){var e=Object.create(null);return function(r){var n=e[r];return n||(e[r]=t(r))}}var A=/-(\w)/g,E=_((function(t){return t.replace(A,(function(t,e){return e?e.toUpperCase():""}))})),x=_((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),M=/\B([A-Z])/g,k=_((function(t){return t.replace(M,"-$1").toLowerCase()}));function S(t,e){function r(r){var n=arguments.length;return n?n>1?t.apply(e,arguments):t.call(e,r):t.call(e)}return r._length=t.length,r}function I(t,e){return t.bind(e)}var C=Function.prototype.bind?I:S;function T(t,e){e=e||0;var r=t.length-e,n=new Array(r);while(r--)n[r]=t[r+e];return n}function U(t,e){for(var r in e)t[r]=e[r];return t}function O(t){for(var e={},r=0;r0,rt=Q&&Q.indexOf("edge/")>0,nt=(Q&&Q.indexOf("android"),Q&&/iphone|ipad|ipod|ios/.test(Q)||"ios"===X),it=(Q&&/chrome\/\d+/.test(Q),Q&&/phantomjs/.test(Q),Q&&Q.match(/firefox\/(\d+)/)),ot={}.watch,at=!1;if(Z)try{var st={};Object.defineProperty(st,"passive",{get:function(){at=!0}}),window.addEventListener("test-passive",null,st)}catch(Ea){}var ut=function(){return void 0===Y&&(Y=!Z&&!J&&"undefined"!==typeof t&&(t["process"]&&"server"===t["process"].env.VUE_ENV)),Y},ct=Z&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function ft(t){return"function"===typeof t&&/native code/.test(t.toString())}var ht,lt="undefined"!==typeof Symbol&&ft(Symbol)&&"undefined"!==typeof Reflect&&ft(Reflect.ownKeys);ht="undefined"!==typeof Set&&ft(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var dt=P,pt=0,mt=function(){this.id=pt++,this.subs=[]};mt.prototype.addSub=function(t){this.subs.push(t)},mt.prototype.removeSub=function(t){b(this.subs,t)},mt.prototype.depend=function(){mt.target&&mt.target.addDep(this)},mt.prototype.notify=function(){var t=this.subs.slice();for(var e=0,r=t.length;e-1)if(o&&!w(i,"default"))a=!1;else if(""===a||a===k(t)){var u=te(String,i.type);(u<0||s0&&(a=Se(a,(e||"")+"_"+r),ke(a[0])&&ke(c)&&(f[u]=At(c.text+a[0].text),a.shift()),f.push.apply(f,a)):s(a)?ke(c)?f[u]=At(c.text+a):""!==a&&f.push(At(a)):ke(a)&&ke(c)?f[u]=At(c.text+a.text):(o(t._isVList)&&i(a.tag)&&n(a.key)&&i(e)&&(a.key="__vlist"+e+"_"+r+"__"),f.push(a)));return f}function Ie(t){var e=t.$options.provide;e&&(t._provided="function"===typeof e?e.call(t):e)}function Ce(t){var e=Te(t.$options.inject,t);e&&(Ct(!1),Object.keys(e).forEach((function(r){Rt(t,r,e[r])})),Ct(!0))}function Te(t,e){if(t){for(var r=Object.create(null),n=lt?Reflect.ownKeys(t):Object.keys(t),i=0;i0,a=t?!!t.$stable:!o,s=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(a&&n&&n!==r&&s===n.$key&&!o&&!n.$hasNormal)return n;for(var u in i={},t)t[u]&&"$"!==u[0]&&(i[u]=Re(e,u,t[u]))}else i={};for(var c in e)c in i||(i[c]=Ne(e,c));return t&&Object.isExtensible(t)&&(t._normalized=i),V(i,"$stable",a),V(i,"$key",s),V(i,"$hasNormal",o),i}function Re(t,e,r){var n=function(){var t=arguments.length?r.apply(null,arguments):r({});return t=t&&"object"===typeof t&&!Array.isArray(t)?[t]:Me(t),t&&(0===t.length||1===t.length&&t[0].isComment)?void 0:t};return r.proxy&&Object.defineProperty(t,e,{get:n,enumerable:!0,configurable:!0}),n}function Ne(t,e){return function(){return t[e]}}function Be(t,e){var r,n,o,a,s;if(Array.isArray(t)||"string"===typeof t)for(r=new Array(t.length),n=0,o=t.length;n1?T(r):r;for(var n=T(arguments,1),i='event handler for "'+t+'"',o=0,a=r.length;odocument.createEvent("Event").timeStamp&&($r=function(){return Yr.now()})}function Wr(){var t,e;for(Gr=$r(),zr=!0,Dr.sort((function(t,e){return t.id-e.id})),Kr=0;KrKr&&Dr[r].id>t.id)r--;Dr.splice(r+1,0,t)}else Dr.push(t);Hr||(Hr=!0,pe(Wr))}}var tn=0,en=function(t,e,r,n,i){this.vm=t,i&&(t._watcher=this),t._watchers.push(this),n?(this.deep=!!n.deep,this.user=!!n.user,this.lazy=!!n.lazy,this.sync=!!n.sync,this.before=n.before):this.deep=this.user=this.lazy=this.sync=!1,this.cb=r,this.id=++tn,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new ht,this.newDepIds=new ht,this.expression="","function"===typeof e?this.getter=e:(this.getter=$(e),this.getter||(this.getter=P)),this.value=this.lazy?void 0:this.get()};en.prototype.get=function(){var t;vt(this);var e=this.vm;try{t=this.getter.call(e,e)}catch(Ea){if(!this.user)throw Ea;ee(Ea,e,'getter for watcher "'+this.expression+'"')}finally{this.deep&&ye(t),bt(),this.cleanupDeps()}return t},en.prototype.addDep=function(t){var e=t.id;this.newDepIds.has(e)||(this.newDepIds.add(e),this.newDeps.push(t),this.depIds.has(e)||t.addSub(this))},en.prototype.cleanupDeps=function(){var t=this.deps.length;while(t--){var e=this.deps[t];this.newDepIds.has(e.id)||e.removeSub(this)}var r=this.depIds;this.depIds=this.newDepIds,this.newDepIds=r,this.newDepIds.clear(),r=this.deps,this.deps=this.newDeps,this.newDeps=r,this.newDeps.length=0},en.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():Qr(this)},en.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||u(t)||this.deep){var e=this.value;if(this.value=t,this.user)try{this.cb.call(this.vm,t,e)}catch(Ea){ee(Ea,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,t,e)}}},en.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},en.prototype.depend=function(){var t=this.deps.length;while(t--)this.deps[t].depend()},en.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||b(this.vm._watchers,this);var t=this.deps.length;while(t--)this.deps[t].removeSub(this);this.active=!1}};var rn={enumerable:!0,configurable:!0,get:P,set:P};function nn(t,e,r){rn.get=function(){return this[e][r]},rn.set=function(t){this[e][r]=t},Object.defineProperty(t,r,rn)}function on(t){t._watchers=[];var e=t.$options;e.props&&an(t,e.props),e.methods&&pn(t,e.methods),e.data?sn(t):Pt(t._data={},!0),e.computed&&fn(t,e.computed),e.watch&&e.watch!==ot&&mn(t,e.watch)}function an(t,e){var r=t.$options.propsData||{},n=t._props={},i=t.$options._propKeys=[],o=!t.$parent;o||Ct(!1);var a=function(o){i.push(o);var a=Zt(o,e,r,t);Rt(n,o,a),o in t||nn(t,"_props",o)};for(var s in e)a(s);Ct(!0)}function sn(t){var e=t.$options.data;e=t._data="function"===typeof e?un(e,t):e||{},f(e)||(e={});var r=Object.keys(e),n=t.$options.props,i=(t.$options.methods,r.length);while(i--){var o=r[i];0,n&&w(n,o)||K(o)||nn(t,"_data",o)}Pt(e,!0)}function un(t,e){vt();try{return t.call(e,e)}catch(Ea){return ee(Ea,e,"data()"),{}}finally{bt()}}var cn={lazy:!0};function fn(t,e){var r=t._computedWatchers=Object.create(null),n=ut();for(var i in e){var o=e[i],a="function"===typeof o?o:o.get;0,n||(r[i]=new en(t,a||P,P,cn)),i in t||hn(t,i,o)}}function hn(t,e,r){var n=!ut();"function"===typeof r?(rn.get=n?ln(e):dn(r),rn.set=P):(rn.get=r.get?n&&!1!==r.cache?ln(e):dn(r.get):P,rn.set=r.set||P),Object.defineProperty(t,e,rn)}function ln(t){return function(){var e=this._computedWatchers&&this._computedWatchers[t];if(e)return e.dirty&&e.evaluate(),mt.target&&e.depend(),e.value}}function dn(t){return function(){return t.call(this,this)}}function pn(t,e){t.$options.props;for(var r in e)t[r]="function"!==typeof e[r]?P:C(e[r],t)}function mn(t,e){for(var r in e){var n=e[r];if(Array.isArray(n))for(var i=0;i-1)return this;var r=T(arguments,1);return r.unshift(this),"function"===typeof t.install?t.install.apply(t,r):"function"===typeof t&&t.apply(null,r),e.push(t),this}}function Mn(t){t.mixin=function(t){return this.options=Yt(this.options,t),this}}function kn(t){t.cid=0;var e=1;t.extend=function(t){t=t||{};var r=this,n=r.cid,i=t._Ctor||(t._Ctor={});if(i[n])return i[n];var o=t.name||r.options.name;var a=function(t){this._init(t)};return a.prototype=Object.create(r.prototype),a.prototype.constructor=a,a.cid=e++,a.options=Yt(r.options,t),a["super"]=r,a.options.props&&Sn(a),a.options.computed&&In(a),a.extend=r.extend,a.mixin=r.mixin,a.use=r.use,F.forEach((function(t){a[t]=r[t]})),o&&(a.options.components[o]=a),a.superOptions=r.options,a.extendOptions=t,a.sealedOptions=U({},a.options),i[n]=a,a}}function Sn(t){var e=t.options.props;for(var r in e)nn(t.prototype,"_props",r)}function In(t){var e=t.options.computed;for(var r in e)hn(t.prototype,r,e[r])}function Cn(t){F.forEach((function(e){t[e]=function(t,r){return r?("component"===e&&f(r)&&(r.name=r.name||t,r=this.options._base.extend(r)),"directive"===e&&"function"===typeof r&&(r={bind:r,update:r}),this.options[e+"s"][t]=r,r):this.options[e+"s"][t]}}))}function Tn(t){return t&&(t.Ctor.options.name||t.tag)}function Un(t,e){return Array.isArray(t)?t.indexOf(e)>-1:"string"===typeof t?t.split(",").indexOf(e)>-1:!!h(t)&&t.test(e)}function On(t,e){var r=t.cache,n=t.keys,i=t._vnode;for(var o in r){var a=r[o];if(a){var s=Tn(a.componentOptions);s&&!e(s)&&Pn(r,o,n,i)}}}function Pn(t,e,r,n){var i=t[e];!i||n&&i.tag===n.tag||i.componentInstance.$destroy(),t[e]=null,b(r,e)}gn(En),vn(En),Ir(En),Or(En),vr(En);var Rn=[String,RegExp,Array],Nn={name:"keep-alive",abstract:!0,props:{include:Rn,exclude:Rn,max:[String,Number]},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var t in this.cache)Pn(this.cache,t,this.keys)},mounted:function(){var t=this;this.$watch("include",(function(e){On(t,(function(t){return Un(e,t)}))})),this.$watch("exclude",(function(e){On(t,(function(t){return!Un(e,t)}))}))},render:function(){var t=this.$slots.default,e=Ar(t),r=e&&e.componentOptions;if(r){var n=Tn(r),i=this,o=i.include,a=i.exclude;if(o&&(!n||!Un(o,n))||a&&n&&Un(a,n))return e;var s=this,u=s.cache,c=s.keys,f=null==e.key?r.Ctor.cid+(r.tag?"::"+r.tag:""):e.key;u[f]?(e.componentInstance=u[f].componentInstance,b(c,f),c.push(f)):(u[f]=e,c.push(f),this.max&&c.length>parseInt(this.max)&&Pn(u,c[0],c,this._vnode)),e.data.keepAlive=!0}return e||t&&t[0]}},Bn={KeepAlive:Nn};function jn(t){var e={get:function(){return H}};Object.defineProperty(t,"config",e),t.util={warn:dt,extend:U,mergeOptions:Yt,defineReactive:Rt},t.set=Nt,t.delete=Bt,t.nextTick=pe,t.observable=function(t){return Pt(t),t},t.options=Object.create(null),F.forEach((function(e){t.options[e+"s"]=Object.create(null)})),t.options._base=t,U(t.options.components,Bn),xn(t),Mn(t),kn(t),Cn(t)}jn(En),Object.defineProperty(En.prototype,"$isServer",{get:ut}),Object.defineProperty(En.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(En,"FunctionalRenderContext",{value:Je}),En.version="2.6.11";var Ln=y("style,class"),Dn=y("input,textarea,option,select,progress"),Fn=function(t,e,r){return"value"===r&&Dn(t)&&"button"!==e||"selected"===r&&"option"===t||"checked"===r&&"input"===t||"muted"===r&&"video"===t},qn=y("contenteditable,draggable,spellcheck"),Hn=y("events,caret,typing,plaintext-only"),zn=function(t,e){return Yn(e)||"false"===e?"false":"contenteditable"===t&&Hn(e)?e:"true"},Kn=y("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),Vn="http://www.w3.org/1999/xlink",Gn=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},$n=function(t){return Gn(t)?t.slice(6,t.length):""},Yn=function(t){return null==t||!1===t};function Wn(t){var e=t.data,r=t,n=t;while(i(n.componentInstance))n=n.componentInstance._vnode,n&&n.data&&(e=Zn(n.data,e));while(i(r=r.parent))r&&r.data&&(e=Zn(e,r.data));return Jn(e.staticClass,e.class)}function Zn(t,e){return{staticClass:Xn(t.staticClass,e.staticClass),class:i(t.class)?[t.class,e.class]:e.class}}function Jn(t,e){return i(t)||i(e)?Xn(t,Qn(e)):""}function Xn(t,e){return t?e?t+" "+e:t:e||""}function Qn(t){return Array.isArray(t)?ti(t):u(t)?ei(t):"string"===typeof t?t:""}function ti(t){for(var e,r="",n=0,o=t.length;n-1?si[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:si[t]=/HTMLUnknownElement/.test(e.toString())}var ci=y("text,number,password,search,email,tel,url");function fi(t){if("string"===typeof t){var e=document.querySelector(t);return e||document.createElement("div")}return t}function hi(t,e){var r=document.createElement(t);return"select"!==t?r:(e.data&&e.data.attrs&&void 0!==e.data.attrs.multiple&&r.setAttribute("multiple","multiple"),r)}function li(t,e){return document.createElementNS(ri[t],e)}function di(t){return document.createTextNode(t)}function pi(t){return document.createComment(t)}function mi(t,e,r){t.insertBefore(e,r)}function yi(t,e){t.removeChild(e)}function vi(t,e){t.appendChild(e)}function bi(t){return t.parentNode}function gi(t){return t.nextSibling}function wi(t){return t.tagName}function _i(t,e){t.textContent=e}function Ai(t,e){t.setAttribute(e,"")}var Ei=Object.freeze({createElement:hi,createElementNS:li,createTextNode:di,createComment:pi,insertBefore:mi,removeChild:yi,appendChild:vi,parentNode:bi,nextSibling:gi,tagName:wi,setTextContent:_i,setStyleScope:Ai}),xi={create:function(t,e){Mi(e)},update:function(t,e){t.data.ref!==e.data.ref&&(Mi(t,!0),Mi(e))},destroy:function(t){Mi(t,!0)}};function Mi(t,e){var r=t.data.ref;if(i(r)){var n=t.context,o=t.componentInstance||t.elm,a=n.$refs;e?Array.isArray(a[r])?b(a[r],o):a[r]===o&&(a[r]=void 0):t.data.refInFor?Array.isArray(a[r])?a[r].indexOf(o)<0&&a[r].push(o):a[r]=[o]:a[r]=o}}var ki=new gt("",{},[]),Si=["create","activate","update","remove","destroy"];function Ii(t,e){return t.key===e.key&&(t.tag===e.tag&&t.isComment===e.isComment&&i(t.data)===i(e.data)&&Ci(t,e)||o(t.isAsyncPlaceholder)&&t.asyncFactory===e.asyncFactory&&n(e.asyncFactory.error))}function Ci(t,e){if("input"!==t.tag)return!0;var r,n=i(r=t.data)&&i(r=r.attrs)&&r.type,o=i(r=e.data)&&i(r=r.attrs)&&r.type;return n===o||ci(n)&&ci(o)}function Ti(t,e,r){var n,o,a={};for(n=e;n<=r;++n)o=t[n].key,i(o)&&(a[o]=n);return a}function Ui(t){var e,r,a={},u=t.modules,c=t.nodeOps;for(e=0;em?(h=n(r[b+1])?null:r[b+1].elm,E(t,h,r,p,b,o)):p>b&&M(e,l,m)}function I(t,e,r,n){for(var o=r;o-1?Hi(t,e,r):Kn(e)?Yn(r)?t.removeAttribute(e):(r="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,r)):qn(e)?t.setAttribute(e,zn(e,r)):Gn(e)?Yn(r)?t.removeAttributeNS(Vn,$n(e)):t.setAttributeNS(Vn,e,r):Hi(t,e,r)}function Hi(t,e,r){if(Yn(r))t.removeAttribute(e);else{if(tt&&!et&&"TEXTAREA"===t.tagName&&"placeholder"===e&&""!==r&&!t.__ieph){var n=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",n)};t.addEventListener("input",n),t.__ieph=!0}t.setAttribute(e,r)}}var zi={create:Fi,update:Fi};function Ki(t,e){var r=e.elm,o=e.data,a=t.data;if(!(n(o.staticClass)&&n(o.class)&&(n(a)||n(a.staticClass)&&n(a.class)))){var s=Wn(e),u=r._transitionClasses;i(u)&&(s=Xn(s,Qn(u))),s!==r._prevClass&&(r.setAttribute("class",s),r._prevClass=s)}}var Vi,Gi={create:Ki,update:Ki},$i="__r",Yi="__c";function Wi(t){if(i(t[$i])){var e=tt?"change":"input";t[e]=[].concat(t[$i],t[e]||[]),delete t[$i]}i(t[Yi])&&(t.change=[].concat(t[Yi],t.change||[]),delete t[Yi])}function Zi(t,e,r){var n=Vi;return function i(){var o=e.apply(null,arguments);null!==o&&Qi(t,i,r,n)}}var Ji=ae&&!(it&&Number(it[1])<=53);function Xi(t,e,r,n){if(Ji){var i=Gr,o=e;e=o._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=i||t.timeStamp<=0||t.target.ownerDocument!==document)return o.apply(this,arguments)}}Vi.addEventListener(t,e,at?{capture:r,passive:n}:r)}function Qi(t,e,r,n){(n||Vi).removeEventListener(t,e._wrapper||e,r)}function to(t,e){if(!n(t.data.on)||!n(e.data.on)){var r=e.data.on||{},i=t.data.on||{};Vi=e.elm,Wi(r),we(r,i,Xi,Qi,Zi,e.context),Vi=void 0}}var eo,ro={create:to,update:to};function no(t,e){if(!n(t.data.domProps)||!n(e.data.domProps)){var r,o,a=e.elm,s=t.data.domProps||{},u=e.data.domProps||{};for(r in i(u.__ob__)&&(u=e.data.domProps=U({},u)),s)r in u||(a[r]="");for(r in u){if(o=u[r],"textContent"===r||"innerHTML"===r){if(e.children&&(e.children.length=0),o===s[r])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===r&&"PROGRESS"!==a.tagName){a._value=o;var c=n(o)?"":String(o);io(a,c)&&(a.value=c)}else if("innerHTML"===r&&ii(a.tagName)&&n(a.innerHTML)){eo=eo||document.createElement("div"),eo.innerHTML=""+o+"";var f=eo.firstChild;while(a.firstChild)a.removeChild(a.firstChild);while(f.firstChild)a.appendChild(f.firstChild)}else if(o!==s[r])try{a[r]=o}catch(Ea){}}}}function io(t,e){return!t.composing&&("OPTION"===t.tagName||oo(t,e)||ao(t,e))}function oo(t,e){var r=!0;try{r=document.activeElement!==t}catch(Ea){}return r&&t.value!==e}function ao(t,e){var r=t.value,n=t._vModifiers;if(i(n)){if(n.number)return m(r)!==m(e);if(n.trim)return r.trim()!==e.trim()}return r!==e}var so={create:no,update:no},uo=_((function(t){var e={},r=/;(?![^(]*\))/g,n=/:(.+)/;return t.split(r).forEach((function(t){if(t){var r=t.split(n);r.length>1&&(e[r[0].trim()]=r[1].trim())}})),e}));function co(t){var e=fo(t.style);return t.staticStyle?U(t.staticStyle,e):e}function fo(t){return Array.isArray(t)?O(t):"string"===typeof t?uo(t):t}function ho(t,e){var r,n={};if(e){var i=t;while(i.componentInstance)i=i.componentInstance._vnode,i&&i.data&&(r=co(i.data))&&U(n,r)}(r=co(t.data))&&U(n,r);var o=t;while(o=o.parent)o.data&&(r=co(o.data))&&U(n,r);return n}var lo,po=/^--/,mo=/\s*!important$/,yo=function(t,e,r){if(po.test(e))t.style.setProperty(e,r);else if(mo.test(r))t.style.setProperty(k(e),r.replace(mo,""),"important");else{var n=bo(e);if(Array.isArray(r))for(var i=0,o=r.length;i-1?e.split(_o).forEach((function(e){return t.classList.add(e)})):t.classList.add(e);else{var r=" "+(t.getAttribute("class")||"")+" ";r.indexOf(" "+e+" ")<0&&t.setAttribute("class",(r+e).trim())}}function Eo(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(_o).forEach((function(e){return t.classList.remove(e)})):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{var r=" "+(t.getAttribute("class")||"")+" ",n=" "+e+" ";while(r.indexOf(n)>=0)r=r.replace(n," ");r=r.trim(),r?t.setAttribute("class",r):t.removeAttribute("class")}}function xo(t){if(t){if("object"===typeof t){var e={};return!1!==t.css&&U(e,Mo(t.name||"v")),U(e,t),e}return"string"===typeof t?Mo(t):void 0}}var Mo=_((function(t){return{enterClass:t+"-enter",enterToClass:t+"-enter-to",enterActiveClass:t+"-enter-active",leaveClass:t+"-leave",leaveToClass:t+"-leave-to",leaveActiveClass:t+"-leave-active"}})),ko=Z&&!et,So="transition",Io="animation",Co="transition",To="transitionend",Uo="animation",Oo="animationend";ko&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(Co="WebkitTransition",To="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Uo="WebkitAnimation",Oo="webkitAnimationEnd"));var Po=Z?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function Ro(t){Po((function(){Po(t)}))}function No(t,e){var r=t._transitionClasses||(t._transitionClasses=[]);r.indexOf(e)<0&&(r.push(e),Ao(t,e))}function Bo(t,e){t._transitionClasses&&b(t._transitionClasses,e),Eo(t,e)}function jo(t,e,r){var n=Do(t,e),i=n.type,o=n.timeout,a=n.propCount;if(!i)return r();var s=i===So?To:Oo,u=0,c=function(){t.removeEventListener(s,f),r()},f=function(e){e.target===t&&++u>=a&&c()};setTimeout((function(){u0&&(r=So,f=a,h=o.length):e===Io?c>0&&(r=Io,f=c,h=u.length):(f=Math.max(a,c),r=f>0?a>c?So:Io:null,h=r?r===So?o.length:u.length:0);var l=r===So&&Lo.test(n[Co+"Property"]);return{type:r,timeout:f,propCount:h,hasTransform:l}}function Fo(t,e){while(t.length1}function Go(t,e){!0!==e.data.show&&Ho(e)}var $o=Z?{create:Go,activate:Go,remove:function(t,e){!0!==t.data.show?zo(t,e):e()}}:{},Yo=[zi,Gi,ro,so,wo,$o],Wo=Yo.concat(Di),Zo=Ui({nodeOps:Ei,modules:Wo});et&&document.addEventListener("selectionchange",(function(){var t=document.activeElement;t&&t.vmodel&&ia(t,"input")}));var Jo={inserted:function(t,e,r,n){"select"===r.tag?(n.elm&&!n.elm._vOptions?_e(r,"postpatch",(function(){Jo.componentUpdated(t,e,r)})):Xo(t,e,r.context),t._vOptions=[].map.call(t.options,ea)):("textarea"===r.tag||ci(t.type))&&(t._vModifiers=e.modifiers,e.modifiers.lazy||(t.addEventListener("compositionstart",ra),t.addEventListener("compositionend",na),t.addEventListener("change",na),et&&(t.vmodel=!0)))},componentUpdated:function(t,e,r){if("select"===r.tag){Xo(t,e,r.context);var n=t._vOptions,i=t._vOptions=[].map.call(t.options,ea);if(i.some((function(t,e){return!B(t,n[e])}))){var o=t.multiple?e.value.some((function(t){return ta(t,i)})):e.value!==e.oldValue&&ta(e.value,i);o&&ia(t,"change")}}}};function Xo(t,e,r){Qo(t,e,r),(tt||rt)&&setTimeout((function(){Qo(t,e,r)}),0)}function Qo(t,e,r){var n=e.value,i=t.multiple;if(!i||Array.isArray(n)){for(var o,a,s=0,u=t.options.length;s-1,a.selected!==o&&(a.selected=o);else if(B(ea(a),n))return void(t.selectedIndex!==s&&(t.selectedIndex=s));i||(t.selectedIndex=-1)}}function ta(t,e){return e.every((function(e){return!B(e,t)}))}function ea(t){return"_value"in t?t._value:t.value}function ra(t){t.target.composing=!0}function na(t){t.target.composing&&(t.target.composing=!1,ia(t.target,"input"))}function ia(t,e){var r=document.createEvent("HTMLEvents");r.initEvent(e,!0,!0),t.dispatchEvent(r)}function oa(t){return!t.componentInstance||t.data&&t.data.transition?t:oa(t.componentInstance._vnode)}var aa={bind:function(t,e,r){var n=e.value;r=oa(r);var i=r.data&&r.data.transition,o=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;n&&i?(r.data.show=!0,Ho(r,(function(){t.style.display=o}))):t.style.display=n?o:"none"},update:function(t,e,r){var n=e.value,i=e.oldValue;if(!n!==!i){r=oa(r);var o=r.data&&r.data.transition;o?(r.data.show=!0,n?Ho(r,(function(){t.style.display=t.__vOriginalDisplay})):zo(r,(function(){t.style.display="none"}))):t.style.display=n?t.__vOriginalDisplay:"none"}},unbind:function(t,e,r,n,i){i||(t.style.display=t.__vOriginalDisplay)}},sa={model:Jo,show:aa},ua={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function ca(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?ca(Ar(e.children)):t}function fa(t){var e={},r=t.$options;for(var n in r.propsData)e[n]=t[n];var i=r._parentListeners;for(var o in i)e[E(o)]=i[o];return e}function ha(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}function la(t){while(t=t.parent)if(t.data.transition)return!0}function da(t,e){return e.key===t.key&&e.tag===t.tag}var pa=function(t){return t.tag||_r(t)},ma=function(t){return"show"===t.name},ya={name:"transition",props:ua,abstract:!0,render:function(t){var e=this,r=this.$slots.default;if(r&&(r=r.filter(pa),r.length)){0;var n=this.mode;0;var i=r[0];if(la(this.$vnode))return i;var o=ca(i);if(!o)return i;if(this._leaving)return ha(t,i);var a="__transition-"+this._uid+"-";o.key=null==o.key?o.isComment?a+"comment":a+o.tag:s(o.key)?0===String(o.key).indexOf(a)?o.key:a+o.key:o.key;var u=(o.data||(o.data={})).transition=fa(this),c=this._vnode,f=ca(c);if(o.data.directives&&o.data.directives.some(ma)&&(o.data.show=!0),f&&f.data&&!da(o,f)&&!_r(f)&&(!f.componentInstance||!f.componentInstance._vnode.isComment)){var h=f.data.transition=U({},u);if("out-in"===n)return this._leaving=!0,_e(h,"afterLeave",(function(){e._leaving=!1,e.$forceUpdate()})),ha(t,i);if("in-out"===n){if(_r(o))return c;var l,d=function(){l()};_e(u,"afterEnter",d),_e(u,"enterCancelled",d),_e(h,"delayLeave",(function(t){l=t}))}}return i}}},va=U({tag:String,moveClass:String},ua);delete va.mode;var ba={props:va,beforeMount:function(){var t=this,e=this._update;this._update=function(r,n){var i=Tr(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,i(),e.call(t,r,n)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",r=Object.create(null),n=this.prevChildren=this.children,i=this.$slots.default||[],o=this.children=[],a=fa(this),s=0;s=0;i--){var s=n(o[i]);r=n(new t(r+s,"hex"))}}return"0x"+r}function a(t){return t?i.toUnicode(t,{useStd3ASCII:!0,transitional:!1}):t}e.hash=o,e.normalize=a}).call(this,r("b639").Buffer)},"2c63":function(t,e,r){t.exports=r("dc14")},"2cf4":function(t,e,r){var n,i,o,a=r("da84"),s=r("d039"),u=r("c6b6"),c=r("0366"),f=r("1be4"),h=r("cc12"),l=r("1cdc"),d=a.location,p=a.setImmediate,m=a.clearImmediate,y=a.process,v=a.MessageChannel,b=a.Dispatch,g=0,w={},_="onreadystatechange",A=function(t){if(w.hasOwnProperty(t)){var e=w[t];delete w[t],e()}},E=function(t){return function(){A(t)}},x=function(t){A(t.data)},M=function(t){a.postMessage(t+"",d.protocol+"//"+d.host)};p&&m||(p=function(t){var e=[],r=1;while(arguments.length>r)e.push(arguments[r++]);return w[++g]=function(){("function"==typeof t?t:Function(t)).apply(void 0,e)},n(g),g},m=function(t){delete w[t]},"process"==u(y)?n=function(t){y.nextTick(E(t))}:b&&b.now?n=function(t){b.now(E(t))}:v&&!l?(i=new v,o=i.port2,i.port1.onmessage=x,n=c(o.postMessage,o,1)):!a.addEventListener||"function"!=typeof postMessage||a.importScripts||s(M)?n=_ in h("script")?function(t){f.appendChild(h("script"))[_]=function(){f.removeChild(this),A(t)}}:function(t){setTimeout(E(t),0)}:(n=M,a.addEventListener("message",x,!1))),t.exports={set:p,clear:m}},"2d00":function(t,e,r){var n,i,o=r("da84"),a=r("342f"),s=o.process,u=s&&s.versions,c=u&&u.v8;c?(n=c.split("."),i=n[0]+n[1]):a&&(n=a.match(/Edge\/(\d+)/),(!n||n[1]>=74)&&(n=a.match(/Chrome\/(\d+)/),n&&(i=n[1]))),t.exports=i&&+i},"2f62":function(t,e,r){"use strict";(function(t){ +/** + * vuex v3.1.2 + * (c) 2019 Evan You + * @license MIT + */ +function r(t){var e=Number(t.version.split(".")[0]);if(e>=2)t.mixin({beforeCreate:n});else{var r=t.prototype._init;t.prototype._init=function(t){void 0===t&&(t={}),t.init=t.init?[n].concat(t.init):n,r.call(this,t)}}function n(){var t=this.$options;t.store?this.$store="function"===typeof t.store?t.store():t.store:t.parent&&t.parent.$store&&(this.$store=t.parent.$store)}}var n="undefined"!==typeof window?window:"undefined"!==typeof t?t:{},i=n.__VUE_DEVTOOLS_GLOBAL_HOOK__;function o(t){i&&(t._devtoolHook=i,i.emit("vuex:init",t),i.on("vuex:travel-to-state",(function(e){t.replaceState(e)})),t.subscribe((function(t,e){i.emit("vuex:mutation",t,e)})))}function a(t,e){Object.keys(t).forEach((function(r){return e(t[r],r)}))}function s(t){return null!==t&&"object"===typeof t}function u(t){return t&&"function"===typeof t.then}function c(t,e){return function(){return t(e)}}var f=function(t,e){this.runtime=e,this._children=Object.create(null),this._rawModule=t;var r=t.state;this.state=("function"===typeof r?r():r)||{}},h={namespaced:{configurable:!0}};h.namespaced.get=function(){return!!this._rawModule.namespaced},f.prototype.addChild=function(t,e){this._children[t]=e},f.prototype.removeChild=function(t){delete this._children[t]},f.prototype.getChild=function(t){return this._children[t]},f.prototype.update=function(t){this._rawModule.namespaced=t.namespaced,t.actions&&(this._rawModule.actions=t.actions),t.mutations&&(this._rawModule.mutations=t.mutations),t.getters&&(this._rawModule.getters=t.getters)},f.prototype.forEachChild=function(t){a(this._children,t)},f.prototype.forEachGetter=function(t){this._rawModule.getters&&a(this._rawModule.getters,t)},f.prototype.forEachAction=function(t){this._rawModule.actions&&a(this._rawModule.actions,t)},f.prototype.forEachMutation=function(t){this._rawModule.mutations&&a(this._rawModule.mutations,t)},Object.defineProperties(f.prototype,h);var l=function(t){this.register([],t,!1)};function d(t,e,r){if(e.update(r),r.modules)for(var n in r.modules){if(!e.getChild(n))return void 0;d(t.concat(n),e.getChild(n),r.modules[n])}}l.prototype.get=function(t){return t.reduce((function(t,e){return t.getChild(e)}),this.root)},l.prototype.getNamespace=function(t){var e=this.root;return t.reduce((function(t,r){return e=e.getChild(r),t+(e.namespaced?r+"/":"")}),"")},l.prototype.update=function(t){d([],this.root,t)},l.prototype.register=function(t,e,r){var n=this;void 0===r&&(r=!0);var i=new f(e,r);if(0===t.length)this.root=i;else{var o=this.get(t.slice(0,-1));o.addChild(t[t.length-1],i)}e.modules&&a(e.modules,(function(e,i){n.register(t.concat(i),e,r)}))},l.prototype.unregister=function(t){var e=this.get(t.slice(0,-1)),r=t[t.length-1];e.getChild(r).runtime&&e.removeChild(r)};var p;var m=function(t){var e=this;void 0===t&&(t={}),!p&&"undefined"!==typeof window&&window.Vue&&C(window.Vue);var r=t.plugins;void 0===r&&(r=[]);var n=t.strict;void 0===n&&(n=!1),this._committing=!1,this._actions=Object.create(null),this._actionSubscribers=[],this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new l(t),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._watcherVM=new p,this._makeLocalGettersCache=Object.create(null);var i=this,a=this,s=a.dispatch,u=a.commit;this.dispatch=function(t,e){return s.call(i,t,e)},this.commit=function(t,e,r){return u.call(i,t,e,r)},this.strict=n;var c=this._modules.root.state;w(this,c,[],this._modules.root),g(this,c),r.forEach((function(t){return t(e)}));var f=void 0!==t.devtools?t.devtools:p.config.devtools;f&&o(this)},y={state:{configurable:!0}};function v(t,e){return e.indexOf(t)<0&&e.push(t),function(){var r=e.indexOf(t);r>-1&&e.splice(r,1)}}function b(t,e){t._actions=Object.create(null),t._mutations=Object.create(null),t._wrappedGetters=Object.create(null),t._modulesNamespaceMap=Object.create(null);var r=t.state;w(t,r,[],t._modules.root,!0),g(t,r,e)}function g(t,e,r){var n=t._vm;t.getters={},t._makeLocalGettersCache=Object.create(null);var i=t._wrappedGetters,o={};a(i,(function(e,r){o[r]=c(e,t),Object.defineProperty(t.getters,r,{get:function(){return t._vm[r]},enumerable:!0})}));var s=p.config.silent;p.config.silent=!0,t._vm=new p({data:{$$state:e},computed:o}),p.config.silent=s,t.strict&&k(t),n&&(r&&t._withCommit((function(){n._data.$$state=null})),p.nextTick((function(){return n.$destroy()})))}function w(t,e,r,n,i){var o=!r.length,a=t._modules.getNamespace(r);if(n.namespaced&&(t._modulesNamespaceMap[a],t._modulesNamespaceMap[a]=n),!o&&!i){var s=S(e,r.slice(0,-1)),u=r[r.length-1];t._withCommit((function(){p.set(s,u,n.state)}))}var c=n.context=_(t,a,r);n.forEachMutation((function(e,r){var n=a+r;E(t,n,e,c)})),n.forEachAction((function(e,r){var n=e.root?r:a+r,i=e.handler||e;x(t,n,i,c)})),n.forEachGetter((function(e,r){var n=a+r;M(t,n,e,c)})),n.forEachChild((function(n,o){w(t,e,r.concat(o),n,i)}))}function _(t,e,r){var n=""===e,i={dispatch:n?t.dispatch:function(r,n,i){var o=I(r,n,i),a=o.payload,s=o.options,u=o.type;return s&&s.root||(u=e+u),t.dispatch(u,a)},commit:n?t.commit:function(r,n,i){var o=I(r,n,i),a=o.payload,s=o.options,u=o.type;s&&s.root||(u=e+u),t.commit(u,a,s)}};return Object.defineProperties(i,{getters:{get:n?function(){return t.getters}:function(){return A(t,e)}},state:{get:function(){return S(t.state,r)}}}),i}function A(t,e){if(!t._makeLocalGettersCache[e]){var r={},n=e.length;Object.keys(t.getters).forEach((function(i){if(i.slice(0,n)===e){var o=i.slice(n);Object.defineProperty(r,o,{get:function(){return t.getters[i]},enumerable:!0})}})),t._makeLocalGettersCache[e]=r}return t._makeLocalGettersCache[e]}function E(t,e,r,n){var i=t._mutations[e]||(t._mutations[e]=[]);i.push((function(e){r.call(t,n.state,e)}))}function x(t,e,r,n){var i=t._actions[e]||(t._actions[e]=[]);i.push((function(e){var i=r.call(t,{dispatch:n.dispatch,commit:n.commit,getters:n.getters,state:n.state,rootGetters:t.getters,rootState:t.state},e);return u(i)||(i=Promise.resolve(i)),t._devtoolHook?i.catch((function(e){throw t._devtoolHook.emit("vuex:error",e),e})):i}))}function M(t,e,r,n){t._wrappedGetters[e]||(t._wrappedGetters[e]=function(t){return r(n.state,n.getters,t.state,t.getters)})}function k(t){t._vm.$watch((function(){return this._data.$$state}),(function(){0}),{deep:!0,sync:!0})}function S(t,e){return e.length?e.reduce((function(t,e){return t[e]}),t):t}function I(t,e,r){return s(t)&&t.type&&(r=e,e=t,t=t.type),{type:t,payload:e,options:r}}function C(t){p&&t===p||(p=t,r(p))}y.state.get=function(){return this._vm._data.$$state},y.state.set=function(t){0},m.prototype.commit=function(t,e,r){var n=this,i=I(t,e,r),o=i.type,a=i.payload,s=(i.options,{type:o,payload:a}),u=this._mutations[o];u&&(this._withCommit((function(){u.forEach((function(t){t(a)}))})),this._subscribers.forEach((function(t){return t(s,n.state)})))},m.prototype.dispatch=function(t,e){var r=this,n=I(t,e),i=n.type,o=n.payload,a={type:i,payload:o},s=this._actions[i];if(s){try{this._actionSubscribers.filter((function(t){return t.before})).forEach((function(t){return t.before(a,r.state)}))}catch(c){0}var u=s.length>1?Promise.all(s.map((function(t){return t(o)}))):s[0](o);return u.then((function(t){try{r._actionSubscribers.filter((function(t){return t.after})).forEach((function(t){return t.after(a,r.state)}))}catch(c){0}return t}))}},m.prototype.subscribe=function(t){return v(t,this._subscribers)},m.prototype.subscribeAction=function(t){var e="function"===typeof t?{before:t}:t;return v(e,this._actionSubscribers)},m.prototype.watch=function(t,e,r){var n=this;return this._watcherVM.$watch((function(){return t(n.state,n.getters)}),e,r)},m.prototype.replaceState=function(t){var e=this;this._withCommit((function(){e._vm._data.$$state=t}))},m.prototype.registerModule=function(t,e,r){void 0===r&&(r={}),"string"===typeof t&&(t=[t]),this._modules.register(t,e),w(this,this.state,t,this._modules.get(t),r.preserveState),g(this,this.state)},m.prototype.unregisterModule=function(t){var e=this;"string"===typeof t&&(t=[t]),this._modules.unregister(t),this._withCommit((function(){var r=S(e.state,t.slice(0,-1));p.delete(r,t[t.length-1])})),b(this)},m.prototype.hotUpdate=function(t){this._modules.update(t),b(this,!0)},m.prototype._withCommit=function(t){var e=this._committing;this._committing=!0,t(),this._committing=e},Object.defineProperties(m.prototype,y);var T=j((function(t,e){var r={};return N(e).forEach((function(e){var n=e.key,i=e.val;r[n]=function(){var e=this.$store.state,r=this.$store.getters;if(t){var n=L(this.$store,"mapState",t);if(!n)return;e=n.context.state,r=n.context.getters}return"function"===typeof i?i.call(this,e,r):e[i]},r[n].vuex=!0})),r})),U=j((function(t,e){var r={};return N(e).forEach((function(e){var n=e.key,i=e.val;r[n]=function(){var e=[],r=arguments.length;while(r--)e[r]=arguments[r];var n=this.$store.commit;if(t){var o=L(this.$store,"mapMutations",t);if(!o)return;n=o.context.commit}return"function"===typeof i?i.apply(this,[n].concat(e)):n.apply(this.$store,[i].concat(e))}})),r})),O=j((function(t,e){var r={};return N(e).forEach((function(e){var n=e.key,i=e.val;i=t+i,r[n]=function(){if(!t||L(this.$store,"mapGetters",t))return this.$store.getters[i]},r[n].vuex=!0})),r})),P=j((function(t,e){var r={};return N(e).forEach((function(e){var n=e.key,i=e.val;r[n]=function(){var e=[],r=arguments.length;while(r--)e[r]=arguments[r];var n=this.$store.dispatch;if(t){var o=L(this.$store,"mapActions",t);if(!o)return;n=o.context.dispatch}return"function"===typeof i?i.apply(this,[n].concat(e)):n.apply(this.$store,[i].concat(e))}})),r})),R=function(t){return{mapState:T.bind(null,t),mapGetters:O.bind(null,t),mapMutations:U.bind(null,t),mapActions:P.bind(null,t)}};function N(t){return B(t)?Array.isArray(t)?t.map((function(t){return{key:t,val:t}})):Object.keys(t).map((function(e){return{key:e,val:t[e]}})):[]}function B(t){return Array.isArray(t)||s(t)}function j(t){return function(e,r){return"string"!==typeof e?(r=e,e=""):"/"!==e.charAt(e.length-1)&&(e+="/"),t(e,r)}}function L(t,e,r){var n=t._modulesNamespaceMap[r];return n}var D={Store:m,install:C,version:"3.1.2",mapState:T,mapMutations:U,mapGetters:O,mapActions:P,createNamespacedHelpers:R};e["a"]=D}).call(this,r("c8ba"))},"2fc8":function(t,e,r){"use strict";function n(){if("undefined"===typeof window.Promise)throw new Error("any-promise browser requires a polyfill or explicit registration e.g: require('any-promise/register/bluebird')");return{Promise:window.Promise,implementation:"window.Promise"}}t.exports=r("78ae")(window,n)},"2fd2":function(t,e,r){"use strict";(function(t){Object.defineProperty(e,"__esModule",{value:!0});var n=r("f654"),i=r("9a12"),o=r("a3ca"),a=r("40c9");e.defineProperties=function(e,r,s){if(e.raw=[],e._fields=[],e.toJSON=function(t){if(void 0===t&&(t=!1),t){var r={};return e._fields.forEach((function(t){r[t]="0x"+e[t].toString("hex")})),r}return a.baToJSON(e.raw)},e.serialize=function(){return o.encode(e.raw)},r.forEach((function(r,i){function o(){return e.raw[i]}function s(o){o=a.toBuffer(o),"00"!==o.toString("hex")||r.allowZero||(o=t.allocUnsafe(0)),r.allowLess&&r.length?(o=a.stripZeros(o),n(r.length>=o.length,"The field "+r.name+" must not have more "+r.length+" bytes")):r.allowZero&&0===o.length||!r.length||n(r.length===o.length,"The field "+r.name+" must have byte length of "+r.length),e.raw[i]=o}e._fields.push(r.name),Object.defineProperty(e,r.name,{enumerable:!0,configurable:!0,get:o,set:s}),r.default&&(e[r.name]=r.default),r.alias&&Object.defineProperty(e,r.alias,{enumerable:!1,configurable:!0,set:s,get:o})})),s)if("string"===typeof s&&(s=t.from(i.stripHexPrefix(s),"hex")),t.isBuffer(s)&&(s=o.decode(s)),Array.isArray(s)){if(s.length>e._fields.length)throw new Error("wrong number of fields in data");s.forEach((function(t,r){e[e._fields[r]]=a.toBuffer(t)}))}else{if("object"!==typeof s)throw new Error("invalid data");var u=Object.keys(s);r.forEach((function(t){-1!==u.indexOf(t.name)&&(e[t.name]=s[t.name]),-1!==u.indexOf(t.alias)&&(e[t.alias]=s[t.alias])}))}}}).call(this,r("b639").Buffer)},3022:function(t,e,r){(function(t){var n=Object.getOwnPropertyDescriptors||function(t){for(var e=Object.keys(t),r={},n=0;n=o)return t;switch(t){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(e){return"[Circular]"}default:return t}})),u=n[r];r=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),b(r)?n.showHidden=r:r&&e._extend(n,r),x(n.showHidden)&&(n.showHidden=!1),x(n.depth)&&(n.depth=2),x(n.colors)&&(n.colors=!1),x(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=u),h(n,t,n.depth)}function u(t,e){var r=s.styles[e];return r?"["+s.colors[r][0]+"m"+t+"["+s.colors[r][1]+"m":t}function c(t,e){return t}function f(t){var e={};return t.forEach((function(t,r){e[t]=!0})),e}function h(t,r,n){if(t.customInspect&&r&&C(r.inspect)&&r.inspect!==e.inspect&&(!r.constructor||r.constructor.prototype!==r)){var i=r.inspect(n,t);return A(i)||(i=h(t,i,n)),i}var o=l(t,r);if(o)return o;var a=Object.keys(r),s=f(a);if(t.showHidden&&(a=Object.getOwnPropertyNames(r)),I(r)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return d(r);if(0===a.length){if(C(r)){var u=r.name?": "+r.name:"";return t.stylize("[Function"+u+"]","special")}if(M(r))return t.stylize(RegExp.prototype.toString.call(r),"regexp");if(S(r))return t.stylize(Date.prototype.toString.call(r),"date");if(I(r))return d(r)}var c,b="",g=!1,w=["{","}"];if(v(r)&&(g=!0,w=["[","]"]),C(r)){var _=r.name?": "+r.name:"";b=" [Function"+_+"]"}return M(r)&&(b=" "+RegExp.prototype.toString.call(r)),S(r)&&(b=" "+Date.prototype.toUTCString.call(r)),I(r)&&(b=" "+d(r)),0!==a.length||g&&0!=r.length?n<0?M(r)?t.stylize(RegExp.prototype.toString.call(r),"regexp"):t.stylize("[Object]","special"):(t.seen.push(r),c=g?p(t,r,n,s,a):a.map((function(e){return m(t,r,n,s,e,g)})),t.seen.pop(),y(c,b,w)):w[0]+b+w[1]}function l(t,e){if(x(e))return t.stylize("undefined","undefined");if(A(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}return _(e)?t.stylize(""+e,"number"):b(e)?t.stylize(""+e,"boolean"):g(e)?t.stylize("null","null"):void 0}function d(t){return"["+Error.prototype.toString.call(t)+"]"}function p(t,e,r,n,i){for(var o=[],a=0,s=e.length;a-1&&(s=o?s.split("\n").map((function(t){return" "+t})).join("\n").substr(2):"\n"+s.split("\n").map((function(t){return" "+t})).join("\n"))):s=t.stylize("[Circular]","special")),x(a)){if(o&&i.match(/^\d+$/))return s;a=JSON.stringify(""+i),a.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=t.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=t.stylize(a,"string"))}return a+": "+s}function y(t,e,r){var n=t.reduce((function(t,e){return e.indexOf("\n")>=0&&0,t+e.replace(/\u001b\[\d\d?m/g,"").length+1}),0);return n>60?r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+r[1]:r[0]+e+" "+t.join(", ")+" "+r[1]}function v(t){return Array.isArray(t)}function b(t){return"boolean"===typeof t}function g(t){return null===t}function w(t){return null==t}function _(t){return"number"===typeof t}function A(t){return"string"===typeof t}function E(t){return"symbol"===typeof t}function x(t){return void 0===t}function M(t){return k(t)&&"[object RegExp]"===U(t)}function k(t){return"object"===typeof t&&null!==t}function S(t){return k(t)&&"[object Date]"===U(t)}function I(t){return k(t)&&("[object Error]"===U(t)||t instanceof Error)}function C(t){return"function"===typeof t}function T(t){return null===t||"boolean"===typeof t||"number"===typeof t||"string"===typeof t||"symbol"===typeof t||"undefined"===typeof t}function U(t){return Object.prototype.toString.call(t)}function O(t){return t<10?"0"+t.toString(10):t.toString(10)}e.debuglog=function(r){if(x(o)&&(o=Object({NODE_ENV:"production",BASE_URL:"/"}).NODE_DEBUG||""),r=r.toUpperCase(),!a[r])if(new RegExp("\\b"+r+"\\b","i").test(o)){var n=t.pid;a[r]=function(){var t=e.format.apply(e,arguments);console.error("%s %d: %s",r,n,t)}}else a[r]=function(){};return a[r]},e.inspect=s,s.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},s.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},e.isArray=v,e.isBoolean=b,e.isNull=g,e.isNullOrUndefined=w,e.isNumber=_,e.isString=A,e.isSymbol=E,e.isUndefined=x,e.isRegExp=M,e.isObject=k,e.isDate=S,e.isError=I,e.isFunction=C,e.isPrimitive=T,e.isBuffer=r("d60a");var P=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function R(){var t=new Date,e=[O(t.getHours()),O(t.getMinutes()),O(t.getSeconds())].join(":");return[t.getDate(),P[t.getMonth()],e].join(" ")}function N(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.log=function(){console.log("%s - %s",R(),e.format.apply(e,arguments))},e.inherits=r("28a0"),e._extend=function(t,e){if(!e||!k(e))return t;var r=Object.keys(e),n=r.length;while(n--)t[r[n]]=e[r[n]];return t};var B="undefined"!==typeof Symbol?Symbol("util.promisify.custom"):void 0;function j(t,e){if(!t){var r=new Error("Promise was rejected with a falsy value");r.reason=t,t=r}return e(t)}function L(e){if("function"!==typeof e)throw new TypeError('The "original" argument must be of type Function');function r(){for(var r=[],n=0;n=0&&(a=e,s=r),n.negative&&(n=n.neg(),o=o.neg()),a.negative&&(a=a.neg(),s=s.neg()),[{a:n,b:o},{a:a,b:s}]},u.prototype._endoSplit=function(t){var e=this.endo.basis,r=e[0],n=e[1],i=n.b.mul(t).divRound(this.n),o=r.b.neg().mul(t).divRound(this.n),a=i.mul(r.a),s=o.mul(n.a),u=i.mul(r.b),c=o.mul(n.b),f=t.sub(a).sub(s),h=u.add(c).neg();return{k1:f,k2:h}},u.prototype.pointFromX=function(t,e){t=new i(t,16),t.red||(t=t.toRed(this.red));var r=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),n=r.redSqrt();if(0!==n.redSqr().redSub(r).cmp(this.zero))throw new Error("invalid point");var o=n.fromRed().isOdd();return(e&&!o||!e&&o)&&(n=n.redNeg()),this.point(t,n)},u.prototype.validate=function(t){if(t.inf)return!0;var e=t.x,r=t.y,n=this.a.redMul(e),i=e.redSqr().redMul(e).redIAdd(n).redIAdd(this.b);return 0===r.redSqr().redISub(i).cmpn(0)},u.prototype._endoWnafMulAdd=function(t,e,r){for(var n=this._endoWnafT1,i=this._endoWnafT2,o=0;o":""},c.prototype.isInfinity=function(){return this.inf},c.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(0===this.x.cmp(t.x))return this.curve.point(null,null);var e=this.y.redSub(t.y);0!==e.cmpn(0)&&(e=e.redMul(this.x.redSub(t.x).redInvm()));var r=e.redSqr().redISub(this.x).redISub(t.x),n=e.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,n)},c.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(0===t.cmpn(0))return this.curve.point(null,null);var e=this.curve.a,r=this.x.redSqr(),n=t.redInvm(),i=r.redAdd(r).redIAdd(r).redIAdd(e).redMul(n),o=i.redSqr().redISub(this.x.redAdd(this.x)),a=i.redMul(this.x.redSub(o)).redISub(this.y);return this.curve.point(o,a)},c.prototype.getX=function(){return this.x.fromRed()},c.prototype.getY=function(){return this.y.fromRed()},c.prototype.mul=function(t){return t=new i(t,16),this.isInfinity()?this:this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},c.prototype.mulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i):this.curve._wnafMulAdd(1,n,i,2)},c.prototype.jmulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i,!0):this.curve._wnafMulAdd(1,n,i,2,!0)},c.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||0===this.x.cmp(t.x)&&0===this.y.cmp(t.y))},c.prototype.neg=function(t){if(this.inf)return this;var e=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var r=this.precomputed,n=function(t){return t.neg()};e.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(n)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(n)}}}return e},c.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var t=this.curve.jpoint(this.x,this.y,this.curve.one);return t},o(f,a.BasePoint),u.prototype.jpoint=function(t,e,r){return new f(this,t,e,r)},f.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),e=t.redSqr(),r=this.x.redMul(e),n=this.y.redMul(e).redMul(t);return this.curve.point(r,n)},f.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},f.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var e=t.z.redSqr(),r=this.z.redSqr(),n=this.x.redMul(e),i=t.x.redMul(r),o=this.y.redMul(e.redMul(t.z)),a=t.y.redMul(r.redMul(this.z)),s=n.redSub(i),u=o.redSub(a);if(0===s.cmpn(0))return 0!==u.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var c=s.redSqr(),f=c.redMul(s),h=n.redMul(c),l=u.redSqr().redIAdd(f).redISub(h).redISub(h),d=u.redMul(h.redISub(l)).redISub(o.redMul(f)),p=this.z.redMul(t.z).redMul(s);return this.curve.jpoint(l,d,p)},f.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var e=this.z.redSqr(),r=this.x,n=t.x.redMul(e),i=this.y,o=t.y.redMul(e).redMul(this.z),a=r.redSub(n),s=i.redSub(o);if(0===a.cmpn(0))return 0!==s.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var u=a.redSqr(),c=u.redMul(a),f=r.redMul(u),h=s.redSqr().redIAdd(c).redISub(f).redISub(f),l=s.redMul(f.redISub(h)).redISub(i.redMul(c)),d=this.z.redMul(a);return this.curve.jpoint(h,l,d)},f.prototype.dblp=function(t){if(0===t)return this;if(this.isInfinity())return this;if(!t)return this.dbl();if(this.curve.zeroA||this.curve.threeA){for(var e=this,r=0;r=0)return!1;if(r.redIAdd(i),0===this.x.cmp(r))return!0}},f.prototype.inspect=function(){return this.isInfinity()?"":""},f.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},3337:function(t,e,r){"use strict";var n=e;n.version=r("2801").version,n.utils=r("f3a3"),n.rand=r("fdac"),n.curve=r("4136"),n.curves=r("0cbb"),n.ec=r("b9a8"),n.eddsa=r("945d")},"33a0":function(t,e){var r="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof window.msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto);if(r){var n=new Uint8Array(16);t.exports=function(){return r(n),n}}else{var i=new Array(16);t.exports=function(){for(var t,e=0;e<16;e++)0===(3&e)&&(t=4294967296*Math.random()),i[e]=t>>>((3&e)<<3)&255;return i}}},"33fb":function(t,e,r){var n=function(){throw"This swarm.js function isn't available on the browser."},i={readFile:n},o={download:n,safeDownloadArchived:n,directoryTree:n},a={platform:n,arch:n},s={join:n,slice:n},u={spawn:n},c={lookup:n},f={},h=null,l=r("25f2"),d=r("73f3"),p=r("69dc"),m=r("e2aa"),y=r("aad6");t.exports=y({fs:i,files:o,os:a,path:s,child_process:u,defaultArchives:f,mimetype:c,request:l,downloadUrl:h,bytes:d,hash:p,pick:m})},"342f":function(t,e,r){var n=r("d066");t.exports=n("navigator","userAgent")||""},"343e":function(t,e,r){var n=e;n.der=r("3768"),n.pem=r("85b3")},3505:function(t,e,r){var n=r("8707").Buffer,i=r("8c8a");function o(t,e,r){var o=e.length,a=i(e,t._cache);return t._cache=t._cache.slice(o),t._prev=n.concat([t._prev,r?e:a]),a}e.encrypt=function(t,e,r){var i,a=n.allocUnsafe(0);while(e.length){if(0===t._cache.length&&(t._cache=t._cipher.encryptBlock(t._prev),t._prev=n.allocUnsafe(0)),!(t._cache.length<=e.length)){a=n.concat([a,o(t,e,r)]);break}i=t._cache.length,a=n.concat([a,o(t,e.slice(0,i),r)]),e=e.slice(i)}return a}},"35a1":function(t,e,r){var n=r("f5df"),i=r("3f8c"),o=r("b622"),a=o("iterator");t.exports=function(t){if(void 0!=t)return t[a]||t["@@iterator"]||i[n(t)]}},"35e8":function(t,e,r){"use strict";t.exports={isString:function(t){return"string"===typeof t},isObject:function(t){return"object"===typeof t&&null!==t},isNull:function(t){return null===t},isNullOrUndefined:function(t){return null==t}}},3667:function(t,e,r){var n,i;(function(r,o,a,s,u,c){var f=m((function(t,e){var r=e.length;return m((function(n){for(var i=0;if&&(Y("Max buffer length exceeded: textNode"),t=Math.max(t,N.length)),B.length>f&&(Y("Max buffer length exceeded: numberNode"),t=Math.max(t,B.length)),R=f-t+K}function Y(t){N!==c&&(o(N),a(),N=c),e=s(t+"\nLn: "+G+"\nCol: "+V+"\nChr: "+r),u(vt(c,c,e))}function W(){if(D==d)return o({}),a(),void(L=!0);D===p&&0===z||Y("Unexpected end"),N!==c&&(o(N),a(),N=c),L=!0}function Z(t){return"\r"==t||"\n"==t||" "==t||"\t"==t}function J(t){if(!e){if(L)return Y("Cannot write after close");var s=0;r=t[0];while(r){if(s>0&&(n=r),r=t[s++],!r)break;switch(K++,"\n"==r?(G++,V=0):V++,D){case d:if("{"===r)D=m;else if("["===r)D=v;else if(!Z(r))return Y("Non-whitespace before {[.");continue;case w:case m:if(Z(r))continue;if(D===w)F.push(_);else{if("}"===r){o({}),a(),D=F.pop()||p;continue}F.push(y)}if('"'!==r)return Y('Malformed object key should start with " ');D=g;continue;case _:case y:if(Z(r))continue;if(":"===r)D===y?(F.push(y),N!==c&&(o({}),i(N),N=c),z++):N!==c&&(i(N),N=c),D=p;else if("}"===r)N!==c&&(o(N),a(),N=c),a(),z--,D=F.pop()||p;else{if(","!==r)return Y("Bad object");D===y&&F.push(y),N!==c&&(o(N),a(),N=c),D=w}continue;case v:case p:if(Z(r))continue;if(D===v){if(o([]),z++,D=p,"]"===r){a(),z--,D=F.pop()||p;continue}F.push(b)}if('"'===r)D=g;else if("{"===r)D=m;else if("["===r)D=v;else if("t"===r)D=A;else if("f"===r)D=M;else if("n"===r)D=C;else if("-"===r)B+=r;else if("0"===r)B+=r,D=P;else{if(-1==="123456789".indexOf(r))return Y("Bad value");B+=r,D=P}continue;case b:if(","===r)F.push(b),N!==c&&(o(N),a(),N=c),D=p;else{if("]"!==r){if(Z(r))continue;return Y("Bad array")}N!==c&&(o(N),a(),N=c),a(),z--,D=F.pop()||p}continue;case g:N===c&&(N="");var u=s-1;t:while(1){while(H>0)if(q+=r,r=t.charAt(s++),4===H?(N+=String.fromCharCode(parseInt(q,16)),H=0,u=s-1):H++,!r)break t;if('"'===r&&!j){D=F.pop()||p,N+=t.substring(u,s-1);break}if("\\"===r&&!j&&(j=!0,N+=t.substring(u,s-1),r=t.charAt(s++),!r))break;if(j){if(j=!1,"n"===r?N+="\n":"r"===r?N+="\r":"t"===r?N+="\t":"f"===r?N+="\f":"b"===r?N+="\b":"u"===r?(H=1,q=""):N+=r,r=t.charAt(s++),u=s-1,r)continue;break}h.lastIndex=s;var f=h.exec(t);if(!f){s=t.length+1,N+=t.substring(u,s-1);break}if(s=f.index+1,r=t.charAt(f.index),!r){N+=t.substring(u,s-1);break}}continue;case A:if(!r)continue;if("r"!==r)return Y("Invalid true started with t"+r);D=E;continue;case E:if(!r)continue;if("u"!==r)return Y("Invalid true started with tr"+r);D=x;continue;case x:if(!r)continue;if("e"!==r)return Y("Invalid true started with tru"+r);o(!0),a(),D=F.pop()||p;continue;case M:if(!r)continue;if("a"!==r)return Y("Invalid false started with f"+r);D=k;continue;case k:if(!r)continue;if("l"!==r)return Y("Invalid false started with fa"+r);D=S;continue;case S:if(!r)continue;if("s"!==r)return Y("Invalid false started with fal"+r);D=I;continue;case I:if(!r)continue;if("e"!==r)return Y("Invalid false started with fals"+r);o(!1),a(),D=F.pop()||p;continue;case C:if(!r)continue;if("u"!==r)return Y("Invalid null started with n"+r);D=T;continue;case T:if(!r)continue;if("l"!==r)return Y("Invalid null started with nu"+r);D=U;continue;case U:if(!r)continue;if("l"!==r)return Y("Invalid null started with nul"+r);o(null),a(),D=F.pop()||p;continue;case O:if("."!==r)return Y("Leading zero not followed by .");B+=r,D=P;continue;case P:if(-1!=="0123456789".indexOf(r))B+=r;else if("."===r){if(-1!==B.indexOf("."))return Y("Invalid number has two dots");B+=r}else if("e"===r||"E"===r){if(-1!==B.indexOf("e")||-1!==B.indexOf("E"))return Y("Invalid number has two exponential");B+=r}else if("+"===r||"-"===r){if("e"!==n&&"E"!==n)return Y("Invalid symbol in number");B+=r}else B&&(o(parseFloat(B)),a(),B=""),s--,D=F.pop()||p;continue;default:return Y("Unknown state: "+D)}}K>=R&&$()}}t(ht).on(J),t(lt).on(W)}function q(t,e){"use strict";var r,n={};function i(t){return function(e){r=t(r,e)}}for(var o in e)t(o).on(i(e[o]),n);t(ot).on((function(t){var e,n=I(r),i=W(n),o=C(r);o&&(e=Z(I(o)),e[i]=t)})),t(at).on((function(){var t,e=I(r),n=W(e),i=C(r);i&&(t=Z(I(i)),delete t[n])})),t(dt).on((function(){for(var r in e)t(r).un(n)}))}function H(t){var e={};return t&&t.split("\r\n").forEach((function(t){var r=t.indexOf(": ");e[t.substring(0,r)]=t.substring(r+2)})),e}function z(t,e){function r(t){return{"http:":80,"https:":443}[t]}function n(e){return e.port||r(e.protocol||t.protocol)}return!!(e.protocol&&e.protocol!=t.protocol||e.host&&e.host!=t.host||e.host&&n(e)!=n(t))}function K(t){var e=/(\w+:)?(?:\/\/)([\w.-]+)?(?::(\d+))?\/?/,r=e.exec(t)||[];return{protocol:r[1]||"",host:r[2]||"",port:r[3]||""}}function V(){return new XMLHttpRequest}function G(t,e,n,i,o,a,s){"use strict";var u=t(ht).emit,h=t(st).emit,l=0,d=!0;function p(){var t=e.responseText,r=t.substr(l);r&&u(r),l=A(t)}t(dt).on((function(){e.onreadystatechange=null,e.abort()})),"onprogress"in e&&(e.onprogress=p),e.onreadystatechange=function(){function r(){try{d&&t(ft).emit(e.status,H(e.getAllResponseHeaders())),d=!1}catch(r){}}switch(e.readyState){case 2:case 3:return r();case 4:r();var n=2==String(e.status)[0];n?(p(),t(lt).emit()):h(vt(e.status,e.responseText))}};try{for(var m in e.open(n,i,!0),a)e.setRequestHeader(m,a[m]);z(r.location,K(i))||e.setRequestHeader("X-Requested-With","XMLHttpRequest"),e.withCredentials=s,e.send(o)}catch(y){r.setTimeout(f(h,vt(c,c,y)),0)}}var $=function(){var t=function(t){return t.exec.bind(t)},e=m((function(e){return e.unshift(/^/),t(RegExp(e.map(l("source")).join("")))})),r=/(\$?)/,n=/([\w-_]+|\*)/,i=/()/,o=/\["([^"]+)"\]/,a=/\[(\d+|\*)\]/,s=/{([\w ]*?)}/,u=/(?:{([\w ]*?)})?/,c=e(r,n,u),f=e(r,o,u),h=e(r,a,u),p=e(r,i,s),y=e(/\.\./),v=e(/\./),b=e(r,/!/),g=e(/$/);return function(t){return t(d(c,f,h,p),y,v,b,g)}}();function Y(t,e){return{key:t,node:e}}var W=l("key"),Z=l("node"),J={};function X(t){var e=t(nt).emit,r=t(it).emit,n=t(ct).emit,i=t(ut).emit;function o(t,e){var r=Z(I(t));return _(a,r)?c(t,A(r),e):t}function s(t,e){if(!t)return n(e),c(t,J,e);var r=o(t,e),i=C(r),a=W(I(r));return u(i,a,e),k(Y(a,e),i)}function u(t,e,r){Z(I(t))[e]=r}function c(t,r,n){t&&u(t,r,n);var i=k(Y(r,n),t);return e(i),i}function f(t){return r(t),C(t)||i(Z(I(t)))}var h={};return h[mt]=s,h[yt]=f,h[pt]=c,h}var Q=$((function(t,e,r,n,i){var o=1,a=2,u=3,c=h(W,I),l=h(Z,I);function p(t,e){var r=e[a],n=r&&"*"!=r?function(t){return c(t)==r}:g;return v(n,t)}function m(t,e){var r=e[u];if(!r)return t;var n=f(M,T(r.split(/\W+/))),i=h(n,l);return v(i,t)}function y(t,e){var r=!!e[o];return r?v(t,I):t}function b(t){if(t==g)return g;function e(t){return c(t)!=J}return v(e,h(t,C))}function w(t){if(t==g)return g;var e=_(),r=t,n=b((function(t){return i(t)})),i=d(e,r,n);return i}function _(){return function(t){return c(t)==J}}function E(t){return function(e){var r=t(e);return!0===r?I(e):r}}function x(t,e,r){return R((function(t,e){return e(t,r)}),e,t)}function k(t,e,r,n,i){var o=t(r);if(o){var a=x(e,n,o),s=r.substr(A(o[0]));return i(s,a)}}function S(t,e){return f(k,t,e)}var O=d(S(t,U(y,m,p,b)),S(e,U(w)),S(r,U()),S(n,U(y,_)),S(i,U(E)),(function(t){throw s('"'+t+'" could not be tokenised')}));function P(t,e){return e}function N(t,e){var r=t?N:P;return O(t,e,r)}return function(t){try{return N(t,g)}catch(e){throw s('Could not compile "'+t+'" because '+e.message)}}}));function tt(t,e,r){var n,i;function o(t){return function(e){return e.id==t}}return{on:function(r,o){var a={listener:r,id:o||r};return e&&e.emit(t,r,a.id),n=k(a,n),i=k(r,i),this},emit:function(){j(i,arguments)},un:function(e){var a;n=N(n,o(e),(function(t){a=t})),a&&(i=N(i,(function(t){return t==a.listener})),r&&r.emit(t,a.listener,a.id))},listeners:function(){return i},hasListener:function(t){var e=t?o(t):g;return x(D(e,n))}}}function et(){var t={},e=n("newListener"),r=n("removeListener");function n(n){return t[n]=tt(n,e,r)}function i(e){return t[e]||n(e)}return["emit","on","un"].forEach((function(t){i[t]=m((function(e,r){p(r,i(e)[t])}))})),i}var rt=1,nt=rt++,it=rt++,ot=rt++,at=rt++,st="fail",ut=rt++,ct=rt++,ft="start",ht="data",lt="end",dt=rt++,pt=rt++,mt=rt++,yt=rt++;function vt(t,e,r){try{var n=u.parse(e)}catch(i){}return{statusCode:t,body:e,jsonBody:n,thrown:r}}function bt(t,e){var r={node:t(it),path:t(nt)};function n(t,e,r){var n=L(r);t(e,O(C(P(W,n))),O(P(Z,n)))}function i(e,r,i){var o=t(e).emit;r.on((function(t){var e=i(t);!1!==e&&n(o,Z(e),t)}),e),t("removeListener").on((function(n){n==e&&(t(n).listeners()||r.un(e))}))}t("newListener").on((function(t){var n=/(node|path):(.*)/.exec(t);if(n){var o=r[n[1]];o.hasListener(t)||i(t,o,e(n[2]))}}))}function gt(t,e){var r,n=/^(node|path):./,i=t(ut),o=t(at).emit,a=t(ot).emit,u=m((function(e,i){if(r[e])p(i,r[e]);else{var o=t(e),a=i[0];n.test(e)?l(o,a):o.on(a)}return r})),c=function(e,n,o){if("done"==e)i.un(n);else if("node"==e||"path"==e)t.un(e+":"+n,o);else{var a=n;t(e).un(a)}return r};function h(e,n){return t(e).on(d(n),n),r}function l(t,e,n){n=n||e;var i=d(e);return t.on((function(){var e=!1;r.forget=function(){e=!0},p(arguments,i),delete r.forget,e&&t.un(n)}),n),r}function d(t){return function(){try{return t.apply(r,arguments)}catch(e){setTimeout((function(){throw new s(e.message)}))}}}function y(e,r){return t(e+":"+r)}function v(t){return function(){var e=t.apply(this,arguments);x(e)&&(e==At.drop?o():a(e))}}function g(t,e,r){var n;n="node"==t?v(r):r,l(y(t,e),n,r)}function _(t,e){for(var r in e)g(t,r,e[r])}function A(t,e,n){return E(e)?g(t,e,n):_(t,e),r}return t(ct).on((function(t){r.root=w(t)})),t(ft).on((function(t,e){r.header=function(t){return t?e[t]:e}})),r={on:u,addListener:u,removeListener:c,emit:t.emit,node:f(A,"node"),path:f(A,"path"),done:f(l,i),start:f(h,ft),fail:t(st).on,abort:t(dt).emit,header:b,root:b,source:e}}function wt(t,e,r,n,i){var o=et();return e&&G(o,V(),t,e,r,n,i),F(o),q(o,X(o)),bt(o,Q),gt(o,e)}function _t(t,e,r,n,i,o,a){function s(t,e){return!1===e&&(-1==t.indexOf("?")?t+="?":t+="&",t+="_="+(new Date).getTime()),t}return i=i?u.parse(u.stringify(i)):{},n?(E(n)||(n=u.stringify(n),i["Content-Type"]=i["Content-Type"]||"application/json"),i["Content-Length"]=i["Content-Length"]||n.length):n=null,t(r||"GET",s(e,a),n,i,o||!1)}function At(t){var e=U("resume","pause","pipe"),r=f(M,e);return t?r(t)||E(t)?_t(wt,t):_t(wt,t.url,t.method,t.body,t.headers,t.withCredentials,t.cached):wt()}At.drop=function(){return At.drop},n=[],i=function(){return At}.apply(e,n),i===c||(t.exports=i)})(function(){try{return window}catch(t){return self}}(),Object,Array,Error,JSON)},3768:function(t,e,r){var n=r("3fb5"),i=r("b639").Buffer,o=r("7f7a"),a=o.base,s=o.constants.der;function u(t){this.enc="der",this.name=t.name,this.entity=t,this.tree=new c,this.tree._init(t.body)}function c(t){a.Node.call(this,"der",t)}function f(t){return t<10?"0"+t:t}function h(t,e,r,n){var i;if("seqof"===t?t="seq":"setof"===t&&(t="set"),s.tagByName.hasOwnProperty(t))i=s.tagByName[t];else{if("number"!==typeof t||(0|t)!==t)return n.error("Unknown tag: "+t);i=t}return i>=31?n.error("Multi-octet tag encoding unsupported"):(e||(i|=32),i|=s.tagClassByName[r||"universal"]<<6,i)}t.exports=u,u.prototype.encode=function(t,e){return this.tree._encode(t,e).join()},n(c,a.Node),c.prototype._encodeComposite=function(t,e,r,n){var o=h(t,e,r,this.reporter);if(n.length<128){var a=new i(2);return a[0]=o,a[1]=n.length,this._createEncoderBuffer([a,n])}for(var s=1,u=n.length;u>=256;u>>=8)s++;a=new i(2+s);a[0]=o,a[1]=128|s;u=1+s;for(var c=n.length;c>0;u--,c>>=8)a[u]=255&c;return this._createEncoderBuffer([a,n])},c.prototype._encodeStr=function(t,e){if("bitstr"===e)return this._createEncoderBuffer([0|t.unused,t.data]);if("bmpstr"===e){for(var r=new i(2*t.length),n=0;n=40)return this.reporter.error("Second objid identifier OOB");t.splice(0,2,40*t[0]+t[1])}var o=0;for(n=0;n=128;a>>=7)o++}var s=new i(o),u=s.length-1;for(n=t.length-1;n>=0;n--){a=t[n];s[u--]=127&a;while((a>>=7)>0)s[u--]=128|127&a}return this._createEncoderBuffer(s)},c.prototype._encodeTime=function(t,e){var r,n=new Date(t);return"gentime"===e?r=[f(n.getFullYear()),f(n.getUTCMonth()+1),f(n.getUTCDate()),f(n.getUTCHours()),f(n.getUTCMinutes()),f(n.getUTCSeconds()),"Z"].join(""):"utctime"===e?r=[f(n.getFullYear()%100),f(n.getUTCMonth()+1),f(n.getUTCDate()),f(n.getUTCHours()),f(n.getUTCMinutes()),f(n.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+e+" time is not supported yet"),this._encodeStr(r,"octstr")},c.prototype._encodeNull=function(){return this._createEncoderBuffer("")},c.prototype._encodeInt=function(t,e){if("string"===typeof t){if(!e)return this.reporter.error("String int or enum given, but no values map");if(!e.hasOwnProperty(t))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(t));t=e[t]}if("number"!==typeof t&&!i.isBuffer(t)){var r=t.toArray();!t.sign&&128&r[0]&&r.unshift(0),t=new i(r)}if(i.isBuffer(t)){var n=t.length;0===t.length&&n++;var o=new i(n);return t.copy(o),0===t.length&&(o[0]=0),this._createEncoderBuffer(o)}if(t<128)return this._createEncoderBuffer(t);if(t<256)return this._createEncoderBuffer([0,t]);n=1;for(var a=t;a>=256;a>>=8)n++;for(o=new Array(n),a=o.length-1;a>=0;a--)o[a]=255&t,t>>=8;return 128&o[0]&&o.unshift(0),this._createEncoderBuffer(new i(o))},c.prototype._encodeBool=function(t){return this._createEncoderBuffer(t?255:0)},c.prototype._use=function(t,e){return"function"===typeof t&&(t=t(e)),t._getEncoder("der").tree},c.prototype._skipDefault=function(t,e,r){var n,i=this._baseState;if(null===i["default"])return!1;var o=t.join();if(void 0===i.defaultBuffer&&(i.defaultBuffer=this._encodeValue(i["default"],e,r).join()),o.length!==i.defaultBuffer.length)return!1;for(n=0;n=0)return this._url=this._parseUrl(e.headers.location),this._method="GET",this._loweredHeaders["content-type"]&&(delete this._headers[this._loweredHeaders["content-type"]],delete this._loweredHeaders["content-type"]),null!=this._headers["Content-Type"]&&delete this._headers["Content-Type"],delete this._headers["Content-Length"],this.upload._reset(),this._finalizeHeaders(),void this._sendHxxpRequest();this._response=e,this._response.on("data",(function(t){return n._onHttpResponseData(e,t)})),this._response.on("end",(function(){return n._onHttpResponseEnd(e)})),this._response.on("close",(function(){return n._onHttpResponseClose(e)})),this.responseUrl=this._url.href.split("#")[0],this.status=e.statusCode,this.statusText=a.STATUS_CODES[this.status],this._parseResponseHeaders(e);var i=this._responseHeaders["content-length"]||"";this._totalBytes=+i,this._lengthComputable=!!i,this._setReadyState(r.HEADERS_RECEIVED)}},r.prototype._onHttpResponseData=function(t,e){this._response===t&&(this._responseParts.push(new n(e)),this._loadedBytes+=e.length,this.readyState!==r.LOADING&&this._setReadyState(r.LOADING),this._dispatchProgress("progress"))},r.prototype._onHttpResponseEnd=function(t){this._response===t&&(this._parseResponse(),this._request=null,this._response=null,this._setReadyState(r.DONE),this._dispatchProgress("load"),this._dispatchProgress("loadend"))},r.prototype._onHttpResponseClose=function(t){if(this._response===t){var e=this._request;this._setError(),e.abort(),this._setReadyState(r.DONE),this._dispatchProgress("error"),this._dispatchProgress("loadend")}},r.prototype._onHttpTimeout=function(t){this._request===t&&(this._setError(),t.abort(),this._setReadyState(r.DONE),this._dispatchProgress("timeout"),this._dispatchProgress("loadend"))},r.prototype._onHttpRequestError=function(t,e){this._request===t&&(this._setError(),t.abort(),this._setReadyState(r.DONE),this._dispatchProgress("error"),this._dispatchProgress("loadend"))},r.prototype._dispatchProgress=function(t){var e=new r.ProgressEvent(t);e.lengthComputable=this._lengthComputable,e.loaded=this._loadedBytes,e.total=this._totalBytes,this.dispatchEvent(e)},r.prototype._setError=function(){this._request=null,this._response=null,this._responseHeaders=null,this._responseParts=null},r.prototype._parseUrl=function(t,e,r){var n=null==this.nodejsBaseUrl?t:c.resolve(this.nodejsBaseUrl,t),i=c.parse(n,!1,!0);i.hash=null;var o=(i.auth||"").split(":"),a=o[0],s=o[1];return(a||s||e||r)&&(i.auth=(e||a||"")+":"+(r||s||"")),i},r.prototype._parseResponseHeaders=function(t){for(var e in this._responseHeaders={},t.headers){var r=e.toLowerCase();this._privateHeaders[r]||(this._responseHeaders[r]=t.headers[e])}null!=this._mimeOverride&&(this._responseHeaders["content-type"]=this._mimeOverride)},r.prototype._parseResponse=function(){var t=n.concat(this._responseParts);switch(this._responseParts=null,this.responseType){case"json":this.responseText=null;try{this.response=JSON.parse(t.toString("utf-8"))}catch(o){this.response=null}return;case"buffer":return this.responseText=null,void(this.response=t);case"arraybuffer":this.responseText=null;for(var e=new ArrayBuffer(t.length),r=new Uint8Array(e),i=0;iu)i.f(t,r=n[u++],e[r]);return t}},"380f":function(t,e,r){"use strict";var n=r("f3a3"),i=n.assert,o=n.parseBytes,a=n.cachedProperty;function s(t,e){this.eddsa=t,this._secret=o(e.secret),t.isPoint(e.pub)?this._pub=e.pub:this._pubBytes=o(e.pub)}s.fromPublic=function(t,e){return e instanceof s?e:new s(t,{pub:e})},s.fromSecret=function(t,e){return e instanceof s?e:new s(t,{secret:e})},s.prototype.secret=function(){return this._secret},a(s,"pubBytes",(function(){return this.eddsa.encodePoint(this.pub())})),a(s,"pub",(function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())})),a(s,"privBytes",(function(){var t=this.eddsa,e=this.hash(),r=t.encodingLength-1,n=e.slice(0,t.encodingLength);return n[0]&=248,n[r]&=127,n[r]|=64,n})),a(s,"priv",(function(){return this.eddsa.decodeInt(this.privBytes())})),a(s,"hash",(function(){return this.eddsa.hash().update(this.secret()).digest()})),a(s,"messagePrefix",(function(){return this.hash().slice(this.eddsa.encodingLength)})),s.prototype.sign=function(t){return i(this._secret,"KeyPair can only verify"),this.eddsa.sign(t,this)},s.prototype.verify=function(t,e){return this.eddsa.verify(t,e,this)},s.prototype.getSecret=function(t){return i(this._secret,"KeyPair is public only"),n.encode(this.secret(),t)},s.prototype.getPublic=function(t){return n.encode(this.pubBytes(),t)},t.exports=s},"399f":function(t,e,r){(function(t){(function(t,e){"use strict";function n(t,e){if(!t)throw new Error(e||"Assertion failed")}function i(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}function o(t,e,r){if(o.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==e&&"be"!==e||(r=e,e=10),this._init(t||0,e||10,r||"be"))}var a;"object"===typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;try{a=r(1).Buffer}catch(k){}function s(t,e,r){for(var n=0,i=Math.min(t.length,r),o=e;o=49&&a<=54?a-49+10:a>=17&&a<=22?a-17+10:15&a}return n}function u(t,e,r,n){for(var i=0,o=Math.min(t.length,r),a=e;a=49?s-49+10:s>=17?s-17+10:s}return i}o.isBN=function(t){return t instanceof o||null!==t&&"object"===typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"===typeof t)return this._initNumber(t,e,r);if("object"===typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),n(e===(0|e)&&e>=2&&e<=36),t=t.toString().replace(/\s+/g,"");var i=0;"-"===t[0]&&i++,16===e?this._parseHex(t,i):this._parseBase(t,e,i),"-"===t[0]&&(this.negative=1),this.strip(),"le"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initNumber=function(t,e,r){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(n(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),"le"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initArray=function(t,e,r){if(n("number"===typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var i=0;i=0;i-=3)a=t[i]|t[i-1]<<8|t[i-2]<<16,this.words[o]|=a<>>26-s&67108863,s+=24,s>=26&&(s-=26,o++);else if("le"===r)for(i=0,o=0;i>>26-s&67108863,s+=24,s>=26&&(s-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var r=0;r=e;r-=6)i=s(t,r,r+6),this.words[n]|=i<>>26-o&4194303,o+=24,o>=26&&(o-=26,n++);r+6!==e&&(i=s(t,e,r+6),this.words[n]|=i<>>26-o&4194303),this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var n=0,i=1;i<=67108863;i*=e)n++;n--,i=i/e|0;for(var o=t.length-r,a=o%n,s=Math.min(o,o-a)+r,c=0,f=r;f1&&0===this.words[this.length-1])this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var c=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],f=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],h=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function l(t){for(var e=new Array(t.bitLength()),r=0;r>>i}return e}function d(t,e,r){r.negative=e.negative^t.negative;var n=t.length+e.length|0;r.length=n,n=n-1|0;var i=0|t.words[0],o=0|e.words[0],a=i*o,s=67108863&a,u=a/67108864|0;r.words[0]=s;for(var c=1;c>>26,h=67108863&u,l=Math.min(c,e.length-1),d=Math.max(0,c-t.length+1);d<=l;d++){var p=c-d|0;i=0|t.words[p],o=0|e.words[d],a=i*o+h,f+=a/67108864|0,h=67108863&a}r.words[c]=0|h,u=0|f}return 0!==u?r.words[c]=0|u:r.length--,r.strip()}o.prototype.toString=function(t,e){var r;if(t=t||10,e=0|e||1,16===t||"hex"===t){r="";for(var i=0,o=0,a=0;a>>24-i&16777215,r=0!==o||a!==this.length-1?c[6-u.length]+u+r:u+r,i+=2,i>=26&&(i-=26,a--)}0!==o&&(r=o.toString(16)+r);while(r.length%e!==0)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var l=f[t],d=h[t];r="";var p=this.clone();p.negative=0;while(!p.isZero()){var m=p.modn(d).toString(t);p=p.idivn(d),r=p.isZero()?m+r:c[l-m.length]+m+r}this.isZero()&&(r="0"+r);while(r.length%e!==0)r="0"+r;return 0!==this.negative&&(r="-"+r),r}n(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&n(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return n("undefined"!==typeof a),this.toArrayLike(a,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var i=this.byteLength(),o=r||Math.max(1,i);n(i<=o,"byte array longer than desired length"),n(o>0,"Requested array length <= 0"),this.strip();var a,s,u="le"===e,c=new t(o),f=this.clone();if(u){for(s=0;!f.isZero();s++)a=f.andln(255),f.iushrn(8),c[s]=a;for(;s=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0===(8191&e)&&(r+=13,e>>>=13),0===(127&e)&&(r+=7,e>>>=7),0===(15&e)&&(r+=4,e>>>=4),0===(3&e)&&(r+=2,e>>>=2),0===(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var n=0;nt.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){n("number"===typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var i=0;i0&&(this.words[i]=~this.words[i]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){n("number"===typeof t&&t>=0);var r=t/26|0,i=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,n=t):(r=t,n=this);for(var i=0,o=0;o>>26;for(;0!==i&&o>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,n,i=this.cmp(t);if(0===i)return this.negative=0,this.length=1,this.words[0]=0,this;i>0?(r=this,n=t):(r=t,n=this);for(var o=0,a=0;a>26,this.words[a]=67108863&e;for(;0!==o&&a>26,this.words[a]=67108863&e;if(0===o&&a>>13,d=0|a[1],p=8191&d,m=d>>>13,y=0|a[2],v=8191&y,b=y>>>13,g=0|a[3],w=8191&g,_=g>>>13,A=0|a[4],E=8191&A,x=A>>>13,M=0|a[5],k=8191&M,S=M>>>13,I=0|a[6],C=8191&I,T=I>>>13,U=0|a[7],O=8191&U,P=U>>>13,R=0|a[8],N=8191&R,B=R>>>13,j=0|a[9],L=8191&j,D=j>>>13,F=0|s[0],q=8191&F,H=F>>>13,z=0|s[1],K=8191&z,V=z>>>13,G=0|s[2],$=8191&G,Y=G>>>13,W=0|s[3],Z=8191&W,J=W>>>13,X=0|s[4],Q=8191&X,tt=X>>>13,et=0|s[5],rt=8191&et,nt=et>>>13,it=0|s[6],ot=8191&it,at=it>>>13,st=0|s[7],ut=8191&st,ct=st>>>13,ft=0|s[8],ht=8191&ft,lt=ft>>>13,dt=0|s[9],pt=8191&dt,mt=dt>>>13;r.negative=t.negative^e.negative,r.length=19,n=Math.imul(h,q),i=Math.imul(h,H),i=i+Math.imul(l,q)|0,o=Math.imul(l,H);var yt=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(yt>>>26)|0,yt&=67108863,n=Math.imul(p,q),i=Math.imul(p,H),i=i+Math.imul(m,q)|0,o=Math.imul(m,H),n=n+Math.imul(h,K)|0,i=i+Math.imul(h,V)|0,i=i+Math.imul(l,K)|0,o=o+Math.imul(l,V)|0;var vt=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(vt>>>26)|0,vt&=67108863,n=Math.imul(v,q),i=Math.imul(v,H),i=i+Math.imul(b,q)|0,o=Math.imul(b,H),n=n+Math.imul(p,K)|0,i=i+Math.imul(p,V)|0,i=i+Math.imul(m,K)|0,o=o+Math.imul(m,V)|0,n=n+Math.imul(h,$)|0,i=i+Math.imul(h,Y)|0,i=i+Math.imul(l,$)|0,o=o+Math.imul(l,Y)|0;var bt=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(bt>>>26)|0,bt&=67108863,n=Math.imul(w,q),i=Math.imul(w,H),i=i+Math.imul(_,q)|0,o=Math.imul(_,H),n=n+Math.imul(v,K)|0,i=i+Math.imul(v,V)|0,i=i+Math.imul(b,K)|0,o=o+Math.imul(b,V)|0,n=n+Math.imul(p,$)|0,i=i+Math.imul(p,Y)|0,i=i+Math.imul(m,$)|0,o=o+Math.imul(m,Y)|0,n=n+Math.imul(h,Z)|0,i=i+Math.imul(h,J)|0,i=i+Math.imul(l,Z)|0,o=o+Math.imul(l,J)|0;var gt=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(gt>>>26)|0,gt&=67108863,n=Math.imul(E,q),i=Math.imul(E,H),i=i+Math.imul(x,q)|0,o=Math.imul(x,H),n=n+Math.imul(w,K)|0,i=i+Math.imul(w,V)|0,i=i+Math.imul(_,K)|0,o=o+Math.imul(_,V)|0,n=n+Math.imul(v,$)|0,i=i+Math.imul(v,Y)|0,i=i+Math.imul(b,$)|0,o=o+Math.imul(b,Y)|0,n=n+Math.imul(p,Z)|0,i=i+Math.imul(p,J)|0,i=i+Math.imul(m,Z)|0,o=o+Math.imul(m,J)|0,n=n+Math.imul(h,Q)|0,i=i+Math.imul(h,tt)|0,i=i+Math.imul(l,Q)|0,o=o+Math.imul(l,tt)|0;var wt=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(wt>>>26)|0,wt&=67108863,n=Math.imul(k,q),i=Math.imul(k,H),i=i+Math.imul(S,q)|0,o=Math.imul(S,H),n=n+Math.imul(E,K)|0,i=i+Math.imul(E,V)|0,i=i+Math.imul(x,K)|0,o=o+Math.imul(x,V)|0,n=n+Math.imul(w,$)|0,i=i+Math.imul(w,Y)|0,i=i+Math.imul(_,$)|0,o=o+Math.imul(_,Y)|0,n=n+Math.imul(v,Z)|0,i=i+Math.imul(v,J)|0,i=i+Math.imul(b,Z)|0,o=o+Math.imul(b,J)|0,n=n+Math.imul(p,Q)|0,i=i+Math.imul(p,tt)|0,i=i+Math.imul(m,Q)|0,o=o+Math.imul(m,tt)|0,n=n+Math.imul(h,rt)|0,i=i+Math.imul(h,nt)|0,i=i+Math.imul(l,rt)|0,o=o+Math.imul(l,nt)|0;var _t=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(_t>>>26)|0,_t&=67108863,n=Math.imul(C,q),i=Math.imul(C,H),i=i+Math.imul(T,q)|0,o=Math.imul(T,H),n=n+Math.imul(k,K)|0,i=i+Math.imul(k,V)|0,i=i+Math.imul(S,K)|0,o=o+Math.imul(S,V)|0,n=n+Math.imul(E,$)|0,i=i+Math.imul(E,Y)|0,i=i+Math.imul(x,$)|0,o=o+Math.imul(x,Y)|0,n=n+Math.imul(w,Z)|0,i=i+Math.imul(w,J)|0,i=i+Math.imul(_,Z)|0,o=o+Math.imul(_,J)|0,n=n+Math.imul(v,Q)|0,i=i+Math.imul(v,tt)|0,i=i+Math.imul(b,Q)|0,o=o+Math.imul(b,tt)|0,n=n+Math.imul(p,rt)|0,i=i+Math.imul(p,nt)|0,i=i+Math.imul(m,rt)|0,o=o+Math.imul(m,nt)|0,n=n+Math.imul(h,ot)|0,i=i+Math.imul(h,at)|0,i=i+Math.imul(l,ot)|0,o=o+Math.imul(l,at)|0;var At=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(At>>>26)|0,At&=67108863,n=Math.imul(O,q),i=Math.imul(O,H),i=i+Math.imul(P,q)|0,o=Math.imul(P,H),n=n+Math.imul(C,K)|0,i=i+Math.imul(C,V)|0,i=i+Math.imul(T,K)|0,o=o+Math.imul(T,V)|0,n=n+Math.imul(k,$)|0,i=i+Math.imul(k,Y)|0,i=i+Math.imul(S,$)|0,o=o+Math.imul(S,Y)|0,n=n+Math.imul(E,Z)|0,i=i+Math.imul(E,J)|0,i=i+Math.imul(x,Z)|0,o=o+Math.imul(x,J)|0,n=n+Math.imul(w,Q)|0,i=i+Math.imul(w,tt)|0,i=i+Math.imul(_,Q)|0,o=o+Math.imul(_,tt)|0,n=n+Math.imul(v,rt)|0,i=i+Math.imul(v,nt)|0,i=i+Math.imul(b,rt)|0,o=o+Math.imul(b,nt)|0,n=n+Math.imul(p,ot)|0,i=i+Math.imul(p,at)|0,i=i+Math.imul(m,ot)|0,o=o+Math.imul(m,at)|0,n=n+Math.imul(h,ut)|0,i=i+Math.imul(h,ct)|0,i=i+Math.imul(l,ut)|0,o=o+Math.imul(l,ct)|0;var Et=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(Et>>>26)|0,Et&=67108863,n=Math.imul(N,q),i=Math.imul(N,H),i=i+Math.imul(B,q)|0,o=Math.imul(B,H),n=n+Math.imul(O,K)|0,i=i+Math.imul(O,V)|0,i=i+Math.imul(P,K)|0,o=o+Math.imul(P,V)|0,n=n+Math.imul(C,$)|0,i=i+Math.imul(C,Y)|0,i=i+Math.imul(T,$)|0,o=o+Math.imul(T,Y)|0,n=n+Math.imul(k,Z)|0,i=i+Math.imul(k,J)|0,i=i+Math.imul(S,Z)|0,o=o+Math.imul(S,J)|0,n=n+Math.imul(E,Q)|0,i=i+Math.imul(E,tt)|0,i=i+Math.imul(x,Q)|0,o=o+Math.imul(x,tt)|0,n=n+Math.imul(w,rt)|0,i=i+Math.imul(w,nt)|0,i=i+Math.imul(_,rt)|0,o=o+Math.imul(_,nt)|0,n=n+Math.imul(v,ot)|0,i=i+Math.imul(v,at)|0,i=i+Math.imul(b,ot)|0,o=o+Math.imul(b,at)|0,n=n+Math.imul(p,ut)|0,i=i+Math.imul(p,ct)|0,i=i+Math.imul(m,ut)|0,o=o+Math.imul(m,ct)|0,n=n+Math.imul(h,ht)|0,i=i+Math.imul(h,lt)|0,i=i+Math.imul(l,ht)|0,o=o+Math.imul(l,lt)|0;var xt=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(xt>>>26)|0,xt&=67108863,n=Math.imul(L,q),i=Math.imul(L,H),i=i+Math.imul(D,q)|0,o=Math.imul(D,H),n=n+Math.imul(N,K)|0,i=i+Math.imul(N,V)|0,i=i+Math.imul(B,K)|0,o=o+Math.imul(B,V)|0,n=n+Math.imul(O,$)|0,i=i+Math.imul(O,Y)|0,i=i+Math.imul(P,$)|0,o=o+Math.imul(P,Y)|0,n=n+Math.imul(C,Z)|0,i=i+Math.imul(C,J)|0,i=i+Math.imul(T,Z)|0,o=o+Math.imul(T,J)|0,n=n+Math.imul(k,Q)|0,i=i+Math.imul(k,tt)|0,i=i+Math.imul(S,Q)|0,o=o+Math.imul(S,tt)|0,n=n+Math.imul(E,rt)|0,i=i+Math.imul(E,nt)|0,i=i+Math.imul(x,rt)|0,o=o+Math.imul(x,nt)|0,n=n+Math.imul(w,ot)|0,i=i+Math.imul(w,at)|0,i=i+Math.imul(_,ot)|0,o=o+Math.imul(_,at)|0,n=n+Math.imul(v,ut)|0,i=i+Math.imul(v,ct)|0,i=i+Math.imul(b,ut)|0,o=o+Math.imul(b,ct)|0,n=n+Math.imul(p,ht)|0,i=i+Math.imul(p,lt)|0,i=i+Math.imul(m,ht)|0,o=o+Math.imul(m,lt)|0,n=n+Math.imul(h,pt)|0,i=i+Math.imul(h,mt)|0,i=i+Math.imul(l,pt)|0,o=o+Math.imul(l,mt)|0;var Mt=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,n=Math.imul(L,K),i=Math.imul(L,V),i=i+Math.imul(D,K)|0,o=Math.imul(D,V),n=n+Math.imul(N,$)|0,i=i+Math.imul(N,Y)|0,i=i+Math.imul(B,$)|0,o=o+Math.imul(B,Y)|0,n=n+Math.imul(O,Z)|0,i=i+Math.imul(O,J)|0,i=i+Math.imul(P,Z)|0,o=o+Math.imul(P,J)|0,n=n+Math.imul(C,Q)|0,i=i+Math.imul(C,tt)|0,i=i+Math.imul(T,Q)|0,o=o+Math.imul(T,tt)|0,n=n+Math.imul(k,rt)|0,i=i+Math.imul(k,nt)|0,i=i+Math.imul(S,rt)|0,o=o+Math.imul(S,nt)|0,n=n+Math.imul(E,ot)|0,i=i+Math.imul(E,at)|0,i=i+Math.imul(x,ot)|0,o=o+Math.imul(x,at)|0,n=n+Math.imul(w,ut)|0,i=i+Math.imul(w,ct)|0,i=i+Math.imul(_,ut)|0,o=o+Math.imul(_,ct)|0,n=n+Math.imul(v,ht)|0,i=i+Math.imul(v,lt)|0,i=i+Math.imul(b,ht)|0,o=o+Math.imul(b,lt)|0,n=n+Math.imul(p,pt)|0,i=i+Math.imul(p,mt)|0,i=i+Math.imul(m,pt)|0,o=o+Math.imul(m,mt)|0;var kt=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(kt>>>26)|0,kt&=67108863,n=Math.imul(L,$),i=Math.imul(L,Y),i=i+Math.imul(D,$)|0,o=Math.imul(D,Y),n=n+Math.imul(N,Z)|0,i=i+Math.imul(N,J)|0,i=i+Math.imul(B,Z)|0,o=o+Math.imul(B,J)|0,n=n+Math.imul(O,Q)|0,i=i+Math.imul(O,tt)|0,i=i+Math.imul(P,Q)|0,o=o+Math.imul(P,tt)|0,n=n+Math.imul(C,rt)|0,i=i+Math.imul(C,nt)|0,i=i+Math.imul(T,rt)|0,o=o+Math.imul(T,nt)|0,n=n+Math.imul(k,ot)|0,i=i+Math.imul(k,at)|0,i=i+Math.imul(S,ot)|0,o=o+Math.imul(S,at)|0,n=n+Math.imul(E,ut)|0,i=i+Math.imul(E,ct)|0,i=i+Math.imul(x,ut)|0,o=o+Math.imul(x,ct)|0,n=n+Math.imul(w,ht)|0,i=i+Math.imul(w,lt)|0,i=i+Math.imul(_,ht)|0,o=o+Math.imul(_,lt)|0,n=n+Math.imul(v,pt)|0,i=i+Math.imul(v,mt)|0,i=i+Math.imul(b,pt)|0,o=o+Math.imul(b,mt)|0;var St=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(St>>>26)|0,St&=67108863,n=Math.imul(L,Z),i=Math.imul(L,J),i=i+Math.imul(D,Z)|0,o=Math.imul(D,J),n=n+Math.imul(N,Q)|0,i=i+Math.imul(N,tt)|0,i=i+Math.imul(B,Q)|0,o=o+Math.imul(B,tt)|0,n=n+Math.imul(O,rt)|0,i=i+Math.imul(O,nt)|0,i=i+Math.imul(P,rt)|0,o=o+Math.imul(P,nt)|0,n=n+Math.imul(C,ot)|0,i=i+Math.imul(C,at)|0,i=i+Math.imul(T,ot)|0,o=o+Math.imul(T,at)|0,n=n+Math.imul(k,ut)|0,i=i+Math.imul(k,ct)|0,i=i+Math.imul(S,ut)|0,o=o+Math.imul(S,ct)|0,n=n+Math.imul(E,ht)|0,i=i+Math.imul(E,lt)|0,i=i+Math.imul(x,ht)|0,o=o+Math.imul(x,lt)|0,n=n+Math.imul(w,pt)|0,i=i+Math.imul(w,mt)|0,i=i+Math.imul(_,pt)|0,o=o+Math.imul(_,mt)|0;var It=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(It>>>26)|0,It&=67108863,n=Math.imul(L,Q),i=Math.imul(L,tt),i=i+Math.imul(D,Q)|0,o=Math.imul(D,tt),n=n+Math.imul(N,rt)|0,i=i+Math.imul(N,nt)|0,i=i+Math.imul(B,rt)|0,o=o+Math.imul(B,nt)|0,n=n+Math.imul(O,ot)|0,i=i+Math.imul(O,at)|0,i=i+Math.imul(P,ot)|0,o=o+Math.imul(P,at)|0,n=n+Math.imul(C,ut)|0,i=i+Math.imul(C,ct)|0,i=i+Math.imul(T,ut)|0,o=o+Math.imul(T,ct)|0,n=n+Math.imul(k,ht)|0,i=i+Math.imul(k,lt)|0,i=i+Math.imul(S,ht)|0,o=o+Math.imul(S,lt)|0,n=n+Math.imul(E,pt)|0,i=i+Math.imul(E,mt)|0,i=i+Math.imul(x,pt)|0,o=o+Math.imul(x,mt)|0;var Ct=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,n=Math.imul(L,rt),i=Math.imul(L,nt),i=i+Math.imul(D,rt)|0,o=Math.imul(D,nt),n=n+Math.imul(N,ot)|0,i=i+Math.imul(N,at)|0,i=i+Math.imul(B,ot)|0,o=o+Math.imul(B,at)|0,n=n+Math.imul(O,ut)|0,i=i+Math.imul(O,ct)|0,i=i+Math.imul(P,ut)|0,o=o+Math.imul(P,ct)|0,n=n+Math.imul(C,ht)|0,i=i+Math.imul(C,lt)|0,i=i+Math.imul(T,ht)|0,o=o+Math.imul(T,lt)|0,n=n+Math.imul(k,pt)|0,i=i+Math.imul(k,mt)|0,i=i+Math.imul(S,pt)|0,o=o+Math.imul(S,mt)|0;var Tt=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,n=Math.imul(L,ot),i=Math.imul(L,at),i=i+Math.imul(D,ot)|0,o=Math.imul(D,at),n=n+Math.imul(N,ut)|0,i=i+Math.imul(N,ct)|0,i=i+Math.imul(B,ut)|0,o=o+Math.imul(B,ct)|0,n=n+Math.imul(O,ht)|0,i=i+Math.imul(O,lt)|0,i=i+Math.imul(P,ht)|0,o=o+Math.imul(P,lt)|0,n=n+Math.imul(C,pt)|0,i=i+Math.imul(C,mt)|0,i=i+Math.imul(T,pt)|0,o=o+Math.imul(T,mt)|0;var Ut=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,n=Math.imul(L,ut),i=Math.imul(L,ct),i=i+Math.imul(D,ut)|0,o=Math.imul(D,ct),n=n+Math.imul(N,ht)|0,i=i+Math.imul(N,lt)|0,i=i+Math.imul(B,ht)|0,o=o+Math.imul(B,lt)|0,n=n+Math.imul(O,pt)|0,i=i+Math.imul(O,mt)|0,i=i+Math.imul(P,pt)|0,o=o+Math.imul(P,mt)|0;var Ot=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,n=Math.imul(L,ht),i=Math.imul(L,lt),i=i+Math.imul(D,ht)|0,o=Math.imul(D,lt),n=n+Math.imul(N,pt)|0,i=i+Math.imul(N,mt)|0,i=i+Math.imul(B,pt)|0,o=o+Math.imul(B,mt)|0;var Pt=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,n=Math.imul(L,pt),i=Math.imul(L,mt),i=i+Math.imul(D,pt)|0,o=Math.imul(D,mt);var Rt=(c+n|0)+((8191&i)<<13)|0;return c=(o+(i>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,u[0]=yt,u[1]=vt,u[2]=bt,u[3]=gt,u[4]=wt,u[5]=_t,u[6]=At,u[7]=Et,u[8]=xt,u[9]=Mt,u[10]=kt,u[11]=St,u[12]=It,u[13]=Ct,u[14]=Tt,u[15]=Ut,u[16]=Ot,u[17]=Pt,u[18]=Rt,0!==c&&(u[19]=c,r.length++),r};function m(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var n=0,i=0,o=0;o>>26)|0,i+=a>>>26,a&=67108863}r.words[o]=s,n=a,a=i}return 0!==n?r.words[o]=n:r.length--,r.strip()}function y(t,e,r){var n=new v;return n.mulp(t,e,r)}function v(t,e){this.x=t,this.y=e}Math.imul||(p=d),o.prototype.mulTo=function(t,e){var r,n=this.length+t.length;return r=10===this.length&&10===t.length?p(this,t,e):n<63?d(this,t,e):n<1024?m(this,t,e):y(this,t,e),r},v.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,n=0;n>=1;return n},v.prototype.permute=function(t,e,r,n,i,o){for(var a=0;a>>=1)i++;return 1<>>=13,r[2*a+1]=8191&o,o>>>=13;for(a=2*e;a>=26,e+=i/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=l(t);if(0===e.length)return new o(1);for(var r=this,n=0;n=0);var e,r=t%26,i=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var a=0;for(e=0;e>>26-r}a&&(this.words[e]=a,this.length++)}if(0!==i){for(e=this.length-1;e>=0;e--)this.words[e+i]=this.words[e];for(e=0;e=0),i=e?(e-e%26)/26:0;var o=t%26,a=Math.min((t-o)/26,this.length),s=67108863^67108863>>>o<a)for(this.length-=a,c=0;c=0&&(0!==f||c>=i);c--){var h=0|this.words[c];this.words[c]=f<<26-o|h>>>o,f=h&s}return u&&0!==f&&(u.words[u.length++]=f),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return n(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){n("number"===typeof t&&t>=0);var e=t%26,r=(t-e)/26,i=1<=0);var e=t%26,r=(t-e)/26;if(n(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var i=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(n("number"===typeof t),n(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(u/67108864|0),this.words[i+r]=67108863&o}for(;i>26,this.words[i+r]=67108863&o;if(0===s)return this.strip();for(n(-1===s),s=0,i=0;i>26,this.words[i]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=this.length-t.length,n=this.clone(),i=t,a=0|i.words[i.length-1],s=this._countBits(a);r=26-s,0!==r&&(i=i.ushln(r),n.iushln(r),a=0|i.words[i.length-1]);var u,c=n.length-i.length;if("mod"!==e){u=new o(null),u.length=c+1,u.words=new Array(u.length);for(var f=0;f=0;l--){var d=67108864*(0|n.words[i.length+l])+(0|n.words[i.length+l-1]);d=Math.min(d/a|0,67108863),n._ishlnsubmul(i,d,l);while(0!==n.negative)d--,n.negative=0,n._ishlnsubmul(i,1,l),n.isZero()||(n.negative^=1);u&&(u.words[l]=d)}return u&&u.strip(),n.strip(),"div"!==e&&0!==r&&n.iushrn(r),{div:u||null,mod:n}},o.prototype.divmod=function(t,e,r){return n(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(s=this.neg().divmod(t,e),"mod"!==e&&(i=s.div.neg()),"div"!==e&&(a=s.mod.neg(),r&&0!==a.negative&&a.iadd(t)),{div:i,mod:a}):0===this.negative&&0!==t.negative?(s=this.divmod(t.neg(),e),"mod"!==e&&(i=s.div.neg()),{div:i,mod:s.mod}):0!==(this.negative&t.negative)?(s=this.neg().divmod(t.neg(),e),"div"!==e&&(a=s.mod.neg(),r&&0!==a.negative&&a.isub(t)),{div:s.div,mod:a}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var i,a,s},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,n=t.ushrn(1),i=t.andln(1),o=r.cmp(n);return o<0||1===i&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){n(t<=67108863);for(var e=(1<<26)%t,r=0,i=this.length-1;i>=0;i--)r=(e*r+(0|this.words[i]))%t;return r},o.prototype.idivn=function(t){n(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var i=(0|this.words[r])+67108864*e;this.words[r]=i/t|0,e=i%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();var i=new o(1),a=new o(0),s=new o(0),u=new o(1),c=0;while(e.isEven()&&r.isEven())e.iushrn(1),r.iushrn(1),++c;var f=r.clone(),h=e.clone();while(!e.isZero()){for(var l=0,d=1;0===(e.words[0]&d)&&l<26;++l,d<<=1);if(l>0){e.iushrn(l);while(l-- >0)(i.isOdd()||a.isOdd())&&(i.iadd(f),a.isub(h)),i.iushrn(1),a.iushrn(1)}for(var p=0,m=1;0===(r.words[0]&m)&&p<26;++p,m<<=1);if(p>0){r.iushrn(p);while(p-- >0)(s.isOdd()||u.isOdd())&&(s.iadd(f),u.isub(h)),s.iushrn(1),u.iushrn(1)}e.cmp(r)>=0?(e.isub(r),i.isub(s),a.isub(u)):(r.isub(e),s.isub(i),u.isub(a))}return{a:s,b:u,gcd:r.iushln(c)}},o.prototype._invmp=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();var i,a=new o(1),s=new o(0),u=r.clone();while(e.cmpn(1)>0&&r.cmpn(1)>0){for(var c=0,f=1;0===(e.words[0]&f)&&c<26;++c,f<<=1);if(c>0){e.iushrn(c);while(c-- >0)a.isOdd()&&a.iadd(u),a.iushrn(1)}for(var h=0,l=1;0===(r.words[0]&l)&&h<26;++h,l<<=1);if(h>0){r.iushrn(h);while(h-- >0)s.isOdd()&&s.iadd(u),s.iushrn(1)}e.cmp(r)>=0?(e.isub(r),a.isub(s)):(r.isub(e),s.isub(a))}return i=0===e.cmpn(1)?a:s,i.cmpn(0)<0&&i.iadd(t),i},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var n=0;e.isEven()&&r.isEven();n++)e.iushrn(1),r.iushrn(1);do{while(e.isEven())e.iushrn(1);while(r.isEven())r.iushrn(1);var i=e.cmp(r);if(i<0){var o=e;e=r,r=o}else if(0===i||0===r.cmpn(1))break;e.isub(r)}while(1);return r.iushln(n)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0===(1&this.words[0])},o.prototype.isOdd=function(){return 1===(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){n("number"===typeof t);var e=t%26,r=(t-e)/26,i=1<>>26,s&=67108863,this.words[a]=s}return 0!==o&&(this.words[a]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)e=1;else{r&&(t=-t),n(t<=67108863,"Number is too big");var i=0|this.words[0];e=i===t?0:it.length)return 1;if(this.length=0;r--){var n=0|this.words[r],i=0|t.words[r];if(n!==i){ni&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new x(t)},o.prototype.toRed=function(t){return n(!this.red,"Already a number in reduction context"),n(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return n(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return n(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return n(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return n(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return n(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return n(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return n(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return n(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return n(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return n(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return n(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return n(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return n(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var b={k256:null,p224:null,p192:null,p25519:null};function g(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function w(){g.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function _(){g.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function A(){g.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function E(){g.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function x(t){if("string"===typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else n(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function M(t){x.call(this,t),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}g.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},g.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),r=this.imulK(r),r=r.iadd(this.tmp),e=r.bitLength()}while(e>this.n);var n=e0?r.isub(this.p):r.strip(),r},g.prototype.split=function(t,e){t.iushrn(this.n,0,e)},g.prototype.imulK=function(t){return t.imul(this.k)},i(w,g),w.prototype.split=function(t,e){for(var r=4194303,n=Math.min(t.length,9),i=0;i>>22,o=a}o>>>=22,t.words[i-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},w.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=i,e=n}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(b[t])return b[t];var e;if("k256"===t)e=new w;else if("p224"===t)e=new _;else if("p192"===t)e=new A;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new E}return b[t]=e,e},x.prototype._verify1=function(t){n(0===t.negative,"red works only with positives"),n(t.red,"red works only with red numbers")},x.prototype._verify2=function(t,e){n(0===(t.negative|e.negative),"red works only with positives"),n(t.red&&t.red===e.red,"red works only with red numbers")},x.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},x.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},x.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},x.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},x.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},x.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},x.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},x.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},x.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},x.prototype.isqr=function(t){return this.imul(t,t.clone())},x.prototype.sqr=function(t){return this.mul(t,t)},x.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(n(e%2===1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}var i=this.m.subn(1),a=0;while(!i.isZero()&&0===i.andln(1))a++,i.iushrn(1);n(!i.isZero());var s=new o(1).toRed(this),u=s.redNeg(),c=this.m.subn(1).iushrn(1),f=this.m.bitLength();f=new o(2*f*f).toRed(this);while(0!==this.pow(f,c).cmp(u))f.redIAdd(u);var h=this.pow(f,i),l=this.pow(t,i.addn(1).iushrn(1)),d=this.pow(t,i),p=a;while(0!==d.cmp(s)){for(var m=d,y=0;0!==m.cmp(s);y++)m=m.redSqr();n(y=0;i--){for(var f=e.words[i],h=c-1;h>=0;h--){var l=f>>h&1;a!==n[0]&&(a=this.sqr(a)),0!==l||0!==s?(s<<=1,s|=l,u++,(u===r||0===i&&0===h)&&(a=this.mul(a,n[s]),u=0,s=0)):u=0}c=26}return a},x.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},x.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new M(t)},i(M,x),M.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},M.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},M.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},M.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),a=i;return i.cmp(this.m)>=0?a=i.isub(this.m):i.cmpn(0)<0&&(a=i.iadd(this.m)),a._forceRed(this)},M.prototype.invm=function(t){var e=this.imod(t._invmp(this.m).mul(this.r2));return e._forceRed(this)}})(t,this)}).call(this,r("62e4")(t))},"39d4":function(t,e,r){"use strict";var n=r("5f2e"),i=r("175f");t.exports={errors:n,formatters:i}},"39f5":function(t,e,r){var n=r("8707").Buffer;function i(t){n.isBuffer(t)||(t=n.from(t));for(var e=t.length/4|0,r=new Array(e),i=0;i>>24]^f[p>>>16&255]^h[m>>>8&255]^l[255&y]^e[v++],a=c[p>>>24]^f[m>>>16&255]^h[y>>>8&255]^l[255&d]^e[v++],s=c[m>>>24]^f[y>>>16&255]^h[d>>>8&255]^l[255&p]^e[v++],u=c[y>>>24]^f[d>>>16&255]^h[p>>>8&255]^l[255&m]^e[v++],d=o,p=a,m=s,y=u;return o=(n[d>>>24]<<24|n[p>>>16&255]<<16|n[m>>>8&255]<<8|n[255&y])^e[v++],a=(n[p>>>24]<<24|n[m>>>16&255]<<16|n[y>>>8&255]<<8|n[255&d])^e[v++],s=(n[m>>>24]<<24|n[y>>>16&255]<<16|n[d>>>8&255]<<8|n[255&p])^e[v++],u=(n[y>>>24]<<24|n[d>>>16&255]<<16|n[p>>>8&255]<<8|n[255&m])^e[v++],o>>>=0,a>>>=0,s>>>=0,u>>>=0,[o,a,s,u]}var s=[0,1,2,4,8,16,32,64,128,27,54],u=function(){for(var t=new Array(256),e=0;e<256;e++)t[e]=e<128?e<<1:e<<1^283;for(var r=[],n=[],i=[[],[],[],[]],o=[[],[],[],[]],a=0,s=0,u=0;u<256;++u){var c=s^s<<1^s<<2^s<<3^s<<4;c=c>>>8^255&c^99,r[a]=c,n[c]=a;var f=t[a],h=t[f],l=t[h],d=257*t[c]^16843008*c;i[0][a]=d<<24|d>>>8,i[1][a]=d<<16|d>>>16,i[2][a]=d<<8|d>>>24,i[3][a]=d,d=16843009*l^65537*h^257*f^16843008*a,o[0][c]=d<<24|d>>>8,o[1][c]=d<<16|d>>>16,o[2][c]=d<<8|d>>>24,o[3][c]=d,0===a?a=s=1:(a=f^t[t[t[l^f]]],s^=t[t[s]])}return{SBOX:r,INV_SBOX:n,SUB_MIX:i,INV_SUB_MIX:o}}();function c(t){this._key=i(t),this._reset()}c.blockSize=16,c.keySize=32,c.prototype.blockSize=c.blockSize,c.prototype.keySize=c.keySize,c.prototype._reset=function(){for(var t=this._key,e=t.length,r=e+6,n=4*(r+1),i=[],o=0;o>>24,a=u.SBOX[a>>>24]<<24|u.SBOX[a>>>16&255]<<16|u.SBOX[a>>>8&255]<<8|u.SBOX[255&a],a^=s[o/e|0]<<24):e>6&&o%e===4&&(a=u.SBOX[a>>>24]<<24|u.SBOX[a>>>16&255]<<16|u.SBOX[a>>>8&255]<<8|u.SBOX[255&a]),i[o]=i[o-e]^a}for(var c=[],f=0;f>>24]]^u.INV_SUB_MIX[1][u.SBOX[l>>>16&255]]^u.INV_SUB_MIX[2][u.SBOX[l>>>8&255]]^u.INV_SUB_MIX[3][u.SBOX[255&l]]}this._nRounds=r,this._keySchedule=i,this._invKeySchedule=c},c.prototype.encryptBlockRaw=function(t){return t=i(t),a(t,this._keySchedule,u.SUB_MIX,u.SBOX,this._nRounds)},c.prototype.encryptBlock=function(t){var e=this.encryptBlockRaw(t),r=n.allocUnsafe(16);return r.writeUInt32BE(e[0],0),r.writeUInt32BE(e[1],4),r.writeUInt32BE(e[2],8),r.writeUInt32BE(e[3],12),r},c.prototype.decryptBlock=function(t){t=i(t);var e=t[1];t[1]=t[3],t[3]=e;var r=a(t,this._invKeySchedule,u.INV_SUB_MIX,u.INV_SBOX,this._nRounds),o=n.allocUnsafe(16);return o.writeUInt32BE(r[0],0),o.writeUInt32BE(r[3],4),o.writeUInt32BE(r[2],8),o.writeUInt32BE(r[1],12),o},c.prototype.scrub=function(){o(this._keySchedule),o(this._invKeySchedule),o(this._key)},t.exports.AES=c},"3a7c":function(t,e,r){(function(t){function r(t){return Array.isArray?Array.isArray(t):"[object Array]"===y(t)}function n(t){return"boolean"===typeof t}function i(t){return null===t}function o(t){return null==t}function a(t){return"number"===typeof t}function s(t){return"string"===typeof t}function u(t){return"symbol"===typeof t}function c(t){return void 0===t}function f(t){return"[object RegExp]"===y(t)}function h(t){return"object"===typeof t&&null!==t}function l(t){return"[object Date]"===y(t)}function d(t){return"[object Error]"===y(t)||t instanceof Error}function p(t){return"function"===typeof t}function m(t){return null===t||"boolean"===typeof t||"number"===typeof t||"string"===typeof t||"symbol"===typeof t||"undefined"===typeof t}function y(t){return Object.prototype.toString.call(t)}e.isArray=r,e.isBoolean=n,e.isNull=i,e.isNullOrUndefined=o,e.isNumber=a,e.isString=s,e.isSymbol=u,e.isUndefined=c,e.isRegExp=f,e.isObject=h,e.isDate=l,e.isError=d,e.isFunction=p,e.isPrimitive=m,e.isBuffer=t.isBuffer}).call(this,r("b639").Buffer)},"3a89":function(t,e,r){"use strict";var n=r("8ac4"),i=r("1b54"),o=r("f8c1");function a(t,e){return void 0===t?e:(n.isBoolean(t,o.COMPRESSED_TYPE_INVALID),t)}t.exports=function(t){return{privateKeyVerify:function(e){return n.isBuffer(e,o.EC_PRIVATE_KEY_TYPE_INVALID),32===e.length&&t.privateKeyVerify(e)},privateKeyExport:function(e,r){n.isBuffer(e,o.EC_PRIVATE_KEY_TYPE_INVALID),n.isBufferLength(e,32,o.EC_PRIVATE_KEY_LENGTH_INVALID),r=a(r,!0);var s=t.privateKeyExport(e,r);return i.privateKeyExport(e,s,r)},privateKeyImport:function(e){if(n.isBuffer(e,o.EC_PRIVATE_KEY_TYPE_INVALID),e=i.privateKeyImport(e),e&&32===e.length&&t.privateKeyVerify(e))return e;throw new Error(o.EC_PRIVATE_KEY_IMPORT_DER_FAIL)},privateKeyNegate:function(e){return n.isBuffer(e,o.EC_PRIVATE_KEY_TYPE_INVALID),n.isBufferLength(e,32,o.EC_PRIVATE_KEY_LENGTH_INVALID),t.privateKeyNegate(e)},privateKeyModInverse:function(e){return n.isBuffer(e,o.EC_PRIVATE_KEY_TYPE_INVALID),n.isBufferLength(e,32,o.EC_PRIVATE_KEY_LENGTH_INVALID),t.privateKeyModInverse(e)},privateKeyTweakAdd:function(e,r){return n.isBuffer(e,o.EC_PRIVATE_KEY_TYPE_INVALID),n.isBufferLength(e,32,o.EC_PRIVATE_KEY_LENGTH_INVALID),n.isBuffer(r,o.TWEAK_TYPE_INVALID),n.isBufferLength(r,32,o.TWEAK_LENGTH_INVALID),t.privateKeyTweakAdd(e,r)},privateKeyTweakMul:function(e,r){return n.isBuffer(e,o.EC_PRIVATE_KEY_TYPE_INVALID),n.isBufferLength(e,32,o.EC_PRIVATE_KEY_LENGTH_INVALID),n.isBuffer(r,o.TWEAK_TYPE_INVALID),n.isBufferLength(r,32,o.TWEAK_LENGTH_INVALID),t.privateKeyTweakMul(e,r)},publicKeyCreate:function(e,r){return n.isBuffer(e,o.EC_PRIVATE_KEY_TYPE_INVALID),n.isBufferLength(e,32,o.EC_PRIVATE_KEY_LENGTH_INVALID),r=a(r,!0),t.publicKeyCreate(e,r)},publicKeyConvert:function(e,r){return n.isBuffer(e,o.EC_PUBLIC_KEY_TYPE_INVALID),n.isBufferLength2(e,33,65,o.EC_PUBLIC_KEY_LENGTH_INVALID),r=a(r,!0),t.publicKeyConvert(e,r)},publicKeyVerify:function(e){return n.isBuffer(e,o.EC_PUBLIC_KEY_TYPE_INVALID),t.publicKeyVerify(e)},publicKeyTweakAdd:function(e,r,i){return n.isBuffer(e,o.EC_PUBLIC_KEY_TYPE_INVALID),n.isBufferLength2(e,33,65,o.EC_PUBLIC_KEY_LENGTH_INVALID),n.isBuffer(r,o.TWEAK_TYPE_INVALID),n.isBufferLength(r,32,o.TWEAK_LENGTH_INVALID),i=a(i,!0),t.publicKeyTweakAdd(e,r,i)},publicKeyTweakMul:function(e,r,i){return n.isBuffer(e,o.EC_PUBLIC_KEY_TYPE_INVALID),n.isBufferLength2(e,33,65,o.EC_PUBLIC_KEY_LENGTH_INVALID),n.isBuffer(r,o.TWEAK_TYPE_INVALID),n.isBufferLength(r,32,o.TWEAK_LENGTH_INVALID),i=a(i,!0),t.publicKeyTweakMul(e,r,i)},publicKeyCombine:function(e,r){n.isArray(e,o.EC_PUBLIC_KEYS_TYPE_INVALID),n.isLengthGTZero(e,o.EC_PUBLIC_KEYS_LENGTH_INVALID);for(var i=0;i>=8;return e}function o(t,e,r){for(var n=0,i=0;ie+1+n)throw new Error("invalid rlp")}return{consumed:1+n,result:i}}function c(t,e){if(0===t.length)throw new Error("invalid rlp data");if(t[e]>=248){var r=t[e]-247;if(e+1+r>t.length)throw new Error("too short");var i=o(t,e+1,r);if(e+1+r+i>t.length)throw new Error("to short");return u(t,e,e+1+r,r+i)}if(t[e]>=192){i=t[e]-192;if(e+1+i>t.length)throw new Error("invalid rlp data");return u(t,e,e+1,i)}if(t[e]>=184){r=t[e]-183;if(e+1+r>t.length)throw new Error("invalid rlp data");i=o(t,e+1,r);if(e+1+r+i>t.length)throw new Error("invalid rlp data");var a=n.hexlify(t.slice(e+1+r,e+1+r+i));return{consumed:1+r+i,result:a}}if(t[e]>=128){i=t[e]-128;if(e+1+i>t.length)throw new Error("invlaid rlp data");a=n.hexlify(t.slice(e+1,e+1+i));return{consumed:1+i,result:a}}return{consumed:1,result:n.hexlify(t[e])}}function f(t){var e=n.arrayify(t),r=c(e,0);if(r.consumed!==e.length)throw new Error("invalid rlp data");return r.result}e.encode=s,e.decode=f},"3bbe":function(t,e,r){var n=r("861d");t.exports=function(t){if(!n(t)&&null!==t)throw TypeError("Can't set "+String(t)+" as a prototype");return t}},"3c21":function(t,e,r){"use strict";var n=r("39d4").formatters,i=r("6248"),o=r("1131"),a=function(t){var e=function(e){var r;return e.property?(t[e.property]||(t[e.property]={}),r=t[e.property]):r=t,e.methods&&e.methods.forEach((function(e){e instanceof i||(e=new i(e)),e.attachToObject(r),e.setRequestManager(t._requestManager)})),t};return e.formatters=n,e.utils=o,e.Method=i,e};t.exports=a},"3c35":function(t,e){(function(e){t.exports=e}).call(this,{})},"3c3c":function(t,e,r){"use strict";(function(e,n){var i=r("17fb"),o=r("39d4").errors,a=r("5ee3").w3cwebsocket,s="[object process]"===Object.prototype.toString.call("undefined"!==typeof e?e:0),u=null,c=null;if(s){u=function(t){return n.from(t).toString("base64")};var f=r("0b16");if(f.URL){var h=f.URL;c=function(t){return new h(t)}}else c=r("0b16").parse}else u=btoa,c=function(t){return new URL(t)};var l=function(t,e){if(!a)throw new Error("websocket is not available");var r=this;this.responseCallbacks={},this.notificationCallbacks=[],e=e||{},this._customTimeout=e.timeout;var n=c(t),o=e.headers||{},s=e.protocol||void 0;n.username&&n.password&&(o.authorization="Basic "+u(n.username+":"+n.password));var f=e.clientConfig||void 0,h=e.requestOptions||void 0;n.auth&&(o.authorization="Basic "+u(n.auth)),this.connection=new a(t,s,void 0,o,h,f),this.addDefaultEvents(),this.connection.onmessage=function(t){var e="string"===typeof t.data?t.data:"";r._parseResponse(e).forEach((function(t){var e=null;i.isArray(t)?t.forEach((function(t){r.responseCallbacks[t.id]&&(e=t.id)})):e=t.id,!e&&t&&t.method&&-1!==t.method.indexOf("_subscription")?r.notificationCallbacks.forEach((function(e){i.isFunction(e)&&e(t)})):r.responseCallbacks[e]&&(r.responseCallbacks[e](null,t),delete r.responseCallbacks[e])}))},Object.defineProperty(this,"connected",{get:function(){return this.connection&&this.connection.readyState===this.connection.OPEN},enumerable:!0})};l.prototype.addDefaultEvents=function(){var t=this;this.connection.onerror=function(){t._timeout()},this.connection.onclose=function(){t._timeout(),t.reset()}},l.prototype._parseResponse=function(t){var e=this,r=[],n=t.replace(/\}[\n\r]?\{/g,"}|--|{").replace(/\}\][\n\r]?\[\{/g,"}]|--|[{").replace(/\}[\n\r]?\[\{/g,"}|--|[{").replace(/\}\][\n\r]?\{/g,"}]|--|{").split("|--|");return n.forEach((function(t){e.lastChunk&&(t=e.lastChunk+t);var n=null;try{n=JSON.parse(t)}catch(i){return e.lastChunk=t,clearTimeout(e.lastChunkTimeout),void(e.lastChunkTimeout=setTimeout((function(){throw e._timeout(),o.InvalidResponse(t)}),15e3))}clearTimeout(e.lastChunkTimeout),e.lastChunk=null,n&&r.push(n)})),r},l.prototype._addResponseCallback=function(t,e){var r=t.id||t[0].id,n=t.method||t[0].method;this.responseCallbacks[r]=e,this.responseCallbacks[r].method=n;var i=this;this._customTimeout&&setTimeout((function(){i.responseCallbacks[r]&&(i.responseCallbacks[r](o.ConnectionTimeout(i._customTimeout)),delete i.responseCallbacks[r])}),this._customTimeout)},l.prototype._timeout=function(){for(var t in this.responseCallbacks)this.responseCallbacks.hasOwnProperty(t)&&(this.responseCallbacks[t](o.InvalidConnection("on WS")),delete this.responseCallbacks[t])},l.prototype.send=function(t,e){var r=this;if(this.connection.readyState!==this.connection.CONNECTING){if(this.connection.readyState!==this.connection.OPEN)return console.error("connection not open on send()"),"function"===typeof this.connection.onerror?this.connection.onerror(new Error("connection not open")):console.error("no error callback"),void e(new Error("connection not open"));this.connection.send(JSON.stringify(t)),this._addResponseCallback(t,e)}else setTimeout((function(){r.send(t,e)}),10)},l.prototype.on=function(t,e){if("function"!==typeof e)throw new Error("The second parameter callback must be a function.");switch(t){case"data":this.notificationCallbacks.push(e);break;case"connect":this.connection.onopen=e;break;case"end":this.connection.onclose=e;break;case"error":this.connection.onerror=e;break}},l.prototype.removeListener=function(t,e){var r=this;switch(t){case"data":this.notificationCallbacks.forEach((function(t,n){t===e&&r.notificationCallbacks.splice(n,1)}));break}},l.prototype.removeAllListeners=function(t){switch(t){case"data":this.notificationCallbacks=[];break;case"connect":this.connection.onopen=null;break;case"end":this.connection.onclose=null;break;case"error":this.connection.onerror=null;break;default:break}},l.prototype.reset=function(){this._timeout(),this.notificationCallbacks=[],this.addDefaultEvents()},l.prototype.disconnect=function(){this.connection&&this.connection.close()},l.prototype.supportsSubscriptions=function(){return!0},t.exports=l}).call(this,r("4362"),r("b639").Buffer)},"3c43":function(t,e){e.endianness=function(){return"LE"},e.hostname=function(){return"undefined"!==typeof location?location.hostname:""},e.loadavg=function(){return[]},e.uptime=function(){return 0},e.freemem=function(){return Number.MAX_VALUE},e.totalmem=function(){return Number.MAX_VALUE},e.cpus=function(){return[]},e.type=function(){return"Browser"},e.release=function(){return"undefined"!==typeof navigator?navigator.appVersion:""},e.networkInterfaces=e.getNetworkInterfaces=function(){return{}},e.arch=function(){return"javascript"},e.platform=function(){return"browser"},e.tmpdir=e.tmpDir=function(){return"/tmp"},e.EOL="\n",e.homedir=function(){return"/"}},"3daf":function(t,e,r){"use strict";var n=r("f3a3"),i=r("399f"),o=r("3fb5"),a=r("ea53"),s=n.assert;function u(t){this.twisted=1!==(0|t.a),this.mOneA=this.twisted&&-1===(0|t.a),this.extended=this.mOneA,a.call(this,"edwards",t),this.a=new i(t.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new i(t.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new i(t.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),s(!this.twisted||0===this.c.fromRed().cmpn(1)),this.oneC=1===(0|t.c)}function c(t,e,r,n,o){a.BasePoint.call(this,t,"projective"),null===e&&null===r&&null===n?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new i(e,16),this.y=new i(r,16),this.z=n?new i(n,16):this.curve.one,this.t=o&&new i(o,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}o(u,a),t.exports=u,u.prototype._mulA=function(t){return this.mOneA?t.redNeg():this.a.redMul(t)},u.prototype._mulC=function(t){return this.oneC?t:this.c.redMul(t)},u.prototype.jpoint=function(t,e,r,n){return this.point(t,e,r,n)},u.prototype.pointFromX=function(t,e){t=new i(t,16),t.red||(t=t.toRed(this.red));var r=t.redSqr(),n=this.c2.redSub(this.a.redMul(r)),o=this.one.redSub(this.c2.redMul(this.d).redMul(r)),a=n.redMul(o.redInvm()),s=a.redSqrt();if(0!==s.redSqr().redSub(a).cmp(this.zero))throw new Error("invalid point");var u=s.fromRed().isOdd();return(e&&!u||!e&&u)&&(s=s.redNeg()),this.point(t,s)},u.prototype.pointFromY=function(t,e){t=new i(t,16),t.red||(t=t.toRed(this.red));var r=t.redSqr(),n=r.redSub(this.c2),o=r.redMul(this.d).redMul(this.c2).redSub(this.a),a=n.redMul(o.redInvm());if(0===a.cmp(this.zero)){if(e)throw new Error("invalid point");return this.point(this.zero,t)}var s=a.redSqrt();if(0!==s.redSqr().redSub(a).cmp(this.zero))throw new Error("invalid point");return s.fromRed().isOdd()!==e&&(s=s.redNeg()),this.point(s,t)},u.prototype.validate=function(t){if(t.isInfinity())return!0;t.normalize();var e=t.x.redSqr(),r=t.y.redSqr(),n=e.redMul(this.a).redAdd(r),i=this.c2.redMul(this.one.redAdd(this.d.redMul(e).redMul(r)));return 0===n.cmp(i)},o(c,a.BasePoint),u.prototype.pointFromJSON=function(t){return c.fromJSON(this,t)},u.prototype.point=function(t,e,r,n){return new c(this,t,e,r,n)},c.fromJSON=function(t,e){return new c(t,e[0],e[1],e[2])},c.prototype.inspect=function(){return this.isInfinity()?"":""},c.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&(0===this.y.cmp(this.z)||this.zOne&&0===this.y.cmp(this.curve.c))},c.prototype._extDbl=function(){var t=this.x.redSqr(),e=this.y.redSqr(),r=this.z.redSqr();r=r.redIAdd(r);var n=this.curve._mulA(t),i=this.x.redAdd(this.y).redSqr().redISub(t).redISub(e),o=n.redAdd(e),a=o.redSub(r),s=n.redSub(e),u=i.redMul(a),c=o.redMul(s),f=i.redMul(s),h=a.redMul(o);return this.curve.point(u,c,h,f)},c.prototype._projDbl=function(){var t,e,r,n=this.x.redAdd(this.y).redSqr(),i=this.x.redSqr(),o=this.y.redSqr();if(this.curve.twisted){var a=this.curve._mulA(i),s=a.redAdd(o);if(this.zOne)t=n.redSub(i).redSub(o).redMul(s.redSub(this.curve.two)),e=s.redMul(a.redSub(o)),r=s.redSqr().redSub(s).redSub(s);else{var u=this.z.redSqr(),c=s.redSub(u).redISub(u);t=n.redSub(i).redISub(o).redMul(c),e=s.redMul(a.redSub(o)),r=s.redMul(c)}}else{a=i.redAdd(o),u=this.curve._mulC(this.z).redSqr(),c=a.redSub(u).redSub(u);t=this.curve._mulC(n.redISub(a)).redMul(c),e=this.curve._mulC(a).redMul(i.redISub(o)),r=a.redMul(c)}return this.curve.point(t,e,r)},c.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},c.prototype._extAdd=function(t){var e=this.y.redSub(this.x).redMul(t.y.redSub(t.x)),r=this.y.redAdd(this.x).redMul(t.y.redAdd(t.x)),n=this.t.redMul(this.curve.dd).redMul(t.t),i=this.z.redMul(t.z.redAdd(t.z)),o=r.redSub(e),a=i.redSub(n),s=i.redAdd(n),u=r.redAdd(e),c=o.redMul(a),f=s.redMul(u),h=o.redMul(u),l=a.redMul(s);return this.curve.point(c,f,l,h)},c.prototype._projAdd=function(t){var e,r,n=this.z.redMul(t.z),i=n.redSqr(),o=this.x.redMul(t.x),a=this.y.redMul(t.y),s=this.curve.d.redMul(o).redMul(a),u=i.redSub(s),c=i.redAdd(s),f=this.x.redAdd(this.y).redMul(t.x.redAdd(t.y)).redISub(o).redISub(a),h=n.redMul(u).redMul(f);return this.curve.twisted?(e=n.redMul(c).redMul(a.redSub(this.curve._mulA(o))),r=u.redMul(c)):(e=n.redMul(c).redMul(a.redSub(o)),r=this.curve._mulC(u).redMul(c)),this.curve.point(h,e,r)},c.prototype.add=function(t){return this.isInfinity()?t:t.isInfinity()?this:this.curve.extended?this._extAdd(t):this._projAdd(t)},c.prototype.mul=function(t){return this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve._wnafMul(this,t)},c.prototype.mulAdd=function(t,e,r){return this.curve._wnafMulAdd(1,[this,e],[t,r],2,!1)},c.prototype.jmulAdd=function(t,e,r){return this.curve._wnafMulAdd(1,[this,e],[t,r],2,!0)},c.prototype.normalize=function(){if(this.zOne)return this;var t=this.z.redInvm();return this.x=this.x.redMul(t),this.y=this.y.redMul(t),this.t&&(this.t=this.t.redMul(t)),this.z=this.curve.one,this.zOne=!0,this},c.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},c.prototype.getX=function(){return this.normalize(),this.x.fromRed()},c.prototype.getY=function(){return this.normalize(),this.y.fromRed()},c.prototype.eq=function(t){return this===t||0===this.getX().cmp(t.getX())&&0===this.getY().cmp(t.getY())},c.prototype.eqXToP=function(t){var e=t.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(e))return!0;for(var r=t.clone(),n=this.curve.redN.redMul(this.z);;){if(r.iadd(this.curve.n),r.cmp(this.curve.p)>=0)return!1;if(e.redIAdd(n),0===this.x.cmp(e))return!0}},c.prototype.toP=c.prototype.normalize,c.prototype.mixedAdd=c.prototype.add},"3f62":function(t,e,r){var n=r("8707").Buffer,i=n.alloc(16,0);function o(t){return[t.readUInt32BE(0),t.readUInt32BE(4),t.readUInt32BE(8),t.readUInt32BE(12)]}function a(t){var e=n.allocUnsafe(16);return e.writeUInt32BE(t[0]>>>0,0),e.writeUInt32BE(t[1]>>>0,4),e.writeUInt32BE(t[2]>>>0,8),e.writeUInt32BE(t[3]>>>0,12),e}function s(t){this.h=t,this.state=n.alloc(16,0),this.cache=n.allocUnsafe(0)}s.prototype.ghash=function(t){var e=-1;while(++e0;t--)n[t]=n[t]>>>1|(1&n[t-1])<<31;n[0]=n[0]>>>1,r&&(n[0]=n[0]^225<<24)}this.state=a(i)},s.prototype.update=function(t){var e;this.cache=n.concat([this.cache,t]);while(this.cache.length>=16)e=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(e)},s.prototype.final=function(t,e){return this.cache.length&&this.ghash(n.concat([this.cache,i],16)),this.ghash(a([0,t,0,e])),this.state},t.exports=s},"3f8c":function(t,e){t.exports={}},"3fb5":function(t,e){"function"===typeof Object.create?t.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}},"409b":function(t,e){t.exports={doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}},"40c9":function(t,e,r){"use strict";(function(t){Object.defineProperty(e,"__esModule",{value:!0});var n=r("9a12"),i=r("399f");e.zeros=function(e){return t.allocUnsafe(e).fill(0)},e.setLengthLeft=function(t,r,n){void 0===n&&(n=!1);var i=e.zeros(r);return t=e.toBuffer(t),n?t.length0&&"0"===e.toString())t=t.slice(1),e=t[0];return t},e.stripZeros=e.unpad,e.toBuffer=function(e){if(!t.isBuffer(e))if(Array.isArray(e))e=t.from(e);else if("string"===typeof e){if(!n.isHexString(e))throw new Error("Cannot convert string to buffer. toBuffer only supports 0x-prefixed hex strings and this string was given: "+e);e=t.from(n.padToEven(n.stripHexPrefix(e)),"hex")}else if("number"===typeof e)e=n.intToBuffer(e);else if(null===e||void 0===e)e=t.allocUnsafe(0);else if(i.isBN(e))e=e.toArrayLike(t);else{if(!e.toArray)throw new Error("invalid type");e=t.from(e.toArray())}return e},e.bufferToInt=function(t){return new i(e.toBuffer(t)).toNumber()},e.bufferToHex=function(t){return t=e.toBuffer(t),"0x"+t.toString("hex")},e.fromSigned=function(t){return new i(t).fromTwos(256)},e.toUnsigned=function(e){return t.from(e.toTwos(256).toArray())},e.addHexPrefix=function(t){return"string"!==typeof t?t:n.isHexPrefixed(t)?t:"0x"+t},e.baToJSON=function(r){if(t.isBuffer(r))return"0x"+r.toString("hex");if(r instanceof Array){for(var n=[],i=0;i16)throw new Error("unable to decrypt data");var r=-1;while(++r16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e}else if(this.cache.length>=16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e;return null},l.prototype.flush=function(){if(this.cache.length)return this.cache},e.createDecipher=m,e.createDecipheriv=p},"428f":function(t,e,r){var n=r("da84");t.exports=n},"429b":function(t,e,r){t.exports=r("faa1").EventEmitter},4348:function(t,e,r){"use strict";function n(t,e,r){Object.defineProperty(t,e,{enumerable:!0,value:r,writable:!1})}function i(t,e,r){var n=JSON.stringify(r);Object.defineProperty(t,e,{enumerable:!0,get:function(){return JSON.parse(n)}})}function o(t){var e={},r=[];return Object.keys(t).forEach((function(n){var i=t[n];i instanceof Promise?r.push(i.then((function(t){return e[n]=t,null}))):e[n]=i})),Promise.all(r).then((function(){return e}))}function a(t){var e={};for(var r in t)e[r]=t[r];return e}function s(t){return JSON.parse(JSON.stringify(t))}Object.defineProperty(e,"__esModule",{value:!0}),e.defineReadOnly=n,e.defineFrozen=i,e.resolveProperties=o,e.shallowCopy=a,e.jsonCopy=s},4362:function(t,e,r){e.nextTick=function(t){var e=Array.prototype.slice.call(arguments);e.shift(),setTimeout((function(){t.apply(null,e)}),0)},e.platform=e.arch=e.execPath=e.title="browser",e.pid=1,e.browser=!0,e.env={},e.argv=[],e.binding=function(t){throw new Error("No such module. (Possibly not yet loaded)")},function(){var t,n="/";e.cwd=function(){return n},e.chdir=function(e){t||(t=r("df7c")),n=t.resolve(e,n)}}(),e.exit=e.kill=e.umask=e.dlopen=e.uptime=e.memoryUsage=e.uvCounters=function(){},e.features={}},"43c5":function(t){t.exports=JSON.parse('{"name":"byzantium","comment":"Hardfork with new precompiles, instructions and other protocol changes","eip":{"url":"https://eips.ethereum.org/EIPS/eip-609","status":"Final"},"gasConfig":{},"gasPrices":{"modexpGquaddivisor":{"v":20,"d":"Gquaddivisor from modexp precompile for gas calculation"},"ecAdd":{"v":500,"d":"Gas costs for curve addition precompile"},"ecMul":{"v":40000,"d":"Gas costs for curve multiplication precompile"},"ecPairing":{"v":100000,"d":"Base gas costs for curve pairing precompile"},"ecPairingWord":{"v":80000,"d":"Gas costs regarding curve pairing precompile input length"}},"vm":{},"pow":{"minerReward":{"v":"3000000000000000000","d":"the amount a miner get rewarded for mining a block"}},"casper":{},"sharding":{}}')},"44a3":function(t,e,r){"use strict";var n=r("399f"),i=r("f3a3"),o=i.assert,a=i.cachedProperty,s=i.parseBytes;function u(t,e){this.eddsa=t,"object"!==typeof e&&(e=s(e)),Array.isArray(e)&&(e={R:e.slice(0,t.encodingLength),S:e.slice(t.encodingLength)}),o(e.R&&e.S,"Signature without R or S"),t.isPoint(e.R)&&(this._R=e.R),e.S instanceof n&&(this._S=e.S),this._Rencoded=Array.isArray(e.R)?e.R:e.Rencoded,this._Sencoded=Array.isArray(e.S)?e.S:e.Sencoded}a(u,"S",(function(){return this.eddsa.decodeInt(this.Sencoded())})),a(u,"R",(function(){return this.eddsa.decodePoint(this.Rencoded())})),a(u,"Rencoded",(function(){return this.eddsa.encodePoint(this.R())})),a(u,"Sencoded",(function(){return this.eddsa.encodeInt(this.S())})),u.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())},u.prototype.toHex=function(){return i.encode(this.toBytes(),"hex").toUpperCase()},t.exports=u},"44ad":function(t,e,r){var n=r("d039"),i=r("c6b6"),o="".split;t.exports=n((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==i(t)?o.call(t,""):Object(t)}:Object},"44d2":function(t,e,r){var n=r("b622"),i=r("7c73"),o=r("9bf2"),a=n("unscopables"),s=Array.prototype;void 0==s[a]&&o.f(s,a,{configurable:!0,value:i(null)}),t.exports=function(t){s[a][t]=!0}},"44de":function(t,e,r){var n=r("da84");t.exports=function(t,e){var r=n.console;r&&r.error&&(1===arguments.length?r.error(t):r.error(t,e))}},4633:function(t,e,r){"use strict";(function(t){var n=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(e,"__esModule",{value:!0});var i=r("65eb"),o=function(e){function r(){var t=e.call(this)||this;return t._contentType=null,t._body=null,t._reset(),t}return n(r,e),r.prototype._reset=function(){this._contentType=null,this._body=null},r.prototype._setData=function(e){if(null!=e)if("string"===typeof e)0!==e.length&&(this._contentType="text/plain;charset=UTF-8"),this._body=new t(e,"utf-8");else if(t.isBuffer(e))this._body=e;else if(e instanceof ArrayBuffer){for(var r=new t(e.byteLength),n=new Uint8Array(e),i=0;i1?(t[r[0]]=t[r[0]]||{},t[r[0]][r[1]]=e):t[r[0]]=e},i.prototype.buildCall=function(){var t=this;return function(){t.subscriptions[arguments[0]]||console.warn("Subscription "+JSON.stringify(arguments[0])+" doesn't exist. Subscribing anyway.");var e=new n({subscription:t.subscriptions[arguments[0]],requestManager:t.requestManager,type:t.type});return e.subscribe.apply(e,arguments)}},t.exports={subscriptions:i,subscription:n}},4930:function(t,e,r){var n=r("d039");t.exports=!!Object.getOwnPropertySymbols&&!n((function(){return!String(Symbol())}))},"4a87":function(t,e,r){(function(t){(function(t,e){"use strict";function n(t,e){if(!t)throw new Error(e||"Assertion failed")}function i(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}function o(t,e,r){if(o.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==e&&"be"!==e||(r=e,e=10),this._init(t||0,e||10,r||"be"))}var a;"object"===typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;try{a=r("b639").Buffer}catch(k){}function s(t,e,r){for(var n=0,i=Math.min(t.length,r),o=e;o=49&&a<=54?a-49+10:a>=17&&a<=22?a-17+10:15&a}return n}function u(t,e,r,n){for(var i=0,o=Math.min(t.length,r),a=e;a=49?s-49+10:s>=17?s-17+10:s}return i}o.isBN=function(t){return t instanceof o||null!==t&&"object"===typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"===typeof t)return this._initNumber(t,e,r);if("object"===typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),n(e===(0|e)&&e>=2&&e<=36),t=t.toString().replace(/\s+/g,"");var i=0;"-"===t[0]&&i++,16===e?this._parseHex(t,i):this._parseBase(t,e,i),"-"===t[0]&&(this.negative=1),this.strip(),"le"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initNumber=function(t,e,r){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(n(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),"le"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initArray=function(t,e,r){if(n("number"===typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var i=0;i=0;i-=3)a=t[i]|t[i-1]<<8|t[i-2]<<16,this.words[o]|=a<>>26-s&67108863,s+=24,s>=26&&(s-=26,o++);else if("le"===r)for(i=0,o=0;i>>26-s&67108863,s+=24,s>=26&&(s-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var r=0;r=e;r-=6)i=s(t,r,r+6),this.words[n]|=i<>>26-o&4194303,o+=24,o>=26&&(o-=26,n++);r+6!==e&&(i=s(t,e,r+6),this.words[n]|=i<>>26-o&4194303),this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var n=0,i=1;i<=67108863;i*=e)n++;n--,i=i/e|0;for(var o=t.length-r,a=o%n,s=Math.min(o,o-a)+r,c=0,f=r;f1&&0===this.words[this.length-1])this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var c=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],f=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],h=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function l(t){for(var e=new Array(t.bitLength()),r=0;r>>i}return e}function d(t,e,r){r.negative=e.negative^t.negative;var n=t.length+e.length|0;r.length=n,n=n-1|0;var i=0|t.words[0],o=0|e.words[0],a=i*o,s=67108863&a,u=a/67108864|0;r.words[0]=s;for(var c=1;c>>26,h=67108863&u,l=Math.min(c,e.length-1),d=Math.max(0,c-t.length+1);d<=l;d++){var p=c-d|0;i=0|t.words[p],o=0|e.words[d],a=i*o+h,f+=a/67108864|0,h=67108863&a}r.words[c]=0|h,u=0|f}return 0!==u?r.words[c]=0|u:r.length--,r.strip()}o.prototype.toString=function(t,e){var r;if(t=t||10,e=0|e||1,16===t||"hex"===t){r="";for(var i=0,o=0,a=0;a>>24-i&16777215,r=0!==o||a!==this.length-1?c[6-u.length]+u+r:u+r,i+=2,i>=26&&(i-=26,a--)}0!==o&&(r=o.toString(16)+r);while(r.length%e!==0)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var l=f[t],d=h[t];r="";var p=this.clone();p.negative=0;while(!p.isZero()){var m=p.modn(d).toString(t);p=p.idivn(d),r=p.isZero()?m+r:c[l-m.length]+m+r}this.isZero()&&(r="0"+r);while(r.length%e!==0)r="0"+r;return 0!==this.negative&&(r="-"+r),r}n(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&n(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return n("undefined"!==typeof a),this.toArrayLike(a,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var i=this.byteLength(),o=r||Math.max(1,i);n(i<=o,"byte array longer than desired length"),n(o>0,"Requested array length <= 0"),this.strip();var a,s,u="le"===e,c=new t(o),f=this.clone();if(u){for(s=0;!f.isZero();s++)a=f.andln(255),f.iushrn(8),c[s]=a;for(;s=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0===(8191&e)&&(r+=13,e>>>=13),0===(127&e)&&(r+=7,e>>>=7),0===(15&e)&&(r+=4,e>>>=4),0===(3&e)&&(r+=2,e>>>=2),0===(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var n=0;nt.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){n("number"===typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var i=0;i0&&(this.words[i]=~this.words[i]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){n("number"===typeof t&&t>=0);var r=t/26|0,i=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,n=t):(r=t,n=this);for(var i=0,o=0;o>>26;for(;0!==i&&o>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,n,i=this.cmp(t);if(0===i)return this.negative=0,this.length=1,this.words[0]=0,this;i>0?(r=this,n=t):(r=t,n=this);for(var o=0,a=0;a>26,this.words[a]=67108863&e;for(;0!==o&&a>26,this.words[a]=67108863&e;if(0===o&&a>>13,d=0|a[1],p=8191&d,m=d>>>13,y=0|a[2],v=8191&y,b=y>>>13,g=0|a[3],w=8191&g,_=g>>>13,A=0|a[4],E=8191&A,x=A>>>13,M=0|a[5],k=8191&M,S=M>>>13,I=0|a[6],C=8191&I,T=I>>>13,U=0|a[7],O=8191&U,P=U>>>13,R=0|a[8],N=8191&R,B=R>>>13,j=0|a[9],L=8191&j,D=j>>>13,F=0|s[0],q=8191&F,H=F>>>13,z=0|s[1],K=8191&z,V=z>>>13,G=0|s[2],$=8191&G,Y=G>>>13,W=0|s[3],Z=8191&W,J=W>>>13,X=0|s[4],Q=8191&X,tt=X>>>13,et=0|s[5],rt=8191&et,nt=et>>>13,it=0|s[6],ot=8191&it,at=it>>>13,st=0|s[7],ut=8191&st,ct=st>>>13,ft=0|s[8],ht=8191&ft,lt=ft>>>13,dt=0|s[9],pt=8191&dt,mt=dt>>>13;r.negative=t.negative^e.negative,r.length=19,n=Math.imul(h,q),i=Math.imul(h,H),i=i+Math.imul(l,q)|0,o=Math.imul(l,H);var yt=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(yt>>>26)|0,yt&=67108863,n=Math.imul(p,q),i=Math.imul(p,H),i=i+Math.imul(m,q)|0,o=Math.imul(m,H),n=n+Math.imul(h,K)|0,i=i+Math.imul(h,V)|0,i=i+Math.imul(l,K)|0,o=o+Math.imul(l,V)|0;var vt=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(vt>>>26)|0,vt&=67108863,n=Math.imul(v,q),i=Math.imul(v,H),i=i+Math.imul(b,q)|0,o=Math.imul(b,H),n=n+Math.imul(p,K)|0,i=i+Math.imul(p,V)|0,i=i+Math.imul(m,K)|0,o=o+Math.imul(m,V)|0,n=n+Math.imul(h,$)|0,i=i+Math.imul(h,Y)|0,i=i+Math.imul(l,$)|0,o=o+Math.imul(l,Y)|0;var bt=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(bt>>>26)|0,bt&=67108863,n=Math.imul(w,q),i=Math.imul(w,H),i=i+Math.imul(_,q)|0,o=Math.imul(_,H),n=n+Math.imul(v,K)|0,i=i+Math.imul(v,V)|0,i=i+Math.imul(b,K)|0,o=o+Math.imul(b,V)|0,n=n+Math.imul(p,$)|0,i=i+Math.imul(p,Y)|0,i=i+Math.imul(m,$)|0,o=o+Math.imul(m,Y)|0,n=n+Math.imul(h,Z)|0,i=i+Math.imul(h,J)|0,i=i+Math.imul(l,Z)|0,o=o+Math.imul(l,J)|0;var gt=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(gt>>>26)|0,gt&=67108863,n=Math.imul(E,q),i=Math.imul(E,H),i=i+Math.imul(x,q)|0,o=Math.imul(x,H),n=n+Math.imul(w,K)|0,i=i+Math.imul(w,V)|0,i=i+Math.imul(_,K)|0,o=o+Math.imul(_,V)|0,n=n+Math.imul(v,$)|0,i=i+Math.imul(v,Y)|0,i=i+Math.imul(b,$)|0,o=o+Math.imul(b,Y)|0,n=n+Math.imul(p,Z)|0,i=i+Math.imul(p,J)|0,i=i+Math.imul(m,Z)|0,o=o+Math.imul(m,J)|0,n=n+Math.imul(h,Q)|0,i=i+Math.imul(h,tt)|0,i=i+Math.imul(l,Q)|0,o=o+Math.imul(l,tt)|0;var wt=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(wt>>>26)|0,wt&=67108863,n=Math.imul(k,q),i=Math.imul(k,H),i=i+Math.imul(S,q)|0,o=Math.imul(S,H),n=n+Math.imul(E,K)|0,i=i+Math.imul(E,V)|0,i=i+Math.imul(x,K)|0,o=o+Math.imul(x,V)|0,n=n+Math.imul(w,$)|0,i=i+Math.imul(w,Y)|0,i=i+Math.imul(_,$)|0,o=o+Math.imul(_,Y)|0,n=n+Math.imul(v,Z)|0,i=i+Math.imul(v,J)|0,i=i+Math.imul(b,Z)|0,o=o+Math.imul(b,J)|0,n=n+Math.imul(p,Q)|0,i=i+Math.imul(p,tt)|0,i=i+Math.imul(m,Q)|0,o=o+Math.imul(m,tt)|0,n=n+Math.imul(h,rt)|0,i=i+Math.imul(h,nt)|0,i=i+Math.imul(l,rt)|0,o=o+Math.imul(l,nt)|0;var _t=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(_t>>>26)|0,_t&=67108863,n=Math.imul(C,q),i=Math.imul(C,H),i=i+Math.imul(T,q)|0,o=Math.imul(T,H),n=n+Math.imul(k,K)|0,i=i+Math.imul(k,V)|0,i=i+Math.imul(S,K)|0,o=o+Math.imul(S,V)|0,n=n+Math.imul(E,$)|0,i=i+Math.imul(E,Y)|0,i=i+Math.imul(x,$)|0,o=o+Math.imul(x,Y)|0,n=n+Math.imul(w,Z)|0,i=i+Math.imul(w,J)|0,i=i+Math.imul(_,Z)|0,o=o+Math.imul(_,J)|0,n=n+Math.imul(v,Q)|0,i=i+Math.imul(v,tt)|0,i=i+Math.imul(b,Q)|0,o=o+Math.imul(b,tt)|0,n=n+Math.imul(p,rt)|0,i=i+Math.imul(p,nt)|0,i=i+Math.imul(m,rt)|0,o=o+Math.imul(m,nt)|0,n=n+Math.imul(h,ot)|0,i=i+Math.imul(h,at)|0,i=i+Math.imul(l,ot)|0,o=o+Math.imul(l,at)|0;var At=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(At>>>26)|0,At&=67108863,n=Math.imul(O,q),i=Math.imul(O,H),i=i+Math.imul(P,q)|0,o=Math.imul(P,H),n=n+Math.imul(C,K)|0,i=i+Math.imul(C,V)|0,i=i+Math.imul(T,K)|0,o=o+Math.imul(T,V)|0,n=n+Math.imul(k,$)|0,i=i+Math.imul(k,Y)|0,i=i+Math.imul(S,$)|0,o=o+Math.imul(S,Y)|0,n=n+Math.imul(E,Z)|0,i=i+Math.imul(E,J)|0,i=i+Math.imul(x,Z)|0,o=o+Math.imul(x,J)|0,n=n+Math.imul(w,Q)|0,i=i+Math.imul(w,tt)|0,i=i+Math.imul(_,Q)|0,o=o+Math.imul(_,tt)|0,n=n+Math.imul(v,rt)|0,i=i+Math.imul(v,nt)|0,i=i+Math.imul(b,rt)|0,o=o+Math.imul(b,nt)|0,n=n+Math.imul(p,ot)|0,i=i+Math.imul(p,at)|0,i=i+Math.imul(m,ot)|0,o=o+Math.imul(m,at)|0,n=n+Math.imul(h,ut)|0,i=i+Math.imul(h,ct)|0,i=i+Math.imul(l,ut)|0,o=o+Math.imul(l,ct)|0;var Et=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(Et>>>26)|0,Et&=67108863,n=Math.imul(N,q),i=Math.imul(N,H),i=i+Math.imul(B,q)|0,o=Math.imul(B,H),n=n+Math.imul(O,K)|0,i=i+Math.imul(O,V)|0,i=i+Math.imul(P,K)|0,o=o+Math.imul(P,V)|0,n=n+Math.imul(C,$)|0,i=i+Math.imul(C,Y)|0,i=i+Math.imul(T,$)|0,o=o+Math.imul(T,Y)|0,n=n+Math.imul(k,Z)|0,i=i+Math.imul(k,J)|0,i=i+Math.imul(S,Z)|0,o=o+Math.imul(S,J)|0,n=n+Math.imul(E,Q)|0,i=i+Math.imul(E,tt)|0,i=i+Math.imul(x,Q)|0,o=o+Math.imul(x,tt)|0,n=n+Math.imul(w,rt)|0,i=i+Math.imul(w,nt)|0,i=i+Math.imul(_,rt)|0,o=o+Math.imul(_,nt)|0,n=n+Math.imul(v,ot)|0,i=i+Math.imul(v,at)|0,i=i+Math.imul(b,ot)|0,o=o+Math.imul(b,at)|0,n=n+Math.imul(p,ut)|0,i=i+Math.imul(p,ct)|0,i=i+Math.imul(m,ut)|0,o=o+Math.imul(m,ct)|0,n=n+Math.imul(h,ht)|0,i=i+Math.imul(h,lt)|0,i=i+Math.imul(l,ht)|0,o=o+Math.imul(l,lt)|0;var xt=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(xt>>>26)|0,xt&=67108863,n=Math.imul(L,q),i=Math.imul(L,H),i=i+Math.imul(D,q)|0,o=Math.imul(D,H),n=n+Math.imul(N,K)|0,i=i+Math.imul(N,V)|0,i=i+Math.imul(B,K)|0,o=o+Math.imul(B,V)|0,n=n+Math.imul(O,$)|0,i=i+Math.imul(O,Y)|0,i=i+Math.imul(P,$)|0,o=o+Math.imul(P,Y)|0,n=n+Math.imul(C,Z)|0,i=i+Math.imul(C,J)|0,i=i+Math.imul(T,Z)|0,o=o+Math.imul(T,J)|0,n=n+Math.imul(k,Q)|0,i=i+Math.imul(k,tt)|0,i=i+Math.imul(S,Q)|0,o=o+Math.imul(S,tt)|0,n=n+Math.imul(E,rt)|0,i=i+Math.imul(E,nt)|0,i=i+Math.imul(x,rt)|0,o=o+Math.imul(x,nt)|0,n=n+Math.imul(w,ot)|0,i=i+Math.imul(w,at)|0,i=i+Math.imul(_,ot)|0,o=o+Math.imul(_,at)|0,n=n+Math.imul(v,ut)|0,i=i+Math.imul(v,ct)|0,i=i+Math.imul(b,ut)|0,o=o+Math.imul(b,ct)|0,n=n+Math.imul(p,ht)|0,i=i+Math.imul(p,lt)|0,i=i+Math.imul(m,ht)|0,o=o+Math.imul(m,lt)|0,n=n+Math.imul(h,pt)|0,i=i+Math.imul(h,mt)|0,i=i+Math.imul(l,pt)|0,o=o+Math.imul(l,mt)|0;var Mt=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,n=Math.imul(L,K),i=Math.imul(L,V),i=i+Math.imul(D,K)|0,o=Math.imul(D,V),n=n+Math.imul(N,$)|0,i=i+Math.imul(N,Y)|0,i=i+Math.imul(B,$)|0,o=o+Math.imul(B,Y)|0,n=n+Math.imul(O,Z)|0,i=i+Math.imul(O,J)|0,i=i+Math.imul(P,Z)|0,o=o+Math.imul(P,J)|0,n=n+Math.imul(C,Q)|0,i=i+Math.imul(C,tt)|0,i=i+Math.imul(T,Q)|0,o=o+Math.imul(T,tt)|0,n=n+Math.imul(k,rt)|0,i=i+Math.imul(k,nt)|0,i=i+Math.imul(S,rt)|0,o=o+Math.imul(S,nt)|0,n=n+Math.imul(E,ot)|0,i=i+Math.imul(E,at)|0,i=i+Math.imul(x,ot)|0,o=o+Math.imul(x,at)|0,n=n+Math.imul(w,ut)|0,i=i+Math.imul(w,ct)|0,i=i+Math.imul(_,ut)|0,o=o+Math.imul(_,ct)|0,n=n+Math.imul(v,ht)|0,i=i+Math.imul(v,lt)|0,i=i+Math.imul(b,ht)|0,o=o+Math.imul(b,lt)|0,n=n+Math.imul(p,pt)|0,i=i+Math.imul(p,mt)|0,i=i+Math.imul(m,pt)|0,o=o+Math.imul(m,mt)|0;var kt=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(kt>>>26)|0,kt&=67108863,n=Math.imul(L,$),i=Math.imul(L,Y),i=i+Math.imul(D,$)|0,o=Math.imul(D,Y),n=n+Math.imul(N,Z)|0,i=i+Math.imul(N,J)|0,i=i+Math.imul(B,Z)|0,o=o+Math.imul(B,J)|0,n=n+Math.imul(O,Q)|0,i=i+Math.imul(O,tt)|0,i=i+Math.imul(P,Q)|0,o=o+Math.imul(P,tt)|0,n=n+Math.imul(C,rt)|0,i=i+Math.imul(C,nt)|0,i=i+Math.imul(T,rt)|0,o=o+Math.imul(T,nt)|0,n=n+Math.imul(k,ot)|0,i=i+Math.imul(k,at)|0,i=i+Math.imul(S,ot)|0,o=o+Math.imul(S,at)|0,n=n+Math.imul(E,ut)|0,i=i+Math.imul(E,ct)|0,i=i+Math.imul(x,ut)|0,o=o+Math.imul(x,ct)|0,n=n+Math.imul(w,ht)|0,i=i+Math.imul(w,lt)|0,i=i+Math.imul(_,ht)|0,o=o+Math.imul(_,lt)|0,n=n+Math.imul(v,pt)|0,i=i+Math.imul(v,mt)|0,i=i+Math.imul(b,pt)|0,o=o+Math.imul(b,mt)|0;var St=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(St>>>26)|0,St&=67108863,n=Math.imul(L,Z),i=Math.imul(L,J),i=i+Math.imul(D,Z)|0,o=Math.imul(D,J),n=n+Math.imul(N,Q)|0,i=i+Math.imul(N,tt)|0,i=i+Math.imul(B,Q)|0,o=o+Math.imul(B,tt)|0,n=n+Math.imul(O,rt)|0,i=i+Math.imul(O,nt)|0,i=i+Math.imul(P,rt)|0,o=o+Math.imul(P,nt)|0,n=n+Math.imul(C,ot)|0,i=i+Math.imul(C,at)|0,i=i+Math.imul(T,ot)|0,o=o+Math.imul(T,at)|0,n=n+Math.imul(k,ut)|0,i=i+Math.imul(k,ct)|0,i=i+Math.imul(S,ut)|0,o=o+Math.imul(S,ct)|0,n=n+Math.imul(E,ht)|0,i=i+Math.imul(E,lt)|0,i=i+Math.imul(x,ht)|0,o=o+Math.imul(x,lt)|0,n=n+Math.imul(w,pt)|0,i=i+Math.imul(w,mt)|0,i=i+Math.imul(_,pt)|0,o=o+Math.imul(_,mt)|0;var It=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(It>>>26)|0,It&=67108863,n=Math.imul(L,Q),i=Math.imul(L,tt),i=i+Math.imul(D,Q)|0,o=Math.imul(D,tt),n=n+Math.imul(N,rt)|0,i=i+Math.imul(N,nt)|0,i=i+Math.imul(B,rt)|0,o=o+Math.imul(B,nt)|0,n=n+Math.imul(O,ot)|0,i=i+Math.imul(O,at)|0,i=i+Math.imul(P,ot)|0,o=o+Math.imul(P,at)|0,n=n+Math.imul(C,ut)|0,i=i+Math.imul(C,ct)|0,i=i+Math.imul(T,ut)|0,o=o+Math.imul(T,ct)|0,n=n+Math.imul(k,ht)|0,i=i+Math.imul(k,lt)|0,i=i+Math.imul(S,ht)|0,o=o+Math.imul(S,lt)|0,n=n+Math.imul(E,pt)|0,i=i+Math.imul(E,mt)|0,i=i+Math.imul(x,pt)|0,o=o+Math.imul(x,mt)|0;var Ct=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,n=Math.imul(L,rt),i=Math.imul(L,nt),i=i+Math.imul(D,rt)|0,o=Math.imul(D,nt),n=n+Math.imul(N,ot)|0,i=i+Math.imul(N,at)|0,i=i+Math.imul(B,ot)|0,o=o+Math.imul(B,at)|0,n=n+Math.imul(O,ut)|0,i=i+Math.imul(O,ct)|0,i=i+Math.imul(P,ut)|0,o=o+Math.imul(P,ct)|0,n=n+Math.imul(C,ht)|0,i=i+Math.imul(C,lt)|0,i=i+Math.imul(T,ht)|0,o=o+Math.imul(T,lt)|0,n=n+Math.imul(k,pt)|0,i=i+Math.imul(k,mt)|0,i=i+Math.imul(S,pt)|0,o=o+Math.imul(S,mt)|0;var Tt=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,n=Math.imul(L,ot),i=Math.imul(L,at),i=i+Math.imul(D,ot)|0,o=Math.imul(D,at),n=n+Math.imul(N,ut)|0,i=i+Math.imul(N,ct)|0,i=i+Math.imul(B,ut)|0,o=o+Math.imul(B,ct)|0,n=n+Math.imul(O,ht)|0,i=i+Math.imul(O,lt)|0,i=i+Math.imul(P,ht)|0,o=o+Math.imul(P,lt)|0,n=n+Math.imul(C,pt)|0,i=i+Math.imul(C,mt)|0,i=i+Math.imul(T,pt)|0,o=o+Math.imul(T,mt)|0;var Ut=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,n=Math.imul(L,ut),i=Math.imul(L,ct),i=i+Math.imul(D,ut)|0,o=Math.imul(D,ct),n=n+Math.imul(N,ht)|0,i=i+Math.imul(N,lt)|0,i=i+Math.imul(B,ht)|0,o=o+Math.imul(B,lt)|0,n=n+Math.imul(O,pt)|0,i=i+Math.imul(O,mt)|0,i=i+Math.imul(P,pt)|0,o=o+Math.imul(P,mt)|0;var Ot=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,n=Math.imul(L,ht),i=Math.imul(L,lt),i=i+Math.imul(D,ht)|0,o=Math.imul(D,lt),n=n+Math.imul(N,pt)|0,i=i+Math.imul(N,mt)|0,i=i+Math.imul(B,pt)|0,o=o+Math.imul(B,mt)|0;var Pt=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,n=Math.imul(L,pt),i=Math.imul(L,mt),i=i+Math.imul(D,pt)|0,o=Math.imul(D,mt);var Rt=(c+n|0)+((8191&i)<<13)|0;return c=(o+(i>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,u[0]=yt,u[1]=vt,u[2]=bt,u[3]=gt,u[4]=wt,u[5]=_t,u[6]=At,u[7]=Et,u[8]=xt,u[9]=Mt,u[10]=kt,u[11]=St,u[12]=It,u[13]=Ct,u[14]=Tt,u[15]=Ut,u[16]=Ot,u[17]=Pt,u[18]=Rt,0!==c&&(u[19]=c,r.length++),r};function m(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var n=0,i=0,o=0;o>>26)|0,i+=a>>>26,a&=67108863}r.words[o]=s,n=a,a=i}return 0!==n?r.words[o]=n:r.length--,r.strip()}function y(t,e,r){var n=new v;return n.mulp(t,e,r)}function v(t,e){this.x=t,this.y=e}Math.imul||(p=d),o.prototype.mulTo=function(t,e){var r,n=this.length+t.length;return r=10===this.length&&10===t.length?p(this,t,e):n<63?d(this,t,e):n<1024?m(this,t,e):y(this,t,e),r},v.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,n=0;n>=1;return n},v.prototype.permute=function(t,e,r,n,i,o){for(var a=0;a>>=1)i++;return 1<>>=13,r[2*a+1]=8191&o,o>>>=13;for(a=2*e;a>=26,e+=i/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=l(t);if(0===e.length)return new o(1);for(var r=this,n=0;n=0);var e,r=t%26,i=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var a=0;for(e=0;e>>26-r}a&&(this.words[e]=a,this.length++)}if(0!==i){for(e=this.length-1;e>=0;e--)this.words[e+i]=this.words[e];for(e=0;e=0),i=e?(e-e%26)/26:0;var o=t%26,a=Math.min((t-o)/26,this.length),s=67108863^67108863>>>o<a)for(this.length-=a,c=0;c=0&&(0!==f||c>=i);c--){var h=0|this.words[c];this.words[c]=f<<26-o|h>>>o,f=h&s}return u&&0!==f&&(u.words[u.length++]=f),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return n(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){n("number"===typeof t&&t>=0);var e=t%26,r=(t-e)/26,i=1<=0);var e=t%26,r=(t-e)/26;if(n(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var i=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(n("number"===typeof t),n(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(u/67108864|0),this.words[i+r]=67108863&o}for(;i>26,this.words[i+r]=67108863&o;if(0===s)return this.strip();for(n(-1===s),s=0,i=0;i>26,this.words[i]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=this.length-t.length,n=this.clone(),i=t,a=0|i.words[i.length-1],s=this._countBits(a);r=26-s,0!==r&&(i=i.ushln(r),n.iushln(r),a=0|i.words[i.length-1]);var u,c=n.length-i.length;if("mod"!==e){u=new o(null),u.length=c+1,u.words=new Array(u.length);for(var f=0;f=0;l--){var d=67108864*(0|n.words[i.length+l])+(0|n.words[i.length+l-1]);d=Math.min(d/a|0,67108863),n._ishlnsubmul(i,d,l);while(0!==n.negative)d--,n.negative=0,n._ishlnsubmul(i,1,l),n.isZero()||(n.negative^=1);u&&(u.words[l]=d)}return u&&u.strip(),n.strip(),"div"!==e&&0!==r&&n.iushrn(r),{div:u||null,mod:n}},o.prototype.divmod=function(t,e,r){return n(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(s=this.neg().divmod(t,e),"mod"!==e&&(i=s.div.neg()),"div"!==e&&(a=s.mod.neg(),r&&0!==a.negative&&a.iadd(t)),{div:i,mod:a}):0===this.negative&&0!==t.negative?(s=this.divmod(t.neg(),e),"mod"!==e&&(i=s.div.neg()),{div:i,mod:s.mod}):0!==(this.negative&t.negative)?(s=this.neg().divmod(t.neg(),e),"div"!==e&&(a=s.mod.neg(),r&&0!==a.negative&&a.isub(t)),{div:s.div,mod:a}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var i,a,s},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,n=t.ushrn(1),i=t.andln(1),o=r.cmp(n);return o<0||1===i&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){n(t<=67108863);for(var e=(1<<26)%t,r=0,i=this.length-1;i>=0;i--)r=(e*r+(0|this.words[i]))%t;return r},o.prototype.idivn=function(t){n(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var i=(0|this.words[r])+67108864*e;this.words[r]=i/t|0,e=i%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();var i=new o(1),a=new o(0),s=new o(0),u=new o(1),c=0;while(e.isEven()&&r.isEven())e.iushrn(1),r.iushrn(1),++c;var f=r.clone(),h=e.clone();while(!e.isZero()){for(var l=0,d=1;0===(e.words[0]&d)&&l<26;++l,d<<=1);if(l>0){e.iushrn(l);while(l-- >0)(i.isOdd()||a.isOdd())&&(i.iadd(f),a.isub(h)),i.iushrn(1),a.iushrn(1)}for(var p=0,m=1;0===(r.words[0]&m)&&p<26;++p,m<<=1);if(p>0){r.iushrn(p);while(p-- >0)(s.isOdd()||u.isOdd())&&(s.iadd(f),u.isub(h)),s.iushrn(1),u.iushrn(1)}e.cmp(r)>=0?(e.isub(r),i.isub(s),a.isub(u)):(r.isub(e),s.isub(i),u.isub(a))}return{a:s,b:u,gcd:r.iushln(c)}},o.prototype._invmp=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();var i,a=new o(1),s=new o(0),u=r.clone();while(e.cmpn(1)>0&&r.cmpn(1)>0){for(var c=0,f=1;0===(e.words[0]&f)&&c<26;++c,f<<=1);if(c>0){e.iushrn(c);while(c-- >0)a.isOdd()&&a.iadd(u),a.iushrn(1)}for(var h=0,l=1;0===(r.words[0]&l)&&h<26;++h,l<<=1);if(h>0){r.iushrn(h);while(h-- >0)s.isOdd()&&s.iadd(u),s.iushrn(1)}e.cmp(r)>=0?(e.isub(r),a.isub(s)):(r.isub(e),s.isub(a))}return i=0===e.cmpn(1)?a:s,i.cmpn(0)<0&&i.iadd(t),i},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var n=0;e.isEven()&&r.isEven();n++)e.iushrn(1),r.iushrn(1);do{while(e.isEven())e.iushrn(1);while(r.isEven())r.iushrn(1);var i=e.cmp(r);if(i<0){var o=e;e=r,r=o}else if(0===i||0===r.cmpn(1))break;e.isub(r)}while(1);return r.iushln(n)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0===(1&this.words[0])},o.prototype.isOdd=function(){return 1===(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){n("number"===typeof t);var e=t%26,r=(t-e)/26,i=1<>>26,s&=67108863,this.words[a]=s}return 0!==o&&(this.words[a]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)e=1;else{r&&(t=-t),n(t<=67108863,"Number is too big");var i=0|this.words[0];e=i===t?0:it.length)return 1;if(this.length=0;r--){var n=0|this.words[r],i=0|t.words[r];if(n!==i){ni&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new x(t)},o.prototype.toRed=function(t){return n(!this.red,"Already a number in reduction context"),n(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return n(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return n(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return n(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return n(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return n(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return n(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return n(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return n(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return n(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return n(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return n(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return n(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return n(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var b={k256:null,p224:null,p192:null,p25519:null};function g(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function w(){g.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function _(){g.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function A(){g.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function E(){g.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function x(t){if("string"===typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else n(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function M(t){x.call(this,t),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}g.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},g.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),r=this.imulK(r),r=r.iadd(this.tmp),e=r.bitLength()}while(e>this.n);var n=e0?r.isub(this.p):r.strip(),r},g.prototype.split=function(t,e){t.iushrn(this.n,0,e)},g.prototype.imulK=function(t){return t.imul(this.k)},i(w,g),w.prototype.split=function(t,e){for(var r=4194303,n=Math.min(t.length,9),i=0;i>>22,o=a}o>>>=22,t.words[i-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},w.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=i,e=n}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(b[t])return b[t];var e;if("k256"===t)e=new w;else if("p224"===t)e=new _;else if("p192"===t)e=new A;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new E}return b[t]=e,e},x.prototype._verify1=function(t){n(0===t.negative,"red works only with positives"),n(t.red,"red works only with red numbers")},x.prototype._verify2=function(t,e){n(0===(t.negative|e.negative),"red works only with positives"),n(t.red&&t.red===e.red,"red works only with red numbers")},x.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},x.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},x.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},x.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},x.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},x.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},x.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},x.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},x.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},x.prototype.isqr=function(t){return this.imul(t,t.clone())},x.prototype.sqr=function(t){return this.mul(t,t)},x.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(n(e%2===1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}var i=this.m.subn(1),a=0;while(!i.isZero()&&0===i.andln(1))a++,i.iushrn(1);n(!i.isZero());var s=new o(1).toRed(this),u=s.redNeg(),c=this.m.subn(1).iushrn(1),f=this.m.bitLength();f=new o(2*f*f).toRed(this);while(0!==this.pow(f,c).cmp(u))f.redIAdd(u);var h=this.pow(f,i),l=this.pow(t,i.addn(1).iushrn(1)),d=this.pow(t,i),p=a;while(0!==d.cmp(s)){for(var m=d,y=0;0!==m.cmp(s);y++)m=m.redSqr();n(y=0;i--){for(var f=e.words[i],h=c-1;h>=0;h--){var l=f>>h&1;a!==n[0]&&(a=this.sqr(a)),0!==l||0!==s?(s<<=1,s|=l,u++,(u===r||0===i&&0===h)&&(a=this.mul(a,n[s]),u=0,s=0)):u=0}c=26}return a},x.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},x.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new M(t)},i(M,x),M.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},M.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},M.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},M.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),a=i;return i.cmp(this.m)>=0?a=i.isub(this.m):i.cmpn(0)<0&&(a=i.iadd(this.m)),a._forceRed(this)},M.prototype.invm=function(t){var e=this.imod(t._invmp(this.m).mul(this.r2));return e._forceRed(this)}})(t,this)}).call(this,r("62e4")(t))},"4d64":function(t,e,r){var n=r("fc6a"),i=r("50c4"),o=r("23cb"),a=function(t){return function(e,r,a){var s,u=n(e),c=i(u.length),f=o(a,c);if(t&&r!=r){while(c>f)if(s=u[f++],s!=s)return!0}else for(;c>f;f++)if((t||f in u)&&u[f]===r)return t||f||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},"4dd0":function(t,e,r){var n=/Proc-Type: 4,ENCRYPTED[\n\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\n\r]+([0-9A-z\n\r\+\/\=]+)[\n\r]+/m,i=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m,o=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r\+\/\=]+)-----END \1-----$/m,a=r("ae84"),s=r("fda6"),u=r("8707").Buffer;t.exports=function(t,e){var r,c=t.toString(),f=c.match(n);if(f){var h="aes"+f[1],l=u.from(f[2],"hex"),d=u.from(f[3].replace(/[\r\n]/g,""),"base64"),p=a(e,l.slice(0,8),parseInt(f[1],10)).key,m=[],y=s.createDecipheriv(h,p,l);m.push(y.update(d)),m.push(y.final()),r=u.concat(m)}else{var v=c.match(o);r=new u(v[2].replace(/[\r\n]/g,""),"base64")}var b=c.match(i)[1];return{tag:b,data:r}}},"4dec":function(t,e){t.exports=function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)r.d(n,i,function(e){return t[e]}.bind(null,i));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=3)}([function(t,e){t.exports=function(t){return t&&t.__esModule?t:{default:t}}},function(t,e){t.exports=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}},function(t,e,r){"use strict";function n(){return Math.floor(9e4*Math.random())+1e4}Object.defineProperty(e,"__esModule",{value:!0}),e.sendAsyncWrapper=function(t,e){var r=this;return new Promise((function(i,o){r.sendAsync({jsonrpc:"2.0",id:n(),method:t,params:e||[]},(function(t,e){t?o(t):i(e.result)}))}))},e.sendFortmaticAsyncWrapper=function(t){var e=this;return new Promise((function(r,n){e.getProvider().sendFortmaticAsync(t,(function(t,e){t?n(t):r(e?e.result:{})}))}))},e.randomId=n,e.findExistingResponse=function(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},e=new v(m);return e.params=[t],a.sendFortmaticAsyncWrapper.call(b,e)}};var v=function t(e,r){(0,i.default)(this,t),this.id=(0,a.randomId)(),this.method=e,this.params=r?[r]:[{}]}},function(t,e,r){"use strict";var n=r(0);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var i=n(r(6)),o=n(r(9)),a=n(r(1)),s=n(r(10)),u=r(11),c=n(r(12)),f=r(2),h=function(){function t(e,r){if((0,a.default)(this,t),this.fortmaticClient=e,this.requests={},this.queue=[],this.account=null,this.network=null,this.isFortmatic=!0,this.overlayReady=!1,this.isLoggedIn=!1,this.postMessages={FORTMATIC_HANDLE_BATCH_REQUEST:"FORTMATIC_HANDLE_BATCH_REQUEST",FORTMATIC_HANDLE_REQUEST:"FORTMATIC_HANDLE_REQUEST",FORTMATIC_HANDLE_FORTMATIC_REQUEST:"FORTMATIC_HANDLE_FORTMATIC_REQUEST",FORTMATIC_HANDLE_RESPONSE:"FORTMATIC_HANDLE_RESPONSE",FORTMATIC_OVERLAY_READY:"FORTMATIC_OVERLAY_READY",FORTMATIC_SHOW_OVERLAY:"FORTMATIC_SHOW_OVERLAY",FORTMATIC_HIDE_OVERLAY:"FORTMATIC_HIDE_OVERLAY",FORTMATIC_USER_DENIED:"FORTMATIC_USER_DENIED",FORTMATIC_USER_LOGOUT:"FORTMATIC_USER_LOGOUT",FORTMATIC_UNAUTHORIZED_API_KEY:"FORTMATIC_UNAUTHORIZED_API_KEY"},!r.API_KEY)throw new Error("Please provide a Fortmatic API key that you acquired from the developer dashboard.");this.options={API_KEY:r.API_KEY,ETH_NETWORK:r.ETH_NETWORK,DOMAIN_ORIGIN:window.location?window.location.origin:"",version:u.version},this.queryParams=btoa(JSON.stringify(this.options)),this.constructPostMessage(),this.overlay=this.createOverlay(),this.listenMessage()}return(0,s.default)(t,[{key:"constructPostMessage",value:function(){var t=this;Object.keys(this.postMessages).map((function(e){t.postMessages[e]+="-".concat(t.queryParams)}))}},{key:"createOverlay",value:function(){var t=this;return new Promise((function(e,r){var n=function(){if(function(){var e=!0,r=!1,n=void 0;try{for(var i,o=document.getElementsByClassName("fortmatic-iframe")[Symbol.iterator]();!(e=(i=o.next()).done);e=!0)if(i.value.src.includes(t.queryParams))return!1}catch(t){r=!0,n=t}finally{try{e||null==o.return||o.return()}finally{if(r)throw n}}return!0}()){var r=document.createElement("style");r.innerHTML=c.default.css,r.type="text/css",document.head.appendChild(r);var n=document.createElement("iframe");n.className="fortmatic-iframe",n.src="".concat(t.fortmaticClient,"/send?params=").concat(t.queryParams),document.body.appendChild(n);var i=document.createElement("img");i.src="https://static.fortmatic.com/assets/trans.gif",document.body.appendChild(i),e({iframe:n})}else console.error("Fortmatic: Duplicate instances found.")};["loaded","interactive","complete"].indexOf(document.readyState)>-1?n():window.addEventListener("load",n.bind(t),!1)}))}},{key:"showOverlay",value:function(){var t=(0,o.default)(i.default.mark((function t(){return i.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.overlay;case 2:t.sent.iframe.style.display="block";case 4:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}()},{key:"hideOverlay",value:function(){var t=(0,o.default)(i.default.mark((function t(){return i.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.overlay;case 2:t.sent.iframe.style.display="none";case 4:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}()},{key:"sendAsync",value:function(t,e){t.length>0?this.enqueue({payload:{id:(0,f.randomId)(),batch:t.map((function(t){return t.id=(0,f.randomId)(),t})),method:"eth_batchRequest"},cb:e}):this.enqueue({payload:t,cb:e})}},{key:"sendFortmaticAsync",value:function(t,e){this.enqueue({payload:t,cb:e,isNative:!0})}},{key:"send",value:function(t,e){if("string"==typeof t)return f.sendAsyncWrapper.call(this,t,e);if(!e){console.warn("Non-async web3 methods will be deprecated in web3 > 1.0, and are not supported by the Fortmatic provider. An async method to be used instead."),this.sendAsync(t,(function(){}));var r={};switch(t.method){case"eth_accounts":r=this.account?[this.account]:[];break;case"eth_coinbase":r=this.account;break;case"net_version":r=this.network||(this.options.API_KEY.startsWith("pk_live")?1:4);break;case"eth_uninstallFilter":r=!0;break;default:r={}}return{id:t.id,jsonrpc:t.jsonrpc,result:r}}this.sendAsync(t,e)}},{key:"enqueue",value:function(t){this.queue.push(t),this.overlayReady&&this.dequeue()}},{key:"dequeue",value:function(){var t=(0,o.default)(i.default.mark((function t(){var e,r,n,o=this;return i.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(0!==this.queue.length){t.next=2;break}return t.abrupt("return");case 2:if(!(e=this.queue.shift())){t.next=11;break}return r=e.payload,n=e.cb,r.id=(0,f.randomId)(),t.next=9,this.postMessage(e.isNative?this.postMessages.FORTMATIC_HANDLE_FORTMATIC_REQUEST:this.postMessages.FORTMATIC_HANDLE_REQUEST,e.payload);case 9:r.batch&&r.batch.length>0?(r.batch.forEach((function(t){o.requests[t.id]={parentId:r.id,payload:t,cb:function(t,e){var n=o.requests[r.id].batchResponse;if(t&&t.response&&!(0,f.findExistingResponse)(n,t.response.id))throw n.push({jsonrpc:"2.0",id:t.response.id,error:{code:t.response.code,message:t.response.message}}),o.requests[r.id].cb(null,n),t.response;if(e&&e.result&&!(0,f.findExistingResponse)(n,e.id))return n.push(e);throw new Error("Fortmatic: unexpected callback behavior")}}})),this.requests[r.id]={payload:r,cb:n,batchResponse:[]}):this.requests[r.id]={payload:r,cb:n},this.dequeue();case 11:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}()},{key:"postMessage",value:function(){var t=(0,o.default)(i.default.mark((function t(e,r){var n;return i.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.overlay;case 2:if(!(n=t.sent).iframe.contentWindow){t.next=7;break}n.iframe.contentWindow.postMessage({msgType:e,payload:r},"*"),t.next=8;break;case 7:throw new Error("Fortmatic: Modal is not ready.");case 8:case"end":return t.stop()}}),t,this)})));return function(e,r){return t.apply(this,arguments)}}()},{key:"enable",value:function(){return f.sendAsyncWrapper.call(this,"eth_accounts")}},{key:"listenMessage",value:function(){var t=this;window.addEventListener("message",(function(e){if(e.origin===t.fortmaticClient){var r=e.data.response?e.data.response.id:null;switch(e.data.msgType){case t.postMessages.FORTMATIC_OVERLAY_READY:t.overlayReady=!0,t.dequeue();break;case t.postMessages.FORTMATIC_HANDLE_RESPONSE:try{t.requests[r].cb(null,e.data.response);var n=t.requests[r].parentId;n&&t.requests[n].payload.batch.length===t.requests[n].batchResponse.length&&t.requests[n].cb(null,t.requests[n].batchResponse),"eth_accounts"===t.requests[r].payload.method?t.account=e.data.response.result[0]:"eth_coinbase"===t.requests[r].payload.method?t.account=e.data.response.result:"net_version"===t.requests[r].payload.method&&(t.network=e.data.response.result)}catch(t){}t.isLoggedIn=!0,t.dequeue();break;case t.postMessages.FORTMATIC_HIDE_OVERLAY:t.hideOverlay();break;case t.postMessages.FORTMATIC_SHOW_OVERLAY:t.showOverlay();break;case t.postMessages.FORTMATIC_USER_LOGOUT:t.account=null,t.network=null,t.isLoggedIn=!1;break;case t.postMessages.FORTMATIC_UNAUTHORIZED_API_KEY:throw t.overlayReady=!1,new Error("Given API key is not authorized to access the resource.");case t.postMessages.FORTMATIC_USER_DENIED:if(r){var i=e.data.response&&e.data.response.message?e.data.response.message:"Fortmatic: Modal was closed without executing action!",o=e.data.response&&e.data.response.code?e.data.response.code:1;t.requests[r].cb({message:i,code:o,response:e.data.response})}else t.queue.forEach((function(t){return t.cb({message:"Fortmatic: Modal was closed without executing action!",code:1})}));t.dequeue()}}}))}}]),t}();e.default=h},function(t,e,r){t.exports=r(7)},function(t,e,r){var n=function(){return this||"object"==typeof self&&self}()||Function("return this")(),i=n.regeneratorRuntime&&Object.getOwnPropertyNames(n).indexOf("regeneratorRuntime")>=0,o=i&&n.regeneratorRuntime;if(n.regeneratorRuntime=void 0,t.exports=r(8),i)n.regeneratorRuntime=o;else try{delete n.regeneratorRuntime}catch(t){n.regeneratorRuntime=void 0}},function(t,e){!function(e){"use strict";var r,n=Object.prototype,i=n.hasOwnProperty,o="function"==typeof Symbol?Symbol:{},a=o.iterator||"@@iterator",s=o.asyncIterator||"@@asyncIterator",u=o.toStringTag||"@@toStringTag",c="object"==typeof t,f=e.regeneratorRuntime;if(f)c&&(t.exports=f);else{(f=e.regeneratorRuntime=c?t.exports:{}).wrap=w;var h="suspendedStart",l="suspendedYield",d="executing",p="completed",m={},y={};y[a]=function(){return this};var v=Object.getPrototypeOf,b=v&&v(v(U([])));b&&b!==n&&i.call(b,a)&&(y=b);var g=x.prototype=A.prototype=Object.create(y);E.prototype=g.constructor=x,x.constructor=E,x[u]=E.displayName="GeneratorFunction",f.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===E||"GeneratorFunction"===(e.displayName||e.name))},f.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,x):(t.__proto__=x,u in t||(t[u]="GeneratorFunction")),t.prototype=Object.create(g),t},f.awrap=function(t){return{__await:t}},M(k.prototype),k.prototype[s]=function(){return this},f.AsyncIterator=k,f.async=function(t,e,r,n){var i=new k(w(t,e,r,n));return f.isGeneratorFunction(e)?i:i.next().then((function(t){return t.done?t.value:i.next()}))},M(g),g[u]="Generator",g[a]=function(){return this},g.toString=function(){return"[object Generator]"},f.keys=function(t){var e=[];for(var r in t)e.push(r);return e.reverse(),function r(){for(;e.length;){var n=e.pop();if(n in t)return r.value=n,r.done=!1,r}return r.done=!0,r}},f.values=U,T.prototype={constructor:T,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=r,this.done=!1,this.delegate=null,this.method="next",this.arg=r,this.tryEntries.forEach(C),!t)for(var e in this)"t"===e.charAt(0)&&i.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=r)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function n(n,i){return s.type="throw",s.arg=t,e.next=n,i&&(e.method="next",e.arg=r),!!i}for(var o=this.tryEntries.length-1;o>=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var u=i.call(a,"catchLoc"),c=i.call(a,"finallyLoc");if(u&&c){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&i.call(n,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),C(r),m}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var i=n.arg;C(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:U(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=r),m}}}function w(t,e,r,n){var i=e&&e.prototype instanceof A?e:A,o=Object.create(i.prototype),a=new T(n||[]);return o._invoke=function(t,e,r){var n=h;return function(i,o){if(n===d)throw new Error("Generator is already running");if(n===p){if("throw"===i)throw o;return O()}for(r.method=i,r.arg=o;;){var a=r.delegate;if(a){var s=S(a,r);if(s){if(s===m)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(n===h)throw n=p,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n=d;var u=_(t,e,r);if("normal"===u.type){if(n=r.done?p:l,u.arg===m)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(n=p,r.method="throw",r.arg=u.arg)}}}(t,r,a),o}function _(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}function A(){}function E(){}function x(){}function M(t){["next","throw","return"].forEach((function(e){t[e]=function(t){return this._invoke(e,t)}}))}function k(t){var e;this._invoke=function(r,n){function o(){return new Promise((function(e,o){!function e(r,n,o,a){var s=_(t[r],t,n);if("throw"!==s.type){var u=s.arg,c=u.value;return c&&"object"==typeof c&&i.call(c,"__await")?Promise.resolve(c.__await).then((function(t){e("next",t,o,a)}),(function(t){e("throw",t,o,a)})):Promise.resolve(c).then((function(t){u.value=t,o(u)}),(function(t){return e("throw",t,o,a)}))}a(s.arg)}(r,n,e,o)}))}return e=e?e.then(o,o):o()}}function S(t,e){var n=t.iterator[e.method];if(n===r){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=r,S(t,e),"throw"===e.method))return m;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return m}var i=_(n,t.iterator,e.arg);if("throw"===i.type)return e.method="throw",e.arg=i.arg,e.delegate=null,m;var o=i.arg;return o?o.done?(e[t.resultName]=o.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=r),e.delegate=null,m):o:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,m)}function I(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function C(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function T(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(I,this),this.reset(!0)}function U(t){if(t){var e=t[a];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,o=function e(){for(;++n (https://fortmatic.com/)",license:"MIT",repository:{type:"git",url:"https://github.com/fortmatic/fortmatic-js"},keywords:["Auth","Login","Web3","Crypto","Ethereum","MetaMask","Wallet","Blockchain","Dapp"],homepage:"https://www.fortmatic.com",ava:{require:["@babel/register"],files:["test/**/*.spec.js"],babel:{testOptions:{presets:["@babel/env"],plugins:["@babel/plugin-proposal-function-bind","@babel/plugin-transform-runtime"]}},verbose:!0},nyc:{all:!1,"check-coverage":!0,"per-file":!0,lines:80,statements:80,functions:80,branches:80,include:["src/**/*.js"],exclude:["*/style.js"],require:[],reporter:["html","lcov"]},dependencies:{"@babel/runtime":"7.3.4"},devDependencies:{"@babel/core":"7.3.4","@babel/plugin-proposal-function-bind":"7.2.0","@babel/plugin-transform-modules-commonjs":"7.2.0","@babel/plugin-transform-runtime":"7.3.4","@babel/preset-env":"7.3.4","@babel/register":"7.0.0",ava:"2.2.0","babel-eslint":"10.0.1","babel-loader":"8.0.5",eslint:"5.9.0",lodash:"4.17.11",nyc:"13.1.0",sinon:"7.1.1",webpack:"4.26.1","webpack-cli":"3.1.2"}}},function(t,e,r){"use strict";e.css="\n .fortmatic-iframe {\n display: none;\n position: fixed;\n top: 0;\n right: 0;\n width: 100%;\n height: 100%;\n border: none;\n border-radius: 0;\n z-index: 2147483647;\n }\n"}])},"4e2b":function(t,e,r){"use strict";var n=r("da3e"),i=r("3fb5"),o=r("5ee7"),a=r("0184");function s(){this.tmp=new Array(2),this.keys=null}function u(t){a.call(this,t);var e=new s;this._desState=e,this.deriveKeys(e,t.key)}i(u,a),t.exports=u,u.create=function(t){return new u(t)};var c=[1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1];u.prototype.deriveKeys=function(t,e){t.keys=new Array(32),n.equal(e.length,this.blockSize,"Invalid key length");var r=o.readUInt32BE(e,0),i=o.readUInt32BE(e,4);o.pc1(r,i,t.tmp,0),r=t.tmp[0],i=t.tmp[1];for(var a=0;a>>1];r=o.r28shl(r,s),i=o.r28shl(i,s),o.pc2(r,i,t.keys,a)}},u.prototype._update=function(t,e,r,n){var i=this._desState,a=o.readUInt32BE(t,e),s=o.readUInt32BE(t,e+4);o.ip(a,s,i.tmp,0),a=i.tmp[0],s=i.tmp[1],"encrypt"===this.type?this._encrypt(i,a,s,i.tmp,0):this._decrypt(i,a,s,i.tmp,0),a=i.tmp[0],s=i.tmp[1],o.writeUInt32BE(r,a,n),o.writeUInt32BE(r,s,n+4)},u.prototype._pad=function(t,e){for(var r=t.length-e,n=e;n>>0,a=d}o.rip(s,a,n,i)},u.prototype._decrypt=function(t,e,r,n,i){for(var a=r,s=e,u=t.keys.length-2;u>=0;u-=2){var c=t.keys[u],f=t.keys[u+1];o.expand(a,t.tmp,0),c^=t.tmp[0],f^=t.tmp[1];var h=o.substitute(c,f),l=o.permute(h),d=a;a=(s^l)>>>0,s=d}o.rip(a,s,n,i)}},"4e33":function(t,e,r){"use strict";var n=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),i=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e["default"]=t,e};Object.defineProperty(e,"__esModule",{value:!0});var o=r("cd08"),a=r("5384"),s=r("948b"),u=r("2a61"),c=r("4348"),f=i(r("4f1b")),h=new RegExp(/^bytes([0-9]*)$/),l=new RegExp(/^(u?int)([0-9]*)$/),d=new RegExp(/^(.*)\[([0-9]*)\]$/);e.defaultCoerceFunc=function(t,e){var r=t.match(l);return r&&parseInt(r[2])<=48?e.toNumber():e};var p=new RegExp("^([^)(]*)\\((.*)\\)([^)(]*)$"),m=new RegExp("^[A-Za-z_][A-Za-z0-9_]*$");function y(t){return t.match(/^uint($|[^1-9])/)?t="uint256"+t.substring(4):t.match(/^int($|[^1-9])/)&&(t="int256"+t.substring(3)),t}function v(t,e){function r(e){throw new Error('unexpected character "'+t[e]+'" at position '+e+' in "'+t+'"')}for(var n={type:"",name:"",state:{allowType:!0}},i=n,o=0;o1){var i=r[1].match(p);if(""!=i[1].trim()||""!=i[3].trim())throw new Error("unexpected tokens");q(i[2]).forEach((function(t){e.outputs.push(v(t))}))}return e}function w(t){return v(t,!0)}function _(t){return K(e.defaultCoerceFunc,t).type}function A(t){return t.name+"("+t.inputs.map((function(t){return _(t)})).join(",")+")"}function E(t){if("string"===typeof t)return t=t.replace(/\(/g," (").replace(/\)/g,") ").replace(/\s+/g," "),t=t.trim(),"event "===t.substring(0,6)?b(t.substring(6).trim()):("function "===t.substring(0,9)&&(t=t.substring(9)),g(t.trim()));throw new Error("unknown signature")}e.parseParamType=w,e.formatParamType=_,e.formatSignature=A,e.parseSignature=E;var x=function(){function t(t,e,r,n,i){this.coerceFunc=t,this.name=e,this.type=r,this.localName=n,this.dynamic=i}return t}(),M=function(t){function e(e){var r=t.call(this,e.coerceFunc,e.name,e.type,void 0,e.dynamic)||this;return c.defineReadOnly(r,"coder",e),r}return n(e,t),e.prototype.encode=function(t){return this.coder.encode(t)},e.prototype.decode=function(t,e){return this.coder.decode(t,e)},e}(x),k=function(t){function e(e,r){return t.call(this,e,"null","",r,!1)||this}return n(e,t),e.prototype.encode=function(t){return s.arrayify([])},e.prototype.decode=function(t,e){if(e>t.length)throw new Error("invalid null");return{consumed:0,value:this.coerceFunc("null",void 0)}},e}(x),S=function(t){function e(e,r,n,i){var o=this,a=(n?"int":"uint")+8*r;return o=t.call(this,e,a,a,i,!1)||this,o.size=r,o.signed=n,o}return n(e,t),e.prototype.encode=function(t){try{var e=a.bigNumberify(t);return e=e.toTwos(8*this.size).maskn(8*this.size),this.signed&&(e=e.fromTwos(8*this.size).toTwos(256)),s.padZeros(s.arrayify(e),32)}catch(r){f.throwError("invalid number value",f.INVALID_ARGUMENT,{arg:this.localName,coderType:this.name,value:t})}return null},e.prototype.decode=function(t,e){t.length32)throw new Error;e.set(r)}catch(n){f.throwError("invalid "+this.name+" value",f.INVALID_ARGUMENT,{arg:this.localName,coderType:this.name,value:n.value||t})}return e},e.prototype.decode=function(t,e){return t.length=0?n:"")+"]",s=-1===n||r.dynamic;return o=t.call(this,e,"array",a,i,s)||this,o.coder=r,o.length=n,o}return n(e,t),e.prototype.encode=function(t){Array.isArray(t)||f.throwError("expected array value",f.INVALID_ARGUMENT,{arg:this.localName,coderType:"array",value:t});var e=this.length,r=new Uint8Array(0);-1===e&&(e=t.length,r=I.encode(e)),f.checkArgumentCount(e,t.length,"in coder array"+(this.localName?" "+this.localName:""));for(var n=[],i=0;i256||i%8!==0)&&f.throwError("invalid "+n[1]+" bit length",f.INVALID_ARGUMENT,{arg:"param",value:e}),new S(t,i/8,"int"===n[1],e.name)}n=e.type.match(h);if(n){i=parseInt(n[1]);return(0===i||i>32)&&f.throwError("invalid bytes length",f.INVALID_ARGUMENT,{arg:"param",value:e}),new T(t,i,e.name)}n=e.type.match(d);if(n){i=parseInt(n[2]||"-1");return e=c.jsonCopy(e),e.type=n[1],new D(t,K(t,e),i,e.name)}return"tuple"===e.type.substring(0,5)?z(t,e.components,e.name):""===e.type?new k(t,e.name):(f.throwError("invalid type",f.INVALID_ARGUMENT,{arg:"type",value:e.type}),null)}var V=function(){function t(r){f.checkNew(this,t),r||(r=e.defaultCoerceFunc),c.defineReadOnly(this,"coerceFunc",r)}return t.prototype.encode=function(t,e){t.length!==e.length&&f.throwError("types/values length mismatch",f.INVALID_ARGUMENT,{count:{types:t.length,values:e.length},value:{types:t,values:e}});var r=[];return t.forEach((function(t){var e=null;e="string"===typeof t?v(t):t,r.push(K(this.coerceFunc,e))}),this),s.hexlify(new F(this.coerceFunc,r,"_").encode(e))},t.prototype.decode=function(t,e){var r=[];return t.forEach((function(t){var e=null;e="string"===typeof t?v(t):c.jsonCopy(t),r.push(K(this.coerceFunc,e))}),this),new F(this.coerceFunc,r,"_").decode(s.arrayify(e),0).value},t}();e.AbiCoder=V,e.defaultAbiCoder=new V},"4f1b":function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.UNKNOWN_ERROR="UNKNOWN_ERROR",e.NOT_IMPLEMENTED="NOT_IMPLEMENTED",e.MISSING_NEW="MISSING_NEW",e.CALL_EXCEPTION="CALL_EXCEPTION",e.INVALID_ARGUMENT="INVALID_ARGUMENT",e.MISSING_ARGUMENT="MISSING_ARGUMENT",e.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",e.NUMERIC_FAULT="NUMERIC_FAULT",e.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION";var n=!1,i=!1;function o(t,r,n){if(i)throw new Error("unknown error");r||(r=e.UNKNOWN_ERROR),n||(n={});var o=[];Object.keys(n).forEach((function(t){try{o.push(t+"="+JSON.stringify(n[t]))}catch(s){o.push(t+"="+JSON.stringify(n[t].toString()))}}));var a=t;o.length&&(t+=" ("+o.join(", ")+")");var s=new Error(t);throw s.reason=a,s.code=r,Object.keys(n).forEach((function(t){s[t]=n[t]})),s}function a(t,r){t instanceof r||o("missing new",e.MISSING_NEW,{name:r.name})}function s(t,r,n){n||(n=""),tr&&o("too many arguments"+n,e.UNEXPECTED_ARGUMENT,{count:t,expectedCount:r})}function u(t,r){n&&o("error censorship permanent",e.UNSUPPORTED_OPERATION,{operation:"setCersorship"}),i=!!t,n=!!r}e.throwError=o,e.checkNew=a,e.checkArgumentCount=s,e.setCensorship=u},"4fcc":function(t,e,r){var n=r("eec7"),i=r("0ed4"),o=function(){};function a(t,e){delete t.uri;var r=!1;"json"===t.responseType&&(t.responseType="text",r=!0);var a=n(t,(function(n,a,s){if(r&&!n)try{var u=a.rawRequest.responseText;s=JSON.parse(u)}catch(c){n=c}a=i(t,a),e(n,n?null:s,a),e=o})),s=a.onabort;return a.onabort=function(){var t=s.apply(a,Array.prototype.slice.call(arguments));return e(new Error("XHR Aborted")),e=o,t},a}t.exports=a},"4fd1":function(t,e,r){var n=r("3fb5"),i=r("b672"),o=r("8707").Buffer,a=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],s=new Array(160);function u(){this.init(),this._w=s,i.call(this,128,112)}function c(t,e,r){return r^t&(e^r)}function f(t,e,r){return t&e|r&(t|e)}function h(t,e){return(t>>>28|e<<4)^(e>>>2|t<<30)^(e>>>7|t<<25)}function l(t,e){return(t>>>14|e<<18)^(t>>>18|e<<14)^(e>>>9|t<<23)}function d(t,e){return(t>>>1|e<<31)^(t>>>8|e<<24)^t>>>7}function p(t,e){return(t>>>1|e<<31)^(t>>>8|e<<24)^(t>>>7|e<<25)}function m(t,e){return(t>>>19|e<<13)^(e>>>29|t<<3)^t>>>6}function y(t,e){return(t>>>19|e<<13)^(e>>>29|t<<3)^(t>>>6|e<<26)}function v(t,e){return t>>>0>>0?1:0}n(u,i),u.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},u.prototype._update=function(t){for(var e=this._w,r=0|this._ah,n=0|this._bh,i=0|this._ch,o=0|this._dh,s=0|this._eh,u=0|this._fh,b=0|this._gh,g=0|this._hh,w=0|this._al,_=0|this._bl,A=0|this._cl,E=0|this._dl,x=0|this._el,M=0|this._fl,k=0|this._gl,S=0|this._hl,I=0;I<32;I+=2)e[I]=t.readInt32BE(4*I),e[I+1]=t.readInt32BE(4*I+4);for(;I<160;I+=2){var C=e[I-30],T=e[I-30+1],U=d(C,T),O=p(T,C);C=e[I-4],T=e[I-4+1];var P=m(C,T),R=y(T,C),N=e[I-14],B=e[I-14+1],j=e[I-32],L=e[I-32+1],D=O+B|0,F=U+N+v(D,O)|0;D=D+R|0,F=F+P+v(D,R)|0,D=D+L|0,F=F+j+v(D,L)|0,e[I]=F,e[I+1]=D}for(var q=0;q<160;q+=2){F=e[q],D=e[q+1];var H=f(r,n,i),z=f(w,_,A),K=h(r,w),V=h(w,r),G=l(s,x),$=l(x,s),Y=a[q],W=a[q+1],Z=c(s,u,b),J=c(x,M,k),X=S+$|0,Q=g+G+v(X,S)|0;X=X+J|0,Q=Q+Z+v(X,J)|0,X=X+W|0,Q=Q+Y+v(X,W)|0,X=X+D|0,Q=Q+F+v(X,D)|0;var tt=V+z|0,et=K+H+v(tt,V)|0;g=b,S=k,b=u,k=M,u=s,M=x,x=E+X|0,s=o+Q+v(x,E)|0,o=i,E=A,i=n,A=_,n=r,_=w,w=X+tt|0,r=Q+et+v(w,X)|0}this._al=this._al+w|0,this._bl=this._bl+_|0,this._cl=this._cl+A|0,this._dl=this._dl+E|0,this._el=this._el+x|0,this._fl=this._fl+M|0,this._gl=this._gl+k|0,this._hl=this._hl+S|0,this._ah=this._ah+r+v(this._al,w)|0,this._bh=this._bh+n+v(this._bl,_)|0,this._ch=this._ch+i+v(this._cl,A)|0,this._dh=this._dh+o+v(this._dl,E)|0,this._eh=this._eh+s+v(this._el,x)|0,this._fh=this._fh+u+v(this._fl,M)|0,this._gh=this._gh+b+v(this._gl,k)|0,this._hh=this._hh+g+v(this._hl,S)|0},u.prototype._hash=function(){var t=o.allocUnsafe(64);function e(e,r,n){t.writeInt32BE(e,n),t.writeInt32BE(r,n+4)}return e(this._ah,this._al,0),e(this._bh,this._bl,8),e(this._ch,this._cl,16),e(this._dh,this._dl,24),e(this._eh,this._el,32),e(this._fh,this._fl,40),e(this._gh,this._gl,48),e(this._hh,this._hl,56),t},t.exports=u},"509b":function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});const n=r("1c55");function i(t){return"0x"+n.keccak_256(a(t))}function o(t){let e=[];for(let r=0;r>>4).toString(16)),e.push((15&t[r]).toString(16));return`0x${e.join("").replace(/^0+/,"")}`}function a(t){if(null==t)throw new Error("cannot convert null value to array");if("string"===typeof t){let e=t.match(/^(0x)?[0-9a-fA-F]*$/);if(!e)throw new Error("invalid hexidecimal string");if("0x"!==e[1])throw new Error("hex string must have 0x prefix");t=t.substring(2),t.length%2&&(t="0"+t);const r=[];for(let n=0;n=256||parseInt(String(r))!=r)return!1}return!0}function u(t){return t.slice?t:(t.slice=function(){const e=Array.prototype.slice.call(arguments);return u(new Uint8Array(Array.prototype.slice.apply(t,e)))},t)}e.keccak256=i,e.padLeft=(t,e)=>{const r=/^0x/i.test(t)||"number"===typeof t;t=t.toString().replace(/^0x/i,"");const n=e-t.length+1>=0?e-t.length+1:0;return(r?"0x":"")+new Array(n).join("0")+t},e.bytesToHex=o,e.toByteArray=a},"50c4":function(t,e,r){var n=r("a691"),i=Math.min;t.exports=function(t){return t>0?i(n(t),9007199254740991):0}},5135:function(t,e){var r={}.hasOwnProperty;t.exports=function(t,e){return r.call(t,e)}},5146:function(t,e,r){"use strict";var n=r("17fb"),i=r("33fb"),o=function t(e){this.givenProvider=t.givenProvider,e&&e._requestManager&&(e=e.currentProvider),"undefined"!==typeof document&&(this.pick=i.pick),this.setProvider(e)};o.givenProvider=null,"undefined"!==typeof ethereumProvider&ðereumProvider.bzz&&(o.givenProvider=ethereumProvider.bzz),o.prototype.setProvider=function(t){if(n.isObject(t)&&n.isString(t.bzz)&&(t=t.bzz),!n.isString(t)){this.currentProvider=null;var e=new Error("No provider set, please set one using bzz.setProvider().");return this.download=this.upload=this.isAvailable=function(){throw e},!1}return this.currentProvider=t,this.download=i.at(t).download,this.upload=i.at(t).upload,this.isAvailable=i.at(t).isAvailable,!0},t.exports=o},5162:function(t,e){t.exports=function(t){if("string"!==typeof t)throw new Error("[is-hex-prefixed] value must be type 'string', is currently type "+typeof t+", while checking isHexPrefixed.");return"0x"===t.slice(0,2)}},5165:function(t,e,r){(function(t){var n=r("8c8a");function i(t){return t._prev=t._cipher.encryptBlock(t._prev),t._prev}e.encrypt=function(e,r){while(e._cache.length>s%8,t._prev=o(t._prev,r?i:a);return c}function o(t,e){var r=t.length,i=-1,o=n.allocUnsafe(t.length);t=n.concat([t,n.from([e])]);while(++i>7;return o}e.encrypt=function(t,e,r){var o=e.length,a=n.allocUnsafe(o),s=-1;while(++s3600)throw new Error("Network not synced; last block was "+r+" seconds ago");return t.eth.net.getNetworkType()})).then((function(t){var e=n.addresses[t];if("undefined"===typeof e)throw new Error("ENS is not supported on network "+t);return e}))},t.exports=a},5384:function(t,e,r){"use strict";var n=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}},o=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e["default"]=t,e};Object.defineProperty(e,"__esModule",{value:!0});var a=i(r("399f")),s=r("948b"),u=r("4348"),c=r("31d3"),f=o(r("4f1b")),h=new a.default.BN(-1);function l(t){var e=t.toString(16);return"-"===e[0]?e.length%2===0?"-0x0"+e.substring(1):"-0x"+e.substring(1):e.length%2===1?"0x0"+e:"0x"+e}function d(t){return y(t)._bn}function p(t){return new m(l(t))}var m=function(t){function e(r){var n=t.call(this)||this;if(f.checkNew(n,e),"string"===typeof r)s.isHexString(r)?("0x"==r&&(r="0x0"),u.defineReadOnly(n,"_hex",r)):"-"===r[0]&&s.isHexString(r.substring(1))?u.defineReadOnly(n,"_hex",r):r.match(/^-?[0-9]*$/)?(""==r&&(r="0"),u.defineReadOnly(n,"_hex",l(new a.default.BN(r)))):f.throwError("invalid BigNumber string value",f.INVALID_ARGUMENT,{arg:"value",value:r});else if("number"===typeof r){parseInt(String(r))!==r&&f.throwError("underflow",f.NUMERIC_FAULT,{operation:"setValue",fault:"underflow",value:r,outputValue:parseInt(String(r))});try{u.defineReadOnly(n,"_hex",l(new a.default.BN(r)))}catch(i){f.throwError("overflow",f.NUMERIC_FAULT,{operation:"setValue",fault:"overflow",details:i.message})}}else r instanceof e?u.defineReadOnly(n,"_hex",r._hex):r.toHexString?u.defineReadOnly(n,"_hex",l(d(r.toHexString()))):s.isArrayish(r)?u.defineReadOnly(n,"_hex",l(new a.default.BN(s.hexlify(r).substring(2),16))):f.throwError("invalid BigNumber value",f.INVALID_ARGUMENT,{arg:"value",value:r});return n}return n(e,t),Object.defineProperty(e.prototype,"_bn",{get:function(){return"-"===this._hex[0]?new a.default.BN(this._hex.substring(3),16).mul(h):new a.default.BN(this._hex.substring(2),16)},enumerable:!0,configurable:!0}),e.prototype.fromTwos=function(t){return p(this._bn.fromTwos(t))},e.prototype.toTwos=function(t){return p(this._bn.toTwos(t))},e.prototype.add=function(t){return p(this._bn.add(d(t)))},e.prototype.sub=function(t){return p(this._bn.sub(d(t)))},e.prototype.div=function(t){var e=y(t);return e.isZero()&&f.throwError("division by zero",f.NUMERIC_FAULT,{operation:"divide",fault:"division by zero"}),p(this._bn.div(d(t)))},e.prototype.mul=function(t){return p(this._bn.mul(d(t)))},e.prototype.mod=function(t){return p(this._bn.mod(d(t)))},e.prototype.pow=function(t){return p(this._bn.pow(d(t)))},e.prototype.maskn=function(t){return p(this._bn.maskn(t))},e.prototype.eq=function(t){return this._bn.eq(d(t))},e.prototype.lt=function(t){return this._bn.lt(d(t))},e.prototype.lte=function(t){return this._bn.lte(d(t))},e.prototype.gt=function(t){return this._bn.gt(d(t))},e.prototype.gte=function(t){return this._bn.gte(d(t))},e.prototype.isZero=function(){return this._bn.isZero()},e.prototype.toNumber=function(){try{return this._bn.toNumber()}catch(t){f.throwError("overflow",f.NUMERIC_FAULT,{operation:"setValue",fault:"overflow",details:t.message})}return null},e.prototype.toString=function(){return this._bn.toString(10)},e.prototype.toHexString=function(){return this._hex},e}(c.BigNumber);function y(t){return t instanceof m?t:new m(t)}e.bigNumberify=y,e.ConstantNegativeOne=y(-1),e.ConstantZero=y(0),e.ConstantOne=y(1),e.ConstantTwo=y(2),e.ConstantWeiPerEther=y("1000000000000000000")},"53a8":function(t,e){t.exports=n;var r=Object.prototype.hasOwnProperty;function n(){for(var t={},e=0;et)r.ishrn(1);if(r.isEven()&&r.iadd(u),r.testn(1)||r.iadd(c),e.cmp(c)){if(!e.cmp(f))while(r.mod(h).cmp(l))r.iadd(p)}else while(r.mod(o).cmp(d))r.iadd(p);if(a=r.shrn(1),v(a)&&v(r)&&b(a)&&b(r)&&s.test(a)&&s.test(r))return r}}},"58ab":function(t,e,r){"use strict";var n=r("636c"),i=r("39d4").errors,o=function(t){this.requestManager=t,this.requests=[]};o.prototype.add=function(t){this.requests.push(t)},o.prototype.execute=function(){var t=this.requests;this.requestManager.sendBatch(t,(function(e,r){r=r||[],t.map((function(t,e){return r[e]||{}})).forEach((function(r,o){if(t[o].callback){if(r&&r.error)return t[o].callback(i.ErrorResponse(r));if(!n.isValidResponse(r))return t[o].callback(i.InvalidResponse(r));try{t[o].callback(null,t[o].format?t[o].format(r.result):r.result)}catch(e){t[o].callback(e)}}}))}))},t.exports=o},5919:function(t,e,r){"use strict";e.sha1=r("13e2"),e.sha224=r("07f2"),e.sha256=r("6eed"),e.sha384=r("8b95"),e.sha512=r("b525")},"5a76":function(t,e,r){var n=r("f576");t.exports=function(t){return(new n).update(t).digest()}},"5c6c":function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},"5e1a":function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var i=r("8707").Buffer,o=r(3);function a(t,e,r){t.copy(e,r)}t.exports=function(){function t(){n(this,t),this.head=null,this.tail=null,this.length=0}return t.prototype.push=function(t){var e={data:t,next:null};this.length>0?this.tail.next=e:this.head=e,this.tail=e,++this.length},t.prototype.unshift=function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length},t.prototype.shift=function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}},t.prototype.clear=function(){this.head=this.tail=null,this.length=0},t.prototype.join=function(t){if(0===this.length)return"";var e=this.head,r=""+e.data;while(e=e.next)r+=t+e.data;return r},t.prototype.concat=function(t){if(0===this.length)return i.alloc(0);if(1===this.length)return this.head.data;var e=i.allocUnsafe(t>>>0),r=this.head,n=0;while(r)a(r.data,e,n),n+=r.data.length,r=r.next;return e},t}(),o&&o.inspect&&o.inspect.custom&&(t.exports.prototype[o.inspect.custom]=function(){var t=o.inspect({length:this.length});return this.constructor.name+" "+t})},"5e89":function(t,e,r){"use strict";var n={addresses:{main:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",ropsten:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",rinkeby:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",goerli:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e"}};t.exports=n},"5ee3":function(t,e,r){var n;try{n=r("6787")}catch(s){}finally{if(n||"undefined"===typeof window||(n=window),!n)throw new Error("Could not determine global this")}var i=n.WebSocket||n.MozWebSocket,o=r("7b6b");function a(t,e){var r;return r=e?new i(t,e):new i(t),r}i&&["CONNECTING","OPEN","CLOSING","CLOSED"].forEach((function(t){Object.defineProperty(a,t,{get:function(){return i[t]}})})),t.exports={w3cwebsocket:i?a:null,version:o}},"5ee7":function(t,e,r){"use strict";e.readUInt32BE=function(t,e){var r=t[0+e]<<24|t[1+e]<<16|t[2+e]<<8|t[3+e];return r>>>0},e.writeUInt32BE=function(t,e,r){t[0+r]=e>>>24,t[1+r]=e>>>16&255,t[2+r]=e>>>8&255,t[3+r]=255&e},e.ip=function(t,e,r,n){for(var i=0,o=0,a=6;a>=0;a-=2){for(var s=0;s<=24;s+=8)i<<=1,i|=e>>>s+a&1;for(s=0;s<=24;s+=8)i<<=1,i|=t>>>s+a&1}for(a=6;a>=0;a-=2){for(s=1;s<=25;s+=8)o<<=1,o|=e>>>s+a&1;for(s=1;s<=25;s+=8)o<<=1,o|=t>>>s+a&1}r[n+0]=i>>>0,r[n+1]=o>>>0},e.rip=function(t,e,r,n){for(var i=0,o=0,a=0;a<4;a++)for(var s=24;s>=0;s-=8)i<<=1,i|=e>>>s+a&1,i<<=1,i|=t>>>s+a&1;for(a=4;a<8;a++)for(s=24;s>=0;s-=8)o<<=1,o|=e>>>s+a&1,o<<=1,o|=t>>>s+a&1;r[n+0]=i>>>0,r[n+1]=o>>>0},e.pc1=function(t,e,r,n){for(var i=0,o=0,a=7;a>=5;a--){for(var s=0;s<=24;s+=8)i<<=1,i|=e>>s+a&1;for(s=0;s<=24;s+=8)i<<=1,i|=t>>s+a&1}for(s=0;s<=24;s+=8)i<<=1,i|=e>>s+a&1;for(a=1;a<=3;a++){for(s=0;s<=24;s+=8)o<<=1,o|=e>>s+a&1;for(s=0;s<=24;s+=8)o<<=1,o|=t>>s+a&1}for(s=0;s<=24;s+=8)o<<=1,o|=t>>s+a&1;r[n+0]=i>>>0,r[n+1]=o>>>0},e.r28shl=function(t,e){return t<>>28-e};var n=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];e.pc2=function(t,e,r,i){for(var o=0,a=0,s=n.length>>>1,u=0;u>>n[u]&1;for(u=s;u>>n[u]&1;r[i+0]=o>>>0,r[i+1]=a>>>0},e.expand=function(t,e,r){var n=0,i=0;n=(1&t)<<5|t>>>27;for(var o=23;o>=15;o-=4)n<<=6,n|=t>>>o&63;for(o=11;o>=3;o-=4)i|=t>>>o&63,i<<=6;i|=(31&t)<<1|t>>>31,e[r+0]=n>>>0,e[r+1]=i>>>0};var i=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];e.substitute=function(t,e){for(var r=0,n=0;n<4;n++){var o=t>>>18-6*n&63,a=i[64*n+o];r<<=4,r|=a}for(n=0;n<4;n++){o=e>>>18-6*n&63,a=i[256+64*n+o];r<<=4,r|=a}return r>>>0};var o=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];e.permute=function(t){for(var e=0,r=0;r>>o[r]&1;return e>>>0},e.padSplit=function(t,e,r){var n=t.toString(2);while(n.lengthf){var d,p=c(arguments[f++]),m=h?o(p).concat(h(p)):o(p),y=m.length,v=0;while(y>v)d=m[v++],n&&!l.call(p,d)||(r[d]=p[d])}return r}:f},6238:function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r("1037"),i=r("948b");function o(t){return"0x"+n.keccak_256(i.arrayify(t))}e.keccak256=o},6248:function(t,e,r){"use strict";var n=r("17fb"),i=r("39d4").errors,o=r("39d4").formatters,a=r("1131"),s=r("5562"),u=r("4923").subscriptions,c=function(t){if(!t.call||!t.name)throw new Error('When creating a method you need to provide at least the "name" and "call" property.');this.name=t.name,this.call=t.call,this.params=t.params||0,this.inputFormatter=t.inputFormatter,this.outputFormatter=t.outputFormatter,this.transformPayload=t.transformPayload,this.extraFormatters=t.extraFormatters,this.abiCoder=t.abiCoder,this.requestManager=t.requestManager,this.accounts=t.accounts,this.defaultBlock=t.defaultBlock||"latest",this.defaultAccount=t.defaultAccount||null,this.transactionBlockTimeout=t.transactionBlockTimeout||50,this.transactionConfirmationBlocks=t.transactionConfirmationBlocks||24,this.transactionPollingTimeout=t.transactionPollingTimeout||750,this.defaultCommon=t.defaultCommon,this.defaultChain=t.defaultChain,this.defaultHardfork=t.defaultHardfork,this.handleRevert=t.handleRevert};c.prototype.setRequestManager=function(t,e){this.requestManager=t,e&&(this.accounts=e)},c.prototype.createFunction=function(t,e){var r=this.buildCall();return r.call=this.call,this.setRequestManager(t||this.requestManager,e||this.accounts),r},c.prototype.attachToObject=function(t){var e=this.buildCall();e.call=this.call;var r=this.name.split(".");r.length>1?(t[r[0]]=t[r[0]]||{},t[r[0]][r[1]]=e):t[r[0]]=e},c.prototype.getCall=function(t){return n.isFunction(this.call)?this.call(t):this.call},c.prototype.extractCallback=function(t){if(n.isFunction(t[t.length-1]))return t.pop()},c.prototype.validateArgs=function(t){if(t.length!==this.params)throw i.InvalidNumberOfParams(t.length,this.params,this.name)},c.prototype.formatInput=function(t){var e=this;return this.inputFormatter?this.inputFormatter.map((function(r,n){return r?r.call(e,t[n]):t[n]})):t},c.prototype.formatOutput=function(t){var e=this;return n.isArray(t)?t.map((function(t){return e.outputFormatter&&t?e.outputFormatter(t):t})):this.outputFormatter&&t?this.outputFormatter(t):t},c.prototype.toPayload=function(t){var e=this.getCall(t),r=this.extractCallback(t),n=this.formatInput(t);this.validateArgs(n);var i={method:e,params:n,callback:r};return this.transformPayload&&(i=this.transformPayload(i)),i},c.prototype._confirmTransaction=function(t,e,r){var f=this,h=!1,l=!0,d=0,p=0,m=null,y=null,v=n.isObject(r.params[0])&&r.params[0].gas?r.params[0].gas:null,b=n.isObject(r.params[0])&&r.params[0].data&&r.params[0].from&&!r.params[0].to,g=b&&r.params[0].data.length>2,w=[new c({name:"getBlockByNumber",call:"eth_getBlockByNumber",params:2,inputFormatter:[o.inputBlockNumberFormatter,function(t){return!!t}],outputFormatter:o.outputBlockFormatter}),new c({name:"getTransactionReceipt",call:"eth_getTransactionReceipt",params:1,inputFormatter:[null],outputFormatter:o.outputTransactionReceiptFormatter}),new c({name:"getCode",call:"eth_getCode",params:2,inputFormatter:[o.inputAddressFormatter,o.inputDefaultBlockNumberFormatter]}),new u({name:"subscribe",type:"eth",subscriptions:{newBlockHeaders:{subscriptionName:"newHeads",params:0,outputFormatter:o.outputBlockFormatter}}})],_={};n.each(w,(function(t){t.attachToObject(_),t.requestManager=f.requestManager}));var A=function(n,o,u,c,w){if(!u)return w||(w={unsubscribe:function(){clearInterval(m)}}),(n?s.resolve(n):_.getTransactionReceipt(e)).catch((function(e){w.unsubscribe(),h=!0,a._fireError({message:"Failed to check for transaction receipt:",data:e},t.eventEmitter,t.reject)})).then((async function(e){if(!e||!e.blockHash)throw new Error("Receipt missing or blockHash null");var r;(f.extraFormatters&&f.extraFormatters.receiptFormatter&&(e=f.extraFormatters.receiptFormatter(e)),t.eventEmitter.listeners("confirmation").length>0)&&(void 0!==n&&0===p||(o?y?(r=await _.getBlockByNumber(y.number+1),r&&(y=r,t.eventEmitter.emit("confirmation",p,e))):(r=await _.getBlockByNumber(e.blockNumber),y=r,t.eventEmitter.emit("confirmation",p,e)):t.eventEmitter.emit("confirmation",p,e)),(o&&r||!o)&&p++,l=!1,p===f.transactionConfirmationBlocks+1&&(w.unsubscribe(),t.eventEmitter.removeAllListeners()));return e})).then((async function(e){if(b&&!h){if(!e.contractAddress)return l&&(w.unsubscribe(),h=!0),void a._fireError(i.NoContractAddressFoundError(e),t.eventEmitter,t.reject,null,e);var r;try{r=await _.getCode(e.contractAddress)}catch(u){}if(!r)return;var n=!0===e.status&&g;n||r.length>2?(t.eventEmitter.emit("receipt",e),f.extraFormatters&&f.extraFormatters.contractDeployFormatter?t.resolve(f.extraFormatters.contractDeployFormatter(e)):t.resolve(e),l&&t.eventEmitter.removeAllListeners()):a._fireError(i.ContractCodeNotStoredError(e),t.eventEmitter,t.reject,null,e),l&&w.unsubscribe(),h=!0}return e})).then((async function(e){if(!b&&!h){if(e.outOfGas||v&&v===e.gasUsed||!0!==e.status&&"0x1"!==e.status&&"undefined"!==typeof e.status)if(JSON.stringify(e,null,2),!1===e.status||"0x0"===e.status)try{var n=null;if(!f.handleRevert||"eth_sendTransaction"!==f.call)throw!1;if(n=await f.getRevertReason(r.params[0],e.blockNumber),!n)throw!1;a._fireError(i.TransactionRevertInstructionError(n.reason,n.signature,e),t.eventEmitter,t.reject,null,e)}catch(o){a._fireError(i.TransactionRevertedWithoutReasonError(e),t.eventEmitter,t.reject,null,e)}else a._fireError(i.TransactionOutOfGasError(e),t.eventEmitter,t.reject,null,e);else t.eventEmitter.emit("receipt",e),t.resolve(e),l&&t.eventEmitter.removeAllListeners();l&&w.unsubscribe(),h=!0}})).catch((function(){d++,o?d-1>=f.transactionPollingTimeout&&(w.unsubscribe(),h=!0,a._fireError(i.TransactionError("Transaction was not mined within "+f.transactionPollingTimeout+" seconds, please make sure your transaction was properly sent. Be aware that it might still be mined!"),t.eventEmitter,t.reject)):d-1>=f.transactionBlockTimeout&&(w.unsubscribe(),h=!0,a._fireError(i.TransactionError("Transaction was not mined within "+f.transactionBlockTimeout+" blocks, please make sure your transaction was properly sent. Be aware that it might still be mined!"),t.eventEmitter,t.reject))}));w.unsubscribe(),h=!0,a._fireError({message:"Failed to subscribe to new newBlockHeaders to confirm the transaction receipts.",data:u},t.eventEmitter,t.reject)},E=function(t){n.isFunction(this.requestManager.provider.on)?_.subscribe("newBlockHeaders",A.bind(null,t,!1)):m=setInterval(A.bind(null,t,!0),1e3)}.bind(this);_.getTransactionReceipt(e).then((function(e){e&&e.blockHash?(t.eventEmitter.listeners("confirmation").length>0&&E(e),A(e,!1)):h||E()})).catch((function(){h||E()}))};var f=function(t,e){var r=null;return r=n.isNumber(t)?e.wallet[t]:n.isObject(t)&&t.address&&t.privateKey?t:e.wallet[t.toLowerCase()],r};c.prototype.buildCall=function(){var t=this,e="eth_sendTransaction"===t.call||"eth_sendRawTransaction"===t.call,r="eth_call"===t.call,o=function(){var o=s(!e),u=t.toPayload(Array.prototype.slice.call(arguments)),h=function(n,s){if(t.handleRevert&&!n&&r&&t.isRevertReasonString(s)&&t.abiCoder){var c=t.abiCoder.decodeParameter("string","0x"+s.substring(10)),f="Error(String)";a._fireError(i.RevertInstructionError(c,f),o.eventEmitter,o.reject,u.callback,{reason:c,signature:f})}else{try{s=t.formatOutput(s)}catch(h){n=h}if(s instanceof Error&&(n=s),n)return n.error&&(n=n.error),a._fireError(n,o.eventEmitter,o.reject,u.callback);u.callback&&u.callback(null,s),e?(o.eventEmitter.emit("transactionHash",s),t._confirmTransaction(o,s,u)):n||o.resolve(s)}},l=function(e){var r=n.extend({},u,{method:"eth_sendRawTransaction",params:[e.rawTransaction]});t.requestManager.send(r,h)},d=function(t,e){var r;if(e&&e.accounts&&e.accounts.wallet&&e.accounts.wallet.length)if("eth_sendTransaction"===t.method){var i=t.params[0];if(r=f(n.isObject(i)?i.from:null,e.accounts),r&&r.privateKey){var a=n.omit(i,"from");return e.defaultChain&&!a.chain&&(a.chain=e.defaultChain),e.defaultHardfork&&!a.hardfork&&(a.hardfork=e.defaultHardfork),e.defaultCommon&&!a.common&&(a.common=e.defaultCommon),e.accounts.signTransaction(a,r.privateKey).then(l).catch((function(t){n.isFunction(o.eventEmitter.listeners)&&o.eventEmitter.listeners("error").length&&(o.eventEmitter.emit("error",t),o.eventEmitter.removeAllListeners(),o.eventEmitter.catch((function(){}))),o.reject(t)}))}}else if("eth_sign"===t.method){var s=t.params[1];if(r=f(t.params[0],e.accounts),r&&r.privateKey){var u=e.accounts.sign(s,r.privateKey);return t.callback&&t.callback(null,u.signature),void o.resolve(u.signature)}}return e.requestManager.send(t,h)};if(e&&n.isObject(u.params[0])&&"undefined"===typeof u.params[0].gasPrice){var p=new c({name:"getGasPrice",call:"eth_gasPrice",params:0}).createFunction(t.requestManager);p((function(e,r){r&&(u.params[0].gasPrice=r),d(u,t)}))}else d(u,t);return o.eventEmitter};return o.method=t,o.request=this.request.bind(this),o},c.prototype.getRevertReason=function(t,e){var r=this;return new Promise((function(n,i){new c({name:"call",call:"eth_call",params:2,abiCoder:r.abiCoder,handleRevert:!0}).createFunction(r.requestManager)(t,a.numberToHex(e)).then((function(){n(!1)})).catch((function(t){t.reason?n({reason:t.reason,signature:t.signature}):i(t)}))}))},c.prototype.isRevertReasonString=function(t){return n.isString(t)&&(t.length-2)/2%32===4&&"0x08c379a0"===t.substring(0,10)},c.prototype.request=function(){var t=this.toPayload(Array.prototype.slice.call(arguments));return t.format=this.formatOutput.bind(this),t},t.exports=c},6283:function(t,e,r){var n=r("3fb5"),i=r("41df").Reporter,o=r("b639").Buffer;function a(t,e){i.call(this,e),o.isBuffer(t)?(this.base=t,this.offset=0,this.length=t.length):this.error("Input not Buffer")}function s(t,e){if(Array.isArray(t))this.length=0,this.value=t.map((function(t){return t instanceof s||(t=new s(t,e)),this.length+=t.length,t}),this);else if("number"===typeof t){if(!(0<=t&&t<=255))return e.error("non-byte EncoderBuffer value");this.value=t,this.length=1}else if("string"===typeof t)this.value=t,this.length=o.byteLength(t);else{if(!o.isBuffer(t))return e.error("Unsupported type: "+typeof t);this.value=t,this.length=t.length}}n(a,i),e.DecoderBuffer=a,a.prototype.save=function(){return{offset:this.offset,reporter:i.prototype.save.call(this)}},a.prototype.restore=function(t){var e=new a(this.base);return e.offset=t.offset,e.length=this.offset,this.offset=t.offset,i.prototype.restore.call(this,t.reporter),e},a.prototype.isEmpty=function(){return this.offset===this.length},a.prototype.readUInt8=function(t){return this.offset+1<=this.length?this.base.readUInt8(this.offset++,!0):this.error(t||"DecoderBuffer overrun")},a.prototype.skip=function(t,e){if(!(this.offset+t<=this.length))return this.error(e||"DecoderBuffer overrun");var r=new a(this.base);return r._reporterState=this._reporterState,r.offset=this.offset,r.length=this.offset+t,this.offset+=t,r},a.prototype.raw=function(t){return this.base.slice(t?t.offset:this.offset,this.length)},e.EncoderBuffer=s,s.prototype.join=function(t,e){return t||(t=new o(this.length)),e||(e=0),0===this.length?t:(Array.isArray(this.value)?this.value.forEach((function(r){r.join(t,e),e+=r.length})):("number"===typeof this.value?t[e]=this.value:"string"===typeof this.value?t.write(this.value,e):o.isBuffer(this.value)&&this.value.copy(t,e),e+=this.length),t)}},"62c9":function(t,e,r){var n=r("8707").Buffer;function i(t,e,r){var i=t._cipher.encryptBlock(t._prev),o=i[0]^e;return t._prev=n.concat([t._prev.slice(1),n.from([r?e:o])]),o}e.encrypt=function(t,e,r){var o=e.length,a=n.allocUnsafe(o),s=-1;while(++s"0x"+t.toString("hex"),a=t=>new n(t.slice(2),16),s=t=>{const e="0x"+("0x"===t.slice(0,2)?new n(t.slice(2),16):new n(t,10)).toString("hex");return"0x0"===e?"0x":e},u=t=>l(v(t,s("10000000000")))/1e8,c=t=>y(h(Math.floor(1e8*t)),s("10000000000")),f=t=>a(t).toString(10),h=t=>"string"===typeof t?/^0x/.test(t)?t:"0x"+t:"0x"+new n(t).toString("hex"),l=t=>a(t).toNumber(),d=t=>i.pad(32,t),p=t=>(e,r)=>o(a(e)[t](a(r))),m=p("add"),y=p("mul"),v=p("div"),b=p("sub");t.exports={toString:f,fromString:s,toNumber:l,fromNumber:h,toEther:u,fromEther:c,toUint256:d,add:m,mul:y,div:v,sub:b}},6430:function(t,e,r){var n=r("8707").Buffer,i=r("d485").Transform,o=r("7d72").StringDecoder,a=r("3fb5");function s(t){i.call(this),this.hashMode="string"===typeof t,this.hashMode?this[t]=this._finalOrDigest:this.final=this._finalOrDigest,this._final&&(this.__final=this._final,this._final=null),this._decoder=null,this._encoding=null}a(s,i),s.prototype.update=function(t,e,r){"string"===typeof t&&(t=n.from(t,e));var i=this._update(t);return this.hashMode?this:(r&&(i=this._toString(i,r)),i)},s.prototype.setAutoPadding=function(){},s.prototype.getAuthTag=function(){throw new Error("trying to get auth tag in unsupported state")},s.prototype.setAuthTag=function(){throw new Error("trying to set auth tag in unsupported state")},s.prototype.setAAD=function(){throw new Error("trying to set aad in unsupported state")},s.prototype._transform=function(t,e,r){var n;try{this.hashMode?this._update(t):this.push(this._update(t))}catch(i){n=i}finally{r(n)}},s.prototype._flush=function(t){var e;try{this.push(this.__final())}catch(r){e=r}t(e)},s.prototype._finalOrDigest=function(t){var e=this.__final()||n.alloc(0);return t&&(e=this._toString(e,t,!0)),e},s.prototype._toString=function(t,e,r){if(this._decoder||(this._decoder=new o(e),this._encoding=e),this._encoding!==e)throw new Error("can't switch encodings");var n=this._decoder.write(t);return r&&(n+=this._decoder.end()),n},t.exports=s},6442:function(t,e,r){e.publicEncrypt=r("ad25"),e.privateDecrypt=r("0f2c"),e.privateEncrypt=function(t,r){return e.publicEncrypt(t,r,!0)},e.publicDecrypt=function(t,r){return e.privateDecrypt(t,r,!0)}},6444:function(t,e){var r=function(t){return t.replace(/^\s+|\s+$/g,"")},n=function(t){return"[object Array]"===Object.prototype.toString.call(t)};t.exports=function(t){if(!t)return{};for(var e={},i=r(t).split("\n"),o=0;o=2*this.getChainId()+35&&this._common.gteHardfork("spuriousDragon");this._senderPubKey=i.ecrecover(t,e,this.r,this.s,r?this.getChainId():void 0)}catch(n){return!1}return!!this._senderPubKey},t.prototype.sign=function(t){this.v=new a.Buffer([]),this.s=new a.Buffer([]),this.r=new a.Buffer([]);var e=this.hash(!1),r=i.ecsign(e,t);this._implementsEIP155()&&(r.v+=2*this.getChainId()+8),Object.assign(this,r)},t.prototype.getDataFee=function(){for(var t=this.raw[5],e=new i.BN(0),r=0;r0&&e.push(["gas limit is too low. Need at least "+this.getBaseFee()]),!1===t?0===e.length:e.join(" ")},t.prototype.serialize=function(){return i.rlp.encode(this.raw)},t.prototype.toJSON=function(t){return void 0===t&&(t=!1),{}},t.prototype._validateV=function(t){if(void 0!==t&&0!==t.length&&this._common.gteHardfork("spuriousDragon")){var e=i.bufferToInt(t);if(27!==e&&28!==e){var r=e===2*this.getChainId()+35||e===2*this.getChainId()+36;if(!r)throw new Error("Incompatible EIP155-based V "+e+" and chain id "+this.getChainId()+". See the second parameter of the Transaction constructor to set the chain id.")}}},t.prototype._isSigned=function(){return this.v.length>0&&this.r.length>0&&this.s.length>0},t.prototype._overrideVSetterWithValidation=function(){var t=this,e=Object.getOwnPropertyDescriptor(this,"v");Object.defineProperty(this,"v",n({},e,{set:function(r){void 0!==r&&t._validateV(i.toBuffer(r)),e.set(r)}}))},t.prototype._implementsEIP155=function(){var t=this._common.gteHardfork("spuriousDragon");if(!this._isSigned())return t;var e=i.bufferToInt(this.v),r=e===2*this.getChainId()+35||e===2*this.getChainId()+36;return r&&t},t}();e.default=u},"662a":function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.hardforks=[["chainstart",r("fb6d")],["homestead",r("9825")],["dao",r("7306")],["tangerineWhistle",r("91b1")],["spuriousDragon",r("6aca")],["byzantium",r("43c5")],["constantinople",r("d665")],["petersburg",r("2044")],["istanbul",r("aea0")],["muirGlacier",r("8035")]]},"676f":function(t,e,r){"use strict";var n=r("399f"),i=r("3fb5"),o=r("ea53"),a=r("f3a3");function s(t){o.call(this,"mont",t),this.a=new n(t.a,16).toRed(this.red),this.b=new n(t.b,16).toRed(this.red),this.i4=new n(4).toRed(this.red).redInvm(),this.two=new n(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function u(t,e,r){o.BasePoint.call(this,t,"projective"),null===e&&null===r?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new n(e,16),this.z=new n(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}i(s,o),t.exports=s,s.prototype.validate=function(t){var e=t.normalize().x,r=e.redSqr(),n=r.redMul(e).redAdd(r.redMul(this.a)).redAdd(e),i=n.redSqrt();return 0===i.redSqr().cmp(n)},i(u,o.BasePoint),s.prototype.decodePoint=function(t,e){return this.point(a.toArray(t,e),1)},s.prototype.point=function(t,e){return new u(this,t,e)},s.prototype.pointFromJSON=function(t){return u.fromJSON(this,t)},u.prototype.precompute=function(){},u.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},u.fromJSON=function(t,e){return new u(t,e[0],e[1]||t.one)},u.prototype.inspect=function(){return this.isInfinity()?"":""},u.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},u.prototype.dbl=function(){var t=this.x.redAdd(this.z),e=t.redSqr(),r=this.x.redSub(this.z),n=r.redSqr(),i=e.redSub(n),o=e.redMul(n),a=i.redMul(n.redAdd(this.curve.a24.redMul(i)));return this.curve.point(o,a)},u.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},u.prototype.diffAdd=function(t,e){var r=this.x.redAdd(this.z),n=this.x.redSub(this.z),i=t.x.redAdd(t.z),o=t.x.redSub(t.z),a=o.redMul(r),s=i.redMul(n),u=e.z.redMul(a.redAdd(s).redSqr()),c=e.x.redMul(a.redISub(s).redSqr());return this.curve.point(u,c)},u.prototype.mul=function(t){for(var e=t.clone(),r=this,n=this.curve.point(null,null),i=this,o=[];0!==e.cmpn(0);e.iushrn(1))o.push(e.andln(1));for(var a=o.length-1;a>=0;a--)0===o[a]?(r=r.diffAdd(n,i),n=n.dbl()):(n=r.diffAdd(n,i),r=r.dbl());return n},u.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},u.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},u.prototype.eq=function(t){return 0===this.getX().cmp(t.getX())},u.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},u.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},6787:function(t,e){var r=function(){if("object"===typeof self&&self)return self;if("object"===typeof window&&window)return window;throw new Error("Unable to resolve global `this`")};t.exports=function(){if(this)return this;if("object"===typeof globalThis&&globalThis)return globalThis;try{Object.defineProperty(Object.prototype,"__global__",{get:function(){return this},configurable:!0})}catch(t){return r()}try{return __global__||r()}finally{delete Object.prototype.__global__}}()},6983:function(t,e,r){"use strict";t.exports=r("c98c")(r("2416"))},"69dc":function(t,e,r){var n=r("7b0be").keccak256,i=r("73f3"),o=function(t,e){var r=i.reverse(i.pad(6,i.fromNumber(t))),o=i.flatten([r,"0x0000",e]);return n(o).slice(2)},a=function t(e){"string"===typeof e&&"0x"!==e.slice(0,2)?e=i.fromString(e):"string"!==typeof e&&void 0!==e.length&&(e=i.fromUint8Array(e));var r=i.length(e);if(r<=4096)return o(r,e);var n=4096;while(128*n=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,n)}t.exports=a,a.prototype._init=function(t,e,r){var n=t.concat(e).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var i=0;i=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(r||[])),this._reseed=1},a.prototype.generate=function(t,e,r,n){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!==typeof e&&(n=r,r=e,e=null),r&&(r=i.toArray(r,n||"hex"),this._update(r));var o=[];while(o.length>>31),p=l^(a<<1|o>>>31);const m=t[0]^d,y=t[1]^p,v=t[10]^d,b=t[11]^p,g=t[20]^d,w=t[21]^p,_=t[30]^d,A=t[31]^p,E=t[40]^d,x=t[41]^p;d=r^(s<<1|u>>>31),p=i^(u<<1|s>>>31);const M=t[2]^d,k=t[3]^p,S=t[12]^d,I=t[13]^p,C=t[22]^d,T=t[23]^p,U=t[32]^d,O=t[33]^p,P=t[42]^d,R=t[43]^p;d=o^(c<<1|f>>>31),p=a^(f<<1|c>>>31);const N=t[4]^d,B=t[5]^p,j=t[14]^d,L=t[15]^p,D=t[24]^d,F=t[25]^p,q=t[34]^d,H=t[35]^p,z=t[44]^d,K=t[45]^p;d=s^(h<<1|l>>>31),p=u^(l<<1|h>>>31);const V=t[6]^d,G=t[7]^p,$=t[16]^d,Y=t[17]^p,W=t[26]^d,Z=t[27]^p,J=t[36]^d,X=t[37]^p,Q=t[46]^d,tt=t[47]^p;d=c^(r<<1|i>>>31),p=f^(i<<1|r>>>31);const et=t[8]^d,rt=t[9]^p,nt=t[18]^d,it=t[19]^p,ot=t[28]^d,at=t[29]^p,st=t[38]^d,ut=t[39]^p,ct=t[48]^d,ft=t[49]^p,ht=m,lt=y,dt=b<<4|v>>>28,pt=v<<4|b>>>28,mt=g<<3|w>>>29,yt=w<<3|g>>>29,vt=A<<9|_>>>23,bt=_<<9|A>>>23,gt=E<<18|x>>>14,wt=x<<18|E>>>14,_t=M<<1|k>>>31,At=k<<1|M>>>31,Et=I<<12|S>>>20,xt=S<<12|I>>>20,Mt=C<<10|T>>>22,kt=T<<10|C>>>22,St=O<<13|U>>>19,It=U<<13|O>>>19,Ct=P<<2|R>>>30,Tt=R<<2|P>>>30,Ut=B<<30|N>>>2,Ot=N<<30|B>>>2,Pt=j<<6|L>>>26,Rt=L<<6|j>>>26,Nt=F<<11|D>>>21,Bt=D<<11|F>>>21,jt=q<<15|H>>>17,Lt=H<<15|q>>>17,Dt=K<<29|z>>>3,Ft=z<<29|K>>>3,qt=V<<28|G>>>4,Ht=G<<28|V>>>4,zt=Y<<23|$>>>9,Kt=$<<23|Y>>>9,Vt=W<<25|Z>>>7,Gt=Z<<25|W>>>7,$t=J<<21|X>>>11,Yt=X<<21|J>>>11,Wt=tt<<24|Q>>>8,Zt=Q<<24|tt>>>8,Jt=et<<27|rt>>>5,Xt=rt<<27|et>>>5,Qt=nt<<20|it>>>12,te=it<<20|nt>>>12,ee=at<<7|ot>>>25,re=ot<<7|at>>>25,ne=st<<8|ut>>>24,ie=ut<<8|st>>>24,oe=ct<<14|ft>>>18,ae=ft<<14|ct>>>18;t[0]=ht^~Et&Nt,t[1]=lt^~xt&Bt,t[10]=qt^~Qt&mt,t[11]=Ht^~te&yt,t[20]=_t^~Pt&Vt,t[21]=At^~Rt&Gt,t[30]=Jt^~dt&Mt,t[31]=Xt^~pt&kt,t[40]=Ut^~zt&ee,t[41]=Ot^~Kt&re,t[2]=Et^~Nt&$t,t[3]=xt^~Bt&Yt,t[12]=Qt^~mt&St,t[13]=te^~yt&It,t[22]=Pt^~Vt&ne,t[23]=Rt^~Gt&ie,t[32]=dt^~Mt&jt,t[33]=pt^~kt&Lt,t[42]=zt^~ee&vt,t[43]=Kt^~re&bt,t[4]=Nt^~$t&oe,t[5]=Bt^~Yt&ae,t[14]=mt^~St&Dt,t[15]=yt^~It&Ft,t[24]=Vt^~ne>,t[25]=Gt^~ie&wt,t[34]=Mt^~jt&Wt,t[35]=kt^~Lt&Zt,t[44]=ee^~vt&Ct,t[45]=re^~bt&Tt,t[6]=$t^~oe&ht,t[7]=Yt^~ae<,t[16]=St^~Dt&qt,t[17]=It^~Ft&Ht,t[26]=ne^~gt&_t,t[27]=ie^~wt&At,t[36]=jt^~Wt&Jt,t[37]=Lt^~Zt&Xt,t[46]=vt^~Ct&Ut,t[47]=bt^~Tt&Ot,t[8]=oe^~ht&Et,t[9]=ae^~lt&xt,t[18]=Dt^~qt&Qt,t[19]=Ft^~Ht&te,t[28]=gt^~_t&Pt,t[29]=wt^~At&Rt,t[38]=Wt^~Jt&dt,t[39]=Zt^~Xt&pt,t[48]=Ct^~Ut&zt,t[49]=Tt^~Ot&Kt,t[0]^=n[2*e],t[1]^=n[2*e+1]}}},"6fe7":function(t,e,r){(function(e){var n=r("1a2a"),i=r("a958"),o=r("3337").ec,a=r("399f"),s=r("2aee"),u=r("cd91");function c(t,r,n,o,a){var u=s(r);if(u.curve){if("ecdsa"!==o&&"ecdsa/rsa"!==o)throw new Error("wrong private key type");return f(t,u)}if("dsa"===u.type){if("dsa"!==o)throw new Error("wrong private key type");return h(t,u,n)}if("rsa"!==o&&"ecdsa/rsa"!==o)throw new Error("wrong private key type");t=e.concat([a,t]);var c=u.modulus.byteLength(),l=[0,1];while(t.length+l.length+10&&r.ishrn(n),r}function m(t,r){t=p(t,r),t=t.mod(r);var n=new e(t.toArray());if(n.length=8?o+=t[a].toUpperCase():o+=t[a];return o},e.isValidChecksumAddress=function(t,r){return e.isValidAddress(t)&&e.toChecksumAddress(t,r)===t},e.generateAddress=function(e,r){e=s.toBuffer(e);var n=new a(r);return n.isZero()?u.rlphash([e,null]).slice(-20):u.rlphash([e,t.from(n.toArray())]).slice(-20)},e.generateAddress2=function(e,r,i){var o=s.toBuffer(e),a=s.toBuffer(r),c=s.toBuffer(i);n(20===o.length),n(32===a.length);var f=u.keccak256(t.concat([t.from("ff","hex"),o,a,u.keccak256(c)]));return f.slice(-20)},e.isPrecompiled=function(t){var e=s.unpad(t);return 1===e.length&&e[0]>=1&&e[0]<=8},e.isValidPrivate=function(t){return o.privateKeyVerify(t)},e.isValidPublic=function(e,r){return void 0===r&&(r=!1),64===e.length?o.publicKeyVerify(t.concat([t.from([4]),e])):!!r&&o.publicKeyVerify(e)},e.pubToAddress=function(t,e){return void 0===e&&(e=!1),t=s.toBuffer(t),e&&64!==t.length&&(t=o.publicKeyConvert(t,!1).slice(1)),n(64===t.length),u.keccak(t).slice(-20)},e.publicToAddress=e.pubToAddress,e.privateToAddress=function(t){return e.publicToAddress(e.privateToPublic(t))},e.privateToPublic=function(t){return t=s.toBuffer(t),o.publicKeyCreate(t,!1).slice(1)},e.importPublic=function(t){return t=s.toBuffer(t),64!==t.length&&(t=o.publicKeyConvert(t,!1).slice(1)),t}}).call(this,r("b639").Buffer)},"701e":function(t,e,r){"use strict";var n=r("52c6");t.exports=n},"70c1":function(t,e,r){"use strict";var n=r("4a87"),i=r("a6b6"),o=new n(0),a=new n(-1),s={noether:"0",wei:"1",kwei:"1000",Kwei:"1000",babbage:"1000",femtoether:"1000",mwei:"1000000",Mwei:"1000000",lovelace:"1000000",picoether:"1000000",gwei:"1000000000",Gwei:"1000000000",shannon:"1000000000",nanoether:"1000000000",nano:"1000000000",szabo:"1000000000000",microether:"1000000000000",micro:"1000000000000",finney:"1000000000000000",milliether:"1000000000000000",milli:"1000000000000000",ether:"1000000000000000000",kether:"1000000000000000000000",grand:"1000000000000000000000",mether:"1000000000000000000000000",gether:"1000000000000000000000000000",tether:"1000000000000000000000000000000"};function u(t){var e=t?t.toLowerCase():"ether",r=s[e];if("string"!==typeof r)throw new Error("[ethjs-unit] the unit provided "+t+" doesn't exists, please use the one of the following units "+JSON.stringify(s,null,2));return new n(r,10)}function c(t){if("string"===typeof t){if(!t.match(/^-?[0-9.]+$/))throw new Error("while converting number to string, invalid number value '"+t+"', should be a number matching (^-?[0-9.]+).");return t}if("number"===typeof t)return String(t);if("object"===typeof t&&t.toString&&(t.toTwos||t.dividedToIntegerBy))return t.toPrecision?String(t.toPrecision()):t.toString(10);throw new Error("while converting number to string, invalid number value '"+t+"' type "+typeof t+".")}function f(t,e,r){var n=i(t),c=n.lt(o),f=u(e),h=s[e].length-1||1,l=r||{};c&&(n=n.mul(a));var d=n.mod(f).toString(10);while(d.length2)throw new Error("[ethjs-unit] while converting number "+t+" to wei, too many decimal points");var l=h[0],d=h[1];if(l||(l="0"),d||(d="0"),d.length>o)throw new Error("[ethjs-unit] while converting number "+t+" to wei, too many decimal places");while(d.length>6|192);else{if(i>55295&&i<56320){if(++n==t.length)return null;var o=t.charCodeAt(n);if(o<56320||o>57343)return null;i=65536+((1023&i)<<10)+(1023&o),r+=e(i>>18|240),r+=e(i>>12&63|128)}else r+=e(i>>12|224);r+=e(i>>6&63|128)}r+=e(63&i|128)}}return r},E=function(t){var e="",r=0,i=o(t);while(r127){if(a>191&&a<224){if(r>=i)return null;a=(31&a)<<6|63&n(t,r)}else if(a>223&&a<240){if(r+1>=i)return null;a=(15&a)<<12|(63&n(t,r))<<6|63&n(t,++r)}else{if(!(a>239&&a<248))return null;if(r+2>=i)return null;a=(7&a)<<18|(63&n(t,r))<<12|(63&n(t,++r))<<6|63&n(t,++r)}++r}if(a<=65535)e+=String.fromCharCode(a);else{if(!(a<=1114111))return null;a-=65536,e+=String.fromCharCode(a>>10|55296),e+=String.fromCharCode(1023&a|56320)}}return e};t.exports={random:i,length:o,concat:v,flatten:a,slice:s,reverse:u,pad:c,padRight:f,fromAscii:w,toAscii:_,fromString:A,toString:E,fromNumber:m,toNumber:y,fromNat:b,toNat:g,fromArray:l,toArray:h,fromUint8Array:p,toUint8Array:d}},7418:function(t,e){e.f=Object.getOwnPropertySymbols},"75cc":function(t,e,r){"use strict";(function(t,n){function i(){throw new Error("secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11")}var o=r("8707"),a=r("11dc"),s=o.Buffer,u=o.kMaxLength,c=t.crypto||t.msCrypto,f=Math.pow(2,32)-1;function h(t,e){if("number"!==typeof t||t!==t)throw new TypeError("offset must be a number");if(t>f||t<0)throw new TypeError("offset must be a uint32");if(t>u||t>e)throw new RangeError("offset out of range")}function l(t,e,r){if("number"!==typeof t||t!==t)throw new TypeError("size must be a number");if(t>f||t<0)throw new TypeError("size must be a uint32");if(t+e>r||t>u)throw new RangeError("buffer too small")}function d(e,r,n,i){if(!s.isBuffer(e)&&!(e instanceof t.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');if("function"===typeof r)i=r,r=0,n=e.length;else if("function"===typeof n)i=n,n=e.length-r;else if("function"!==typeof i)throw new TypeError('"cb" argument must be a function');return h(r,e.length),l(n,r,e.length),p(e,r,n,i)}function p(t,e,r,i){if(n.browser){var o=t.buffer,s=new Uint8Array(o,e,r);return c.getRandomValues(s),i?void n.nextTick((function(){i(null,t)})):t}if(!i){var u=a(r);return u.copy(t,e),t}a(r,(function(r,n){if(r)return i(r);n.copy(t,e),i(null,t)}))}function m(e,r,n){if("undefined"===typeof r&&(r=0),!s.isBuffer(e)&&!(e instanceof t.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');return h(r,e.length),void 0===n&&(n=e.length-r),l(n,r,e.length),p(e,r,n)}c&&c.getRandomValues||!n.browser?(e.randomFill=d,e.randomFillSync=m):(e.randomFill=i,e.randomFillSync=i)}).call(this,r("c8ba"),r("4362"))},7658:function(t,e,r){"use strict";var n=e;function i(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var r=[];if("string"!==typeof t){for(var n=0;n>8,a=255&i;o?r.push(o,a):r.push(a)}return r}function o(t){return 1===t.length?"0"+t:t}function a(t){for(var e="",r=0;r=0);return i},o.prototype._randrange=function(t,e){var r=e.sub(t);return t.add(this._randbelow(r))},o.prototype.test=function(t,e,r){var i=t.bitLength(),o=n.mont(t),a=new n(1).toRed(o);e||(e=Math.max(1,i/48|0));for(var s=t.subn(1),u=0;!s.testn(u);u++);for(var c=t.shrn(u),f=s.toRed(o),h=!0;e>0;e--){var l=this._randrange(new n(2),s);r&&r(l);var d=l.toRed(o).redPow(c);if(0!==d.cmp(a)&&0!==d.cmp(f)){for(var p=1;p0;e--){var f=this._randrange(new n(2),a),h=t.gcd(f);if(0!==h.cmpn(1))return h;var l=f.toRed(i).redPow(u);if(0!==l.cmp(o)&&0!==l.cmp(c)){for(var d=1;d>5,outputBlocks:t>>5,s:function(t){return[].concat(t,t,t,t,t)}([0,0,0,0,0,0,0,0,0,0])}},s=function(t,e){var o,a=e.length,s=t.blocks,c=t.blockCount<<2,f=t.blockCount,h=t.outputBlocks,l=t.s,d=0;while(d>2]|=e[d]<>2]|=o<>2]|=(192|o>>6)<>2]|=(128|63&o)<=57344?(s[y>>2]|=(224|o>>12)<>2]|=(128|o>>6&63)<>2]|=(128|63&o)<>2]|=(240|o>>18)<>2]|=(128|o>>12&63)<>2]|=(128|o>>6&63)<>2]|=(128|63&o)<=c){for(t.start=y-c,t.block=s[f],y=0;y>2]|=n[3&y],t.lastByteIndex===c)for(s[0]=s[f],y=1;y>4&15]+r[15&p]+r[p>>12&15]+r[p>>8&15]+r[p>>20&15]+r[p>>16&15]+r[p>>28&15]+r[p>>24&15];v%f===0&&(u(l),y=0)}return"0x"+m},u=function(t){var e,r,n,i,a,s,u,c,f,h,l,d,p,m,y,v,b,g,w,_,A,E,x,M,k,S,I,C,T,U,O,P,R,N,B,j,L,D,F,q,H,z,K,V,G,$,Y,W,Z,J,X,Q,tt,et,rt,nt,it,ot,at,st,ut,ct,ft;for(n=0;n<48;n+=2)i=t[0]^t[10]^t[20]^t[30]^t[40],a=t[1]^t[11]^t[21]^t[31]^t[41],s=t[2]^t[12]^t[22]^t[32]^t[42],u=t[3]^t[13]^t[23]^t[33]^t[43],c=t[4]^t[14]^t[24]^t[34]^t[44],f=t[5]^t[15]^t[25]^t[35]^t[45],h=t[6]^t[16]^t[26]^t[36]^t[46],l=t[7]^t[17]^t[27]^t[37]^t[47],d=t[8]^t[18]^t[28]^t[38]^t[48],p=t[9]^t[19]^t[29]^t[39]^t[49],e=d^(s<<1|u>>>31),r=p^(u<<1|s>>>31),t[0]^=e,t[1]^=r,t[10]^=e,t[11]^=r,t[20]^=e,t[21]^=r,t[30]^=e,t[31]^=r,t[40]^=e,t[41]^=r,e=i^(c<<1|f>>>31),r=a^(f<<1|c>>>31),t[2]^=e,t[3]^=r,t[12]^=e,t[13]^=r,t[22]^=e,t[23]^=r,t[32]^=e,t[33]^=r,t[42]^=e,t[43]^=r,e=s^(h<<1|l>>>31),r=u^(l<<1|h>>>31),t[4]^=e,t[5]^=r,t[14]^=e,t[15]^=r,t[24]^=e,t[25]^=r,t[34]^=e,t[35]^=r,t[44]^=e,t[45]^=r,e=c^(d<<1|p>>>31),r=f^(p<<1|d>>>31),t[6]^=e,t[7]^=r,t[16]^=e,t[17]^=r,t[26]^=e,t[27]^=r,t[36]^=e,t[37]^=r,t[46]^=e,t[47]^=r,e=h^(i<<1|a>>>31),r=l^(a<<1|i>>>31),t[8]^=e,t[9]^=r,t[18]^=e,t[19]^=r,t[28]^=e,t[29]^=r,t[38]^=e,t[39]^=r,t[48]^=e,t[49]^=r,m=t[0],y=t[1],$=t[11]<<4|t[10]>>>28,Y=t[10]<<4|t[11]>>>28,C=t[20]<<3|t[21]>>>29,T=t[21]<<3|t[20]>>>29,st=t[31]<<9|t[30]>>>23,ut=t[30]<<9|t[31]>>>23,z=t[40]<<18|t[41]>>>14,K=t[41]<<18|t[40]>>>14,N=t[2]<<1|t[3]>>>31,B=t[3]<<1|t[2]>>>31,v=t[13]<<12|t[12]>>>20,b=t[12]<<12|t[13]>>>20,W=t[22]<<10|t[23]>>>22,Z=t[23]<<10|t[22]>>>22,U=t[33]<<13|t[32]>>>19,O=t[32]<<13|t[33]>>>19,ct=t[42]<<2|t[43]>>>30,ft=t[43]<<2|t[42]>>>30,et=t[5]<<30|t[4]>>>2,rt=t[4]<<30|t[5]>>>2,j=t[14]<<6|t[15]>>>26,L=t[15]<<6|t[14]>>>26,g=t[25]<<11|t[24]>>>21,w=t[24]<<11|t[25]>>>21,J=t[34]<<15|t[35]>>>17,X=t[35]<<15|t[34]>>>17,P=t[45]<<29|t[44]>>>3,R=t[44]<<29|t[45]>>>3,M=t[6]<<28|t[7]>>>4,k=t[7]<<28|t[6]>>>4,nt=t[17]<<23|t[16]>>>9,it=t[16]<<23|t[17]>>>9,D=t[26]<<25|t[27]>>>7,F=t[27]<<25|t[26]>>>7,_=t[36]<<21|t[37]>>>11,A=t[37]<<21|t[36]>>>11,Q=t[47]<<24|t[46]>>>8,tt=t[46]<<24|t[47]>>>8,V=t[8]<<27|t[9]>>>5,G=t[9]<<27|t[8]>>>5,S=t[18]<<20|t[19]>>>12,I=t[19]<<20|t[18]>>>12,ot=t[29]<<7|t[28]>>>25,at=t[28]<<7|t[29]>>>25,q=t[38]<<8|t[39]>>>24,H=t[39]<<8|t[38]>>>24,E=t[48]<<14|t[49]>>>18,x=t[49]<<14|t[48]>>>18,t[0]=m^~v&g,t[1]=y^~b&w,t[10]=M^~S&C,t[11]=k^~I&T,t[20]=N^~j&D,t[21]=B^~L&F,t[30]=V^~$&W,t[31]=G^~Y&Z,t[40]=et^~nt&ot,t[41]=rt^~it&at,t[2]=v^~g&_,t[3]=b^~w&A,t[12]=S^~C&U,t[13]=I^~T&O,t[22]=j^~D&q,t[23]=L^~F&H,t[32]=$^~W&J,t[33]=Y^~Z&X,t[42]=nt^~ot&st,t[43]=it^~at&ut,t[4]=g^~_&E,t[5]=w^~A&x,t[14]=C^~U&P,t[15]=T^~O&R,t[24]=D^~q&z,t[25]=F^~H&K,t[34]=W^~J&Q,t[35]=Z^~X&tt,t[44]=ot^~st&ct,t[45]=at^~ut&ft,t[6]=_^~E&m,t[7]=A^~x&y,t[16]=U^~P&M,t[17]=O^~R&k,t[26]=q^~z&N,t[27]=H^~K&B,t[36]=J^~Q&V,t[37]=X^~tt&G,t[46]=st^~ct&et,t[47]=ut^~ft&rt,t[8]=E^~m&v,t[9]=x^~y&b,t[18]=P^~M&S,t[19]=R^~k&I,t[28]=z^~N&j,t[29]=K^~B&L,t[38]=Q^~V&$,t[39]=tt^~G&Y,t[48]=ct^~et&nt,t[49]=ft^~rt&it,t[0]^=o[n],t[1]^=o[n+1]},c=function(t){return function(e){var r;if("0x"===e.slice(0,2)){r=[];for(var n=2,i=e.length;nparseInt(t.slice(2*e+2,2*e+4),16),i=t=>{let e;e="undefined"!==typeof window&&window.crypto&&window.crypto.getRandomValues?window.crypto.getRandomValues(new Uint8Array(t)):r("1c46").randomBytes(t);let n="0x";for(let r=0;r(t.length-2)/2,a=t=>"0x"+t.reduce((t,e)=>t+e.slice(2),""),s=(t,e,r)=>"0x"+r.slice(2*t+2,2*e+2),u=t=>{let e="0x";for(let r=0,n=o(t);re.length===2*t+2?e:c(t,"0x0"+e.slice(2)),f=(t,e)=>e.length===2*t+2?e:f(t,e+"0"),h=t=>{let e=[];for(let r=2,n=t.length;r{let e="0x";for(let r=0,n=t.length;rnew Uint8Array(h(t)),p=t=>l([].slice.call(t,0)),m=t=>{let e=t.toString(16);return e.length%2===0?"0x"+e:"0x0"+e},y=t=>parseInt(t.slice(2),16),v=(t,e)=>t.concat(e.slice(2)),b=t=>"0x0"===t?"0x":t.length%2===0?t:"0x0"+t.slice(2),g=t=>"0"===t[2]?"0x"+t.slice(3):t,w=t=>{let e="0x";for(let r=0;r{let e="";for(let r=2;r{const e=t=>{const e=t.toString(16);return e.length<2?"0"+e:e};let r="0x";for(let n=0;n!=t.length;n++){let i=t.charCodeAt(n);if(i<128)r+=e(i);else{if(i<2048)r+=e(i>>6|192);else{if(i>55295&&i<56320){if(++n==t.length)return null;let o=t.charCodeAt(n);if(o<56320||o>57343)return null;i=65536+((1023&i)<<10)+(1023&o),r+=e(i>>18|240),r+=e(i>>12&63|128)}else r+=e(i>>12|224);r+=e(i>>6&63|128)}r+=e(63&i|128)}}return r},E=t=>{let e="",r=0,i=o(t);while(r127){if(o>191&&o<224){if(r>=i)return null;o=(31&o)<<6|63&n(t,r)}else if(o>223&&o<240){if(r+1>=i)return null;o=(15&o)<<12|(63&n(t,r))<<6|63&n(t,++r)}else{if(!(o>239&&o<248))return null;if(r+2>=i)return null;o=(7&o)<<18|(63&n(t,r))<<12|(63&n(t,++r))<<6|63&n(t,++r)}++r}if(o<=65535)e+=String.fromCharCode(o);else{if(!(o<=1114111))return null;o-=65536,e+=String.fromCharCode(o>>10|55296),e+=String.fromCharCode(1023&o|56320)}}return e};t.exports={random:i,length:o,concat:v,flatten:a,slice:s,reverse:u,pad:c,padRight:f,fromAscii:w,toAscii:_,fromString:A,toString:E,fromNumber:m,toNumber:y,fromNat:b,toNat:g,fromArray:l,toArray:h,fromUint8Array:p,toUint8Array:d}},"7c73":function(t,e,r){var n,i=r("825a"),o=r("37e8"),a=r("7839"),s=r("d012"),u=r("1be4"),c=r("cc12"),f=r("f772"),h=">",l="<",d="prototype",p="script",m=f("IE_PROTO"),y=function(){},v=function(t){return l+p+h+t+l+"/"+p+h},b=function(t){t.write(v("")),t.close();var e=t.parentWindow.Object;return t=null,e},g=function(){var t,e=c("iframe"),r="java"+p+":";return e.style.display="none",u.appendChild(e),e.src=String(r),t=e.contentWindow.document,t.open(),t.write(v("document.F=Object")),t.close(),t.F},w=function(){try{n=document.domain&&new ActiveXObject("htmlfile")}catch(e){}w=n?b(n):g();var t=a.length;while(t--)delete w[d][a[t]];return w()};s[m]=!0,t.exports=Object.create||function(t,e){var r;return null!==t?(y[d]=i(t),r=new y,y[d]=null,r[m]=t):r=w(),void 0===e?r:o(r,e)}},"7d2a":function(t,e,r){(function(e){var r=Math.pow(2,30)-1;function n(t,r){if("string"!==typeof t&&!e.isBuffer(t))throw new TypeError(r+" must be a buffer or string")}t.exports=function(t,e,i,o){if(n(t,"Password"),n(e,"Salt"),"number"!==typeof i)throw new TypeError("Iterations not a number");if(i<0)throw new TypeError("Bad iterations");if("number"!==typeof o)throw new TypeError("Key length not a number");if(o<0||o>r||o!==o)throw new TypeError("Bad key length")}}).call(this,r("b639").Buffer)},"7d72":function(t,e,r){"use strict";var n=r("8707").Buffer,i=n.isEncoding||function(t){switch(t=""+t,t&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function o(t){if(!t)return"utf8";var e;while(1)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}function a(t){var e=o(t);if("string"!==typeof e&&(n.isEncoding===i||!i(t)))throw new Error("Unknown encoding: "+t);return e||t}function s(t){var e;switch(this.encoding=a(t),this.encoding){case"utf16le":this.text=p,this.end=m,e=4;break;case"utf8":this.fillLast=h,e=4;break;case"base64":this.text=y,this.end=v,e=3;break;default:return this.write=b,void(this.end=g)}this.lastNeed=0,this.lastTotal=0,this.lastChar=n.allocUnsafe(e)}function u(t){return t<=127?0:t>>5===6?2:t>>4===14?3:t>>3===30?4:t>>6===2?-1:-2}function c(t,e,r){var n=e.length-1;if(n=0?(i>0&&(t.lastNeed=i-1),i):--n=0?(i>0&&(t.lastNeed=i-2),i):--n=0?(i>0&&(2===i?i=0:t.lastNeed=i-3),i):0))}function f(t,e,r){if(128!==(192&e[0]))return t.lastNeed=0,"�";if(t.lastNeed>1&&e.length>1){if(128!==(192&e[1]))return t.lastNeed=1,"�";if(t.lastNeed>2&&e.length>2&&128!==(192&e[2]))return t.lastNeed=2,"�"}}function h(t){var e=this.lastTotal-this.lastNeed,r=f(this,t,e);return void 0!==r?r:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function l(t,e){var r=c(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var n=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,n),t.toString("utf8",e,n)}function d(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+"�":e}function p(t,e){if((t.length-e)%2===0){var r=t.toString("utf16le",e);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function m(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function y(t,e){var r=(t.length-e)%3;return 0===r?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function v(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function b(t){return t.toString(this.encoding)}function g(t){return t&&t.length?this.write(t):""}e.StringDecoder=s,s.prototype.write=function(t){if(0===t.length)return"";var e,r;if(this.lastNeed){if(e=this.fillLast(t),void 0===e)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r>5,outputBlocks:t>>5,s:function(t){return[].concat(t,t,t,t,t)}([0,0,0,0,0,0,0,0,0,0])}},s=function(t,e){var o,a=e.length,s=t.blocks,c=t.blockCount<<2,f=t.blockCount,h=t.outputBlocks,l=t.s,d=0;while(d>2]|=e[d]<>2]|=o<>2]|=(192|o>>6)<>2]|=(128|63&o)<=57344?(s[y>>2]|=(224|o>>12)<>2]|=(128|o>>6&63)<>2]|=(128|63&o)<>2]|=(240|o>>18)<>2]|=(128|o>>12&63)<>2]|=(128|o>>6&63)<>2]|=(128|63&o)<=c){for(t.start=y-c,t.block=s[f],y=0;y>2]|=n[3&y],t.lastByteIndex===c)for(s[0]=s[f],y=1;y>4&15]+r[15&p]+r[p>>12&15]+r[p>>8&15]+r[p>>20&15]+r[p>>16&15]+r[p>>28&15]+r[p>>24&15];v%f===0&&(u(l),y=0)}return"0x"+m},u=function(t){var e,r,n,i,a,s,u,c,f,h,l,d,p,m,y,v,b,g,w,_,A,E,x,M,k,S,I,C,T,U,O,P,R,N,B,j,L,D,F,q,H,z,K,V,G,$,Y,W,Z,J,X,Q,tt,et,rt,nt,it,ot,at,st,ut,ct,ft;for(n=0;n<48;n+=2)i=t[0]^t[10]^t[20]^t[30]^t[40],a=t[1]^t[11]^t[21]^t[31]^t[41],s=t[2]^t[12]^t[22]^t[32]^t[42],u=t[3]^t[13]^t[23]^t[33]^t[43],c=t[4]^t[14]^t[24]^t[34]^t[44],f=t[5]^t[15]^t[25]^t[35]^t[45],h=t[6]^t[16]^t[26]^t[36]^t[46],l=t[7]^t[17]^t[27]^t[37]^t[47],d=t[8]^t[18]^t[28]^t[38]^t[48],p=t[9]^t[19]^t[29]^t[39]^t[49],e=d^(s<<1|u>>>31),r=p^(u<<1|s>>>31),t[0]^=e,t[1]^=r,t[10]^=e,t[11]^=r,t[20]^=e,t[21]^=r,t[30]^=e,t[31]^=r,t[40]^=e,t[41]^=r,e=i^(c<<1|f>>>31),r=a^(f<<1|c>>>31),t[2]^=e,t[3]^=r,t[12]^=e,t[13]^=r,t[22]^=e,t[23]^=r,t[32]^=e,t[33]^=r,t[42]^=e,t[43]^=r,e=s^(h<<1|l>>>31),r=u^(l<<1|h>>>31),t[4]^=e,t[5]^=r,t[14]^=e,t[15]^=r,t[24]^=e,t[25]^=r,t[34]^=e,t[35]^=r,t[44]^=e,t[45]^=r,e=c^(d<<1|p>>>31),r=f^(p<<1|d>>>31),t[6]^=e,t[7]^=r,t[16]^=e,t[17]^=r,t[26]^=e,t[27]^=r,t[36]^=e,t[37]^=r,t[46]^=e,t[47]^=r,e=h^(i<<1|a>>>31),r=l^(a<<1|i>>>31),t[8]^=e,t[9]^=r,t[18]^=e,t[19]^=r,t[28]^=e,t[29]^=r,t[38]^=e,t[39]^=r,t[48]^=e,t[49]^=r,m=t[0],y=t[1],$=t[11]<<4|t[10]>>>28,Y=t[10]<<4|t[11]>>>28,C=t[20]<<3|t[21]>>>29,T=t[21]<<3|t[20]>>>29,st=t[31]<<9|t[30]>>>23,ut=t[30]<<9|t[31]>>>23,z=t[40]<<18|t[41]>>>14,K=t[41]<<18|t[40]>>>14,N=t[2]<<1|t[3]>>>31,B=t[3]<<1|t[2]>>>31,v=t[13]<<12|t[12]>>>20,b=t[12]<<12|t[13]>>>20,W=t[22]<<10|t[23]>>>22,Z=t[23]<<10|t[22]>>>22,U=t[33]<<13|t[32]>>>19,O=t[32]<<13|t[33]>>>19,ct=t[42]<<2|t[43]>>>30,ft=t[43]<<2|t[42]>>>30,et=t[5]<<30|t[4]>>>2,rt=t[4]<<30|t[5]>>>2,j=t[14]<<6|t[15]>>>26,L=t[15]<<6|t[14]>>>26,g=t[25]<<11|t[24]>>>21,w=t[24]<<11|t[25]>>>21,J=t[34]<<15|t[35]>>>17,X=t[35]<<15|t[34]>>>17,P=t[45]<<29|t[44]>>>3,R=t[44]<<29|t[45]>>>3,M=t[6]<<28|t[7]>>>4,k=t[7]<<28|t[6]>>>4,nt=t[17]<<23|t[16]>>>9,it=t[16]<<23|t[17]>>>9,D=t[26]<<25|t[27]>>>7,F=t[27]<<25|t[26]>>>7,_=t[36]<<21|t[37]>>>11,A=t[37]<<21|t[36]>>>11,Q=t[47]<<24|t[46]>>>8,tt=t[46]<<24|t[47]>>>8,V=t[8]<<27|t[9]>>>5,G=t[9]<<27|t[8]>>>5,S=t[18]<<20|t[19]>>>12,I=t[19]<<20|t[18]>>>12,ot=t[29]<<7|t[28]>>>25,at=t[28]<<7|t[29]>>>25,q=t[38]<<8|t[39]>>>24,H=t[39]<<8|t[38]>>>24,E=t[48]<<14|t[49]>>>18,x=t[49]<<14|t[48]>>>18,t[0]=m^~v&g,t[1]=y^~b&w,t[10]=M^~S&C,t[11]=k^~I&T,t[20]=N^~j&D,t[21]=B^~L&F,t[30]=V^~$&W,t[31]=G^~Y&Z,t[40]=et^~nt&ot,t[41]=rt^~it&at,t[2]=v^~g&_,t[3]=b^~w&A,t[12]=S^~C&U,t[13]=I^~T&O,t[22]=j^~D&q,t[23]=L^~F&H,t[32]=$^~W&J,t[33]=Y^~Z&X,t[42]=nt^~ot&st,t[43]=it^~at&ut,t[4]=g^~_&E,t[5]=w^~A&x,t[14]=C^~U&P,t[15]=T^~O&R,t[24]=D^~q&z,t[25]=F^~H&K,t[34]=W^~J&Q,t[35]=Z^~X&tt,t[44]=ot^~st&ct,t[45]=at^~ut&ft,t[6]=_^~E&m,t[7]=A^~x&y,t[16]=U^~P&M,t[17]=O^~R&k,t[26]=q^~z&N,t[27]=H^~K&B,t[36]=J^~Q&V,t[37]=X^~tt&G,t[46]=st^~ct&et,t[47]=ut^~ft&rt,t[8]=E^~m&v,t[9]=x^~y&b,t[18]=P^~M&S,t[19]=R^~k&I,t[28]=z^~N&j,t[29]=K^~B&L,t[38]=Q^~V&$,t[39]=tt^~G&Y,t[48]=ct^~et&nt,t[49]=ft^~rt&it,t[0]^=o[n],t[1]^=o[n+1]},c=function(t){return function(e){var r;if("0x"===e.slice(0,2)){r=[];for(var n=2,i=e.length;n>>31}function f(t){return t<<5|t>>>27}function h(t){return t<<30|t>>>2}function l(t,e,r,n){return 0===t?e&r|~e&n:2===t?e&r|e&n|r&n:e^r^n}n(u,i),u.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},u.prototype._update=function(t){for(var e=this._w,r=0|this._a,n=0|this._b,i=0|this._c,o=0|this._d,s=0|this._e,u=0;u<16;++u)e[u]=t.readInt32BE(4*u);for(;u<80;++u)e[u]=c(e[u-3]^e[u-8]^e[u-14]^e[u-16]);for(var d=0;d<80;++d){var p=~~(d/20),m=f(r)+l(p,n,i,o)+s+e[d]+a[p]|0;s=o,o=i,i=h(n),n=r,r=m}this._a=r+this._a|0,this._b=n+this._b|0,this._c=i+this._c|0,this._d=o+this._d|0,this._e=s+this._e|0},u.prototype._hash=function(){var t=o.allocUnsafe(20);return t.writeInt32BE(0|this._a,0),t.writeInt32BE(0|this._b,4),t.writeInt32BE(0|this._c,8),t.writeInt32BE(0|this._d,12),t.writeInt32BE(0|this._e,16),t},t.exports=u},"7f7a":function(t,e,r){var n=e;n.bignum=r("399f"),n.define=r("ef3a").define,n.base=r("41df"),n.constants=r("0211"),n.decoders=r("20f6"),n.encoders=r("343e")},"7f9a":function(t,e,r){var n=r("da84"),i=r("8925"),o=n.WeakMap;t.exports="function"===typeof o&&/native code/.test(i(o))},8035:function(t){t.exports=JSON.parse('{"name":"muirGlacier","comment":"HF to delay the difficulty bomb","eip":{"url":"https://eips.ethereum.org/EIPS/eip-2384","status":"Last Call"},"gasConfig":{},"gasPrices":{},"vm":{},"pow":{},"casper":{},"sharding":{}}')},8148:function(t,e,r){var n=r("39d4").errors,i=r("8602").XMLHttpRequest,o=r("9490"),a=r("24f8"),s=function(t,e){e=e||{},this.withCredentials=e.withCredentials||!1,this.timeout=e.timeout||0,this.headers=e.headers,this.agent=e.agent,this.connected=!1;var r=!0===e.keepAlive||!1!==e.keepAlive;this.host=t||"http://localhost:8545",this.agent||("https"===this.host.substring(0,5)?this.httpsAgent=new a.Agent({keepAlive:r}):this.httpAgent=new o.Agent({keepAlive:r}))};s.prototype._prepareRequest=function(){var t;if("undefined"!==typeof XMLHttpRequest)t=new XMLHttpRequest;else{t=new i;var e={httpsAgent:this.httpsAgent,httpAgent:this.httpAgent,baseUrl:this.baseUrl};this.agent&&(e.httpsAgent=this.agent.https,e.httpAgent=this.agent.http,e.baseUrl=this.agent.baseUrl),t.nodejsSet(e)}return t.open("POST",this.host,!0),t.setRequestHeader("Content-Type","application/json"),t.timeout=this.timeout,t.withCredentials=this.withCredentials,this.headers&&this.headers.forEach((function(e){t.setRequestHeader(e.name,e.value)})),t},s.prototype.send=function(t,e){var r=this,i=this._prepareRequest();i.onreadystatechange=function(){if(4===i.readyState&&1!==i.timeout){var t=i.responseText,o=null;try{t=JSON.parse(t)}catch(a){o=n.InvalidResponse(i.responseText)}r.connected=!0,e(o,t)}},i.ontimeout=function(){r.connected=!1,e(n.ConnectionTimeout(this.timeout))};try{i.send(JSON.stringify(t))}catch(o){this.connected=!1,e(n.InvalidConnection(this.host))}},s.prototype.disconnect=function(){},s.prototype.supportsSubscriptions=function(){return!1},t.exports=s},"825a":function(t,e,r){var n=r("861d");t.exports=function(t){if(!n(t))throw TypeError(String(t)+" is not an object");return t}},"82f0":function(t,e,r){var n=r("39f5"),i=r("8707").Buffer,o=r("6430"),a=r("3fb5"),s=r("3f62"),u=r("8c8a"),c=r("bd9d");function f(t,e){var r=0;t.length!==e.length&&r++;for(var n=Math.min(t.length,e.length),i=0;i15){var t=this.cache.slice(0,16);return this.cache=this.cache.slice(16),t}return null},d.prototype.flush=function(){var t=16-this.cache.length,e=o.allocUnsafe(t),r=-1;while(++r=r)throw RangeError(n)}}).call(this,r("b639").Buffer)},"8b71":function(t,e,r){var n=r("0211");e.tagClass={0:"universal",1:"application",2:"context",3:"private"},e.tagClassByName=n._reverse(e.tagClass),e.tag={0:"end",1:"bool",2:"int",3:"bitstr",4:"octstr",5:"null_",6:"objid",7:"objDesc",8:"external",9:"real",10:"enum",11:"embed",12:"utf8str",13:"relativeOid",16:"seq",17:"set",18:"numstr",19:"printstr",20:"t61str",21:"videostr",22:"ia5str",23:"utctime",24:"gentime",25:"graphstr",26:"iso646str",27:"genstr",28:"unistr",29:"charstr",30:"bmpstr"},e.tagByName=n._reverse(e.tag)},"8b95":function(t,e,r){"use strict";var n=r("c3c0"),i=r("b525");function o(){if(!(this instanceof o))return new o;i.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}n.inherits(o,i),t.exports=o,o.blockSize=1024,o.outSize=384,o.hmacStrength=192,o.padLength=128,o.prototype._digest=function(t){return"hex"===t?n.toHex32(this.h.slice(0,12),"big"):n.split32(this.h.slice(0,12),"big")}},"8c05":function(t,e){t.exports={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",208:"Already Reported",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",307:"Temporary Redirect",308:"Permanent Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Payload Too Large",414:"URI Too Long",415:"Unsupported Media Type",416:"Range Not Satisfiable",417:"Expectation Failed",418:"I'm a teapot",421:"Misdirected Request",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",425:"Unordered Collection",426:"Upgrade Required",428:"Precondition Required",429:"Too Many Requests",431:"Request Header Fields Too Large",451:"Unavailable For Legal Reasons",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",508:"Loop Detected",509:"Bandwidth Limit Exceeded",510:"Not Extended",511:"Network Authentication Required"}},"8c4f":function(t,e,r){"use strict"; +/*! + * vue-router v3.1.5 + * (c) 2020 Evan You + * @license MIT + */function n(t,e){0}function i(t){return Object.prototype.toString.call(t).indexOf("Error")>-1}function o(t,e){return e instanceof t||e&&(e.name===t.name||e._name===t._name)}function a(t,e){for(var r in e)t[r]=e[r];return t}var s={name:"RouterView",functional:!0,props:{name:{type:String,default:"default"}},render:function(t,e){var r=e.props,n=e.children,i=e.parent,o=e.data;o.routerView=!0;var s=i.$createElement,c=r.name,f=i.$route,h=i._routerViewCache||(i._routerViewCache={}),l=0,d=!1;while(i&&i._routerRoot!==i){var p=i.$vnode?i.$vnode.data:{};p.routerView&&l++,p.keepAlive&&i._directInactive&&i._inactive&&(d=!0),i=i.$parent}if(o.routerViewDepth=l,d){var m=h[c],y=m&&m.component;return y?(m.configProps&&u(y,o,m.route,m.configProps),s(y,o,n)):s()}var v=f.matched[l],b=v&&v.components[c];if(!v||!b)return h[c]=null,s();h[c]={component:b},o.registerRouteInstance=function(t,e){var r=v.instances[c];(e&&r!==t||!e&&r===t)&&(v.instances[c]=e)},(o.hook||(o.hook={})).prepatch=function(t,e){v.instances[c]=e.componentInstance},o.hook.init=function(t){t.data.keepAlive&&t.componentInstance&&t.componentInstance!==v.instances[c]&&(v.instances[c]=t.componentInstance)};var g=v.props&&v.props[c];return g&&(a(h[c],{route:f,configProps:g}),u(b,o,f,g)),s(b,o,n)}};function u(t,e,r,n){var i=e.props=c(r,n);if(i){i=e.props=a({},i);var o=e.attrs=e.attrs||{};for(var s in i)t.props&&s in t.props||(o[s]=i[s],delete i[s])}}function c(t,e){switch(typeof e){case"undefined":return;case"object":return e;case"function":return e(t);case"boolean":return e?t.params:void 0;default:0}}var f=/[!'()*]/g,h=function(t){return"%"+t.charCodeAt(0).toString(16)},l=/%2C/g,d=function(t){return encodeURIComponent(t).replace(f,h).replace(l,",")},p=decodeURIComponent;function m(t,e,r){void 0===e&&(e={});var n,i=r||y;try{n=i(t||"")}catch(a){n={}}for(var o in e)n[o]=e[o];return n}function y(t){var e={};return t=t.trim().replace(/^(\?|#|&)/,""),t?(t.split("&").forEach((function(t){var r=t.replace(/\+/g," ").split("="),n=p(r.shift()),i=r.length>0?p(r.join("=")):null;void 0===e[n]?e[n]=i:Array.isArray(e[n])?e[n].push(i):e[n]=[e[n],i]})),e):e}function v(t){var e=t?Object.keys(t).map((function(e){var r=t[e];if(void 0===r)return"";if(null===r)return d(e);if(Array.isArray(r)){var n=[];return r.forEach((function(t){void 0!==t&&(null===t?n.push(d(e)):n.push(d(e)+"="+d(t)))})),n.join("&")}return d(e)+"="+d(r)})).filter((function(t){return t.length>0})).join("&"):null;return e?"?"+e:""}var b=/\/?$/;function g(t,e,r,n){var i=n&&n.options.stringifyQuery,o=e.query||{};try{o=w(o)}catch(s){}var a={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:o,params:e.params||{},fullPath:E(e,i),matched:t?A(t):[]};return r&&(a.redirectedFrom=E(r,i)),Object.freeze(a)}function w(t){if(Array.isArray(t))return t.map(w);if(t&&"object"===typeof t){var e={};for(var r in t)e[r]=w(t[r]);return e}return t}var _=g(null,{path:"/"});function A(t){var e=[];while(t)e.unshift(t),t=t.parent;return e}function E(t,e){var r=t.path,n=t.query;void 0===n&&(n={});var i=t.hash;void 0===i&&(i="");var o=e||v;return(r||"/")+o(n)+i}function x(t,e){return e===_?t===e:!!e&&(t.path&&e.path?t.path.replace(b,"")===e.path.replace(b,"")&&t.hash===e.hash&&M(t.query,e.query):!(!t.name||!e.name)&&(t.name===e.name&&t.hash===e.hash&&M(t.query,e.query)&&M(t.params,e.params)))}function M(t,e){if(void 0===t&&(t={}),void 0===e&&(e={}),!t||!e)return t===e;var r=Object.keys(t),n=Object.keys(e);return r.length===n.length&&r.every((function(r){var n=t[r],i=e[r];return"object"===typeof n&&"object"===typeof i?M(n,i):String(n)===String(i)}))}function k(t,e){return 0===t.path.replace(b,"/").indexOf(e.path.replace(b,"/"))&&(!e.hash||t.hash===e.hash)&&S(t.query,e.query)}function S(t,e){for(var r in e)if(!(r in t))return!1;return!0}function I(t,e,r){var n=t.charAt(0);if("/"===n)return t;if("?"===n||"#"===n)return e+t;var i=e.split("/");r&&i[i.length-1]||i.pop();for(var o=t.replace(/^\//,"").split("/"),a=0;a=0&&(e=t.slice(n),t=t.slice(0,n));var i=t.indexOf("?");return i>=0&&(r=t.slice(i+1),t=t.slice(0,i)),{path:t,query:r,hash:e}}function T(t){return t.replace(/\/\//g,"/")}var U=Array.isArray||function(t){return"[object Array]"==Object.prototype.toString.call(t)},O=J,P=L,R=D,N=H,B=Z,j=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function L(t,e){var r,n=[],i=0,o=0,a="",s=e&&e.delimiter||"/";while(null!=(r=j.exec(t))){var u=r[0],c=r[1],f=r.index;if(a+=t.slice(o,f),o=f+u.length,c)a+=c[1];else{var h=t[o],l=r[2],d=r[3],p=r[4],m=r[5],y=r[6],v=r[7];a&&(n.push(a),a="");var b=null!=l&&null!=h&&h!==l,g="+"===y||"*"===y,w="?"===y||"*"===y,_=r[2]||s,A=p||m;n.push({name:d||i++,prefix:l||"",delimiter:_,optional:w,repeat:g,partial:b,asterisk:!!v,pattern:A?K(A):v?".*":"[^"+z(_)+"]+?"})}}return o1||!_.length)return 0===_.length?t():t("span",{},_)}if("a"===this.tag)w.on=b,w.attrs={href:u};else{var A=st(this.$slots.default);if(A){A.isStatic=!1;var E=A.data=a({},A.data);for(var M in E.on=E.on||{},E.on){var S=E.on[M];M in b&&(E.on[M]=Array.isArray(S)?S:[S])}for(var I in b)I in E.on?E.on[I].push(b[I]):E.on[I]=v;var C=A.data.attrs=a({},A.data.attrs);C.href=u}else w.on=b}return t(this.tag,w,this.$slots.default)}};function at(t){if(!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)&&!t.defaultPrevented&&(void 0===t.button||0===t.button)){if(t.currentTarget&&t.currentTarget.getAttribute){var e=t.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(e))return}return t.preventDefault&&t.preventDefault(),!0}}function st(t){if(t)for(var e,r=0;r-1&&(s.params[l]=r.params[l]);return s.path=Q(c.path,s.params,'named route "'+u+'"'),f(c,s,a)}if(s.path){s.params={};for(var d=0;d=t.length?r():t[i]?e(t[i],(function(){n(i+1)})):n(i+1)};n(0)}function Lt(t){return function(e,r,n){var o=!1,a=0,s=null;Dt(t,(function(t,e,r,u){if("function"===typeof t&&void 0===t.cid){o=!0,a++;var c,f=zt((function(e){Ht(e)&&(e=e.default),t.resolved="function"===typeof e?e:et.extend(e),r.components[u]=e,a--,a<=0&&n()})),h=zt((function(t){var e="Failed to resolve async component "+u+": "+t;s||(s=i(t)?t:new Error(e),n(s))}));try{c=t(f,h)}catch(d){h(d)}if(c)if("function"===typeof c.then)c.then(f,h);else{var l=c.component;l&&"function"===typeof l.then&&l.then(f,h)}}})),o||n()}}function Dt(t,e){return Ft(t.map((function(t){return Object.keys(t.components).map((function(r){return e(t.components[r],t.instances[r],t,r)}))})))}function Ft(t){return Array.prototype.concat.apply([],t)}var qt="function"===typeof Symbol&&"symbol"===typeof Symbol.toStringTag;function Ht(t){return t.__esModule||qt&&"Module"===t[Symbol.toStringTag]}function zt(t){var e=!1;return function(){var r=[],n=arguments.length;while(n--)r[n]=arguments[n];if(!e)return e=!0,t.apply(this,r)}}var Kt=function(t){function e(e){t.call(this),this.name=this._name="NavigationDuplicated",this.message='Navigating to current location ("'+e.fullPath+'") is not allowed',Object.defineProperty(this,"stack",{value:(new t).stack,writable:!0,configurable:!0})}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Error);Kt._name="NavigationDuplicated";var Vt=function(t,e){this.router=t,this.base=Gt(e),this.current=_,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[]};function Gt(t){if(!t)if(ct){var e=document.querySelector("base");t=e&&e.getAttribute("href")||"/",t=t.replace(/^https?:\/\/[^\/]+/,"")}else t="/";return"/"!==t.charAt(0)&&(t="/"+t),t.replace(/\/$/,"")}function $t(t,e){var r,n=Math.max(t.length,e.length);for(r=0;r-1?decodeURI(t.slice(0,n))+t.slice(n):decodeURI(t)}else t=decodeURI(t.slice(0,r))+t.slice(r);return t}function ue(t){var e=window.location.href,r=e.indexOf("#"),n=r>=0?e.slice(0,r):e;return n+"#"+t}function ce(t){Rt?Nt(ue(t)):window.location.hash=t}function fe(t){Rt?Bt(ue(t)):window.location.replace(ue(t))}var he=function(t){function e(e,r){t.call(this,e,r),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,r){var n=this;this.transitionTo(t,(function(t){n.stack=n.stack.slice(0,n.index+1).concat(t),n.index++,e&&e(t)}),r)},e.prototype.replace=function(t,e,r){var n=this;this.transitionTo(t,(function(t){n.stack=n.stack.slice(0,n.index).concat(t),e&&e(t)}),r)},e.prototype.go=function(t){var e=this,r=this.index+t;if(!(r<0||r>=this.stack.length)){var n=this.stack[r];this.confirmTransition(n,(function(){e.index=r,e.updateRoute(n)}),(function(t){o(Kt,t)&&(e.index=r)}))}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(Vt),le=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=pt(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!Rt&&!1!==t.fallback,this.fallback&&(e="hash"),ct||(e="abstract"),this.mode=e,e){case"history":this.history=new re(this,t.base);break;case"hash":this.history=new ie(this,t.base,this.fallback);break;case"abstract":this.history=new he(this,t.base);break;default:0}},de={currentRoute:{configurable:!0}};function pe(t,e){return t.push(e),function(){var r=t.indexOf(e);r>-1&&t.splice(r,1)}}function me(t,e,r){var n="hash"===r?"#"+e:e;return t?T(t+"/"+n):n}le.prototype.match=function(t,e,r){return this.matcher.match(t,e,r)},de.currentRoute.get=function(){return this.history&&this.history.current},le.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",(function(){var r=e.apps.indexOf(t);r>-1&&e.apps.splice(r,1),e.app===t&&(e.app=e.apps[0]||null)})),!this.app){this.app=t;var r=this.history;if(r instanceof re)r.transitionTo(r.getCurrentLocation());else if(r instanceof ie){var n=function(){r.setupListeners()};r.transitionTo(r.getCurrentLocation(),n,n)}r.listen((function(t){e.apps.forEach((function(e){e._route=t}))}))}},le.prototype.beforeEach=function(t){return pe(this.beforeHooks,t)},le.prototype.beforeResolve=function(t){return pe(this.resolveHooks,t)},le.prototype.afterEach=function(t){return pe(this.afterHooks,t)},le.prototype.onReady=function(t,e){this.history.onReady(t,e)},le.prototype.onError=function(t){this.history.onError(t)},le.prototype.push=function(t,e,r){var n=this;if(!e&&!r&&"undefined"!==typeof Promise)return new Promise((function(e,r){n.history.push(t,e,r)}));this.history.push(t,e,r)},le.prototype.replace=function(t,e,r){var n=this;if(!e&&!r&&"undefined"!==typeof Promise)return new Promise((function(e,r){n.history.replace(t,e,r)}));this.history.replace(t,e,r)},le.prototype.go=function(t){this.history.go(t)},le.prototype.back=function(){this.go(-1)},le.prototype.forward=function(){this.go(1)},le.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map((function(t){return Object.keys(t.components).map((function(e){return t.components[e]}))}))):[]},le.prototype.resolve=function(t,e,r){e=e||this.history.current;var n=tt(t,e,r,this),i=this.match(n,e),o=i.redirectedFrom||i.fullPath,a=this.history.base,s=me(a,o,this.mode);return{location:n,route:i,href:s,normalizedTo:n,resolved:i}},le.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==_&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(le.prototype,de),le.install=ut,le.version="3.1.5",ct&&window.Vue&&window.Vue.use(le),e["a"]=le},"8c8a":function(t,e,r){(function(e){t.exports=function(t,r){for(var n=Math.min(t.length,r.length),i=new e(n),o=0;o 0 and a power of 2");if(o>i/128/a)throw Error("Parameter N is too large");if(a>i/128/s)throw Error("Parameter r is too large");let f,h=e.alloc(256*a),l=e.alloc(128*a*o),d=new Int32Array(16),p=new Int32Array(16),m=e.alloc(64),y=n.pbkdf2Sync(t,r,1,128*s*a,"sha256");if(c){let t=s*o*2,e=0;f=function(){++e,e%1e3===0&&c({current:e,total:t,percent:e/t*100})}}return{XY:h,V:l,B32:d,x:p,_X:m,B:y,tickCallback:f}}async function s(t,e,r,n,i,a,s,u,f,h,d){d=d||o;let p,m=0,y=128*r;for(t.copy(a,m,e,e+y),p=0;psetImmediate(t)),c(a,m,y,r,s,u,f),h&&h();for(p=0;psetImmediate(t)),c(a,m,y,r,s,u,f),h&&h()}a.copy(t,e,m,m+y)}function u(t,e,r,n,i,o,a,s,u,f){let h,d=0,p=128*r;for(t.copy(o,d,e,e+p),h=0;h>>32-e}function h(t,e,r){let n;for(n=0;n<16;n++)e[n]=(255&t[4*n+0])<<0,e[n]|=(255&t[4*n+1])<<8,e[n]|=(255&t[4*n+2])<<16,e[n]|=(255&t[4*n+3])<<24;for(d(e,0,r,0,16),n=8;n>0;n-=2)r[4]^=f(r[0]+r[12],7),r[8]^=f(r[4]+r[0],9),r[12]^=f(r[8]+r[4],13),r[0]^=f(r[12]+r[8],18),r[9]^=f(r[5]+r[1],7),r[13]^=f(r[9]+r[5],9),r[1]^=f(r[13]+r[9],13),r[5]^=f(r[1]+r[13],18),r[14]^=f(r[10]+r[6],7),r[2]^=f(r[14]+r[10],9),r[6]^=f(r[2]+r[14],13),r[10]^=f(r[6]+r[2],18),r[3]^=f(r[15]+r[11],7),r[7]^=f(r[3]+r[15],9),r[11]^=f(r[7]+r[3],13),r[15]^=f(r[11]+r[7],18),r[1]^=f(r[0]+r[3],7),r[2]^=f(r[1]+r[0],9),r[3]^=f(r[2]+r[1],13),r[0]^=f(r[3]+r[2],18),r[6]^=f(r[5]+r[4],7),r[7]^=f(r[6]+r[5],9),r[4]^=f(r[7]+r[6],13),r[5]^=f(r[4]+r[7],18),r[11]^=f(r[10]+r[9],7),r[8]^=f(r[11]+r[10],9),r[9]^=f(r[8]+r[11],13),r[10]^=f(r[9]+r[8],18),r[12]^=f(r[15]+r[14],7),r[13]^=f(r[12]+r[15],9),r[14]^=f(r[13]+r[12],13),r[15]^=f(r[14]+r[13],18);for(n=0;n<16;++n)e[n]=r[n]+e[n];for(n=0;n<16;n++){let r=4*n;t[r+0]=e[n]>>0&255,t[r+1]=e[n]>>8&255,t[r+2]=e[n]>>16&255,t[r+3]=e[n]>>24&255}}function l(t,e,r,n,i){for(let o=0;o>1,f=-7,h=r?i-1:0,l=r?-1:1,d=t[e+h];for(h+=l,o=d&(1<<-f)-1,d>>=-f,f+=s;f>0;o=256*o+t[e+h],h+=l,f-=8);for(a=o&(1<<-f)-1,o>>=-f,f+=n;f>0;a=256*a+t[e+h],h+=l,f-=8);if(0===o)o=1-c;else{if(o===u)return a?NaN:1/0*(d?-1:1);a+=Math.pow(2,n),o-=c}return(d?-1:1)*a*Math.pow(2,o-n)},e.write=function(t,e,r,n,i,o){var a,s,u,c=8*o-i-1,f=(1<>1,l=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=n?0:o-1,p=n?1:-1,m=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,a=f):(a=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-a))<1&&(a--,u*=2),e+=a+h>=1?l/u:l*Math.pow(2,1-h),e*u>=2&&(a++,u/=2),a+h>=f?(s=0,a=f):a+h>=1?(s=(e*u-1)*Math.pow(2,i),a+=h):(s=e*Math.pow(2,h-1)*Math.pow(2,i),a=0));i>=8;t[r+d]=255&s,d+=p,s/=256,i-=8);for(a=a<0;t[r+d]=255&a,d+=p,a/=256,c-=8);t[r+d-p]|=128*m}},"91b1":function(t){t.exports=JSON.parse('{"name":"tangerineWhistle","comment":"Hardfork with gas cost changes for IO-heavy operations","eip":{"url":"https://eips.ethereum.org/EIPS/eip-608","status":"Final"},"gasConfig":{},"gasPrices":{"sload":{"v":200,"d":"Once per SLOAD operation"},"call":{"v":700,"d":"Once per CALL operation & message call transaction"}},"vm":{},"pow":{},"casper":{},"sharding":{}}')},"91dd":function(t,e,r){"use strict";function n(t,e){return Object.prototype.hasOwnProperty.call(t,e)}t.exports=function(t,e,r,o){e=e||"&",r=r||"=";var a={};if("string"!==typeof t||0===t.length)return a;var s=/\+/g;t=t.split(e);var u=1e3;o&&"number"===typeof o.maxKeys&&(u=o.maxKeys);var c=t.length;u>0&&c>u&&(c=u);for(var f=0;f=0?(h=m.substr(0,y),l=m.substr(y+1)):(h=m,l=""),d=decodeURIComponent(h),p=decodeURIComponent(l),n(a,d)?i(a[d])?a[d].push(p):a[d]=[a[d],p]:a[d]=p}return a};var i=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)}},"925e":function(t,e,r){(function(e,n,i){var o=r("a9f1"),a=r("3fb5"),s=r("c90b"),u=r("e372"),c=r("d938"),f=s.IncomingMessage,h=s.readyStates;function l(t,e){return o.fetch&&e?"fetch":o.mozchunkedarraybuffer?"moz-chunked-arraybuffer":o.msstream?"ms-stream":o.arraybuffer&&t?"arraybuffer":o.vbArray&&t?"text:vbarray":"text"}var d=t.exports=function(t){var r,n=this;u.Writable.call(n),n._opts=t,n._body=[],n._headers={},t.auth&&n.setHeader("Authorization","Basic "+new e(t.auth).toString("base64")),Object.keys(t.headers).forEach((function(e){n.setHeader(e,t.headers[e])}));var i=!0;if("disable-fetch"===t.mode||"requestTimeout"in t&&!o.abortController)i=!1,r=!0;else if("prefer-streaming"===t.mode)r=!1;else if("allow-wrong-content-type"===t.mode)r=!o.overrideMimeType;else{if(t.mode&&"default"!==t.mode&&"prefer-fast"!==t.mode)throw new Error("Invalid value for opts.mode");r=!0}n._mode=l(r,i),n._fetchTimer=null,n.on("finish",(function(){n._onFinish()}))};function p(t){try{var e=t.status;return null!==e&&0!==e}catch(r){return!1}}a(d,u.Writable),d.prototype.setHeader=function(t,e){var r=this,n=t.toLowerCase();-1===m.indexOf(n)&&(r._headers[n]={name:t,value:e})},d.prototype.getHeader=function(t){var e=this._headers[t.toLowerCase()];return e?e.value:null},d.prototype.removeHeader=function(t){var e=this;delete e._headers[t.toLowerCase()]},d.prototype._onFinish=function(){var t=this;if(!t._destroyed){var r=t._opts,a=t._headers,s=null;"GET"!==r.method&&"HEAD"!==r.method&&(s=o.arraybuffer?c(e.concat(t._body)):o.blobConstructor?new n.Blob(t._body.map((function(t){return c(t)})),{type:(a["content-type"]||{}).value||""}):e.concat(t._body).toString());var u=[];if(Object.keys(a).forEach((function(t){var e=a[t].name,r=a[t].value;Array.isArray(r)?r.forEach((function(t){u.push([e,t])})):u.push([e,r])})),"fetch"===t._mode){var f=null;if(o.abortController){var l=new AbortController;f=l.signal,t._fetchAbortController=l,"requestTimeout"in r&&0!==r.requestTimeout&&(t._fetchTimer=n.setTimeout((function(){t.emit("requestTimeout"),t._fetchAbortController&&t._fetchAbortController.abort()}),r.requestTimeout))}n.fetch(t._opts.url,{method:t._opts.method,headers:u,body:s||void 0,mode:"cors",credentials:r.withCredentials?"include":"same-origin",signal:f}).then((function(e){t._fetchResponse=e,t._connect()}),(function(e){n.clearTimeout(t._fetchTimer),t._destroyed||t.emit("error",e)}))}else{var d=t._xhr=new n.XMLHttpRequest;try{d.open(t._opts.method,t._opts.url,!0)}catch(p){return void i.nextTick((function(){t.emit("error",p)}))}"responseType"in d&&(d.responseType=t._mode.split(":")[0]),"withCredentials"in d&&(d.withCredentials=!!r.withCredentials),"text"===t._mode&&"overrideMimeType"in d&&d.overrideMimeType("text/plain; charset=x-user-defined"),"requestTimeout"in r&&(d.timeout=r.requestTimeout,d.ontimeout=function(){t.emit("requestTimeout")}),u.forEach((function(t){d.setRequestHeader(t[0],t[1])})),t._response=null,d.onreadystatechange=function(){switch(d.readyState){case h.LOADING:case h.DONE:t._onXHRProgress();break}},"moz-chunked-arraybuffer"===t._mode&&(d.onprogress=function(){t._onXHRProgress()}),d.onerror=function(){t._destroyed||t.emit("error",new Error("XHR error"))};try{d.send(s)}catch(p){return void i.nextTick((function(){t.emit("error",p)}))}}}},d.prototype._onXHRProgress=function(){var t=this;p(t._xhr)&&!t._destroyed&&(t._response||t._connect(),t._response._onXHRProgress())},d.prototype._connect=function(){var t=this;t._destroyed||(t._response=new f(t._xhr,t._fetchResponse,t._mode,t._fetchTimer),t._response.on("error",(function(e){t.emit("error",e)})),t.emit("response",t._response))},d.prototype._write=function(t,e,r){var n=this;n._body.push(t),r()},d.prototype.abort=d.prototype.destroy=function(){var t=this;t._destroyed=!0,n.clearTimeout(t._fetchTimer),t._response&&(t._response._destroyed=!0),t._xhr?t._xhr.abort():t._fetchAbortController&&t._fetchAbortController.abort()},d.prototype.end=function(t,e,r){var n=this;"function"===typeof t&&(r=t,t=void 0),u.Writable.prototype.end.call(n,t,e,r)},d.prototype.flushHeaders=function(){},d.prototype.setTimeout=function(){},d.prototype.setNoDelay=function(){},d.prototype.setSocketKeepAlive=function(){};var m=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","date","dnt","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","via"]}).call(this,r("b639").Buffer,r("c8ba"),r("4362"))},"929f":function(t){t.exports=JSON.parse('{"name":"kovan","chainId":42,"networkId":42,"comment":"Parity PoA test network","url":"https://kovan-testnet.github.io/website/","genesis":{"hash":"0xa3c565fc15c7478862d50ccd6561e3c06b24cc509bf388941c25ea985ce32cb9","timestamp":null,"gasLimit":6000000,"difficulty":131072,"nonce":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","extraData":"0x","stateRoot":"0x2480155b48a1cea17d67dbfdfaafe821c1d19cdd478c5358e8ec56dec24502b2"},"hardforks":[{"name":"chainstart","block":0,"consensus":"poa","finality":null},{"name":"homestead","block":0,"consensus":"poa","finality":null},{"name":"dao","block":0,"consensus":"poa","finality":null},{"name":"tangerineWhistle","block":0,"consensus":"poa","finality":null},{"name":"spuriousDragon","block":0,"consensus":"poa","finality":null},{"name":"byzantium","block":5067000,"consensus":"poa","finality":null},{"name":"constantinople","block":9200000,"consensus":"poa","finality":null},{"name":"petersburg","block":10255201,"consensus":"poa","finality":null},{"name":"istanbul","block":14111141,"consensus":"poa","finality":null}],"bootstrapNodes":[{"ip":"40.71.221.215","port":30303,"id":"56abaf065581a5985b8c5f4f88bd202526482761ba10be9bfdcd14846dd01f652ec33fde0f8c0fd1db19b59a4c04465681fcef50e11380ca88d25996191c52de","location":"","comment":"Parity Bootnode"},{"ip":"52.166.117.77","port":30303,"id":"d07827483dc47b368eaf88454fb04b41b7452cf454e194e2bd4c14f98a3278fed5d819dbecd0d010407fc7688d941ee1e58d4f9c6354d3da3be92f55c17d7ce3","location":"","comment":"Parity Bootnode"},{"ip":"52.165.239.18","port":30303,"id":"8fa162563a8e5a05eef3e1cd5abc5828c71344f7277bb788a395cce4a0e30baf2b34b92fe0b2dbbba2313ee40236bae2aab3c9811941b9f5a7e8e90aaa27ecba","location":"","comment":"Parity Bootnode"},{"ip":"52.243.47.56","port":30303,"id":"7e2e7f00784f516939f94e22bdc6cf96153603ca2b5df1c7cc0f90a38e7a2f218ffb1c05b156835e8b49086d11fdd1b3e2965be16baa55204167aa9bf536a4d9","location":"","comment":"Parity Bootnode"},{"ip":"40.68.248.100","port":30303,"id":"0518a3d35d4a7b3e8c433e7ffd2355d84a1304ceb5ef349787b556197f0c87fad09daed760635b97d52179d645d3e6d16a37d2cc0a9945c2ddf585684beb39ac","location":"","comment":"Parity Bootnode"}]}')},"92a9":function(t,e,r){"use strict";const n=r("97cc").Buffer,i=r("d485").Transform,o=r("3fb5");t.exports=function(t){function e(e,r,n,o){i.call(this,o),this._rate=e,this._capacity=r,this._delimitedSuffix=n,this._options=o,this._state=new t,this._state.initialize(e,r),this._finalized=!1}return o(e,i),e.prototype._transform=function(t,e,r){let n=null;try{this.update(t,e)}catch(i){n=i}r(n)},e.prototype._flush=function(){},e.prototype._read=function(t){this.push(this.squeeze(t))},e.prototype.update=function(t,e){if(!n.isBuffer(t)&&"string"!==typeof t)throw new TypeError("Data must be a string or a buffer");if(this._finalized)throw new Error("Squeeze already called");return n.isBuffer(t)||(t=n.from(t,e)),this._state.absorb(t),this},e.prototype.squeeze=function(t,e){this._finalized||(this._finalized=!0,this._state.absorbLastFewBits(this._delimitedSuffix));let r=this._state.squeeze(t);return void 0!==e&&(r=r.toString(e)),r},e.prototype._resetState=function(){return this._state.initialize(this._rate,this._capacity),this},e.prototype._clone=function(){const t=new e(this._rate,this._capacity,this._delimitedSuffix,this._options);return this._state.copy(t._state),t._finalized=this._finalized,t},e}},"93a0":function(t,e,r){"use strict";var n=r("17fb"),i=r("39d4").errors,o=r("3667"),a=function(t,e){var r=this;this.responseCallbacks={},this.notificationCallbacks=[],this.path=t,this.connected=!1,this.connection=e.connect({path:this.path}),this.addDefaultEvents();var i=function(t){var e=null;n.isArray(t)?t.forEach((function(t){r.responseCallbacks[t.id]&&(e=t.id)})):e=t.id,e||-1===t.method.indexOf("_subscription")?r.responseCallbacks[e]&&(r.responseCallbacks[e](null,t),delete r.responseCallbacks[e]):r.notificationCallbacks.forEach((function(e){n.isFunction(e)&&e(t)}))};"Socket"===e.constructor.name?o(this.connection).done(i):this.connection.on("data",(function(t){r._parseResponse(t.toString()).forEach(i)}))};a.prototype.addDefaultEvents=function(){var t=this;this.connection.on("connect",(function(){t.connected=!0})),this.connection.on("close",(function(){t.connected=!1})),this.connection.on("error",(function(){t._timeout()})),this.connection.on("end",(function(){t._timeout()})),this.connection.on("timeout",(function(){t._timeout()}))},a.prototype._parseResponse=function(t){var e=this,r=[],n=t.replace(/\}[\n\r]?\{/g,"}|--|{").replace(/\}\][\n\r]?\[\{/g,"}]|--|[{").replace(/\}[\n\r]?\[\{/g,"}|--|[{").replace(/\}\][\n\r]?\{/g,"}]|--|{").split("|--|");return n.forEach((function(t){e.lastChunk&&(t=e.lastChunk+t);var n=null;try{n=JSON.parse(t)}catch(o){return e.lastChunk=t,clearTimeout(e.lastChunkTimeout),void(e.lastChunkTimeout=setTimeout((function(){throw e._timeout(),i.InvalidResponse(t)}),15e3))}clearTimeout(e.lastChunkTimeout),e.lastChunk=null,n&&r.push(n)})),r},a.prototype._addResponseCallback=function(t,e){var r=t.id||t[0].id,n=t.method||t[0].method;this.responseCallbacks[r]=e,this.responseCallbacks[r].method=n},a.prototype._timeout=function(){for(var t in this.responseCallbacks)this.responseCallbacks.hasOwnProperty(t)&&(this.responseCallbacks[t](i.InvalidConnection("on IPC")),delete this.responseCallbacks[t])},a.prototype.reconnect=function(){this.connection.connect({path:this.path})},a.prototype.send=function(t,e){this.connection.writable||this.connection.connect({path:this.path}),this.connection.write(JSON.stringify(t)),this._addResponseCallback(t,e)},a.prototype.on=function(t,e){if("function"!==typeof e)throw new Error("The second parameter callback must be a function.");switch(t){case"data":this.notificationCallbacks.push(e);break;default:this.connection.on(t,e);break}},a.prototype.once=function(t,e){if("function"!==typeof e)throw new Error("The second parameter callback must be a function.");this.connection.once(t,e)},a.prototype.removeListener=function(t,e){var r=this;switch(t){case"data":this.notificationCallbacks.forEach((function(t,n){t===e&&r.notificationCallbacks.splice(n,1)}));break;default:this.connection.removeListener(t,e);break}},a.prototype.removeAllListeners=function(t){switch(t){case"data":this.notificationCallbacks=[];break;default:this.connection.removeAllListeners(t);break}},a.prototype.reset=function(){this._timeout(),this.notificationCallbacks=[],this.connection.removeAllListeners("error"),this.connection.removeAllListeners("end"),this.connection.removeAllListeners("timeout"),this.addDefaultEvents()},a.prototype.supportsSubscriptions=function(){return!0},t.exports=a},"93e6":function(t,e,r){"use strict";var n=r("8707").Buffer,i=r("d485").Transform,o=r("3fb5");function a(t,e){if(!n.isBuffer(t)&&"string"!==typeof t)throw new TypeError(e+" must be a string or a buffer")}function s(t){i.call(this),this._block=n.allocUnsafe(t),this._blockSize=t,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}o(s,i),s.prototype._transform=function(t,e,r){var n=null;try{this.update(t,e)}catch(i){n=i}r(n)},s.prototype._flush=function(t){var e=null;try{this.push(this.digest())}catch(r){e=r}t(e)},s.prototype.update=function(t,e){if(a(t,"Data"),this._finalized)throw new Error("Digest already called");n.isBuffer(t)||(t=n.from(t,e));var r=this._block,i=0;while(this._blockOffset+t.length-i>=this._blockSize){for(var o=this._blockOffset;o0;++s)this._length[s]+=u,u=this._length[s]/4294967296|0,u>0&&(this._length[s]-=4294967296*u);return this},s.prototype._update=function(){throw new Error("_update is not implemented")},s.prototype.digest=function(t){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var e=this._digest();void 0!==t&&(e=e.toString(t)),this._block.fill(0),this._blockOffset=0;for(var r=0;r<4;++r)this._length[r]=0;return e},s.prototype._digest=function(){throw new Error("_digest is not implemented")},t.exports=s},"945d":function(t,e,r){"use strict";var n=r("7d92"),i=r("0cbb"),o=r("f3a3"),a=o.assert,s=o.parseBytes,u=r("380f"),c=r("44a3");function f(t){if(a("ed25519"===t,"only tested with ed25519 so far"),!(this instanceof f))return new f(t);t=i[t].curve;this.curve=t,this.g=t.g,this.g.precompute(t.n.bitLength()+1),this.pointClass=t.point().constructor,this.encodingLength=Math.ceil(t.n.bitLength()/8),this.hash=n.sha512}t.exports=f,f.prototype.sign=function(t,e){t=s(t);var r=this.keyFromSecret(e),n=this.hashInt(r.messagePrefix(),t),i=this.g.mul(n),o=this.encodePoint(i),a=this.hashInt(o,r.pubBytes(),t).mul(r.priv()),u=n.add(a).umod(this.curve.n);return this.makeSignature({R:i,S:u,Rencoded:o})},f.prototype.verify=function(t,e,r){t=s(t),e=this.makeSignature(e);var n=this.keyFromPublic(r),i=this.hashInt(e.Rencoded(),n.pubBytes(),t),o=this.g.mul(e.S()),a=e.R().add(n.pub().mul(i));return a.eq(o)},f.prototype.hashInt=function(){for(var t=this.hash(),e=0;e=256||parseInt(String(r))!=r)return!1}return!0}function u(t){if(null==t&&i.throwError("cannot convert null value to array",i.INVALID_ARGUMENT,{arg:"value",value:t}),o(t)&&(t=t.toHexString()),"string"===typeof t){var e=t.match(/^(0x)?[0-9a-fA-F]*$/);e||i.throwError("invalid hexidecimal string",i.INVALID_ARGUMENT,{arg:"value",value:t}),"0x"!==e[1]&&i.throwError("hex string must have 0x prefix",i.INVALID_ARGUMENT,{arg:"value",value:t}),t=t.substring(2),t.length%2&&(t="0"+t);for(var r=[],n=0;n>4]+d[15&u])}return"0x"+n.join("")}return i.throwError("invalid hexlify value",null,{arg:"value",value:t}),"never"}function m(t){return l(t)&&t.length%2===0?(t.length-2)/2:null}function y(t,e,r){return l(t)||i.throwError("invalid hex data",i.INVALID_ARGUMENT,{arg:"value",value:t}),t.length%2!==0&&i.throwError("hex data length must be even",i.INVALID_ARGUMENT,{arg:"value",value:t}),e=2+2*e,null!=r?"0x"+t.substring(e,e+2*r):"0x"+t.substring(e)}function v(t){l(t)||i.throwError("invalid hex string",i.INVALID_ARGUMENT,{arg:"value",value:t});while(t.length>3&&"0x0"===t.substring(0,3))t="0x"+t.substring(3);return t}function b(t,e){l(t)||i.throwError("invalid hex string",i.INVALID_ARGUMENT,{arg:"value",value:t});while(t.length<2*e+2)t="0x0"+t.substring(2);return t}function g(t){return t&&null!=t.r&&null!=t.s}function w(t){var e=0,r="0x",n="0x";if(g(t)){null==t.v&&null==t.recoveryParam&&i.throwError("at least on of recoveryParam or v must be specified",i.INVALID_ARGUMENT,{argument:"signature",value:t}),r=b(t.r,32),n=b(t.s,32),e=t.v,"string"===typeof e&&(e=parseInt(e,16));var o=t.recoveryParam;null==o&&null!=t.v&&(o=1-e%2),e=27+o}else{var a=u(t);if(65!==a.length)throw new Error("invalid signature");r=p(a.slice(0,32)),n=p(a.slice(32,64)),e=a[64],27!==e&&28!==e&&(e=27+e%2)}return{r:r,s:n,recoveryParam:e-27,v:e}}function _(t){return t=w(t),p(c([t.r,t.s,t.recoveryParam?"0x1c":"0x1b"]))}e.hexlify=p,e.hexDataLength=m,e.hexDataSlice=y,e.hexStripZeros=v,e.hexZeroPad=b,e.splitSignature=w,e.joinSignature=_},9490:function(t,e,r){(function(t){var n=r("925e"),i=r("c90b"),o=r("53a8"),a=r("8c05"),s=r("0b16"),u=e;u.request=function(e,r){e="string"===typeof e?s.parse(e):o(e);var i=-1===t.location.protocol.search(/^https?:$/)?"http:":"",a=e.protocol||i,u=e.hostname||e.host,c=e.port,f=e.path||"/";u&&-1!==u.indexOf(":")&&(u="["+u+"]"),e.url=(u?a+"//"+u:"")+(c?":"+c:"")+f,e.method=(e.method||"GET").toUpperCase(),e.headers=e.headers||{};var h=new n(e);return r&&h.on("response",r),h},u.get=function(t,e){var r=u.request(t,e);return r.end(),r},u.ClientRequest=n,u.IncomingMessage=i.IncomingMessage,u.Agent=function(){},u.Agent.defaultMaxSockets=4,u.globalAgent=new u.Agent,u.STATUS_CODES=a,u.METHODS=["CHECKOUT","CONNECT","COPY","DELETE","GET","HEAD","LOCK","M-SEARCH","MERGE","MKACTIVITY","MKCOL","MOVE","NOTIFY","OPTIONS","PATCH","POST","PROPFIND","PROPPATCH","PURGE","PUT","REPORT","SEARCH","SUBSCRIBE","TRACE","UNLOCK","UNSUBSCRIBE"]}).call(this,r("c8ba"))},"94ca":function(t,e,r){var n=r("d039"),i=/#|\.prototype\./,o=function(t,e){var r=s[a(t)];return r==c||r!=u&&("function"==typeof e?n(e):!!e)},a=o.normalize=function(t){return String(t).replace(i,".").toLowerCase()},s=o.data={},u=o.NATIVE="N",c=o.POLYFILL="P";t.exports=o},9505:function(t,e,r){(function(e,r){ +/** + * [js-sha3]{@link https://github.com/emn178/js-sha3} + * + * @version 0.5.7 + * @author Chen, Yi-Cyuan [emn178@gmail.com] + * @copyright Chen, Yi-Cyuan 2015-2016 + * @license MIT + */ +(function(){"use strict";var n="object"===typeof window?window:{},i=!n.JS_SHA3_NO_NODE_JS&&"object"===typeof e&&e.versions&&e.versions.node;i&&(n=r);for(var o=!n.JS_SHA3_NO_COMMON_JS&&"object"===typeof t&&t.exports,a="0123456789abcdef".split(""),s=[31,7936,2031616,520093696],u=[1,256,65536,16777216],c=[6,1536,393216,100663296],f=[0,8,16,24],h=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],l=[224,256,384,512],d=[128,256],p=["hex","buffer","arrayBuffer","array"],m=function(t,e,r){return function(n){return new S(t,e,t).update(n)[r]()}},y=function(t,e,r){return function(n,i){return new S(t,e,i).update(n)[r]()}},v=function(t,e){var r=m(t,e,"hex");r.create=function(){return new S(t,e,t)},r.update=function(t){return r.create().update(t)};for(var n=0;n>5,this.byteCount=this.blockCount<<2,this.outputBlocks=r>>5,this.extraBytes=(31&r)>>3;for(var n=0;n<50;++n)this.s[n]=0}S.prototype.update=function(t){var e="string"!==typeof t;e&&t.constructor===ArrayBuffer&&(t=new Uint8Array(t));var r,n,i=t.length,o=this.blocks,a=this.byteCount,s=this.blockCount,u=0,c=this.s;while(u>2]|=t[u]<>2]|=n<>2]|=(192|n>>6)<>2]|=(128|63&n)<=57344?(o[r>>2]|=(224|n>>12)<>2]|=(128|n>>6&63)<>2]|=(128|63&n)<>2]|=(240|n>>18)<>2]|=(128|n>>12&63)<>2]|=(128|n>>6&63)<>2]|=(128|63&n)<=a){for(this.start=r-a,this.block=o[s],r=0;r>2]|=this.padding[3&e],this.lastByteIndex===this.byteCount)for(t[0]=t[r],e=1;e>4&15]+a[15&t]+a[t>>12&15]+a[t>>8&15]+a[t>>20&15]+a[t>>16&15]+a[t>>28&15]+a[t>>24&15];s%e===0&&(I(r),o=0)}return i&&(t=r[o],i>0&&(u+=a[t>>4&15]+a[15&t]),i>1&&(u+=a[t>>12&15]+a[t>>8&15]),i>2&&(u+=a[t>>20&15]+a[t>>16&15])),u},S.prototype.arrayBuffer=function(){this.finalize();var t,e=this.blockCount,r=this.s,n=this.outputBlocks,i=this.extraBytes,o=0,a=0,s=this.outputBits>>3;t=i?new ArrayBuffer(n+1<<2):new ArrayBuffer(s);var u=new Uint32Array(t);while(a>8&255,u[t+2]=e>>16&255,u[t+3]=e>>24&255;s%r===0&&I(n)}return o&&(t=s<<2,e=n[a],o>0&&(u[t]=255&e),o>1&&(u[t+1]=e>>8&255),o>2&&(u[t+2]=e>>16&255)),u};var I=function(t){var e,r,n,i,o,a,s,u,c,f,l,d,p,m,y,v,b,g,w,_,A,E,x,M,k,S,I,C,T,U,O,P,R,N,B,j,L,D,F,q,H,z,K,V,G,$,Y,W,Z,J,X,Q,tt,et,rt,nt,it,ot,at,st,ut,ct,ft;for(n=0;n<48;n+=2)i=t[0]^t[10]^t[20]^t[30]^t[40],o=t[1]^t[11]^t[21]^t[31]^t[41],a=t[2]^t[12]^t[22]^t[32]^t[42],s=t[3]^t[13]^t[23]^t[33]^t[43],u=t[4]^t[14]^t[24]^t[34]^t[44],c=t[5]^t[15]^t[25]^t[35]^t[45],f=t[6]^t[16]^t[26]^t[36]^t[46],l=t[7]^t[17]^t[27]^t[37]^t[47],d=t[8]^t[18]^t[28]^t[38]^t[48],p=t[9]^t[19]^t[29]^t[39]^t[49],e=d^(a<<1|s>>>31),r=p^(s<<1|a>>>31),t[0]^=e,t[1]^=r,t[10]^=e,t[11]^=r,t[20]^=e,t[21]^=r,t[30]^=e,t[31]^=r,t[40]^=e,t[41]^=r,e=i^(u<<1|c>>>31),r=o^(c<<1|u>>>31),t[2]^=e,t[3]^=r,t[12]^=e,t[13]^=r,t[22]^=e,t[23]^=r,t[32]^=e,t[33]^=r,t[42]^=e,t[43]^=r,e=a^(f<<1|l>>>31),r=s^(l<<1|f>>>31),t[4]^=e,t[5]^=r,t[14]^=e,t[15]^=r,t[24]^=e,t[25]^=r,t[34]^=e,t[35]^=r,t[44]^=e,t[45]^=r,e=u^(d<<1|p>>>31),r=c^(p<<1|d>>>31),t[6]^=e,t[7]^=r,t[16]^=e,t[17]^=r,t[26]^=e,t[27]^=r,t[36]^=e,t[37]^=r,t[46]^=e,t[47]^=r,e=f^(i<<1|o>>>31),r=l^(o<<1|i>>>31),t[8]^=e,t[9]^=r,t[18]^=e,t[19]^=r,t[28]^=e,t[29]^=r,t[38]^=e,t[39]^=r,t[48]^=e,t[49]^=r,m=t[0],y=t[1],$=t[11]<<4|t[10]>>>28,Y=t[10]<<4|t[11]>>>28,C=t[20]<<3|t[21]>>>29,T=t[21]<<3|t[20]>>>29,st=t[31]<<9|t[30]>>>23,ut=t[30]<<9|t[31]>>>23,z=t[40]<<18|t[41]>>>14,K=t[41]<<18|t[40]>>>14,N=t[2]<<1|t[3]>>>31,B=t[3]<<1|t[2]>>>31,v=t[13]<<12|t[12]>>>20,b=t[12]<<12|t[13]>>>20,W=t[22]<<10|t[23]>>>22,Z=t[23]<<10|t[22]>>>22,U=t[33]<<13|t[32]>>>19,O=t[32]<<13|t[33]>>>19,ct=t[42]<<2|t[43]>>>30,ft=t[43]<<2|t[42]>>>30,et=t[5]<<30|t[4]>>>2,rt=t[4]<<30|t[5]>>>2,j=t[14]<<6|t[15]>>>26,L=t[15]<<6|t[14]>>>26,g=t[25]<<11|t[24]>>>21,w=t[24]<<11|t[25]>>>21,J=t[34]<<15|t[35]>>>17,X=t[35]<<15|t[34]>>>17,P=t[45]<<29|t[44]>>>3,R=t[44]<<29|t[45]>>>3,M=t[6]<<28|t[7]>>>4,k=t[7]<<28|t[6]>>>4,nt=t[17]<<23|t[16]>>>9,it=t[16]<<23|t[17]>>>9,D=t[26]<<25|t[27]>>>7,F=t[27]<<25|t[26]>>>7,_=t[36]<<21|t[37]>>>11,A=t[37]<<21|t[36]>>>11,Q=t[47]<<24|t[46]>>>8,tt=t[46]<<24|t[47]>>>8,V=t[8]<<27|t[9]>>>5,G=t[9]<<27|t[8]>>>5,S=t[18]<<20|t[19]>>>12,I=t[19]<<20|t[18]>>>12,ot=t[29]<<7|t[28]>>>25,at=t[28]<<7|t[29]>>>25,q=t[38]<<8|t[39]>>>24,H=t[39]<<8|t[38]>>>24,E=t[48]<<14|t[49]>>>18,x=t[49]<<14|t[48]>>>18,t[0]=m^~v&g,t[1]=y^~b&w,t[10]=M^~S&C,t[11]=k^~I&T,t[20]=N^~j&D,t[21]=B^~L&F,t[30]=V^~$&W,t[31]=G^~Y&Z,t[40]=et^~nt&ot,t[41]=rt^~it&at,t[2]=v^~g&_,t[3]=b^~w&A,t[12]=S^~C&U,t[13]=I^~T&O,t[22]=j^~D&q,t[23]=L^~F&H,t[32]=$^~W&J,t[33]=Y^~Z&X,t[42]=nt^~ot&st,t[43]=it^~at&ut,t[4]=g^~_&E,t[5]=w^~A&x,t[14]=C^~U&P,t[15]=T^~O&R,t[24]=D^~q&z,t[25]=F^~H&K,t[34]=W^~J&Q,t[35]=Z^~X&tt,t[44]=ot^~st&ct,t[45]=at^~ut&ft,t[6]=_^~E&m,t[7]=A^~x&y,t[16]=U^~P&M,t[17]=O^~R&k,t[26]=q^~z&N,t[27]=H^~K&B,t[36]=J^~Q&V,t[37]=X^~tt&G,t[46]=st^~ct&et,t[47]=ut^~ft&rt,t[8]=E^~m&v,t[9]=x^~y&b,t[18]=P^~M&S,t[19]=R^~k&I,t[28]=z^~N&j,t[29]=K^~B&L,t[38]=Q^~V&$,t[39]=tt^~G&Y,t[48]=ct^~et&nt,t[49]=ft^~rt&it,t[0]^=h[n],t[1]^=h[n+1]};if(o)t.exports=w;else for(A=0;A<_.length;++A)n[_[A]]=w[_[A]]})()}).call(this,r("4362"),r("c8ba"))},"956a":function(t,e,r){var n=r("1e3c"),i=r("fda6"),o=r("bac2"),a=r("0be8"),s=r("ae84");function u(t,e){var r,n;if(t=t.toLowerCase(),o[t])r=o[t].key,n=o[t].iv;else{if(!a[t])throw new TypeError("invalid suite type");r=8*a[t].key,n=a[t].iv}var i=s(e,!1,r,n);return f(t,i.key,i.iv)}function c(t,e){var r,n;if(t=t.toLowerCase(),o[t])r=o[t].key,n=o[t].iv;else{if(!a[t])throw new TypeError("invalid suite type");r=8*a[t].key,n=a[t].iv}var i=s(e,!1,r,n);return h(t,i.key,i.iv)}function f(t,e,r){if(t=t.toLowerCase(),o[t])return i.createCipheriv(t,e,r);if(a[t])return new n({key:e,iv:r,mode:t});throw new TypeError("invalid suite type")}function h(t,e,r){if(t=t.toLowerCase(),o[t])return i.createDecipheriv(t,e,r);if(a[t])return new n({key:e,iv:r,mode:t,decrypt:!0});throw new TypeError("invalid suite type")}function l(){return Object.keys(a).concat(i.getCiphers())}e.createCipher=e.Cipher=u,e.createCipheriv=e.Cipheriv=f,e.createDecipher=e.Decipher=c,e.createDecipheriv=e.Decipheriv=h,e.listCiphers=e.getCiphers=l},"966d":function(t,e,r){"use strict";(function(e){function r(t,r,n,i){if("function"!==typeof t)throw new TypeError('"callback" argument must be a function');var o,a,s=arguments.length;switch(s){case 0:case 1:return e.nextTick(t);case 2:return e.nextTick((function(){t.call(null,r)}));case 3:return e.nextTick((function(){t.call(null,r,n)}));case 4:return e.nextTick((function(){t.call(null,r,n,i)}));default:o=new Array(s-1),a=0;while(a=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return i("end");if(a.tryLoc<=this.prev){var u=n.call(a,"catchLoc"),c=n.call(a,"finallyLoc");if(u&&c){if(this.prev=0;--r){var i=this.tryEntries[r];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),S(r),p}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var i=n.arg;S(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:C(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),p}},t}(t.exports);try{regeneratorRuntime=n}catch(i){Function("r","regeneratorRuntime = r")(n)}},"97cc":function(t,e,r){var n=r("b639"),i=n.Buffer;function o(t,e){for(var r in t)e[r]=t[r]}function a(t,e,r){return i(t,e,r)}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?t.exports=n:(o(n,e),e.Buffer=a),a.prototype=Object.create(i.prototype),o(i,a),a.from=function(t,e,r){if("number"===typeof t)throw new TypeError("Argument must not be a number");return i(t,e,r)},a.alloc=function(t,e,r){if("number"!==typeof t)throw new TypeError("Argument must be a number");var n=i(t);return void 0!==e?"string"===typeof r?n.fill(e,r):n.fill(e):n.fill(0),n},a.allocUnsafe=function(t){if("number"!==typeof t)throw new TypeError("Argument must be a number");return i(t)},a.allocUnsafeSlow=function(t){if("number"!==typeof t)throw new TypeError("Argument must be a number");return n.SlowBuffer(t)}},"980c":function(t,e,r){(function(e){var n=r("399f"),i=r("3337").ec,o=r("2aee"),a=r("cd91");function s(t,r,i,a,s){var f=o(i);if("ec"===f.type){if("ecdsa"!==a&&"ecdsa/rsa"!==a)throw new Error("wrong public key type");return u(t,r,f)}if("dsa"===f.type){if("dsa"!==a)throw new Error("wrong public key type");return c(t,r,f)}if("rsa"!==a&&"ecdsa/rsa"!==a)throw new Error("wrong public key type");r=e.concat([s,r]);var h=f.modulus.byteLength(),l=[1],d=0;while(r.length+l.length+2=e)throw new Error("invalid sig")}t.exports=s}).call(this,r("b639").Buffer)},9825:function(t){t.exports=JSON.parse('{"name":"homestead","comment":"Homestead hardfork with protocol and network changes","eip":{"url":"https://eips.ethereum.org/EIPS/eip-606","status":"Final"},"gasConfig":{},"gasPrices":{},"vm":{},"pow":{},"casper":{},"sharding":{}}')},9850:function(t,e){for(var r=[],n=0;n<256;++n)r[n]=(n+256).toString(16).substr(1);function i(t,e){var n=e||0,i=r;return[i[t[n++]],i[t[n++]],i[t[n++]],i[t[n++]],"-",i[t[n++]],i[t[n++]],"-",i[t[n++]],i[t[n++]],"-",i[t[n++]],i[t[n++]],"-",i[t[n++]],i[t[n++]],i[t[n++]],i[t[n++]],i[t[n++]],i[t[n++]]].join("")}t.exports=i},"98e6":function(t,e,r){"use strict";var n=r("3fb5"),i=r("f576"),o=r("b5ca"),a=r("69f2"),s=r("6430");function u(t){s.call(this,"digest"),this._hash=t}n(u,s),u.prototype._update=function(t){this._hash.update(t)},u.prototype._final=function(){return this._hash.digest()},t.exports=function(t){return t=t.toLowerCase(),"md5"===t?new i:"rmd160"===t||"ripemd160"===t?new o:new u(a(t))}},"9a12":function(t,e,r){"use strict";(function(e){var n=r("5162"),i=r("85b1");function o(t){var e=t;if("string"!==typeof e)throw new Error("[ethjs-util] while padding to even, value must be string, is currently "+typeof e+", while padToEven.");return e.length%2&&(e="0"+e),e}function a(t){var e=t.toString(16);return"0x"+e}function s(t){var r=a(t);return new e(o(r.slice(2)),"hex")}function u(t){if("string"!==typeof t)throw new Error("[ethjs-util] while getting binary size, method getBinarySize requires input 'str' to be type String, got '"+typeof t+"'.");return e.byteLength(t,"utf8")}function c(t,e,r){if(!0!==Array.isArray(t))throw new Error("[ethjs-util] method arrayContainsArray requires input 'superset' to be an array got type '"+typeof t+"'");if(!0!==Array.isArray(e))throw new Error("[ethjs-util] method arrayContainsArray requires input 'subset' to be an array got type '"+typeof e+"'");return e[Boolean(r)?"some":"every"]((function(e){return t.indexOf(e)>=0}))}function f(t){var r=new e(o(i(t).replace(/^0+|0+$/g,"")),"hex");return r.toString("utf8")}function h(t){var e="",r=0,n=t.length;for("0x"===t.substring(0,2)&&(r=2);r=0.10.0"},"homepage":"https://github.com/web3-js/WebSocket-Node","keywords":["websocket","websockets","socket","networking","comet","push","RFC-6455","realtime","server","client"],"license":"Apache-2.0","main":"index","name":"@web3-js/websocket","repository":{"type":"git","url":"git+https://github.com/web3-js/WebSocket-Node.git"},"scripts":{"gulp":"gulp","install":"(node-gyp rebuild 2> builderror.log) || (exit 0)","test":"faucet test/unit"},"version":"1.0.30"}')},"9ed3":function(t,e,r){"use strict";var n=r("ae93").IteratorPrototype,i=r("7c73"),o=r("5c6c"),a=r("d44e"),s=r("3f8c"),u=function(){return this};t.exports=function(t,e,r){var c=e+" Iterator";return t.prototype=i(n,{next:o(1,r)}),a(t,c,!1,!0),s[c]=u,t}},"9f9d":function(t,e,r){(function(e){var r;if(e.browser)r="utf-8";else{var n=parseInt(e.version.split(".")[0].slice(1),10);r=n>=6?"utf-8":"binary"}t.exports=r}).call(this,r("4362"))},a00b:function(t,e,r){var n,i,o=r("33a0"),a=r("9850"),s=0,u=0;function c(t,e,r){var c=e&&r||0,f=e||[];t=t||{};var h=t.node||n,l=void 0!==t.clockseq?t.clockseq:i;if(null==h||null==l){var d=o();null==h&&(h=n=[1|d[0],d[1],d[2],d[3],d[4],d[5]]),null==l&&(l=i=16383&(d[6]<<8|d[7]))}var p=void 0!==t.msecs?t.msecs:(new Date).getTime(),m=void 0!==t.nsecs?t.nsecs:u+1,y=p-s+(m-u)/1e4;if(y<0&&void 0===t.clockseq&&(l=l+1&16383),(y<0||p>s)&&void 0===t.nsecs&&(m=0),m>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");s=p,u=m,i=l,p+=122192928e5;var v=(1e4*(268435455&p)+m)%4294967296;f[c++]=v>>>24&255,f[c++]=v>>>16&255,f[c++]=v>>>8&255,f[c++]=255&v;var b=p/4294967296*1e4&268435455;f[c++]=b>>>8&255,f[c++]=255&b,f[c++]=b>>>24&15|16,f[c++]=b>>>16&255,f[c++]=l>>>8|128,f[c++]=255&l;for(var g=0;g<6;++g)f[c+g]=h[g];return e||a(f)}t.exports=c},a099:function(t,e,r){e.pbkdf2=r("206d"),e.pbkdf2Sync=r("e07b")},a255:function(t,e,r){var n=r("3fb5"),i=r("b672"),o=r("8707").Buffer,a=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],s=new Array(64);function u(){this.init(),this._w=s,i.call(this,64,56)}function c(t,e,r){return r^t&(e^r)}function f(t,e,r){return t&e|r&(t|e)}function h(t){return(t>>>2|t<<30)^(t>>>13|t<<19)^(t>>>22|t<<10)}function l(t){return(t>>>6|t<<26)^(t>>>11|t<<21)^(t>>>25|t<<7)}function d(t){return(t>>>7|t<<25)^(t>>>18|t<<14)^t>>>3}function p(t){return(t>>>17|t<<15)^(t>>>19|t<<13)^t>>>10}n(u,i),u.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},u.prototype._update=function(t){for(var e=this._w,r=0|this._a,n=0|this._b,i=0|this._c,o=0|this._d,s=0|this._e,u=0|this._f,m=0|this._g,y=0|this._h,v=0;v<16;++v)e[v]=t.readInt32BE(4*v);for(;v<64;++v)e[v]=p(e[v-2])+e[v-7]+d(e[v-15])+e[v-16]|0;for(var b=0;b<64;++b){var g=y+l(s)+c(s,u,m)+a[b]+e[b]|0,w=h(r)+f(r,n,i)|0;y=m,m=u,u=s,s=o+g|0,o=i,i=n,n=r,r=g+w|0}this._a=r+this._a|0,this._b=n+this._b|0,this._c=i+this._c|0,this._d=o+this._d|0,this._e=s+this._e|0,this._f=u+this._f|0,this._g=m+this._g|0,this._h=y+this._h|0},u.prototype._hash=function(){var t=o.allocUnsafe(32);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t.writeInt32BE(this._h,28),t},t.exports=u},a393:function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t){this.type=t,this.bubbles=!1,this.cancelable=!1,this.loaded=0,this.lengthComputable=!1,this.total=0}return t}();e.ProgressEvent=n},a3ca:function(t,e,r){"use strict";(function(t){Object.defineProperty(e,"__esModule",{value:!0});var n=r("399f");function i(e){if(Array.isArray(e)){for(var r=[],n=0;ne.length)throw new Error("invalid rlp: total length is larger than the data");if(a=e.slice(n,h),0===a.length)throw new Error("invalid rlp, List has a invalid length");while(a.length)s=c(a),u.push(s.data),a=s.remainder;return{data:u,remainder:e.slice(h)}}function f(t){return"0x"===t.slice(0,2)}function h(t){return"string"!==typeof t?t:f(t)?t.slice(2):t}function l(t){if(t<0)throw new Error("Invalid integer as argument, must be unsigned!");var e=t.toString(16);return e.length%2?"0"+e:e}function d(t){return t.length%2?"0"+t:t}function p(e){var r=l(e);return t.from(r,"hex")}function m(e){if(!t.isBuffer(e)){if("string"===typeof e)return f(e)?t.from(d(h(e)),"hex"):t.from(e);if("number"===typeof e)return e?p(e):t.from([]);if(null===e||void 0===e)return t.from([]);if(e instanceof Uint8Array)return t.from(e);if(n.isBN(e))return t.from(e.toArray());throw new Error("invalid type")}return e}e.encode=i,e.decode=s,e.getLength=u}).call(this,r("b639").Buffer)},a62e:function(t,e,r){"use strict";var n=this&&this.__assign||function(){return n=Object.assign||function(t){for(var e,r=1,n=arguments.length;r0))return!0;for(var e=0,r=this._supportedHardforks;e=i},t.prototype.activeOnBlock=function(t,e){return this.hardforkIsActiveOnBlock(null,t,e)},t.prototype.hardforkGteHardfork=function(t,e,r){r=void 0!==r?r:{};var n,i=void 0!==r.onlyActive&&r.onlyActive;t=this._chooseHardfork(t,r.onlySupported),n=i?this.activeHardforks(null,r):this.hardforks();for(var o=-1,a=-1,s=0,u=0,c=n;u=a},t.prototype.gteHardfork=function(t,e){return this.hardforkGteHardfork(null,t,e)},t.prototype.hardforkIsActiveOnChain=function(t,e){e=void 0!==e?e:{};var r=void 0!==e.onlySupported&&e.onlySupported;t=this._chooseHardfork(t,r);for(var n=0,i=this.hardforks();n0)return r[r.length-1]["name"];throw new Error("No (supported) active hardfork found")},t.prototype.hardforkBlock=function(t){return t=this._chooseHardfork(t,!1),this._getHardfork(t)["block"]},t.prototype.isHardforkBlock=function(t,e){return e=this._chooseHardfork(e,!1),this.hardforkBlock(e)===t},t.prototype.consensus=function(t){return t=this._chooseHardfork(t),this._getHardfork(t)["consensus"]},t.prototype.finality=function(t){return t=this._chooseHardfork(t),this._getHardfork(t)["finality"]},t.prototype.genesis=function(){return this._chainParams["genesis"]},t.prototype.hardforks=function(){return this._chainParams["hardforks"]},t.prototype.bootstrapNodes=function(){return this._chainParams["bootstrapNodes"]},t.prototype.hardfork=function(){return this._hardfork},t.prototype.chainId=function(){return this._chainParams["chainId"]},t.prototype.chainName=function(){return i.chains["names"][this.chainId()]||this._chainParams["name"]},t.prototype.networkId=function(){return this._chainParams["networkId"]},t}();e.default=a},a691:function(t,e){var r=Math.ceil,n=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?n:r)(t)}},a6b6:function(t,e,r){var n=r("e943"),i=r("85b1");t.exports=function(t){if("string"===typeof t||"number"===typeof t){var e=new n(1),r=String(t).toLowerCase().trim(),o="0x"===r.substr(0,2)||"-0x"===r.substr(0,3),a=i(r);if("-"===a.substr(0,1)&&(a=i(a.slice(1)),e=new n(-1,10)),a=""===a?"0":a,!a.match(/^-?[0-9]+$/)&&a.match(/^[0-9A-Fa-f]+$/)||a.match(/^[a-fA-F]+$/)||!0===o&&a.match(/^[0-9A-Fa-f]+$/))return new n(a,16).mul(e);if((a.match(/^-?[0-9]+$/)||""===a)&&!1===o)return new n(a,10).mul(e)}else if("object"===typeof t&&t.toString&&!t.pop&&!t.push&&t.toString(10).match(/^-?[0-9]+$/)&&(t.mul||t.dividedToIntegerBy))return new n(t.toString(10),10);throw new Error("[number-to-bn] while converting number "+JSON.stringify(t)+" to BN.js instance, error: invalid number value. Value must be an integer, hex string, BN or BigNumber instance. Note, decimals are not supported.")}},a6ca:function(t,e){(function(){"use strict";function t(e,r,n,i){return this instanceof t?(this.domain=e||void 0,this.path=r||"/",this.secure=!!n,this.script=!!i,this):new t(e,r,n,i)}function r(t,e,n){return t instanceof r?t:this instanceof r?(this.name=null,this.value=null,this.expiration_date=1/0,this.path=String(n||"/"),this.explicit_path=!1,this.domain=e||null,this.explicit_domain=!1,this.secure=!1,this.noscript=!1,t&&this.parse(t,e,n),this):new r(t,e,n)}t.All=Object.freeze(Object.create(null)),e.CookieAccessInfo=t,e.Cookie=r,r.prototype.toString=function(){var t=[this.name+"="+this.value];return this.expiration_date!==1/0&&t.push("expires="+new Date(this.expiration_date).toGMTString()),this.domain&&t.push("domain="+this.domain),this.path&&t.push("path="+this.path),this.secure&&t.push("secure"),this.noscript&&t.push("httponly"),t.join("; ")},r.prototype.toValueString=function(){return this.name+"="+this.value};var n=/[:](?=\s*[a-zA-Z0-9_\-]+\s*[=])/g;function i(){var t,e,n;return this instanceof i?(t=Object.create(null),this.setCookie=function(i,o,a){var s,u;if(i=new r(i,o,a),s=i.expiration_date<=Date.now(),void 0!==t[i.name]){for(e=t[i.name],u=0;u=0||!r.umod(t.prime1)||!r.umod(t.prime2))r=new n(i(e));return r}t.exports=a,a.getr=s}).call(this,r("b639").Buffer)},a9f1:function(t,e,r){(function(t){e.fetch=s(t.fetch)&&s(t.ReadableStream),e.writableStream=s(t.WritableStream),e.abortController=s(t.AbortController),e.blobConstructor=!1;try{new Blob([new ArrayBuffer(1)]),e.blobConstructor=!0}catch(u){}var r;function n(){if(void 0!==r)return r;if(t.XMLHttpRequest){r=new t.XMLHttpRequest;try{r.open("GET",t.XDomainRequest?"/":"https://example.com")}catch(u){r=null}}else r=null;return r}function i(t){var e=n();if(!e)return!1;try{return e.responseType=t,e.responseType===t}catch(u){}return!1}var o="undefined"!==typeof t.ArrayBuffer,a=o&&s(t.ArrayBuffer.prototype.slice);function s(t){return"function"===typeof t}e.arraybuffer=e.fetch||o&&i("arraybuffer"),e.msstream=!e.fetch&&a&&i("ms-stream"),e.mozchunkedarraybuffer=!e.fetch&&o&&i("moz-chunked-arraybuffer"),e.overrideMimeType=e.fetch||!!n()&&s(n().overrideMimeType),e.vbArray=s(t.VBArray),r=null}).call(this,r("c8ba"))},aa56:function(t,e,r){"use strict";var n=r("c3c0"),i=n.rotr32;function o(t,e,r,n){return 0===t?a(e,r,n):1===t||3===t?u(e,r,n):2===t?s(e,r,n):void 0}function a(t,e,r){return t&e^~t&r}function s(t,e,r){return t&e^t&r^e&r}function u(t,e,r){return t^e^r}function c(t){return i(t,2)^i(t,13)^i(t,22)}function f(t){return i(t,6)^i(t,11)^i(t,25)}function h(t){return i(t,7)^i(t,18)^t>>>3}function l(t){return i(t,17)^i(t,19)^t>>>10}e.ft_1=o,e.ch32=a,e.maj32=s,e.p32=u,e.s0_256=c,e.s1_256=f,e.g0_256=h,e.g1_256=l},aaa4:function(t,e,r){var n=r("556a"),i=r("d39a"),o=r("320c"),a=r("f9a0"),s=r("4fcc"),u="application/json",c=function(){};function f(t,e,r){if(!t||"string"!==typeof t)throw new TypeError("must specify a URL");if("function"===typeof e&&(r=e,e={}),r&&"function"!==typeof r)throw new TypeError("expected cb to be undefined or a function");r=r||c,e=e||{};var f=e.json?"json":"text";e=o({responseType:f},e);var h=e.headers||{},l=(e.method||"GET").toUpperCase(),d=e.query;return d&&("string"!==typeof d&&(d=n.stringify(d)),t=i(t,d)),"json"===e.responseType&&a(h,"Accept",u),e.json&&"GET"!==l&&"HEAD"!==l&&(a(h,"Content-Type",u),e.body=JSON.stringify(e.body)),e.method=l,e.url=t,e.headers=h,delete e.query,delete e.json,s(e,r)}t.exports=f},aad6:function(t,e){t.exports=function(t){var e=t.fs,r=t.files,n=t.os,i=t.path,o=t.child_process,a=t.mimetype,s=t.defaultArchives,u=t.request,c=t.downloadUrl,f=t.bytes,h=t.hash,l=t.pick,d=function(t){return function(e){return function(r){return r[t]=e,r}}},p=function(t){return function(e){for(var r={},n=0,i=t.length;n0){var a=i.join(r,o);n.push(A(t)(e[o])(a))}return Promise.all(n).then((function(){return r}))}))}}},x=function(t){return function(e){return u("".concat(t,"/bzzr:/"),{body:"string"===typeof e?q(e):e,method:"POST"})}},M=function(t){return function(e){return function(r){return function(n){var i=function i(o){var a="/"===r[0]?r:"/"+r,s="".concat(t,"/bzz:/").concat(e).concat(a),c={method:"PUT",headers:{"Content-Type":n.type},body:n.data};return u(s,c).then((function(t){if(-1!==t.indexOf("error"))throw t;return t})).catch((function(t){return o>0&&i(o-1)}))};return i(3)}}}},k=function(t){return function(e){return I(t)({"":e})}},S=function(t){return function(r){return e.readFile(r).then((function(e){return k(t)({type:a.lookup(r),data:e})}))}},I=function(t){return function(e){return x(t)("{}").then((function(r){var n=function(r){return function(n){return M(t)(n)(r)(e[r])}},i=function(t,e){return t.then(n(e))};return Object.keys(e).reduce(i,Promise.resolve(r))}))}},C=function(t){return function(r){return e.readFile(r).then(x(t))}},T=function(t){return function(n){return function(i){return r.directoryTree(i).then((function(t){return Promise.all(t.map((function(t){return e.readFile(t)}))).then((function(e){var r=t.map((function(t){return t.slice(i.length)})),n=t.map((function(t){return a.lookup(t)||"text/plain"}));return p(r)(e.map((function(t,e){return{type:n[e],data:t}})))}))})).then((function(t){return m(n?{"":t[n]}:{})(t)})).then(I(t))}}},U=function(t){return function(e){if("data"===e.pick)return l.data().then(x(t));if("file"===e.pick)return l.file().then(k(t));if("directory"===e.pick)return l.directory().then(I(t));if(e.path)switch(e.kind){case"data":return C(t)(e.path);case"file":return S(t)(e.path);case"directory":return T(t)(e.defaultFile)(e.path)}else{if(e.length||"string"===typeof e)return x(t)(e);if(e instanceof Object)return I(t)(e)}return Promise.reject(new Error("Bad arguments"))}},O=function(t){return function(e){return function(r){return L(t)(e).then((function(n){return n?r?E(t)(e)(r):_(t)(e):r?A(t)(e)(r):b(t)(e)}))}}},P=function(t,e){var i=n.platform().replace("win32","windows")+"-"+("x64"===n.arch()?"amd64":"386"),o=(e||s)[i],a=c+o.archive+".tar.gz",u=o.archiveMD5,f=o.binaryMD5;return r.safeDownloadArchived(a)(u)(f)(t)},R=function(t){return new Promise((function(e,r){var n=o.spawn,i=function(t){return function(e){return-1!==(""+e).indexOf(t)}},a=t.account,s=t.password,u=t.dataDir,c=t.ensApi,f=t.privateKey,h=0,l=1,d=2,p="Passphrase",m="Swarm http proxy started",y=h,v=n(t.binPath,["--bzzaccount",a||f,"--datadir",u,"--ens-api",c]),b=function(t){y===h&&i(p)(t)?setTimeout((function(){y=l,v.stdin.write(s+"\n")}),500):i(m)(t)&&(y=d,clearTimeout(w),e(v))};v.stdout.on("data",b),v.stderr.on("data",b);var g=function(){return r(new Error("Couldn't start swarm process."))},w=setTimeout(g,2e4)}))},N=function(t){return new Promise((function(e,r){t.stderr.removeAllListeners("data"),t.stdout.removeAllListeners("data"),t.stdin.removeAllListeners("error"),t.removeAllListeners("error"),t.removeAllListeners("exit"),t.kill("SIGINT");var n=setTimeout((function(){return t.kill("SIGKILL")}),8e3);t.once("close",(function(){clearTimeout(n),e()}))}))},B=function(t){return function(e){return j("http://localhost:8500").then((function(r){return r?e(H("http://localhost:8500")).then((function(){})):P(t.binPath,t.archives).onData((function(e){return(t.onProgress||function(){})(e.length)})).then((function(){return R(t)})).then((function(t){return e(H("http://localhost:8500")).then((function(){return t}))})).then(N)}))}},j=function(t){var e="test",r="c9a99c7d326dcc6316f32fe2625b311f6dc49a175e6877681ded93137d3569e7";return x(t)(e).then((function(t){return t===r})).catch((function(){return!1}))},L=function(t){return function(e){return b(t)(e).then((function(t){try{return!!JSON.parse(F(t)).entries}catch(e){return!1}}))}},D=function(t){return function(e,r,n,i,o){var a;return"undefined"!==typeof e&&(a=t(e)),"undefined"!==typeof r&&(a=t(r)),"undefined"!==typeof n&&(a=t(n)),"undefined"!==typeof i&&(a=t(i)),"undefined"!==typeof o&&(a=t(o)),a}},F=function(t){return f.toString(f.fromUint8Array(t))},q=function(t){return f.toUint8Array(f.fromString(t))},H=function(t){return{download:function(e,r){return O(t)(e)(r)},downloadData:D(b(t)),downloadDataToDisk:D(A(t)),downloadDirectory:D(_(t)),downloadDirectoryToDisk:D(E(t)),downloadEntries:D(g(t)),downloadRoutes:D(w(t)),isAvailable:function(){return j(t)},upload:function(e){return U(t)(e)},uploadData:D(x(t)),uploadFile:D(k(t)),uploadFileFromDisk:D(k(t)),uploadDataFromDisk:D(C(t)),uploadDirectory:D(I(t)),uploadDirectoryFromDisk:D(T(t)),uploadToManifest:D(M(t)),pick:l,hash:h,fromString:q,toString:F}};return{at:H,local:B,download:O,downloadBinary:P,downloadData:b,downloadDataToDisk:A,downloadDirectory:_,downloadDirectoryToDisk:E,downloadEntries:g,downloadRoutes:w,isAvailable:j,startProcess:R,stopProcess:N,upload:U,uploadData:x,uploadDataFromDisk:C,uploadFile:k,uploadFileFromDisk:S,uploadDirectory:I,uploadDirectoryFromDisk:T,uploadToManifest:M,pick:l,hash:h,fromString:q,toString:F}}},ab7e:function(t,e,r){"use strict";var n=r("f1ee"),i=r("4923").subscriptions,o=r("6248"),a=r("ae52"),s=function(){var t=this;n.packageInit(this,arguments);var e=this.setProvider;this.setProvider=function(){e.apply(t,arguments),t.net.setProvider.apply(t,arguments)},this.net=new a(this.currentProvider),[new i({name:"subscribe",type:"shh",subscriptions:{messages:{params:1}}}),new o({name:"getVersion",call:"shh_version",params:0}),new o({name:"getInfo",call:"shh_info",params:0}),new o({name:"setMaxMessageSize",call:"shh_setMaxMessageSize",params:1}),new o({name:"setMinPoW",call:"shh_setMinPoW",params:1}),new o({name:"markTrustedPeer",call:"shh_markTrustedPeer",params:1}),new o({name:"newKeyPair",call:"shh_newKeyPair",params:0}),new o({name:"addPrivateKey",call:"shh_addPrivateKey",params:1}),new o({name:"deleteKeyPair",call:"shh_deleteKeyPair",params:1}),new o({name:"hasKeyPair",call:"shh_hasKeyPair",params:1}),new o({name:"getPublicKey",call:"shh_getPublicKey",params:1}),new o({name:"getPrivateKey",call:"shh_getPrivateKey",params:1}),new o({name:"newSymKey",call:"shh_newSymKey",params:0}),new o({name:"addSymKey",call:"shh_addSymKey",params:1}),new o({name:"generateSymKeyFromPassword",call:"shh_generateSymKeyFromPassword",params:1}),new o({name:"hasSymKey",call:"shh_hasSymKey",params:1}),new o({name:"getSymKey",call:"shh_getSymKey",params:1}),new o({name:"deleteSymKey",call:"shh_deleteSymKey",params:1}),new o({name:"newMessageFilter",call:"shh_newMessageFilter",params:1}),new o({name:"getFilterMessages",call:"shh_getFilterMessages",params:1}),new o({name:"deleteMessageFilter",call:"shh_deleteMessageFilter",params:1}),new o({name:"post",call:"shh_post",params:1,inputFormatter:[null]}),new o({name:"unsubscribe",call:"shh_unsubscribe",params:1})].forEach((function(e){e.attachToObject(t),e.setRequestManager(t._requestManager)}))};s.prototype.clearSubscriptions=function(){this._requestManager.clearSubscriptions()},n.addProviders(s),t.exports=s},abeb:function(t,e,r){var n,i;(function(r,o){n=[],i=function(){return o()}.apply(e,n),void 0===i||(t.exports=i)})(0,(function(){var t=[new Uint32Array([2157250,2157314,2157378,2157442,2157506,2157570,2157634,0,2157698,2157762,2157826,2157890,2157954,0,2158018,0]),new Uint32Array([2179041,6291456,2179073,6291456,2179105,6291456,2179137,6291456,2179169,6291456,2179201,6291456,2179233,6291456,2179265,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,14680064,14680064,14680064,14680064,14680064]),new Uint32Array([0,2113729,2197345,2197377,2113825,2197409,2197441,2113921,2197473,2114017,2197505,2197537,2197569,2197601,2197633,2197665]),new Uint32Array([6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,23068672,23068672,0,0]),new Uint32Array([6291456,6291456,6291456,6291456,0,0,0,0,23068672,23068672,23068672,0,0,0,0,23068672]),new Uint32Array([14680064,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,14680064,14680064]),new Uint32Array([2196001,2196033,2196065,2196097,2196129,2196161,2196193,2196225,2196257,2196289,2196321,2196353,2196385,2196417,2196449,2196481]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,6291456,0,0,0,0,0]),new Uint32Array([2097281,2105921,2097729,2106081,0,2097601,2162337,2106017,2133281,2097505,2105889,2097185,2097697,2135777,2097633,2097441]),new Uint32Array([2177025,6291456,2177057,6291456,2177089,6291456,2177121,6291456,2177153,6291456,2177185,6291456,2177217,6291456,2177249,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([6291456,6291456,6291456,0,6291456,6291456,0,0,0,0,0,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,6291456]),new Uint32Array([0,23068672,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,6291456]),new Uint32Array([2134435,2134531,2134627,2134723,2134723,2134819,2134819,2134915,2134915,2135011,2105987,2135107,2135203,2135299,2131587,2135395]),new Uint32Array([0,0,0,0,0,0,0,6291456,2168673,2169249,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2147906,2147970,2148034,2148098,2148162,2148226,2148290,2148354,2147906,2147970,2148034,2148098,2148162,2148226,2148290,2148354]),new Uint32Array([2125219,2125315,2152834,2152898,2125411,2152962,2153026,2125506,2125507,2125603,2153090,2153154,2153218,2153282,2153346,2105348]),new Uint32Array([2203393,6291456,2203425,6291456,2203457,6291456,2203489,6291456,6291456,6291456,6291456,2203521,6291456,2181281,6291456,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([6291456,23068672,6291456,2145538,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,0,0,6291456]),new Uint32Array([2139426,2160834,2160898,2160962,2134242,2161026,2161090,2161154,2161218,2161282,2161346,2161410,2138658,2161474,2161538,2134722]),new Uint32Array([2119939,2124930,2125026,2106658,2125218,2128962,2129058,2129154,2129250,2129346,2129442,2108866,2108770,2150466,2150530,2150594]),new Uint32Array([2201601,6291456,2201633,6291456,2201665,6291456,2201697,6291456,2201729,6291456,2201761,6291456,2201793,6291456,2201825,6291456]),new Uint32Array([2193537,2193569,2193601,2193633,2193665,2193697,2193729,2193761,2193793,2193825,2193857,2193889,2193921,2193953,2193985,2194017]),new Uint32Array([6291456,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([0,6291456,6291456,0,0,0,0,0,0,0,0,0,0,0,0,0]),new Uint32Array([2190561,6291456,2190593,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2190625,6291456,2190657,6291456,23068672]),new Uint32Array([2215905,2215937,2215969,2216001,2216033,2216065,2216097,2216129,2216161,2216193,2216225,2216257,2105441,2216289,2216321,2216353]),new Uint32Array([23068672,18884130,23068672,23068672,23068672,6291456,23068672,23068672,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672]),new Uint32Array([23068672,23068672,0,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),new Uint32Array([6291456,6291456,23068672,23068672,0,0,0,0,0,0,0,0,0,0,0,0]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),new Uint32Array([2191233,2191265,2191297,2191329,2191361,2191393,2191425,2117377,2191457,2191489,2191521,2191553,2191585,2191617,2191649,2117953]),new Uint32Array([2132227,2132323,2132419,2132419,2132515,2132515,2132611,2132707,2132707,2132803,2132899,2132899,2132995,2132995,2133091,2133187]),new Uint32Array([0,0,0,0,0,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,6291456,0,0]),new Uint32Array([2112481,2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,10609889,10610785,10609921,10610817,2222241]),new Uint32Array([6291456,6291456,6291456,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,0,0]),new Uint32Array([2219969,2157121,2157441,2157505,2157889,2157953,2220001,2158465,2158529,10575617,2156994,2157058,2129923,2130019,2157122,2157186]),new Uint32Array([6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,0,0,0]),new Uint32Array([2185249,6291456,2185281,6291456,2185313,6291456,2185345,6291456,2185377,6291456,2185409,6291456,2185441,6291456,2185473,6291456]),new Uint32Array([0,0,0,0,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,0,0,23068672,23068672,0,0,23068672,23068672,23068672,6291456,0]),new Uint32Array([2183361,6291456,2183393,6291456,2183425,6291456,2183457,6291456,2183489,6291456,2183521,6291456,2183553,6291456,2183585,6291456]),new Uint32Array([2192161,2192193,2192225,2192257,2192289,2192321,2192353,2192385,2192417,2192449,2192481,2192513,2192545,2192577,2192609,2192641]),new Uint32Array([2212001,2212033,2212065,2212097,2212129,2212161,2212193,2212225,2212257,2212289,2212321,2212353,2212385,2212417,2212449,2207265]),new Uint32Array([2249825,2249857,2249889,2249921,2249954,2250018,2250082,2250145,2250177,2250209,2250241,2250274,2250337,2250370,2250433,2250465]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2147905,2147969,2148033,2148097,2148161,2148225,2148289,2148353]),new Uint32Array([10485857,6291456,2197217,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,23068672,23068672]),new Uint32Array([0,23068672,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456]),new Uint32Array([2180353,2180385,2144033,2180417,2180449,2180481,2180513,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2112481,2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,10610209,10610465,10610241,10610753,10609857]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,0,0]),new Uint32Array([2223842,2223906,2223970,2224034,2224098,2224162,2224226,2224290,2224354,2224418,2224482,2224546,2224610,2224674,2224738,2224802]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,6291456,23068672,23068672,23068672,23068672,23068672]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456]),new Uint32Array([23068672,23068672,23068672,18923650,23068672,23068672,23068672,23068672,0,23068672,23068672,23068672,23068672,18923714,23068672,23068672]),new Uint32Array([2126179,2125538,2126275,2126371,2126467,2125634,2126563,2105603,2105604,2125346,2126659,2126755,2126851,2098179,2098181,2098182]),new Uint32Array([2227426,2227490,2227554,2227618,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2192353,2240642,2240642,2240705,2240737,2240737,2240769,2240802,2240866,2240929,2240961,2240993,2241025,2241057,2241089,2241121]),new Uint32Array([6291456,2170881,2170913,2170945,6291456,2170977,6291456,2171009,2171041,6291456,6291456,6291456,2171073,6291456,6291456,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),new Uint32Array([2132226,2132514,2163586,2132610,2160386,2133090,2133186,2160450,2160514,2160578,2133570,2106178,2160642,2133858,2160706,2160770]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,10532162,10532226,10532290,10532354,10532418,10532482,6291456,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,23068672]),new Uint32Array([2098209,2108353,2108193,2108481,2170241,2111713,2105473,2105569,2105601,2112289,2112481,2098305,2108321,0,0,0]),new Uint32Array([2209121,2209153,2209185,2209217,2209249,2209281,2209313,2209345,2209377,2209409,2209441,2209473,2207265,2209505,2209537,2209569]),new Uint32Array([2189025,6291456,2189057,6291456,2189089,6291456,2189121,6291456,2189153,6291456,2189185,6291456,2189217,6291456,2189249,6291456]),new Uint32Array([2173825,2153473,2173857,2173889,2173921,2173953,2173985,2173761,2174017,2174049,2174081,2174113,2174145,2174177,2149057,2233057]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2165764,2140004]),new Uint32Array([2215105,6291456,2215137,6291456,6291456,2215169,2215201,6291456,6291456,6291456,2215233,2215265,2215297,2215329,2215361,2215393]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([23068672,23068672,6291456,6291456,6291456,23068672,0,0,0,0,0,0,0,0,0,0]),new Uint32Array([10505091,10505187,10505283,10505379,10505475,10505571,10505667,10505763,10505859,10505955,10506051,10506147,10506243,10506339,10506435,10506531]),new Uint32Array([2229730,2229794,2229858,2229922,2229986,2230050,2230114,2230178,2230242,2230306,2230370,2230434,2230498,2230562,2230626,2230690]),new Uint32Array([2105505,2098241,2108353,2108417,2105825,0,2100897,2111905,2105473,2105569,2105601,2112289,2108193,2112481,2112577,2098177]),new Uint32Array([6291456,6291456,6291456,6291456,10502115,10502178,10502211,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([0,23068672,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456]),new Uint32Array([2190305,6291456,2190337,6291456,2190369,6291456,2190401,6291456,2190433,6291456,2190465,6291456,2190497,6291456,2190529,6291456]),new Uint32Array([2173793,2173985,2174017,6291456,2173761,2173697,6291456,2174689,6291456,2174017,2174721,6291456,6291456,2174753,2174785,2174817]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2099521,2099105,2120705,2098369,2120801,2103361,2097985,2098433,2121377,2121473,2099169,2099873,2098401,2099393,2152609,2100033]),new Uint32Array([2132898,2163842,2163906,2133282,2132034,2131938,2137410,2132802,2132706,2164866,2133282,2160578,2165186,2165186,6291456,6291456]),new Uint32Array([10500003,10500099,10500195,10500291,10500387,10500483,10500579,10500675,10500771,10500867,10500963,10501059,10501155,10501251,10501347,10501443]),new Uint32Array([2163458,2130978,2131074,2131266,2131362,2163522,2160130,2132066,2131010,2131106,2106018,2131618,2131298,2132034,2131938,2137410]),new Uint32Array([2212961,2116993,2212993,2213025,2213057,2213089,2213121,2213153,2213185,2213217,2213249,2209633,2213281,2213313,2213345,2213377]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,23068672,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456]),new Uint32Array([2113729,2113825,2113921,2114017,2114113,2114209,2114305,2114401,2114497,2114593,2114689,2114785,2114881,2114977,2115073,2115169]),new Uint32Array([2238177,2238209,2238241,2238273,2238305,2238337,2238337,2217537,2238369,2238401,2238433,2238465,2215649,2238497,2238529,2238561]),new Uint32Array([2108289,2100865,2113153,2108481,2113345,2113441,2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905]),new Uint32Array([6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,0,0]),new Uint32Array([6291456,0,6291456,2145026,0,6291456,2145090,0,6291456,6291456,0,0,23068672,0,23068672,23068672]),new Uint32Array([2099233,2122017,2200673,2098113,2121537,2103201,2200705,2104033,2121857,2121953,2122401,2099649,2099969,2123009,2100129,2100289]),new Uint32Array([6291456,23068672,6291456,0,0,0,0,0,0,0,0,0,0,0,0,0]),new Uint32Array([6291456,6291456,23068672,23068672,0,0,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,0]),new Uint32Array([2187681,2187713,2187745,2187777,2187809,2187841,2187873,2187905,2187937,2187969,2188001,2188033,2188065,2188097,2188129,2188161]),new Uint32Array([0,10554498,10554562,10554626,10554690,10554754,10554818,10554882,10554946,10555010,10555074,6291456,6291456,0,0,0]),new Uint32Array([2235170,2235234,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0]),new Uint32Array([2181153,6291456,2188897,6291456,6291456,2188929,6291456,6291456,6291456,6291456,6291456,6291456,2111905,2100865,2188961,2188993]),new Uint32Array([2100833,2100897,0,0,2101569,2101697,2101825,2101953,2102081,2102209,10575617,2187041,10502177,10489601,10489697,2112289]),new Uint32Array([6291456,2172833,6291456,2172865,2172897,2172929,2172961,6291456,2172993,6291456,2173025,6291456,2173057,6291456,2173089,6291456]),new Uint32Array([6291456,0,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,0,0,23068672,6291456,23068672,23068672]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,2190721]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,23068672,6291456,6291456]),new Uint32Array([2184993,6291456,2185025,6291456,2185057,6291456,2185089,6291456,2185121,6291456,2185153,6291456,2185185,6291456,2185217,6291456]),new Uint32Array([2115265,2115361,2115457,2115553,2115649,2115745,2115841,2115937,2116033,2116129,2116225,2116321,2150658,2150722,2200225,6291456]),new Uint32Array([2168321,6291456,2168353,6291456,2168385,6291456,2168417,6291456,2168449,6291456,2168481,6291456,2168513,6291456,2168545,6291456]),new Uint32Array([23068672,23068672,23068672,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),new Uint32Array([6291456,0,6291456,6291456,6291456,6291456,0,0,0,6291456,6291456,0,6291456,0,6291456,6291456]),new Uint32Array([6291456,6291456,6291456,2186625,0,0,6291456,6291456,2186657,2186689,2186721,2173505,0,10496067,10496163,10496259]),new Uint32Array([2178785,6291456,2178817,6291456,2178849,6291456,2178881,6291456,2178913,6291456,2178945,6291456,2178977,6291456,2179009,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0]),new Uint32Array([2097152,0,0,0,2097152,0,0,0,0,0,0,0,0,0,0,0]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456]),new Uint32Array([6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([0,0,2197857,2197889,2197921,2197953,2197985,2198017,0,0,2198049,2198081,2198113,2198145,2198177,2198209]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2098209,2167297,2111137,6291456]),new Uint32Array([2171393,6291456,2171425,6291456,2171457,6291456,2171489,6291456,2171521,6291456,2171553,6291456,2171585,6291456,2171617,6291456]),new Uint32Array([2206753,2206785,2195457,2206817,2206849,2206881,2206913,2197153,2197153,2206945,2117857,2206977,2207009,2207041,2207073,2207105]),new Uint32Array([0,0,0,0,0,0,0,23068672,0,0,0,0,2144834,2144898,0,2144962]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,23068672]),new Uint32Array([2108193,2112481,2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,2098209,0,2105505,2098241]),new Uint32Array([6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),new Uint32Array([6291456,6291456,2202049,6291456,2202081,6291456,2202113,6291456,2202145,6291456,2202177,6291456,2202209,6291456,2202241,6291456]),new Uint32Array([10501155,10501251,10501347,10501443,10501539,10501635,10501731,10501827,10501923,10502019,2141731,2105505,2098177,2155586,2166530,0]),new Uint32Array([2102081,2102209,2100833,2100737,2098337,2101441,2101569,2101697,2101825,2101953,2102081,2102209,2100833,2100737,2098337,2101441]),new Uint32Array([2146882,2146946,2147010,2147074,2147138,2147202,2147266,2147330,2146882,2146946,2147010,2147074,2147138,2147202,2147266,2147330]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0]),new Uint32Array([10502307,10502403,10502499,10502595,10502691,10502787,10502883,10502979,10503075,10503171,10503267,10503363,10503459,10503555,10503651,10503747]),new Uint32Array([2179937,2179969,2180001,2180033,2156545,2180065,2156577,2180097,2180129,2180161,2180193,2180225,2180257,2180289,2156737,2180321]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,0,0,0,6291456,0,0,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0]),new Uint32Array([2227682,2227746,2227810,2227874,2227938,2228002,2228066,2228130,2228194,2228258,2228322,2228386,2228450,2228514,2228578,2228642]),new Uint32Array([2105601,2169121,2108193,2170049,2181025,2181057,2112481,2108321,2108289,2181089,2170497,2100865,2181121,2173601,2173633,2173665]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2180641,6291456,6291456,6291456]),new Uint32Array([0,6291456,6291456,6291456,0,6291456,0,6291456,0,0,6291456,6291456,0,6291456,6291456,6291456]),new Uint32Array([2178273,6291456,2178305,6291456,2178337,6291456,2178369,6291456,2178401,6291456,2178433,6291456,2178465,6291456,2178497,6291456]),new Uint32Array([6291456,6291456,23068672,23068672,23068672,6291456,0,0,0,0,0,0,0,0,0,0]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,14680064,14680064,14680064,14680064,14680064,14680064]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456]),new Uint32Array([2237377,2237409,2236225,2237441,2237473,2217441,2215521,2215553,2217473,2237505,2237537,2209697,2237569,2215585,2237601,2237633]),new Uint32Array([2221985,2165601,2165601,2165665,2165665,2222017,2222017,2165729,2165729,2158913,2158913,2158913,2158913,2097281,2097281,2105921]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,0,23068672,23068672,23068672,0,23068672,23068672,23068672,23068672,0,0]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2149634,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2176897,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,2176929,6291456,2176961,6291456,2176993,6291456]),new Uint32Array([2172641,6291456,2172673,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2172705,2172737,6291456,2172769,2172801,6291456]),new Uint32Array([2099173,2104196,2121667,2099395,2121763,2152258,2152322,2098946,2152386,2121859,2121955,2099333,2122051,2104324,2099493,2122147]),new Uint32Array([6291456,6291456,6291456,2145794,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,2145858,6291456,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,0,0,6291456,0]),new Uint32Array([0,2105921,2097729,0,2097377,0,0,2106017,0,2097505,2105889,2097185,2097697,2135777,2097633,2097441]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),new Uint32Array([2239074,2239138,2239201,2239233,2239265,2239297,2239329,2239361,0,2239393,2239425,2239425,2239458,2239521,2239553,2209569]),new Uint32Array([14680064,2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289,2108193]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,6291456,23068672]),new Uint32Array([2108321,2108289,2113153,2098209,2180897,2180929,2180961,2111137,2098241,2108353,2170241,2170273,2180993,2105825,6291456,2105473]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2146114,6291456,6291456,6291456,0,0,0]),new Uint32Array([2105921,2105921,2105921,2222049,2222049,2130977,2130977,2130977,2130977,2160065,2160065,2160065,2160065,2097729,2097729,2097729]),new Uint32Array([2218145,2214785,2207937,2218177,2218209,2192993,2210113,2212769,2218241,2218273,2216129,2218305,2216161,2218337,2218369,2218401]),new Uint32Array([0,0,0,2156546,2156610,2156674,2156738,2156802,0,0,0,0,0,2156866,23068672,2156930]),new Uint32Array([23068672,23068672,23068672,0,0,0,0,23068672,23068672,0,0,23068672,23068672,23068672,0,0]),new Uint32Array([2213409,2213441,2213473,2213505,2213537,2213569,2213601,2213633,2213665,2195681,2213697,2213729,2213761,2213793,2213825,2213857]),new Uint32Array([2100033,2099233,2122017,2200673,2098113,2121537,2103201,2200705,2104033,2121857,2121953,2122401,2099649,2099969,2123009,2100129]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0,0]),new Uint32Array([2201857,6291456,2201889,6291456,2201921,6291456,2201953,6291456,2201985,6291456,2202017,6291456,2176193,2176257,23068672,23068672]),new Uint32Array([6291456,6291456,23068672,23068672,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2188193,2188225,2188257,2188289,2188321,2188353,2188385,2188417,2188449,2188481,2188513,2188545,2188577,2188609,2188641,0]),new Uint32Array([10554529,2221089,0,10502113,10562017,10537921,10538049,2221121,2221153,0,0,0,0,0,0,0]),new Uint32Array([2213889,2213921,2213953,2213985,2214017,2214049,2214081,2194177,2214113,2214145,2214177,2214209,2214241,2214273,2214305,2214337]),new Uint32Array([2166978,2167042,2099169,0,0,0,0,0,0,0,0,0,0,0,0,0]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2180545,6291456,6291456,6291456]),new Uint32Array([10518915,10519011,10519107,10519203,2162242,2162306,2159554,2162370,2159362,2159618,2105922,2162434,2159746,2162498,2159810,2159874]),new Uint32Array([2161730,2161794,2135586,2161858,2161922,2137186,2131810,2160290,2135170,2161986,2137954,2162050,2162114,2162178,10518723,10518819]),new Uint32Array([10506627,10506723,10506819,10506915,10507011,10507107,10507203,10507299,10507395,10507491,10507587,10507683,10507779,10507875,10507971,10508067]),new Uint32Array([6291456,23068672,23068672,23068672,0,23068672,23068672,0,0,0,0,0,23068672,23068672,23068672,23068672]),new Uint32Array([23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0]),new Uint32Array([2175873,2175905,2175937,2175969,2176001,2176033,2176065,2176097,2176129,2176161,2176193,2176225,2176257,2176289,2176321,2176353]),new Uint32Array([2140006,2140198,2140390,2140582,2140774,23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,23068672,23068672,23068672]),new Uint32Array([2108193,2112481,2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,2098209,2111137,2105505,2098241]),new Uint32Array([0,23068672,0,0,0,0,0,0,0,2145154,2145218,2145282,6291456,0,2145346,0]),new Uint32Array([0,0,0,0,10531458,10495395,2148545,2143201,2173473,2148865,2173505,0,2173537,0,2173569,2149121]),new Uint32Array([10537282,10495683,2148738,2148802,2148866,0,6291456,2148930,2186593,2173473,2148737,2148865,2148802,10495779,10495875,10495971]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,0,0,0,0,0,0,0,0,0,0,0]),new Uint32Array([2215425,2215457,2215489,2215521,2215553,2215585,2215617,2215649,2215681,2215713,2215745,2215777,2192033,2215809,2215841,2215873]),new Uint32Array([2242049,2242081,2242113,2242145,2242177,2242209,2242241,2242273,2215937,2242305,2242338,2242401,2242433,2242465,2242497,2216001]),new Uint32Array([10554529,2221089,0,0,10562017,10502113,10538049,10537921,2221185,10489601,10489697,10609889,10609921,2141729,2141793,10610273]),new Uint32Array([2141923,2142019,2142115,2142211,2142307,2142403,2142499,2142595,2142691,0,0,0,0,0,0,0]),new Uint32Array([0,2221185,2221217,10609857,10609857,10489601,10489697,10609889,10609921,2141729,2141793,2221345,2221377,2221409,2221441,2187105]),new Uint32Array([6291456,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,18923970,23068672,23068672,23068672,0,6291456,6291456]),new Uint32Array([2183105,6291456,2183137,6291456,2183169,6291456,2183201,6291456,2183233,6291456,2183265,6291456,2183297,6291456,2183329,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0]),new Uint32Array([23068672,23068672,23068672,23068672,0,0,0,0,0,0,0,0,6291456,6291456,6291456,6291456]),new Uint32Array([2134434,2134818,2097666,2097186,2097474,2097698,2105986,2131586,2132450,2131874,2131778,2135970,2135778,2161602,2136162,2161666]),new Uint32Array([2236865,2236897,2236930,2236993,2237025,2235681,2237058,2237121,2237153,2237185,2237217,2217281,2237250,2191233,2237313,2237345]),new Uint32Array([2190049,6291456,2190081,6291456,2190113,6291456,2190145,6291456,2190177,6291456,2190209,6291456,2190241,6291456,2190273,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2101922,2102050,2102178,2102306,10498755,10498851,10498947,10499043,10499139,10499235,10499331,10499427,10499523,10489604,10489732,10489860]),new Uint32Array([2166914,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,0,0,0]),new Uint32Array([2181601,2170561,2181633,2181665,2170753,2181697,2172897,2170881,2181729,2170913,2172929,2113441,2181761,2181793,2171009,2173761]),new Uint32Array([0,2105921,2097729,2106081,0,2097601,2162337,2106017,2133281,2097505,0,2097185,2097697,2135777,2097633,2097441]),new Uint32Array([6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,0,0,0,0]),new Uint32Array([2248001,2248033,2248066,2248130,2248193,2248226,2248289,2248322,2248385,2248417,2216673,2248450,2248514,2248577,2248610,2248673]),new Uint32Array([6291456,6291456,0,0,0,0,0,0,0,6291456,6291456,6291456,6291456,0,0,0]),new Uint32Array([2169729,6291456,2169761,6291456,2169793,6291456,2169825,6291456,2169857,2169889,6291456,2169921,6291456,2143329,6291456,2098305]),new Uint32Array([2162178,2163202,2163266,2135170,2136226,2161986,2137954,2159426,2159490,2163330,2159554,2163394,2159682,2139522,2136450,2159746]),new Uint32Array([2173953,2173985,0,2174017,2174049,2174081,2174113,2174145,2174177,2149057,2174209,2174241,6291456,6291456,6291456,6291456]),new Uint32Array([6291456,6291456,4271169,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2174273]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),new Uint32Array([6291456,6291456,0,0,0,0,0,0,0,6291456,0,0,0,0,0,0]),new Uint32Array([6291456,6291456,6291456,2190785,0,0,0,0,0,0,0,0,0,0,0,0]),new Uint32Array([2189793,6291456,2189825,6291456,2189857,6291456,2189889,6291456,2189921,6291456,2189953,6291456,2189985,6291456,2190017,6291456]),new Uint32Array([2105601,2112289,2108193,2112481,2112577,0,2098305,2108321,2108289,2100865,2113153,2108481,2113345,0,2098209,2111137]),new Uint32Array([2172129,6291456,2172161,6291456,2172193,6291456,2172225,6291456,2172257,6291456,2172289,6291456,2172321,6291456,2172353,6291456]),new Uint32Array([2214753,6291456,2214785,6291456,6291456,2214817,2214849,2214881,2214913,2214945,2214977,2215009,2215041,2215073,2194401,6291456]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,6291456,0,0,0,0,0,0,0,0,0,0]),new Uint32Array([0,0,0,0,6291456,6291456,6291456,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([10610305,10610337,10575617,2221761,10610401,10610433,10502177,0,10610465,10610497,10610529,10610561,0,0,0,0]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,23068672,0,0,0,0,23068672]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2187105,2187137,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2199393,2199425,2199457,2199489,2199521,2199553,2199585,2199617,2199649,2199681,2199713,2199745,2199777,2199809,2199841,0]),new Uint32Array([2217249,2217281,2217313,2217345,2217377,2217409,2217441,2217473,2215617,2217505,2217537,2217569,2214753,2217601,2217633,2217665]),new Uint32Array([2170273,2170305,6291456,2170337,2170369,6291456,2170401,2170433,2170465,6291456,6291456,6291456,2170497,2170529,6291456,2170561]),new Uint32Array([2188673,6291456,2188705,2188737,2188769,6291456,6291456,2188801,6291456,2188833,6291456,2188865,6291456,2180929,2181505,2180897]),new Uint32Array([10489988,10490116,10490244,10490372,10490500,10490628,10490756,10490884,0,0,0,0,0,0,0,0]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2147393,2147457,2147521,2147585,2147649,2147713,2147777,2147841]),new Uint32Array([23068672,23068672,0,23068672,23068672,0,23068672,23068672,23068672,23068672,23068672,0,0,0,0,0]),new Uint32Array([2241153,2241185,2241217,2215809,2241250,2241313,2241345,2241377,2217921,2241377,2241409,2215873,2241441,2241473,2241505,2241537]),new Uint32Array([23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2220417,2220417,2220449,2220449,2220481,2220481,2220513,2220513,2220545,2220545,2220577,2220577,2220609,2220609,2220641,2220641]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,2144002,0,6291456,6291456,0,0,6291456,6291456,6291456]),new Uint32Array([2167105,2167137,2167169,2167201,2167233,2167265,2167297,2167329,2167361,2167393,2167425,2167457,2167489,2167521,2167553,2167585]),new Uint32Array([10575521,2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289,2108193]),new Uint32Array([2234146,2234210,2234274,2234338,2234402,2234466,2234530,2234594,2234658,2234722,2234786,2234850,2234914,2234978,2235042,2235106]),new Uint32Array([0,0,0,0,0,0,0,2180577,0,0,0,0,0,2180609,0,0]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,0,0,6291456,6291456]),new Uint32Array([2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289,2108193,2112481]),new Uint32Array([23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2242529,2242561,2242593,2242625,2242657,2242689,2242721,2242753,2207937,2218177,2242785,2242817,2242849,2242882,2242945,2242977]),new Uint32Array([2118049,2105345,2118241,2105441,2118433,2118529,2118625,2118721,2118817,2200257,2200289,2191809,2200321,2200353,2200385,2200417]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,6291456,6291456]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0]),new Uint32Array([2185505,6291456,2185537,6291456,2185569,6291456,2185601,6291456,2185633,6291456,2185665,6291456,2185697,6291456,2185729,6291456]),new Uint32Array([2231970,2232034,2232098,2232162,2232226,2232290,2232354,2232418,2232482,2232546,2232610,2232674,2232738,2232802,2232866,2232930]),new Uint32Array([2218625,2246402,2246466,2246530,2246594,2246657,2246689,2246689,2218657,2219681,2246721,2246753,2246785,2246818,2246881,2208481]),new Uint32Array([2197025,2197057,2197089,2197121,2197153,2197185,0,0,0,0,0,0,0,0,0,0]),new Uint32Array([2219137,2216961,2219169,2219201,2219233,2219265,2219297,2217025,2215041,2219329,2217057,2219361,2217089,2219393,2197153,2219426]),new Uint32Array([23068672,23068672,23068672,0,0,0,23068672,23068672,23068672,0,23068672,23068672,23068672,23068672,0,0]),new Uint32Array([2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713]),new Uint32Array([2243522,2243585,2243617,2243649,2243681,2210113,2243713,2243746,2243810,2243874,2243937,2243970,2244033,2244065,2244097,2244129]),new Uint32Array([2178017,6291456,2178049,6291456,2178081,6291456,2178113,6291456,2178145,6291456,2178177,6291456,2178209,6291456,2178241,6291456]),new Uint32Array([10553858,2165314,10518722,6291456,10518818,0,10518914,2130690,10519010,2130786,10519106,2130882,10519202,2165378,10554050,2165506]),new Uint32Array([0,0,2135491,2135587,2135683,2135779,2135875,2135971,2135971,2136067,2136163,2136259,2136355,2136355,2136451,2136547]),new Uint32Array([23068672,23068672,23068672,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456]),new Uint32Array([0,0,0,0,0,0,0,0,0,0,0,0,6291456,6291456,6291456,6291456]),new Uint32Array([23068672,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),new Uint32Array([2220033,2220033,2220065,2220065,2220065,2220065,2220097,2220097,2220097,2220097,2220129,2220129,2220129,2220129,2220161,2220161]),new Uint32Array([6291456,6291456,6291456,0,0,0,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,0,23068672,0,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),new Uint32Array([2100897,2100898,2100899,2150018,2100865,2100866,2100867,2100868,2150082,2108481,2109858,2109859,2105569,2105505,2098241,2105601]),new Uint32Array([2097217,2097505,2097505,2097505,2097505,2165570,2165570,2165634,2165634,2165698,2165698,2097858,2097858,0,0,2097152]),new Uint32Array([23068672,6291456,23068672,23068672,23068672,6291456,6291456,23068672,23068672,6291456,6291456,6291456,6291456,6291456,23068672,23068672]),new Uint32Array([23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0]),new Uint32Array([10503843,10503939,10504035,10504131,10504227,10504323,10504419,10504515,10504611,10504707,10504803,10504899,10504995,10491140,10491268,0]),new Uint32Array([2173697,2173729,2148801,2173761,2143969,2173793,2173825,2153473,2173857,2173889,2173921,2173953,2173985,2173761,2174017,2174049]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),new Uint32Array([2134145,2097153,2134241,2105953,2132705,2130977,2160065,2131297,2162049,2133089,2160577,2133857,2235297,2220769,2235329,2235361]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),new Uint32Array([2222401,2222433,2222465,10531394,2222497,2222529,2222561,0,2222593,2222625,2222657,2222689,2222721,2222753,2222785,0]),new Uint32Array([2184481,6291456,2184513,6291456,2184545,6291456,2184577,6291456,2184609,6291456,2184641,6291456,2184673,6291456,2184705,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,23068672,23068672]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,23068672,23068672,0,0,0,0,0,0,0,0,0]),new Uint32Array([2105570,2156034,2126947,2156098,2153666,2127043,2127139,2156162,0,2127235,2156226,2156290,2156354,2156418,2127331,2127427]),new Uint32Array([2215905,2207041,2153185,2241569,2241601,2241633,2241665,2241697,2241730,2241793,2241825,2241857,2241889,2241921,2241954,2242017]),new Uint32Array([2203777,6291456,2203809,6291456,2203841,6291456,2203873,6291456,2203905,6291456,2173121,2180993,2181249,2203937,2181313,0]),new Uint32Array([2168577,6291456,2168609,6291456,2168641,6291456,2168673,6291456,2168705,6291456,2168737,6291456,2168769,6291456,2168801,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456,23068672,23068672,6291456]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,0,23068672,23068672,23068672,0,23068672,23068672,23068672,0,0]),new Uint32Array([2210113,2195521,2210145,2210177,2210209,2210241,2210273,2210305,2210337,2210369,2210401,2210433,2210465,2210497,2210529,2210561]),new Uint32Array([6291456,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0]),new Uint32Array([2228706,2228770,2228834,2228898,2228962,2229026,2229090,2229154,2229218,2229282,2229346,2229410,2229474,2229538,2229602,2229666]),new Uint32Array([23068672,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0,0,0,0]),new Uint32Array([6291456,6291456,6291456,0,0,0,0,0,0,0,0,0,0,0,0,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,18874368,18874368,18874368,0,0]),new Uint32Array([2133089,2133281,2133281,2133281,2133281,2160577,2160577,2160577,2160577,2097441,2097441,2097441,2097441,2133857,2133857,2133857]),new Uint32Array([6291456,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2173825,2153473,2173857,2173889,2173921,2173953,2173985,2174017,2174017,2174049,2174081,2174113,2174145,2174177,2149057,2233089]),new Uint32Array([2178529,6291456,2178561,6291456,2178593,6291456,2178625,6291456,2178657,6291456,2178689,6291456,2178721,6291456,2178753,6291456]),new Uint32Array([2221025,2221025,2221057,2221057,2159329,2159329,2159329,2159329,2097217,2097217,2158914,2158914,2158978,2158978,2159042,2159042]),new Uint32Array([2208161,2208193,2208225,2208257,2194433,2208289,2208321,2208353,2208385,2208417,2208449,2208481,2208513,2208545,2208577,2208609]),new Uint32Array([2169217,6291456,2169249,6291456,2169281,6291456,2169313,6291456,2169345,6291456,2169377,6291456,2169409,6291456,2169441,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456,6291456,6291456,6291456]),new Uint32Array([2133187,2133283,2133283,2133379,2133475,2133571,2133667,2133667,2133763,2133859,2133955,2134051,2134147,2134147,2134243,2134339]),new Uint32Array([2197697,2114113,2114209,2197729,2197761,2114305,2197793,2114401,2114497,2197825,2114593,2114689,2114785,2114881,2114977,0]),new Uint32Array([2193089,2193121,2193153,2193185,2117665,2117569,2193217,2193249,2193281,2193313,2193345,2193377,2193409,2193441,2193473,2193505]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0]),new Uint32Array([6291456,6291456,6291456,0,0,0,0,0,0,0,0,0,0,0,0,0]),new Uint32Array([6291456,6291456,6291456,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2184225,6291456,2184257,6291456,2184289,6291456,2184321,6291456,2184353,6291456,2184385,6291456,2184417,6291456,2184449,6291456]),new Uint32Array([2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,2100833,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672]),new Uint32Array([2098657,2098049,2200737,2123489,2123681,2200769,2098625,2100321,2098145,2100449,2098017,2098753,2200801,2200833,2200865,0]),new Uint32Array([23068672,23068672,23068672,0,0,0,0,0,0,0,0,23068672,23068672,23068672,23068672,23068672]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,0,0,0,0,0]),new Uint32Array([2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,2098209,2111137,0,2098241,2108353,2108417,2105825,0]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2181153,2105505,2181185,2167617,2180993]),new Uint32Array([2160002,2160066,2160130,2160194,2160258,2132066,2131010,2131106,2106018,2131618,2160322,2131298,2132034,2131938,2137410,2132226]),new Uint32Array([6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0,0,0,0,6291456]),new Uint32Array([2183617,6291456,2183649,6291456,2183681,6291456,2183713,6291456,2183745,6291456,2183777,6291456,2183809,6291456,2183841,6291456]),new Uint32Array([0,6291456,6291456,0,6291456,0,0,6291456,6291456,0,6291456,0,0,6291456,0,0]),new Uint32Array([2250977,2251009,2251041,2251073,2195009,2251106,2251169,2251201,2251233,2251265,2251297,2251330,2251394,2251457,2251489,2251521]),new Uint32Array([2205729,2205761,2205793,2205825,2205857,2205889,2205921,2205953,2205985,2206017,2206049,2206081,2206113,2206145,2206177,2206209]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2143170,2168993,6291456,2169025,6291456,2169057,6291456,2169089,6291456,2143234,2169121,6291456,2169153,6291456,2169185,6291456]),new Uint32Array([23068672,23068672,2190689,6291456,0,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2248706,2248769,2248801,2248833,2248865,2248897,2248929,2248962,2249026,2249090,2249154,2240705,2249217,2249249,2249281,2249313]),new Uint32Array([10485857,6291456,6291456,6291456,6291456,6291456,6291456,6291456,10495394,6291456,2098209,6291456,6291456,2097152,6291456,10531394]),new Uint32Array([0,6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456,6291456,6291456,6291456,6291456,6291456,0]),new Uint32Array([14680064,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2173985,2173953,2148481,2173601,2173633,2173665,2173697,2173729,2148801,2173761,2143969,2173793,2173825,2153473,2173857,2173889]),new Uint32Array([6291456,2186977,6291456,6291456,6291456,6291456,6291456,10537858,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2209601,2209633,2209665,2209697,2209729,2209761,2209793,2209825,2209857,2209889,2209921,2209953,2209985,2210017,2210049,2210081]),new Uint32Array([10501539,10501635,10501731,10501827,10501923,10502019,2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905]),new Uint32Array([2173697,2173729,2148801,2173761,2143969,2173793,2173825,2153473,2173857,2173889,2173921,2173953,2173985,2174017,2174017,2174049]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,0,0]),new Uint32Array([6291456,6291456,23068672,23068672,23068672,0,0,0,0,0,0,0,0,0,0,0]),new Uint32Array([2194561,2194593,2194625,2119777,2119873,2194657,2194689,2194721,2194753,2194785,2194817,2194849,2194881,2194913,2194945,2194977]),new Uint32Array([2113153,2108481,2113345,2113441,2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905,2105473,2105569]),new Uint32Array([2222818,2222882,2222946,2223010,2223074,2223138,2223202,2223266,2223330,2223394,2223458,2223522,2223586,2223650,2223714,2223778]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672]),new Uint32Array([0,2179553,2179585,2179617,2179649,2144001,2179681,2179713,2179745,2179777,2179809,2156705,2179841,2156833,2179873,2179905]),new Uint32Array([6291456,23068672,6291456,2145602,23068672,23068672,23068672,23068672,23068672,23068672,0,23068672,23068672,6291456,0,0]),new Uint32Array([2196513,2196545,2196577,2196609,2196641,2196673,2196705,2196737,2196769,2196801,2196833,2196865,2196897,2196929,2196961,2196993]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2177281,6291456,2177313,6291456,2177345,6291456,2177377,6291456,2177409,6291456,2177441,6291456,2177473,6291456,2177505,6291456]),new Uint32Array([2187137,2221473,2221505,2221537,2221569,6291456,6291456,10610209,10610241,10537986,10537986,10537986,10537986,10609857,10609857,10609857]),new Uint32Array([2243009,2243041,2216033,2243074,2243137,2243169,2243201,2219617,2243233,2243265,2243297,2243329,2243362,2243425,2243457,2243489]),new Uint32Array([10485857,10485857,10485857,10485857,10485857,10485857,10485857,10485857,10485857,10485857,10485857,2097152,4194304,4194304,0,0]),new Uint32Array([2143042,6291456,2143106,2143106,2168833,6291456,2168865,6291456,6291456,2168897,6291456,2168929,6291456,2168961,6291456,2143170]),new Uint32Array([6291456,6291456,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2204193,2204225,2204257,2204289,2204321,2204353,2204385,2204417,2204449,2204481,2204513,2204545,2204577,2204609,2204641,2204673]),new Uint32Array([2202753,6291456,2202785,6291456,2202817,6291456,2202849,6291456,2202881,6291456,2202913,6291456,2202945,6291456,2202977,6291456]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,23068672,23068672,23068672,23068672,23068672]),new Uint32Array([2108353,2108417,2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289,2108193,2112481,2112577,2098177,2098305,2108321]),new Uint32Array([2147394,2147458,2147522,2147586,2147650,2147714,2147778,2147842,2147394,2147458,2147522,2147586,2147650,2147714,2147778,2147842]),new Uint32Array([2253313,2253346,2253409,2253441,2253473,2253505,2253537,2253569,2253601,2253634,2219393,2253697,2253729,2253761,2253793,2253825]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,6291456,6291456]),new Uint32Array([2162562,2162626,2131362,2162690,2159938,2160002,2162754,2162818,2160130,2162882,2160194,2160258,2160834,2160898,2161026,2161090]),new Uint32Array([2175361,2175393,2175425,2175457,2175489,2175521,2175553,2175585,2175617,2175649,2175681,2175713,2175745,2175777,2175809,2175841]),new Uint32Array([2253858,2253921,2253954,2254018,2254082,2196737,2254145,2196865,2254177,2254209,2254241,2254273,2197025,2254306,0,0]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2202113,2204129,2188705,2204161]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,0,6291456,6291456,6291456,6291456,0,0]),new Uint32Array([2173985,2174017,2174017,2174049,2174081,2174113,2174145,2174177,2149057,2233089,2173697,2173761,2173793,2174113,2173985,2173953]),new Uint32Array([2101569,2101697,2101825,2101953,2102081,2102209,2100833,2100737,2098337,2101441,2101569,2101697,2101825,2101953,2102081,2102209]),new Uint32Array([2108289,2100865,2113153,2108481,2113345,2113441,2098209,2111137,2105505,2098241,0,2108417,0,2111713,2100897,2111905]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,0,0,0,0,0,0]),new Uint32Array([2175425,2175489,2175809,2175905,2175937,2175937,2176193,2176417,2180865,0,0,0,0,0,0,0]),new Uint32Array([6291456,6291456,6291456,6291456,2143298,2143298,2143298,2143362,2143362,2143362,2143426,2143426,2143426,2171105,6291456,2171137]),new Uint32Array([2120162,2120258,2151618,2151682,2151746,2151810,2151874,2151938,2152002,2120035,2120131,2120227,2152066,2120323,2152130,2120419]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,0,0,0,0,0,23068672,23068672,23068672,23068672,23068672]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2195361,2142433,2236065,2236097,2236129,2236161,2118241,2117473,2236193,2236225,2236257,2236289,0,0,0,0]),new Uint32Array([2189281,6291456,2189313,6291456,2189345,6291456,2189377,6291456,2189409,6291456,2189441,6291456,2189473,6291456,2189505,6291456]),new Uint32Array([6291456,6291456,2145922,6291456,6291456,6291456,6291456,2145986,6291456,6291456,6291456,6291456,2146050,6291456,6291456,6291456]),new Uint32Array([2100833,2100737,2098337,2101441,2101569,2101697,2101825,2101953,2102081,2102209,10502113,10562017,10610401,10502177,10610433,10538049]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,2186401,0,2186433,0,2186465,0,2186497]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,23068672,23068672,23068672]),new Uint32Array([0,0,2198241,2198273,2198305,2198337,2198369,2198401,0,0,2198433,2198465,2198497,0,0,0]),new Uint32Array([6291456,0,6291456,6291456,6291456,6291456,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,0,6291456,0,23068672,23068672,23068672,23068672,23068672,23068672,0,0]),new Uint32Array([6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,0,0,23068672,6291456,23068672,23068672]),new Uint32Array([0,2105921,2097729,0,2097377,0,0,2106017,2133281,2097505,2105889,0,2097697,2135777,2097633,2097441]),new Uint32Array([2197889,2197921,2197953,2197985,2198017,2198049,2198081,2198113,2198145,2198177,2198209,2198241,2198273,2198305,2198337,2198369]),new Uint32Array([2132514,2132610,2160386,2133090,2133186,2160450,2160514,2133282,2160578,2133570,2106178,2160642,2133858,2160706,2160770,2134146]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,23068672,23068672,0,0,0,0,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([6291456,23068672,23068672,6291456,23068672,23068672,6291456,23068672,0,0,0,0,0,0,0,0]),new Uint32Array([2184737,6291456,2184769,6291456,2184801,6291456,2184833,6291456,2184865,6291456,2184897,6291456,2184929,6291456,2184961,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,0,6291456,6291456,6291456,6291456,0,6291456]),new Uint32Array([6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([23068672,23068672,23068672,23068672,6291456,23068672,23068672,23068672,6291456,23068672,23068672,23068672,23068672,23068672,0,0]),new Uint32Array([6291456,6291456,6291456,2186753,6291456,6291456,6291456,6291456,2186785,2186817,2186849,2173569,2186881,10496355,10495395,10575521]),new Uint32Array([0,0,2097729,0,0,0,0,2106017,0,2097505,0,2097185,0,2135777,2097633,2097441]),new Uint32Array([2189537,6291456,2189569,6291456,2189601,6291456,2189633,6291456,2189665,6291456,2189697,6291456,2189729,6291456,2189761,6291456]),new Uint32Array([2202497,6291456,2202529,6291456,2202561,6291456,2202593,6291456,2202625,6291456,2202657,6291456,2202689,6291456,2202721,6291456]),new Uint32Array([2245217,2218369,2245249,2245282,2245345,2245377,2245410,2245474,2245537,2245569,2245601,2245633,2245665,2245665,2245697,2245729]),new Uint32Array([6291456,0,23068672,23068672,0,0,0,0,0,0,0,0,0,0,0,0]),new Uint32Array([6291456,0,0,0,0,0,0,23068672,0,0,0,0,0,0,0,0]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,23068672,6291456,23068672,6291456,23068672,6291456,6291456,6291456,6291456,23068672,23068672]),new Uint32Array([0,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0,0]),new Uint32Array([2097281,2105921,2097729,2106081,2097377,2097601,2162337,2106017,2133281,2097505,0,2097185,2097697,2135777,2097633,2097441]),new Uint32Array([2176641,6291456,2176673,6291456,2176705,6291456,2176737,6291456,2176769,6291456,2176801,6291456,2176833,6291456,2176865,6291456]),new Uint32Array([2174145,2174177,2149057,2233089,2173697,2173761,2173793,2174113,2173985,2173953,2174369,2174369,0,0,2100833,2100737]),new Uint32Array([2116513,2190817,2190849,2190881,2190913,2190945,2116609,2190977,2191009,2191041,2191073,2117185,2191105,2191137,2191169,2191201]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,6291456,6291456,6291456]),new Uint32Array([0,0,0,0,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456]),new Uint32Array([2167617,2167649,2167681,2167713,2167745,2167777,2167809,6291456,2167841,2167873,2167905,2167937,2167969,2168001,2168033,4240130]),new Uint32Array([2165122,2163970,2164034,2164098,2164162,2164226,2164290,2164354,2164418,2164482,2164546,2133122,2134562,2132162,2132834,2136866]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,0,2186209,2186241,2186273,2186305,2186337,2186369,0,0]),new Uint32Array([2112481,2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,14680064,14680064,14680064,14680064,14680064]),new Uint32Array([0,0,23068672,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,6291456,6291456]),new Uint32Array([0,10537921,10610689,10610273,10610497,10610529,10610305,10610721,10489601,10489697,10610337,10575617,10554529,2221761,2197217,10496577]),new Uint32Array([2105473,2105569,2105601,2112289,0,2112481,2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441]),new Uint32Array([2100897,2111905,2105473,2105569,2105601,2112289,2108193,2112481,2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481]),new Uint32Array([2125346,2153410,2153474,2127394,2153538,2153602,2153666,2153730,2105507,2105476,2153794,2153858,2153922,2153986,2154050,2105794]),new Uint32Array([2200449,2119681,2200481,2153313,2199873,2199905,2199937,2200513,2200545,2200577,2200609,2119105,2119201,2119297,2119393,2119489]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2175777,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2222273,2197217,2221473,2221505,2221089,2222305,2200865,2099681,2104481,2222337,2099905,2120737,2222369,2103713,2100225,2098785]),new Uint32Array([2201377,6291456,2201409,6291456,2201441,6291456,2201473,6291456,2201505,6291456,2201537,6291456,2201569,6291456,6291456,23068672]),new Uint32Array([2174081,2174113,2174145,2174177,2149057,2233057,2148481,2173601,2173633,2173665,2173697,2173729,2148801,2173761,2143969,2173793]),new Uint32Array([2200897,6291456,2200929,6291456,2200961,6291456,2200993,6291456,2201025,6291456,2180865,6291456,2201057,6291456,2201089,6291456]),new Uint32Array([0,0,0,0,0,23068672,23068672,0,6291456,6291456,6291456,0,0,0,0,0]),new Uint32Array([2161154,2161410,2138658,2161474,2161538,2097666,2097186,2097474,2162946,2132450,2163010,2163074,2136162,2163138,2161666,2161730]),new Uint32Array([2148481,2173601,2173633,2173665,2173697,2173729,2148801,2173761,2143969,2173793,2173825,2153473,2173857,2173889,2173921,2173953]),new Uint32Array([0,0,0,0,0,0,23068672,23068672,0,0,0,0,2145410,2145474,0,6291456]),new Uint32Array([2244161,2216065,2212769,2244193,2244225,2244257,2244290,2244353,2244385,2244417,2244449,2218273,2244481,2244514,2244577,2244609]),new Uint32Array([2125730,2125699,2125795,2125891,2125987,2154114,2154178,2154242,2154306,2154370,2154434,2154498,2126082,2126178,2126274,2126083]),new Uint32Array([2237665,2237697,2237697,2237697,2237730,2237793,2237825,2237857,2237890,2237953,2237985,2238017,2238049,2238081,2238113,2238145]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2150146,6291456,6291456,6291456]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,0,0,23068672,23068672,0,0,23068672,23068672,23068672,0,0]),new Uint32Array([2214369,2238593,2238625,2238657,2238689,2238721,2238753,2238785,2238817,2238850,2238913,2238945,2238977,2235457,2239009,2239041]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0]),new Uint32Array([2252066,2252130,2252193,2252225,2252257,2252290,2252353,2252385,2252417,2252449,2252481,2252513,2252545,2252578,2252641,2252673]),new Uint32Array([2197697,2114113,2114209,2197729,2197761,2114305,2197793,2114401,2114497,2197825,2114593,2114689,2114785,2114881,2114977,2197857]),new Uint32Array([2224866,2224930,2224994,2225058,2225122,2225186,2225250,2225314,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2219490,2219554,2219617,2219649,2219681,2219714,2219778,2219842,2219905,2219937,0,0,0,0,0,0]),new Uint32Array([6291456,23068672,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456]),new Uint32Array([2113345,2113441,2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289]),new Uint32Array([2174081,2174113,2174145,2174177,2149057,2233089,2173697,2173761,2173793,2174113,2173985,2173953,2148481,2173601,2173633,2173665]),new Uint32Array([2220161,2220161,2220193,2220193,2220193,2220193,2220225,2220225,2220225,2220225,2220257,2220257,2220257,2220257,2220289,2220289]),new Uint32Array([2192673,2192705,2192737,2192769,2192801,2192833,2192865,2118049,2192897,2117473,2117761,2192929,2192961,2192993,2193025,2193057]),new Uint32Array([2179297,6291456,2179329,6291456,2179361,6291456,2179393,6291456,2179425,6291456,2179457,6291456,2179489,6291456,2179521,6291456]),new Uint32Array([6291456,6291456,6291456,23068672,6291456,6291456,6291456,0,0,0,0,0,0,0,0,0]),new Uint32Array([2235745,2235777,2193633,2235809,2235841,2235873,2235905,2235937,2235969,2116513,2116705,2236001,2200513,2199905,2200545,2236033]),new Uint32Array([2113153,2108481,2113345,2113441,2232993,2233025,0,0,2148481,2173601,2173633,2173665,2173697,2173729,2148801,2173761]),new Uint32Array([2170593,6291456,2170625,6291456,2170657,6291456,2170689,2170721,6291456,2170753,6291456,6291456,2170785,6291456,2170817,2170849]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2166786,2166850,0,0,0,0]),new Uint32Array([23068672,6291456,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456]),new Uint32Array([2100833,2100737,2098337,2101441,2101569,2101697,2101825,2101953,2102081,2102209,10575617,2187041,10502177,10489601,10489697,0]),new Uint32Array([0,0,0,0,0,0,0,0,0,0,0,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2134562,2132162,2132834,2136866,2136482,2164610,2164674,2164738,2164802,2132802,2132706,2164866,2132898,2164930,2164994,2165058]),new Uint32Array([6291456,6291456,2098337,2101441,10531458,2153473,6291456,6291456,10531522,2100737,2108193,6291456,2106499,2106595,2106691,6291456]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,0,0,0,0,0,0,0]),new Uint32Array([2233122,2233186,2233250,2233314,2233378,2233442,2233506,2233570,2233634,2233698,2233762,2233826,2233890,2233954,2234018,2234082]),new Uint32Array([23068672,6291456,23068672,23068672,23068672,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,6291456,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0,0,0,0]),new Uint32Array([2205217,2205249,2205281,2205313,2205345,2205377,2205409,2205441,2205473,2205505,2205537,2205569,2205601,2205633,2205665,2205697]),new Uint32Array([6291456,0,6291456,0,0,0,6291456,6291456,6291456,6291456,0,0,23068672,6291456,23068672,23068672]),new Uint32Array([2173601,2173761,2174081,2173569,2174241,2174113,2173953,6291456,2174305,6291456,2174337,6291456,2174369,6291456,2174401,6291456]),new Uint32Array([6291456,23068672,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456]),new Uint32Array([2152450,2152514,2099653,2104452,2099813,2122243,2099973,2152578,2122339,2122435,2122531,2122627,2122723,2104580,2122819,2152642]),new Uint32Array([2236385,2236417,2236449,2236482,2236545,2215425,2236577,2236609,2236641,2236673,2215457,2236705,2236737,2236770,2215489,2236833]),new Uint32Array([2163394,2159746,2163458,2131362,2163522,2160130,2163778,2132226,2163842,2132898,2163906,2161410,2138658,2097666,2136162,2163650]),new Uint32Array([2218721,2246913,2246946,2216385,2247010,2247074,2215009,2247137,2247169,2216481,2247201,2247233,2247266,2247330,2247330,0]),new Uint32Array([2129730,2129762,2129858,2129731,2129827,2156482,2156482,0,0,0,0,0,0,0,0,0]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,6291456,6291456,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,0,0,0,0,0,6291456,0,0]),new Uint32Array([2203969,2204001,2181377,2204033,2204065,6291456,2204097,6291456,0,0,0,0,0,0,0,0]),new Uint32Array([2169473,6291456,2169505,6291456,2169537,6291456,2169569,6291456,2169601,6291456,2169633,6291456,2169665,6291456,2169697,6291456]),new Uint32Array([2141542,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2220801,2220801,2220801,2220801,2220833,2220833,2220865,2220865,2220865,2220865,2220897,2220897,2220897,2220897,2139873,2139873]),new Uint32Array([0,0,0,0,0,23068672,23068672,0,0,0,0,0,0,0,6291456,0]),new Uint32Array([2214849,2218433,2218465,2218497,2218529,2218561,2214881,2218593,2218625,2218657,2218689,2218721,2218753,2216545,2218785,2218817]),new Uint32Array([23068672,23068672,23068672,23068672,0,0,0,0,0,0,0,0,0,0,0,6291456]),new Uint32Array([2136482,2164610,2164674,2164738,2164802,2132802,2132706,2164866,2132898,2164930,2164994,2165058,2165122,2132802,2132706,2164866]),new Uint32Array([2207649,2207681,2207713,2207745,2207777,2207809,2207841,2207873,2207905,2207937,2207969,2208001,2208033,2208065,2208097,2208129]),new Uint32Array([2123683,2105092,2152706,2123779,2105220,2152770,2100453,2098755,2123906,2124002,2124098,2124194,2124290,2124386,2124482,2124578]),new Uint32Array([6291456,6291456,6291456,6291456,0,0,0,6291456,0,0,0,0,0,0,0,10485857]),new Uint32Array([6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),new Uint32Array([10508163,10508259,10508355,10508451,2200129,2200161,2192737,2200193,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2203553,6291456,2203585,6291456,6291456,6291456,2203617,6291456,2203649,6291456,2203681,6291456,2203713,6291456,2203745,6291456]),new Uint32Array([18884449,18884065,23068672,18884417,18884034,18921185,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,18874368]),new Uint32Array([2247393,2247426,2247489,2247521,2247553,2247586,2247649,2247681,2247713,2247745,2247777,2247810,2247873,2247905,2247937,2247969]),new Uint32Array([6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,23068672]),new Uint32Array([2134145,2097153,2134241,0,2132705,2130977,2160065,2131297,0,2133089,2160577,2133857,2235297,0,2235329,0]),new Uint32Array([2182593,6291456,2182625,6291456,2182657,6291456,2182689,6291456,2182721,6291456,2182753,6291456,2182785,6291456,2182817,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2102402,2102403,6291456,2110050]),new Uint32Array([2149890,2108323,2149954,6291456,2113441,6291456,2149057,6291456,2113441,6291456,2105473,2167265,2111137,2105505,6291456,2108353]),new Uint32Array([2219105,2219137,2195233,2251554,2251617,2251649,2251681,2251713,2251746,2251810,2251873,2251905,2251937,2251970,2252033,2219169]),new Uint32Array([2203009,6291456,2203041,6291456,2203073,6291456,2203105,6291456,2203137,6291456,2203169,6291456,2203201,6291456,2203233,6291456]),new Uint32Array([2128195,2128291,2128387,2128483,2128579,2128675,2128771,2128867,2128963,2129059,2129155,2129251,2129347,2129443,2129539,2129635]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2140964,2141156,2140966,2141158,2141350]),new Uint32Array([0,0,0,0,0,0,0,0,0,0,0,23068672,23068672,23068672,23068672,23068672]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672]),new Uint32Array([2225378,2225442,2225506,2225570,2225634,2225698,2225762,2225826,2225890,2225954,2226018,2226082,2226146,2226210,2226274,2226338]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([23068672,23068672,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,2098209,2111137,2105505,2098241,2108353,2108417]),new Uint32Array([2108353,2108417,0,2105601,2108193,2157121,2157313,2157377,2157441,2100897,6291456,2108419,2173953,2173633,2173633,2173953]),new Uint32Array([2111713,2173121,2111905,2098177,2173153,2173185,2173217,2113153,2113345,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,2190753]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,2197249,6291456,2117377,2197281,2197313,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([6291456,0,0,0,0,0,0,23068672,0,0,0,0,0,6291456,6291456,6291456]),new Uint32Array([2098337,2101441,2101569,2101697,2101825,2101953,2102081,2102209,2100833,2100737,2098337,2101441,2101569,2101697,2101825,2101953]),new Uint32Array([23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0]),new Uint32Array([0,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,23068672,23068672,23068672]),new Uint32Array([2173281,6291456,2173313,6291456,2173345,6291456,2173377,6291456,0,0,10532546,6291456,6291456,6291456,10562017,2173441]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,0,0]),new Uint32Array([23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2159426,2159490,2159554,2159362,2159618,2159682,2139522,2136450,2159746,2159810,2159874,2130978,2131074,2131266,2131362,2159938]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2203233,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2203265,6291456,2203297,6291456,2203329,2203361,6291456]),new Uint32Array([6291456,6291456,2148418,2148482,2148546,0,6291456,2148610,2186529,2186561,2148417,2148545,2148482,10495778,2143969,10495778]),new Uint32Array([2134146,2139426,2160962,2134242,2161218,2161282,2161346,2161410,2138658,2134722,2134434,2134818,2097666,2097346,2097698,2105986]),new Uint32Array([2198881,2198913,2198945,2198977,2199009,2199041,2199073,2199105,2199137,2199169,2199201,2199233,2199265,2199297,2199329,2199361]),new Uint32Array([0,23068672,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456]),new Uint32Array([10610561,2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289,2108193]),new Uint32Array([2183873,6291456,2183905,6291456,2183937,6291456,2183969,6291456,2184001,6291456,2184033,6291456,2184065,6291456,2184097,6291456]),new Uint32Array([2244642,2244706,2244769,2244801,2218305,2244833,2244865,2244897,2244929,2244961,2244993,2245026,2245089,2245122,2245185,0]),new Uint32Array([6291456,6291456,2116513,2116609,2116705,2116801,2199873,2199905,2199937,2199969,2190913,2200001,2200033,2200065,2200097,2191009]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,0,2180673,2180705,2180737,2180769,2180801,2180833,0,0]),new Uint32Array([2098081,2099521,2099105,2120705,2098369,2120801,2103361,2097985,2098433,2121377,2121473,2099169,2099873,2098401,2099393,2152609]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2150402]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,2145666,2145730,6291456,6291456]),new Uint32Array([2173921,2173953,2173985,2173761,2174017,2174049,2174081,2174113,2174145,2174177,2149057,2233057,2148481,2173601,2173633,2173665]),new Uint32Array([2187073,6291456,6291456,6291456,6291456,2098241,2098241,2108353,2100897,2111905,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2102404,6291456,6291456,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,2100612,6291456,6291456,6291456,6291456,6291456,6291456,6291456,10485857]),new Uint32Array([2149057,2233057,2148481,2173601,2173633,2173665,2173697,2173729,2148801,2173761,2143969,2173793,2173825,2153473,2173857,2173889]),new Uint32Array([2217697,2217729,2217761,2217793,2217825,2217857,2217889,2217921,2217953,2215873,2217985,2215905,2218017,2218049,2218081,2218113]),new Uint32Array([2211233,2218849,2216673,2218881,2218913,2218945,2218977,2219009,2216833,2219041,2215137,2219073,2216865,2209505,2219105,2216897]),new Uint32Array([2240097,2240129,2240161,2240193,2240225,2240257,2240289,2240321,2240353,2240386,2240449,2240481,2240513,2240545,2207905,2240578]),new Uint32Array([6291456,6291456,2202273,6291456,2202305,6291456,2202337,6291456,2202369,6291456,2202401,6291456,2202433,6291456,2202465,6291456]),new Uint32Array([0,23068672,23068672,18923394,23068672,18923458,18923522,18884099,18923586,18884195,23068672,23068672,23068672,23068672,23068672,23068672]),new Uint32Array([2201121,6291456,2201153,6291456,2201185,6291456,2201217,6291456,2201249,6291456,2201281,6291456,2201313,6291456,2201345,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,6291456,6291456]),new Uint32Array([2211041,2211073,2211105,2211137,2211169,2211201,2211233,2211265,2211297,2211329,2211361,2211393,2211425,2211457,2211489,2211521]),new Uint32Array([2181825,6291456,2181857,6291456,2181889,6291456,2181921,6291456,2181953,6291456,2181985,6291456,2182017,6291456,2182049,6291456]),new Uint32Array([2162337,2097633,2097633,2097633,2097633,2132705,2132705,2132705,2132705,2097153,2097153,2097153,2097153,2133089,2133089,2133089]),new Uint32Array([6291456,6291456,6291456,6291456,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([6291456,2148545,6291456,2173473,6291456,2148865,6291456,2173505,6291456,2173537,6291456,2173569,6291456,2149121,0,0]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0,0,0]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456,0,6291456,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0]),new Uint32Array([2148801,2173761,2143969,2173793,2173825,2153473,2173857,2173889,2173921,2173953,2173985,2174017,2174017,2174049,2174081,2174113]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),new Uint32Array([2207137,2207169,2207201,2207233,2207265,2207297,2207329,2207361,2207393,2207425,2207457,2207489,2207521,2207553,2207585,2207617]),new Uint32Array([6291456,6291456,23068672,23068672,23068672,6291456,6291456,0,23068672,23068672,0,0,0,0,0,0]),new Uint32Array([2198401,2198433,2198465,2198497,0,2198529,2198561,2198593,2198625,2198657,2198689,2198721,2198753,2198785,2198817,2198849]),new Uint32Array([2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289,2108193,2112481,2112577,2098177]),new Uint32Array([23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,0,0]),new Uint32Array([2216385,2118721,2216417,2216449,2216481,2216513,2216545,2211233,2216577,2216609,2216641,2216673,2216705,2216737,2216737,2216769]),new Uint32Array([2216801,2216833,2216865,2216897,2216929,2216961,2216993,2215169,2217025,2217057,2217089,2217121,2217154,2217217,0,0]),new Uint32Array([2210593,2191809,2210625,2210657,2210689,2210721,2210753,2210785,2210817,2210849,2191297,2210881,2210913,2210945,2210977,2211009]),new Uint32Array([0,0,2105825,0,0,2111905,2105473,0,0,2112289,2108193,2112481,2112577,0,2098305,2108321]),new Uint32Array([0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([0,2097153,2134241,0,2132705,0,0,2131297,0,2133089,0,2133857,0,2220769,0,2235361]),new Uint32Array([14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,6291456,6291456,14680064]),new Uint32Array([23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0]),new Uint32Array([2171873,6291456,2171905,6291456,2171937,6291456,2171969,6291456,2172001,6291456,2172033,6291456,2172065,6291456,2172097,6291456]),new Uint32Array([2220929,2220929,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2133857,2134145,2134145,2134145,2134145,2134241,2134241,2134241,2134241,2105889,2105889,2105889,2105889,2097185,2097185,2097185]),new Uint32Array([2173697,2173761,2173793,2174113,2173985,2173953,2148481,2173601,2173633,2173665,2173697,2173729,2148801,2173761,2143969,2173793]),new Uint32Array([0,0,0,0,0,0,0,0,0,0,0,0,10499619,10499715,10499811,10499907]),new Uint32Array([0,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),new Uint32Array([6291456,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23068672]),new Uint32Array([6291456,6291456,6291456,6291456,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,0,0,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,0,6291456]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,0,23068672,23068672,23068672,0,23068672,23068672,23068672,23068672,6291456,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,6291456,23068672,23068672]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,0,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,2144322,2144386,2144450,2144514,2144578,2144642,2144706,2144770]),new Uint32Array([23068672,23068672,23068672,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456]),new Uint32Array([2113153,2108481,2113345,2113441,2098209,2111137,0,2098241,2108353,2108417,2105825,0,0,2111905,2105473,2105569]),new Uint32Array([2236321,2236353,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),new Uint32Array([2152194,2121283,2103684,2103812,2097986,2098533,2097990,2098693,2098595,2098853,2099013,2103940,2121379,2121475,2121571,2104068]),new Uint32Array([2206241,2206273,2206305,2206337,2206369,2206401,2206433,2206465,2206497,2206529,2206561,2206593,2206625,2206657,2206689,2206721]),new Uint32Array([6291456,6291456,6291456,6291456,16777216,16777216,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,23068672,23068672,10538818,10538882,6291456,6291456,2150338]),new Uint32Array([6291456,6291456,6291456,0,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2214369,2214401,2214433,2214465,2214497,2214529,2214561,2214593,2194977,2214625,2195073,2214657,2214689,2214721,6291456,6291456]),new Uint32Array([2097152,2097152,2097152,2097152,0,0,0,0,0,0,0,0,0,0,0,0]),new Uint32Array([2182081,6291456,2182113,6291456,2182145,6291456,2182177,6291456,2182209,6291456,2182241,6291456,2182273,6291456,2182305,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2146881,2146945,2147009,2147073,2147137,2147201,2147265,2147329]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456,23068672,23068672]),new Uint32Array([0,0,0,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2122915,2123011,2123107,2104708,2123203,2123299,2123395,2100133,2104836,2100290,2100293,2104962,2104964,2098052,2123491,2123587]),new Uint32Array([23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456]),new Uint32Array([6291456,2171169,6291456,2171201,6291456,2171233,6291456,2171265,6291456,2171297,6291456,2171329,6291456,6291456,2171361,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([0,0,2148994,2149058,2149122,0,6291456,2149186,2186945,2173537,2148993,2149121,2149058,10531458,10496066,0]),new Uint32Array([2195009,2195041,2195073,2195105,2195137,2195169,2195201,2195233,2195265,2195297,2195329,2195361,2195393,2195425,2195457,2195489]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,0,0,6291456,6291456]),new Uint32Array([2182849,6291456,2182881,6291456,2182913,6291456,2182945,6291456,2182977,6291456,2183009,6291456,2183041,6291456,2183073,6291456]),new Uint32Array([2211553,2210081,2211585,2211617,2211649,2211681,2211713,2211745,2211777,2211809,2209569,2211841,2211873,2211905,2211937,2211969]),new Uint32Array([2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,2166594,2127298,2166658,2142978,2141827,2166722]),new Uint32Array([2173985,2173761,2174017,2174049,2174081,2174113,2174145,2174177,2149057,2233057,2148481,2173601,2173633,2173665,2173697,2173729]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,0,2185761,2185793,2185825,2185857,2185889,2185921,0,0]),new Uint32Array([6291456,2148481,2173601,2173633,2173665,2173697,2173729,2148801,2173761,2143969,2173793,2173825,2153473,2173857,2173889,2173921]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,6291456]),new Uint32Array([0,0,0,2220961,2220961,2220961,2220961,2144193,2144193,2159201,2159201,2159265,2159265,2144194,2220993,2220993]),new Uint32Array([2192641,2235393,2235425,2152257,2116609,2235457,2235489,2200065,2235521,2235553,2235585,2212449,2235617,2235649,2235681,2235713]),new Uint32Array([2194049,2194081,2194113,2194145,2194177,2194209,2194241,2194273,2194305,2194337,2194369,2194401,2194433,2194465,2194497,2194529]),new Uint32Array([2196673,2208641,2208673,2208705,2208737,2208769,2208801,2208833,2208865,2208897,2208929,2208961,2208993,2209025,2209057,2209089]),new Uint32Array([2191681,2191713,2191745,2191777,2153281,2191809,2191841,2191873,2191905,2191937,2191969,2192001,2192033,2192065,2192097,2192129]),new Uint32Array([2230946,2231010,2231074,2231138,2231202,2231266,2231330,2231394,2231458,2231522,2231586,2231650,2231714,2231778,2231842,2231906]),new Uint32Array([14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2185953,2185985,2186017,2186049,2186081,2186113,2186145,2186177]),new Uint32Array([2139811,2139907,2097284,2105860,2105988,2106116,2106244,2097444,2097604,2097155,10485778,10486344,2106372,6291456,0,0]),new Uint32Array([2110051,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([0,0,0,0,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2172385,6291456,2172417,6291456,2172449,6291456,2172481,6291456,2172513,6291456,2172545,6291456,2172577,6291456,2172609,6291456]),new Uint32Array([0,0,23068672,23068672,6291456,0,0,0,0,0,0,0,0,0,0,0]),new Uint32Array([2249345,2249377,2249409,2249441,2249473,2249505,2249537,2249570,2210209,2249633,2249665,2249697,2249729,2249761,2249793,2216769]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,6291456,6291456,6291456,6291456]),new Uint32Array([2187169,2187201,2187233,2187265,2187297,2187329,2187361,2187393,2187425,2187457,2187489,2187521,2187553,2187585,2187617,2187649]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([0,0,0,6291456,6291456,0,0,0,6291456,6291456,6291456,0,0,0,6291456,6291456]),new Uint32Array([2182337,6291456,2182369,6291456,2182401,6291456,2182433,6291456,2182465,6291456,2182497,6291456,2182529,6291456,2182561,6291456]),new Uint32Array([2138179,2138275,2138371,2138467,2134243,2134435,2138563,2138659,2138755,2138851,2138947,2139043,2138947,2138755,2139139,2139235]),new Uint32Array([23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0]),new Uint32Array([0,0,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2250498,2250562,2250625,2250657,2208321,2250689,2250721,2250753,2250785,2250817,2250849,2218945,2250881,2250913,2250945,0]),new Uint32Array([2170369,2105569,2098305,2108481,2173249,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([23068672,23068672,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456]),new Uint32Array([2100897,2111905,2105473,2105569,2105601,0,2108193,0,0,0,2098305,2108321,2108289,2100865,2113153,2108481]),new Uint32Array([2100897,2100897,2105569,2105569,6291456,2112289,2149826,6291456,6291456,2112481,2112577,2098177,2098177,2098177,6291456,6291456]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,6291456,6291456,6291456]),new Uint32Array([6291456,2169953,2169985,6291456,2170017,6291456,2170049,2170081,6291456,2170113,2170145,2170177,6291456,6291456,2170209,2170241]),new Uint32Array([6291456,6291456,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),new Uint32Array([0,0,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2220641,2220641,2220673,2220673,2220673,2220673,2220705,2220705,2220705,2220705,2220737,2220737,2220737,2220737,2220769,2220769]),new Uint32Array([2127650,2127746,2127842,2127938,2128034,2128130,2128226,2128322,2128418,2127523,2127619,2127715,2127811,2127907,2128003,2128099]),new Uint32Array([2143969,2173793,2173825,2153473,2173857,2173889,2173921,2173953,2173985,2173761,2174017,2174049,2174081,2174113,2174145,2174177]),new Uint32Array([0,0,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),new Uint32Array([2204705,2204737,2204769,2204801,2204833,2204865,2204897,2204929,2204961,2204993,2205025,2205057,2205089,2205121,2205153,2205185]),new Uint32Array([2176385,6291456,2176417,6291456,2176449,6291456,2176481,6291456,2176513,6291456,2176545,6291456,2176577,6291456,2176609,6291456]),new Uint32Array([2195521,2195553,2195585,2195617,2195649,2195681,2117857,2195713,2195745,2195777,2195809,2195841,2195873,2195905,2195937,2195969]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456]),new Uint32Array([2173921,2173953,2173985,2174017,2174017,2174049,2174081,2174113,2174145,2174177,2149057,2233089,2173697,2173761,2173793,2174113]),new Uint32Array([2131586,2132450,2135970,2135778,2161602,2136162,2163650,2161794,2135586,2163714,2137186,2131810,2160290,2135170,2097506,2159554]),new Uint32Array([2134145,2097153,2134241,2105953,2132705,2130977,2160065,2131297,2162049,2133089,2160577,2133857,0,0,0,0]),new Uint32Array([2116513,2116609,2116705,2116801,2116897,2116993,2117089,2117185,2117281,2117377,2117473,2117569,2117665,2117761,2117857,2117953]),new Uint32Array([2100737,2098337,2101441,2101569,2101697,2101825,2101953,2102081,2102209,2100802,2101154,2101282,2101410,2101538,2101666,2101794]),new Uint32Array([2100289,2098657,2098049,2200737,2123489,2123681,2200769,2098625,2100321,2098145,2100449,2098017,2098753,2098977,2150241,2150305]),new Uint32Array([6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,2109955,6291456,6291456,0,0,0,0]),new Uint32Array([18874368,18874368,18874368,18874368,18874368,18874368,18874368,18874368,18874368,18874368,18874368,18874368,18874368,18874368,18874368,18874368]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,0,6291456,0,0]),new Uint32Array([2130979,2131075,2131075,2131171,2131267,2131363,2131459,2131555,2131651,2131651,2131747,2131843,2131939,2132035,2132131,2132227]),new Uint32Array([0,2177793,6291456,2177825,6291456,2177857,6291456,2177889,6291456,2177921,6291456,2177953,6291456,2177985,6291456,6291456]),new Uint32Array([6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),new Uint32Array([6291456,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),new Uint32Array([2113345,0,2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289]),new Uint32Array([2136643,2136739,2136835,2136931,2137027,2137123,2137219,2137315,2137411,2137507,2137603,2137699,2137795,2137891,2137987,2138083]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0]),new Uint32Array([2174433,6291456,2174465,6291456,2174497,6291456,2174529,6291456,2174561,6291456,2174593,6291456,2174625,6291456,2174657,6291456]),new Uint32Array([0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2105473,2105569,2105601,2112289,2108193,2112481,2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441]),new Uint32Array([10496547,10496643,2105505,2149698,6291456,10496739,10496835,2170273,6291456,2149762,2105825,2111713,2111713,2111713,2111713,2168673]),new Uint32Array([6291456,2143490,2143490,2143490,2171649,6291456,2171681,2171713,2171745,6291456,2171777,6291456,2171809,6291456,2171841,6291456]),new Uint32Array([2159106,2159106,2159170,2159170,2159234,2159234,2159298,2159298,2159298,2159362,2159362,2159362,2106401,2106401,2106401,2106401]),new Uint32Array([2105601,2112289,2108193,2112481,2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,2098209,2111137]),new Uint32Array([2108417,2181217,2181249,2181281,2170433,2170401,2181313,2181345,2181377,2181409,2181441,2181473,2181505,2181537,2170529,2181569]),new Uint32Array([2218433,2245761,2245793,2245825,2245857,2245890,2245953,2245986,2209665,2246050,2246113,2246146,2246210,2246274,2246337,2246369]),new Uint32Array([2230754,2230818,2230882,0,0,0,0,0,0,0,0,0,0,0,0,0]),new Uint32Array([6291456,0,6291456,6291456,6291456,6291456,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([6291456,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2184129,6291456,2184161,6291456,2184193,6291456,6291456,6291456,6291456,6291456,2146818,2183361,6291456,6291456,2142978,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2135170,2097506,2130691,2130787,2130883,2163970,2164034,2164098,2164162,2164226,2164290,2164354,2164418,2164482,2164546,2133122]),new Uint32Array([2108515,2108611,2100740,2108707,2108803,2108899,2108995,2109091,2109187,2109283,2109379,2109475,2109571,2109667,2109763,2100738]),new Uint32Array([2102788,2102916,2103044,2120515,2103172,2120611,2120707,2098373,2103300,2120803,2120899,2120995,2103428,2103556,2121091,2121187]),new Uint32Array([2158082,2158146,0,2158210,2158274,0,2158338,2158402,2158466,2129922,2158530,2158594,2158658,2158722,2158786,2158850]),new Uint32Array([10499619,10499715,10499811,10499907,10500003,10500099,10500195,10500291,10500387,10500483,10500579,10500675,10500771,10500867,10500963,10501059]),new Uint32Array([2239585,2239618,2239681,2239713,0,2191969,2239745,2239777,2192033,2239809,2239841,2239874,2239937,2239970,2240033,2240065]),new Uint32Array([2252705,2252738,2252801,2252833,2252865,2252897,2252930,2252994,2253057,2253089,2253121,2253154,2253217,2253250,2219361,2219361]),new Uint32Array([2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289,2108193,2112481,2112577,2098177,2098305,2108321,2108289,2100865]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,10538050,10538114,10538178,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([2226402,2226466,2226530,2226594,2226658,2226722,2226786,2226850,2226914,2226978,2227042,2227106,2227170,2227234,2227298,2227362]),new Uint32Array([23068672,6291456,6291456,6291456,6291456,2144066,2144130,2144194,2144258,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,6291456,23068672,23068672]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0]),new Uint32Array([2124674,2124770,2123875,2123971,2124067,2124163,2124259,2124355,2124451,2124547,2124643,2124739,2124835,2124931,2125027,2125123]),new Uint32Array([2168065,6291456,2168097,6291456,2168129,6291456,2168161,6291456,2168193,6291456,2168225,6291456,2168257,6291456,2168289,6291456]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,0,0]),new Uint32Array([23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([6291456,6291456,6291456,2100610,2100611,6291456,2107842,2107843,6291456,6291456,6291456,6291456,10537922,6291456,10537986,6291456]),new Uint32Array([2174849,2174881,2174913,2174945,2174977,2175009,2175041,2175073,2175105,2175137,2175169,2175201,2175233,2175265,2175297,2175329]),new Uint32Array([2154562,2154626,2154690,2154754,2141858,2154818,2154882,2127298,2154946,2127298,2155010,2155074,2155138,2155202,2155266,2155202]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,23068672,0]),new Uint32Array([2200641,2150786,2150850,2150914,2150978,2151042,2106562,2151106,2150562,2151170,2151234,2151298,2151362,2151426,2151490,2151554]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,0,0,0,0,0,0,0,0,6291456,6291456]),new Uint32Array([2220289,2220289,2220321,2220321,2220321,2220321,2220353,2220353,2220353,2220353,2220385,2220385,2220385,2220385,2220417,2220417]),new Uint32Array([2155330,2155394,0,2155458,2155522,2155586,2105732,0,2155650,2155714,2155778,2125314,2155842,2155906,2126274,2155970]),new Uint32Array([23068672,23068672,23068672,23068672,23068672,6291456,6291456,23068672,23068672,6291456,23068672,23068672,23068672,23068672,6291456,6291456]),new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,0]),new Uint32Array([2097729,2106017,2106017,2106017,2106017,2131297,2131297,2131297,2131297,2106081,2106081,2162049,2162049,2105953,2105953,2162337]),new Uint32Array([2097185,2097697,2097697,2097697,2097697,2135777,2135777,2135777,2135777,2097377,2097377,2097377,2097377,2097601,2097601,2097217]),new Uint32Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23068672]),new Uint32Array([2139331,2139427,2139523,2139043,2133571,2132611,2139619,2139715,0,0,0,0,0,0,0,0]),new Uint32Array([2174113,2174145,2100897,2098177,2108289,2100865,2173601,2173633,2173985,2174113,2174145,6291456,6291456,6291456,6291456,6291456]),new Uint32Array([6291456,6291456,23068672,6291456,6291456,6291456,23068672,6291456,6291456,6291456,6291456,23068672,6291456,6291456,6291456,6291456]),new Uint32Array([23068672,23068672,18923778,23068672,23068672,23068672,23068672,18923842,23068672,23068672,23068672,23068672,18923906,23068672,23068672,23068672]),new Uint32Array([2134145,2097153,2134241,0,2132705,2130977,2160065,2131297,0,2133089,0,2133857,0,0,0,0]),new Uint32Array([6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0,0,0,0,0]),new Uint32Array([2177537,6291456,2177569,6291456,2177601,6291456,2177633,6291456,2177665,6291456,2177697,6291456,2177729,6291456,2177761,6291456]),new Uint32Array([2212481,2212513,2212545,2212577,2197121,2212609,2212641,2212673,2212705,2212737,2212769,2212801,2212833,2212865,2212897,2212929]),new Uint32Array([6291456,6291456,23068672,23068672,23068672,6291456,6291456,0,0,0,0,0,0,0,0,0]),new Uint32Array([2098241,2108353,2170209,2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289,6291456,2108193,2172417,2112481,2098177]),new Uint32Array([6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456])],e=new Uint16Array([616,616,565,147,161,411,330,2,131,131,328,454,241,408,86,86,696,113,285,350,325,301,473,214,639,232,447,64,369,598,124,672,567,223,621,154,107,86,86,86,86,86,86,505,86,68,634,86,218,218,218,218,486,218,218,513,188,608,216,86,217,463,668,85,700,360,184,86,86,86,647,402,153,10,346,718,662,260,145,298,117,1,443,342,138,54,563,86,240,572,218,70,387,86,118,460,641,602,86,86,306,218,86,692,86,86,86,86,86,162,707,86,458,26,86,218,638,86,86,86,86,86,65,449,86,86,306,183,86,58,391,667,86,157,131,131,131,131,86,433,131,406,31,218,247,86,86,693,218,581,351,86,438,295,69,462,45,126,173,650,14,295,69,97,168,187,641,78,523,390,69,108,287,664,173,219,83,295,69,108,431,426,173,694,412,115,628,52,257,398,641,118,501,121,69,579,151,423,173,620,464,121,69,382,151,476,173,27,53,121,86,594,578,226,173,86,632,130,86,96,228,268,641,622,563,86,86,21,148,650,131,131,321,43,144,343,381,531,131,131,178,20,86,399,156,375,164,541,30,60,715,198,92,118,131,131,86,86,306,407,86,280,457,196,488,358,131,131,244,86,86,143,86,86,86,86,86,667,563,86,86,86,86,86,86,86,86,86,86,86,86,86,336,363,86,86,336,86,86,380,678,67,86,86,86,678,86,86,86,512,86,307,86,708,86,86,86,86,86,528,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,563,307,86,86,86,86,86,104,450,337,86,720,86,32,450,397,86,86,86,587,218,558,708,708,293,708,86,86,86,86,86,694,205,86,8,86,86,86,86,549,86,667,697,697,679,86,458,460,86,86,650,86,708,543,86,86,86,245,86,86,86,140,218,127,708,708,458,197,131,131,131,131,500,86,86,483,251,86,306,510,515,86,722,86,86,86,65,201,86,86,483,580,470,86,86,86,368,131,131,131,694,114,110,555,86,86,123,721,163,142,713,418,86,317,675,209,218,218,218,371,545,592,629,490,603,199,46,320,525,680,310,279,388,111,42,252,593,607,235,617,410,377,50,548,135,356,17,520,189,116,392,600,349,332,482,699,690,535,119,106,451,71,152,667,131,218,218,265,671,637,492,504,533,683,269,269,658,86,86,86,86,86,86,86,86,86,491,619,86,86,6,86,86,86,86,86,86,86,86,86,86,86,229,86,86,86,86,86,86,86,86,86,86,86,86,667,86,86,171,131,118,131,656,206,234,571,89,334,670,246,311,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,534,86,86,86,86,86,86,82,86,86,86,86,86,430,86,86,86,86,86,86,86,86,86,599,86,324,86,470,69,640,264,131,626,101,174,86,86,667,233,105,73,374,394,221,204,84,28,326,86,86,471,86,86,86,109,573,86,171,200,200,200,200,218,218,86,86,86,86,460,131,131,131,86,506,86,86,86,86,86,220,404,34,614,47,442,305,25,612,338,601,648,7,344,255,131,131,51,86,312,507,563,86,86,86,86,588,86,86,86,86,86,530,511,86,458,3,435,384,556,522,230,527,86,118,86,86,717,86,137,273,79,181,484,23,93,112,655,249,417,703,370,87,98,313,684,585,155,465,596,481,695,18,416,428,61,701,706,282,643,495,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,549,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,549,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,307,86,86,86,171,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,650,131,422,542,420,263,24,172,86,86,86,86,86,566,86,86,132,540,395,353,494,519,19,485,284,472,131,131,131,16,714,86,211,708,86,86,86,694,698,86,86,483,704,708,218,272,86,86,120,86,159,478,86,307,247,86,86,663,597,459,627,667,86,86,277,455,39,302,86,250,86,86,86,271,99,452,306,281,329,400,200,86,86,362,549,352,646,461,323,586,86,86,4,708,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,717,86,518,86,86,650,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,125,554,480,300,613,72,333,288,561,544,604,48,719,91,169,176,590,224,76,191,29,559,560,231,537,166,477,538,256,437,131,131,469,167,40,0,685,266,441,705,239,642,475,568,640,610,299,673,517,318,385,22,202,180,179,359,424,215,90,66,521,653,467,682,453,409,479,88,131,661,35,303,15,262,666,630,712,131,131,618,659,175,218,195,347,193,227,261,150,165,709,546,294,569,710,270,413,376,524,55,242,38,419,529,170,657,3,304,122,379,278,131,651,86,67,576,458,458,131,131,86,86,86,86,86,86,86,118,309,86,86,547,86,86,86,86,667,650,664,131,131,86,86,56,131,131,131,131,131,131,131,131,86,307,86,86,86,664,238,650,86,86,717,86,118,86,86,315,86,59,86,86,574,549,131,131,340,57,436,86,86,86,86,86,86,458,708,499,691,62,86,650,86,86,694,86,86,86,319,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,171,86,549,694,131,131,131,131,131,131,131,131,131,77,86,86,139,86,502,86,86,86,667,595,131,131,131,86,12,86,13,86,609,131,131,131,131,86,86,86,625,86,669,86,86,182,129,86,5,694,104,86,86,86,86,131,131,86,86,386,171,86,86,86,345,86,324,86,589,86,213,36,131,131,131,131,131,86,86,86,86,104,131,131,131,141,290,80,677,86,86,86,267,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,667,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,515,86,86,33,136,669,86,711,515,86,86,550,640,86,104,708,515,86,159,372,717,86,86,444,515,86,86,663,37,86,563,460,86,390,624,702,131,131,131,131,389,59,708,86,86,341,208,708,635,295,69,108,431,508,100,190,131,131,131,131,131,131,131,131,86,86,86,649,516,660,131,131,86,86,86,218,631,708,131,131,131,131,131,131,131,131,131,131,86,86,341,575,238,514,131,131,86,86,86,218,291,708,307,131,86,86,306,367,708,131,131,131,86,378,697,86,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,615,253,86,86,86,292,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,104,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,69,86,341,553,549,86,307,86,86,645,275,455,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,708,131,131,131,131,131,131,86,86,86,86,86,86,667,460,86,86,86,86,86,86,86,86,86,86,86,86,717,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,667,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,171,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,104,86,667,459,131,131,131,131,131,131,86,458,225,86,86,86,516,549,11,390,405,86,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,460,44,218,197,711,515,131,131,131,131,664,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,307,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,308,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,640,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,118,307,104,286,591,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,549,86,86,681,86,86,75,185,314,582,86,358,496,474,86,104,131,86,86,86,86,146,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,171,86,640,131,131,131,131,131,131,131,131,246,503,689,339,674,81,258,415,439,128,562,366,414,246,503,689,583,222,557,316,636,665,186,355,95,670,246,503,689,339,674,557,258,415,439,186,355,95,670,246,503,689,446,644,536,652,331,532,335,440,274,421,297,570,74,425,364,425,606,552,403,509,134,365,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,218,218,218,498,218,218,577,627,551,497,572,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,553,354,236,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,86,86,86,86,86,86,296,455,131,131,456,243,103,86,41,459,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,9,276,158,716,393,564,383,489,401,654,210,654,131,131,131,640,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,650,86,86,86,86,86,86,717,667,563,563,563,86,549,102,686,133,246,605,86,448,86,86,207,307,131,131,131,641,86,177,611,445,373,194,584,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,308,307,171,86,86,86,86,86,86,86,717,86,86,86,86,86,460,131,131,650,86,86,86,694,708,86,86,694,86,458,131,131,131,131,131,131,667,694,289,650,667,131,131,86,640,131,131,664,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,171,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,460,86,86,86,86,86,86,86,86,86,86,86,86,86,458,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,640,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,466,203,149,429,94,432,160,687,539,63,237,283,192,248,348,259,427,526,396,676,254,468,487,212,327,623,49,633,322,493,434,688,357,361,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131]),r="صلى الله عليه وسلمجل جلالهキロメートルrad∕s2エスクードキログラムキロワットグラムトンクルゼイロサンチームパーセントピアストルファラッドブッシェルヘクタールマンションミリバールレントゲン′′′′1⁄10viii(10)(11)(12)(13)(14)(15)(16)(17)(18)(19)(20)∫∫∫∫(오전)(오후)アパートアルファアンペアイニングエーカーカラットカロリーキュリーギルダークローネサイクルシリングバーレルフィートポイントマイクロミクロンメガトンリットルルーブル株式会社kcalm∕s2c∕kgاكبرمحمدصلعمرسولریال1⁄41⁄23⁄4 ̈́ྲཱྀླཱྀ ̈͂ ̓̀ ̓́ ̓͂ ̔̀ ̔́ ̔͂ ̈̀‵‵‵a/ca/sc/oc/utelfax1⁄71⁄91⁄32⁄31⁄52⁄53⁄54⁄51⁄65⁄61⁄83⁄85⁄87⁄8xii0⁄3∮∮∮(1)(2)(3)(4)(5)(6)(7)(8)(9)(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)(m)(n)(o)(p)(q)(r)(s)(t)(u)(v)(w)(x)(y)(z)::====(ᄀ)(ᄂ)(ᄃ)(ᄅ)(ᄆ)(ᄇ)(ᄉ)(ᄋ)(ᄌ)(ᄎ)(ᄏ)(ᄐ)(ᄑ)(ᄒ)(가)(나)(다)(라)(마)(바)(사)(아)(자)(차)(카)(타)(파)(하)(주)(一)(二)(三)(四)(五)(六)(七)(八)(九)(十)(月)(火)(水)(木)(金)(土)(日)(株)(有)(社)(名)(特)(財)(祝)(労)(代)(呼)(学)(監)(企)(資)(協)(祭)(休)(自)(至)pte10月11月12月ergltdアールインチウォンオンスオームカイリガロンガンマギニーケースコルナコーポセンチダースノットハイツパーツピクルフランペニヒヘルツペンスページベータボルトポンドホールホーンマイルマッハマルクヤードヤールユアンルピー10点11点12点13点14点15点16点17点18点19点20点21点22点23点24点hpabardm2dm3khzmhzghzthzmm2cm2km2mm3cm3km3kpampagpalogmilmolppmv∕ma∕m10日11日12日13日14日15日16日17日18日19日20日21日22日23日24日25日26日27日28日29日30日31日galffifflשּׁשּׂ ٌّ ٍّ َّ ُّ ِّ ّٰـَّـُّـِّتجمتحجتحمتخمتمجتمحتمخجمححميحمىسحجسجحسجىسمحسمجسممصححصممشحمشجيشمخشممضحىضخمطمحطممطميعجمعممعمىغممغميغمىفخمقمحقمملحملحيلحىلججلخملمحمحجمحيمجحمجممخممجخهمجهممنحمنحىنجمنجىنمينمىيممبخيتجيتجىتخيتخىتميتمىجميجحىجمىسخىصحيشحيضحيلجيلمييحييجييميمميقمينحيعميكمينجحمخيلجمكممجحيحجيمجيفميبحيسخينجيصلےقلے𝅘𝅥𝅮𝅘𝅥𝅯𝅘𝅥𝅰𝅘𝅥𝅱𝅘𝅥𝅲𝆹𝅥𝅮𝆺𝅥𝅮𝆹𝅥𝅯𝆺𝅥𝅯〔s〕ppv〔本〕〔三〕〔二〕〔安〕〔点〕〔打〕〔盗〕〔勝〕〔敗〕 ̄ ́ ̧ssi̇ijl·ʼndžljnjdz ̆ ̇ ̊ ̨ ̃ ̋ ιեւاٴوٴۇٴيٴक़ख़ग़ज़ड़ढ़फ़य़ড়ঢ়য়ਲ਼ਸ਼ਖ਼ਗ਼ਜ਼ਫ਼ଡ଼ଢ଼ําໍາຫນຫມགྷཌྷདྷབྷཛྷཀྵཱཱིུྲྀླྀྒྷྜྷྡྷྦྷྫྷྐྵaʾἀιἁιἂιἃιἄιἅιἆιἇιἠιἡιἢιἣιἤιἥιἦιἧιὠιὡιὢιὣιὤιὥιὦιὧιὰιαιάιᾶι ͂ὴιηιήιῆιὼιωιώιῶι ̳!! ̅???!!?rs°c°fnosmtmivix⫝̸ ゙ ゚よりコト333435참고주의363738394042444546474849503月4月5月6月7月8月9月hgevギガデシドルナノピコビルペソホンリラレムdaauovpciu平成昭和大正明治naμakakbmbgbpfnfμfμgmgμlmldlklfmnmμmpsnsμsmsnvμvkvpwnwμwmwkwkωmωbqcccddbgyhainkkktlnlxphprsrsvwbstմնմեմիվնմխיִײַשׁשׂאַאָאּבּגּדּהּוּזּטּיּךּכּלּמּנּסּףּפּצּקּרּתּוֹבֿכֿפֿאלئائەئوئۇئۆئۈئېئىئجئحئمئيبجبمبىبيتىتيثجثمثىثيخحضجضمطحظمغجفجفحفىفيقحقىقيكاكجكحكخكلكىكينخنىنيهجهىهييىذٰرٰىٰئرئزئنبزبنترتزتنثرثزثنمانرنزننيريزئخئهبهتهصخنههٰثهسهشهطىطيعىعيغىغيسىسيشىشيصىصيضىضيشخشرسرصرضراً ًـًـّ ْـْلآلألإ𝅗𝅥0,1,2,3,4,5,6,7,8,9,wzhvsdwcmcmddjほかココàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþāăąćĉċčďđēĕėęěĝğġģĥħĩīĭįĵķĺļľłńņňŋōŏőœŕŗřśŝşšţťŧũūŭůűųŵŷÿźżɓƃƅɔƈɖɗƌǝəɛƒɠɣɩɨƙɯɲɵơƣƥʀƨʃƭʈưʊʋƴƶʒƹƽǎǐǒǔǖǘǚǜǟǡǣǥǧǩǫǭǯǵƕƿǹǻǽǿȁȃȅȇȉȋȍȏȑȓȕȗșțȝȟƞȣȥȧȩȫȭȯȱȳⱥȼƚⱦɂƀʉʌɇɉɋɍɏɦɹɻʁʕͱͳʹͷ;ϳέίόύβγδεζθκλνξοπρστυφχψϊϋϗϙϛϝϟϡϣϥϧϩϫϭϯϸϻͻͼͽѐёђѓєѕіїјљњћќѝўџабвгдежзийклмнопрстуфхцчшщъыьэюяѡѣѥѧѩѫѭѯѱѳѵѷѹѻѽѿҁҋҍҏґғҕҗҙқҝҟҡңҥҧҩҫҭүұҳҵҷҹһҽҿӂӄӆӈӊӌӎӑӓӕӗәӛӝӟӡӣӥӧөӫӭӯӱӳӵӷӹӻӽӿԁԃԅԇԉԋԍԏԑԓԕԗԙԛԝԟԡԣԥԧԩԫԭԯաբգդզէըթժլծկհձղճյշոչպջռստրցփքօֆ་ⴧⴭნᏰᏱᏲᏳᏴᏵꙋɐɑᴂɜᴖᴗᴝᴥɒɕɟɡɥɪᵻʝɭᶅʟɱɰɳɴɸʂƫᴜʐʑḁḃḅḇḉḋḍḏḑḓḕḗḙḛḝḟḡḣḥḧḩḫḭḯḱḳḵḷḹḻḽḿṁṃṅṇṉṋṍṏṑṓṕṗṙṛṝṟṡṣṥṧṩṫṭṯṱṳṵṷṹṻṽṿẁẃẅẇẉẋẍẏẑẓẕạảấầẩẫậắằẳẵặẹẻẽếềểễệỉịọỏốồổỗộớờởỡợụủứừửữựỳỵỷỹỻỽỿἐἑἒἓἔἕἰἱἲἳἴἵἶἷὀὁὂὃὄὅὑὓὕὗᾰᾱὲΐῐῑὶΰῠῡὺῥ`ὸ‐+−∑〈〉ⰰⰱⰲⰳⰴⰵⰶⰷⰸⰹⰺⰻⰼⰽⰾⰿⱀⱁⱂⱃⱄⱅⱆⱇⱈⱉⱊⱋⱌⱍⱎⱏⱐⱑⱒⱓⱔⱕⱖⱗⱘⱙⱚⱛⱜⱝⱞⱡɫᵽɽⱨⱪⱬⱳⱶȿɀⲁⲃⲅⲇⲉⲋⲍⲏⲑⲓⲕⲗⲙⲛⲝⲟⲡⲣⲥⲧⲩⲫⲭⲯⲱⲳⲵⲷⲹⲻⲽⲿⳁⳃⳅⳇⳉⳋⳍⳏⳑⳓⳕⳗⳙⳛⳝⳟⳡⳣⳬⳮⳳⵡ母龟丨丶丿乙亅亠人儿入冂冖冫几凵刀力勹匕匚匸卜卩厂厶又口囗士夂夊夕女子宀寸小尢尸屮山巛工己巾干幺广廴廾弋弓彐彡彳心戈戶手支攴文斗斤方无曰欠止歹殳毋比毛氏气爪父爻爿片牙牛犬玄玉瓜瓦甘生用田疋疒癶白皮皿目矛矢石示禸禾穴立竹米糸缶网羊羽老而耒耳聿肉臣臼舌舛舟艮色艸虍虫血行衣襾見角言谷豆豕豸貝赤走足身車辛辰辵邑酉釆里長門阜隶隹雨靑非面革韋韭音頁風飛食首香馬骨高髟鬥鬯鬲鬼魚鳥鹵鹿麥麻黃黍黑黹黽鼎鼓鼠鼻齊齒龍龜龠.〒卄卅ᄁᆪᆬᆭᄄᆰᆱᆲᆳᆴᆵᄚᄈᄡᄊ짜ᅢᅣᅤᅥᅦᅧᅨᅩᅪᅫᅬᅭᅮᅯᅰᅱᅲᅳᅴᅵᄔᄕᇇᇈᇌᇎᇓᇗᇙᄜᇝᇟᄝᄞᄠᄢᄣᄧᄩᄫᄬᄭᄮᄯᄲᄶᅀᅇᅌᇱᇲᅗᅘᅙᆄᆅᆈᆑᆒᆔᆞᆡ上中下甲丙丁天地問幼箏우秘男適優印注項写左右医宗夜テヌモヨヰヱヲꙁꙃꙅꙇꙉꙍꙏꙑꙓꙕꙗꙙꙛꙝꙟꙡꙣꙥꙧꙩꙫꙭꚁꚃꚅꚇꚉꚋꚍꚏꚑꚓꚕꚗꚙꚛꜣꜥꜧꜩꜫꜭꜯꜳꜵꜷꜹꜻꜽꜿꝁꝃꝅꝇꝉꝋꝍꝏꝑꝓꝕꝗꝙꝛꝝꝟꝡꝣꝥꝧꝩꝫꝭꝯꝺꝼᵹꝿꞁꞃꞅꞇꞌꞑꞓꞗꞙꞛꞝꞟꞡꞣꞥꞧꞩɬʞʇꭓꞵꞷꬷꭒᎠᎡᎢᎣᎤᎥᎦᎧᎨᎩᎪᎫᎬᎭᎮᎯᎰᎱᎲᎳᎴᎵᎶᎷᎸᎹᎺᎻᎼᎽᎾᎿᏀᏁᏂᏃᏄᏅᏆᏇᏈᏉᏊᏋᏌᏍᏎᏏᏐᏑᏒᏓᏔᏕᏖᏗᏘᏙᏚᏛᏜᏝᏞᏟᏠᏡᏢᏣᏤᏥᏦᏧᏨᏩᏪᏫᏬᏭᏮᏯ豈更賈滑串句契喇奈懶癩羅蘿螺裸邏樂洛烙珞落酪駱亂卵欄爛蘭鸞嵐濫藍襤拉臘蠟廊朗浪狼郎來冷勞擄櫓爐盧蘆虜路露魯鷺碌祿綠菉錄論壟弄籠聾牢磊賂雷壘屢樓淚漏累縷陋勒肋凜凌稜綾菱陵讀拏諾丹寧怒率異北磻便復不泌數索參塞省葉說殺沈拾若掠略亮兩凉梁糧良諒量勵呂廬旅濾礪閭驪麗黎曆歷轢年憐戀撚漣煉璉秊練聯輦蓮連鍊列劣咽烈裂廉念捻殮簾獵令囹嶺怜玲瑩羚聆鈴零靈領例禮醴隸惡了僚寮尿料燎療蓼遼暈阮劉杻柳流溜琉留硫紐類戮陸倫崙淪輪律慄栗隆利吏履易李梨泥理痢罹裏裡離匿溺吝燐璘藺隣鱗麟林淋臨笠粒狀炙識什茶刺切度拓糖宅洞暴輻降廓兀嗀塚晴凞猪益礼神祥福靖精蘒諸逸都飯飼館鶴郞隷侮僧免勉勤卑喝嘆器塀墨層悔慨憎懲敏既暑梅海渚漢煮爫琢碑祉祈祐祖禍禎穀突節縉繁署者臭艹著褐視謁謹賓贈辶難響頻恵𤋮舘並况全侀充冀勇勺啕喙嗢墳奄奔婢嬨廒廙彩徭惘慎愈慠戴揄搜摒敖望杖滛滋瀞瞧爵犯瑱甆画瘝瘟盛直睊着磌窱类絛缾荒華蝹襁覆調請諭變輸遲醙鉶陼韛頋鬒𢡊𢡄𣏕㮝䀘䀹𥉉𥳐𧻓齃龎עםٱٻپڀٺٿٹڤڦڄڃچڇڍڌڎڈژڑکگڳڱںڻۀہھۓڭۋۅۉ、〖〗—–_{}【】《》「」『』[]#&*-<>\\$%@ءؤة\"'^|~⦅⦆・ゥャ¢£¬¦¥₩│←↑→↓■○𐐨𐐩𐐪𐐫𐐬𐐭𐐮𐐯𐐰𐐱𐐲𐐳𐐴𐐵𐐶𐐷𐐸𐐹𐐺𐐻𐐼𐐽𐐾𐐿𐑀𐑁𐑂𐑃𐑄𐑅𐑆𐑇𐑈𐑉𐑊𐑋𐑌𐑍𐑎𐑏𐓘𐓙𐓚𐓛𐓜𐓝𐓞𐓟𐓠𐓡𐓢𐓣𐓤𐓥𐓦𐓧𐓨𐓩𐓪𐓫𐓬𐓭𐓮𐓯𐓰𐓱𐓲𐓳𐓴𐓵𐓶𐓷𐓸𐓹𐓺𐓻𐳀𐳁𐳂𐳃𐳄𐳅𐳆𐳇𐳈𐳉𐳊𐳋𐳌𐳍𐳎𐳏𐳐𐳑𐳒𐳓𐳔𐳕𐳖𐳗𐳘𐳙𐳚𐳛𐳜𐳝𐳞𐳟𐳠𐳡𐳢𐳣𐳤𐳥𐳦𐳧𐳨𐳩𐳪𐳫𐳬𐳭𐳮𐳯𐳰𐳱𐳲𑣀𑣁𑣂𑣃𑣄𑣅𑣆𑣇𑣈𑣉𑣊𑣋𑣌𑣍𑣎𑣏𑣐𑣑𑣒𑣓𑣔𑣕𑣖𑣗𑣘𑣙𑣚𑣛𑣜𑣝𑣞𑣟ıȷ∇∂𞤢𞤣𞤤𞤥𞤦𞤧𞤨𞤩𞤪𞤫𞤬𞤭𞤮𞤯𞤰𞤱𞤲𞤳𞤴𞤵𞤶𞤷𞤸𞤹𞤺𞤻𞤼𞤽𞤾𞤿𞥀𞥁𞥂𞥃ٮڡٯ字双多解交映無前後再新初終販声吹演投捕遊指禁空合満申割営配得可丽丸乁𠄢你侻倂偺備像㒞𠘺兔兤具𠔜㒹內𠕋冗冤仌冬𩇟刃㓟刻剆剷㔕包匆卉博即卽卿𠨬灰及叟𠭣叫叱吆咞吸呈周咢哶唐啓啣善喫喳嗂圖圗噑噴壮城埴堍型堲報墬𡓤売壷夆夢奢𡚨𡛪姬娛娧姘婦㛮嬈嬾𡧈寃寘寳𡬘寿将㞁屠峀岍𡷤嵃𡷦嵮嵫嵼巡巢㠯巽帨帽幩㡢𢆃㡼庰庳庶𪎒𢌱舁弢㣇𣊸𦇚形彫㣣徚忍志忹悁㤺㤜𢛔惇慈慌慺憲憤憯懞戛扝抱拔捐𢬌挽拼捨掃揤𢯱搢揅掩㨮摩摾撝摷㩬敬𣀊旣書晉㬙㬈㫤冒冕最暜肭䏙朡杞杓𣏃㭉柺枅桒𣑭梎栟椔楂榣槪檨𣚣櫛㰘次𣢧歔㱎歲殟殻𣪍𡴋𣫺汎𣲼沿泍汧洖派浩浸涅𣴞洴港湮㴳滇𣻑淹潮𣽞𣾎濆瀹瀛㶖灊災灷炭𠔥煅𤉣熜爨牐𤘈犀犕𤜵𤠔獺王㺬玥㺸瑇瑜璅瓊㼛甤𤰶甾𤲒𢆟瘐𤾡𤾸𥁄㿼䀈𥃳𥃲𥄙𥄳眞真瞋䁆䂖𥐝硎䃣𥘦𥚚𥛅秫䄯穊穏𥥼𥪧䈂𥮫篆築䈧𥲀糒䊠糨糣紀𥾆絣䌁緇縂繅䌴𦈨𦉇䍙𦋙罺𦌾羕翺𦓚𦔣聠𦖨聰𣍟䏕育脃䐋脾媵𦞧𦞵𣎓𣎜舄辞䑫芑芋芝劳花芳芽苦𦬼茝荣莭茣莽菧荓菊菌菜𦰶𦵫𦳕䔫蓱蓳蔖𧏊蕤𦼬䕝䕡𦾱𧃒䕫虐虧虩蚩蚈蜎蛢蜨蝫螆蟡蠁䗹衠𧙧裗裞䘵裺㒻𧢮𧥦䚾䛇誠𧲨貫賁贛起𧼯𠠄跋趼跰𠣞軔𨗒𨗭邔郱鄑𨜮鄛鈸鋗鋘鉼鏹鐕𨯺開䦕閷𨵷䧦雃嶲霣𩅅𩈚䩮䩶韠𩐊䪲𩒖頩𩖶飢䬳餩馧駂駾䯎𩬰鱀鳽䳎䳭鵧𪃎䳸𪄅𪈎𪊑䵖黾鼅鼏鼖𪘀";function n(r){return r>=196608?r>=917760&&r<=917999?18874368:0:t[e[r>>4]][15&r]}return{mapStr:r,mapChar:n}}))},ad25:function(t,e,r){var n=r("2aee"),i=r("11dc"),o=r("98e6"),a=r("f460"),s=r("83d5"),u=r("399f"),c=r("5291"),f=r("a958"),h=r("8707").Buffer;function l(t,e){var r=t.modulus.byteLength(),n=e.length,c=o("sha1").update(h.alloc(0)).digest(),f=c.length,l=2*f;if(n>r-l-2)throw new Error("message too long");var d=h.alloc(r-n-l-2),p=r-f-1,m=i(f),y=s(h.concat([c,d,h.alloc(1,1),e],p),a(m,p)),v=s(m,a(y,f));return new u(h.concat([h.alloc(1),v,y],r))}function d(t,e,r){var n,i=e.length,o=t.modulus.byteLength();if(i>o-11)throw new Error("message too long");return n=r?h.alloc(o-i-3,255):p(o-i-3),new u(h.concat([h.from([0,r?1:2]),n,h.alloc(1),e],o))}function p(t){var e,r=h.allocUnsafe(t),n=0,o=i(2*t),a=0;while(n=0)throw new Error("data too long for modulus")}return r?f(o,a):c(o,a)}},ad71:function(t,e,r){"use strict";(function(e,n){var i=r("966d");t.exports=A;var o,a=r("e3db");A.ReadableState=_;r("faa1").EventEmitter;var s=function(t,e){return t.listeners(e).length},u=r("429b"),c=r("8707").Buffer,f=e.Uint8Array||function(){};function h(t){return c.from(t)}function l(t){return c.isBuffer(t)||t instanceof f}var d=Object.create(r("3a7c"));d.inherits=r("3fb5");var p=r(2),m=void 0;m=p&&p.debuglog?p.debuglog("stream"):function(){};var y,v=r("5e1a"),b=r("4681");d.inherits(A,u);var g=["error","close","destroy","pause","resume"];function w(t,e,r){if("function"===typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events[e]?a(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]:t.on(e,r)}function _(t,e){o=o||r("b19a"),t=t||{};var n=e instanceof o;this.objectMode=!!t.objectMode,n&&(this.objectMode=this.objectMode||!!t.readableObjectMode);var i=t.highWaterMark,a=t.readableHighWaterMark,s=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:n&&(a||0===a)?a:s,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new v,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(y||(y=r("7d72").StringDecoder),this.decoder=new y(t.encoding),this.encoding=t.encoding)}function A(t){if(o=o||r("b19a"),!(this instanceof A))return new A(t);this._readableState=new _(t,this),this.readable=!0,t&&("function"===typeof t.read&&(this._read=t.read),"function"===typeof t.destroy&&(this._destroy=t.destroy)),u.call(this)}function E(t,e,r,n,i){var o,a=t._readableState;null===e?(a.reading=!1,T(t,a)):(i||(o=M(a,e)),o?t.emit("error",o):a.objectMode||e&&e.length>0?("string"===typeof e||a.objectMode||Object.getPrototypeOf(e)===c.prototype||(e=h(e)),n?a.endEmitted?t.emit("error",new Error("stream.unshift() after end event")):x(t,a,e,!0):a.ended?t.emit("error",new Error("stream.push() after EOF")):(a.reading=!1,a.decoder&&!r?(e=a.decoder.write(e),a.objectMode||0!==e.length?x(t,a,e,!1):P(t,a)):x(t,a,e,!1))):n||(a.reading=!1));return k(a)}function x(t,e,r,n){e.flowing&&0===e.length&&!e.sync?(t.emit("data",r),t.read(0)):(e.length+=e.objectMode?1:r.length,n?e.buffer.unshift(r):e.buffer.push(r),e.needReadable&&U(t)),P(t,e)}function M(t,e){var r;return l(e)||"string"===typeof e||void 0===e||t.objectMode||(r=new TypeError("Invalid non-string/buffer chunk")),r}function k(t){return!t.ended&&(t.needReadable||t.length=S?t=S:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function C(t,e){return t<=0||0===e.length&&e.ended?0:e.objectMode?1:t!==t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=I(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function T(t,e){if(!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,U(t)}}function U(t){var e=t._readableState;e.needReadable=!1,e.emittedReadable||(m("emitReadable",e.flowing),e.emittedReadable=!0,e.sync?i.nextTick(O,t):O(t))}function O(t){m("emit readable"),t.emit("readable"),D(t)}function P(t,e){e.readingMore||(e.readingMore=!0,i.nextTick(R,t,e))}function R(t,e){var r=e.length;while(!e.reading&&!e.flowing&&!e.ended&&e.length=e.length?(r=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.head.data:e.buffer.concat(e.length),e.buffer.clear()):r=q(t,e.buffer,e.decoder),r);var r}function q(t,e,r){var n;return to.length?o.length:t;if(a===o.length?i+=o:i+=o.slice(0,t),t-=a,0===t){a===o.length?(++n,r.next?e.head=r.next:e.head=e.tail=null):(e.head=r,r.data=o.slice(a));break}++n}return e.length-=n,i}function z(t,e){var r=c.allocUnsafe(t),n=e.head,i=1;n.data.copy(r),t-=n.data.length;while(n=n.next){var o=n.data,a=t>o.length?o.length:t;if(o.copy(r,r.length-t,0,a),t-=a,0===t){a===o.length?(++i,n.next?e.head=n.next:e.head=e.tail=null):(e.head=n,n.data=o.slice(a));break}++i}return e.length-=i,r}function K(t){var e=t._readableState;if(e.length>0)throw new Error('"endReadable()" called on non-empty stream');e.endEmitted||(e.ended=!0,i.nextTick(V,e,t))}function V(t,e){t.endEmitted||0!==t.length||(t.endEmitted=!0,e.readable=!1,e.emit("end"))}function G(t,e){for(var r=0,n=t.length;r=e.highWaterMark||e.ended))return m("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?K(this):U(this),null;if(t=C(t,e),0===t&&e.ended)return 0===e.length&&K(this),null;var n,i=e.needReadable;return m("need readable",i),(0===e.length||e.length-t0?F(t,e):null,null===n?(e.needReadable=!0,t=0):e.length-=t,0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&K(this)),null!==n&&this.emit("data",n),n},A.prototype._read=function(t){this.emit("error",new Error("_read() is not implemented"))},A.prototype.pipe=function(t,e){var r=this,o=this._readableState;switch(o.pipesCount){case 0:o.pipes=t;break;case 1:o.pipes=[o.pipes,t];break;default:o.pipes.push(t);break}o.pipesCount+=1,m("pipe count=%d opts=%j",o.pipesCount,e);var a=(!e||!1!==e.end)&&t!==n.stdout&&t!==n.stderr,u=a?f:_;function c(t,e){m("onunpipe"),t===r&&e&&!1===e.hasUnpiped&&(e.hasUnpiped=!0,d())}function f(){m("onend"),t.end()}o.endEmitted?i.nextTick(u):r.once("end",u),t.on("unpipe",c);var h=N(r);t.on("drain",h);var l=!1;function d(){m("cleanup"),t.removeListener("close",b),t.removeListener("finish",g),t.removeListener("drain",h),t.removeListener("error",v),t.removeListener("unpipe",c),r.removeListener("end",f),r.removeListener("end",_),r.removeListener("data",y),l=!0,!o.awaitDrain||t._writableState&&!t._writableState.needDrain||h()}var p=!1;function y(e){m("ondata"),p=!1;var n=t.write(e);!1!==n||p||((1===o.pipesCount&&o.pipes===t||o.pipesCount>1&&-1!==G(o.pipes,t))&&!l&&(m("false write response, pause",r._readableState.awaitDrain),r._readableState.awaitDrain++,p=!0),r.pause())}function v(e){m("onerror",e),_(),t.removeListener("error",v),0===s(t,"error")&&t.emit("error",e)}function b(){t.removeListener("finish",g),_()}function g(){m("onfinish"),t.removeListener("close",b),_()}function _(){m("unpipe"),r.unpipe(t)}return r.on("data",y),w(t,"error",v),t.once("close",b),t.once("finish",g),t.emit("pipe",r),o.flowing||(m("pipe resume"),r.resume()),t},A.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r),this);if(!t){var n=e.pipes,i=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var o=0;o0||o>0){var f=new i;f.update(c),f.update(t),e&&f.update(e),c=f.digest();var h=0;if(a>0){var l=s.length-a;h=Math.min(a,c.length),c.copy(s,l,0,h),a-=h}if(h0){var d=u.length-o,p=Math.min(o,c.length-h);c.copy(u,d,h,h+p),o-=p}}return c.fill(0),{key:s,iv:u}}t.exports=o},ae93:function(t,e,r){"use strict";var n,i,o,a=r("e163"),s=r("9112"),u=r("5135"),c=r("b622"),f=r("c430"),h=c("iterator"),l=!1,d=function(){return this};[].keys&&(o=[].keys(),"next"in o?(i=a(a(o)),i!==Object.prototype&&(n=i)):l=!0),void 0==n&&(n={}),f||u(n,h)||s(n,h,d),t.exports={IteratorPrototype:n,BUGGY_SAFARI_ITERATORS:l}},aea0:function(t){t.exports=JSON.parse('{"name":"istanbul","comment":"HF targeted for December 2019 following the Constantinople/Petersburg HF","eip":{"url":"https://eips.ethereum.org/EIPS/eip-1679","status":"Draft"},"gasConfig":{},"gasPrices":{"blake2Round":{"v":1,"d":"Gas cost per round for the Blake2 F precompile"},"ecAdd":{"v":150,"d":"Gas costs for curve addition precompile"},"ecMul":{"v":6000,"d":"Gas costs for curve multiplication precompile"},"ecPairing":{"v":45000,"d":"Base gas costs for curve pairing precompile"},"ecPairingWord":{"v":34000,"d":"Gas costs regarding curve pairing precompile input length"},"txDataNonZero":{"v":16,"d":"Per byte of data attached to a transaction that is not equal to zero. NOTE: Not payable on data of calls between transactions"},"sstoreSentryGasEIP2200":{"v":2300,"d":"Minimum gas required to be present for an SSTORE call, not consumed"},"sstoreNoopGasEIP2200":{"v":800,"d":"Once per SSTORE operation if the value doesn\'t change"},"sstoreDirtyGasEIP2200":{"v":800,"d":"Once per SSTORE operation if a dirty value is changed"},"sstoreInitGasEIP2200":{"v":20000,"d":"Once per SSTORE operation from clean zero to non-zero"},"sstoreInitRefundEIP2200":{"v":19200,"d":"Once per SSTORE operation for resetting to the original zero value"},"sstoreCleanGasEIP2200":{"v":5000,"d":"Once per SSTORE operation from clean non-zero to something else"},"sstoreCleanRefundEIP2200":{"v":4200,"d":"Once per SSTORE operation for resetting to the original non-zero value"},"sstoreClearRefundEIP2200":{"v":15000,"d":"Once per SSTORE operation for clearing an originally existing storage slot"}},"vm":{},"pow":{},"casper":{},"sharding":{}}')},b041:function(t,e,r){"use strict";var n=r("00ee"),i=r("f5df");t.exports=n?{}.toString:function(){return"[object "+i(this)+"]"}},b19a:function(t,e,r){"use strict";var n=r("966d"),i=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};t.exports=h;var o=Object.create(r("3a7c"));o.inherits=r("3fb5");var a=r("ad71"),s=r("dc14");o.inherits(h,a);for(var u=i(s.prototype),c=0;c>>32-e}function m(t,e,r,n,i,o,a,s){return p(t+(e^r^n)+o+a|0,s)+i|0}function y(t,e,r,n,i,o,a,s){return p(t+(e&r|~e&n)+o+a|0,s)+i|0}function v(t,e,r,n,i,o,a,s){return p(t+((e|~r)^n)+o+a|0,s)+i|0}function b(t,e,r,n,i,o,a,s){return p(t+(e&n|r&~n)+o+a|0,s)+i|0}function g(t,e,r,n,i,o,a,s){return p(t+(e^(r|~n))+o+a|0,s)+i|0}i(d,o),d.prototype._update=function(){for(var t=a,e=0;e<16;++e)t[e]=this._block.readInt32LE(4*e);for(var r=0|this._a,n=0|this._b,i=0|this._c,o=0|this._d,d=0|this._e,w=0|this._a,_=0|this._b,A=0|this._c,E=0|this._d,x=0|this._e,M=0;M<80;M+=1){var k,S;M<16?(k=m(r,n,i,o,d,t[s[M]],h[0],c[M]),S=g(w,_,A,E,x,t[u[M]],l[0],f[M])):M<32?(k=y(r,n,i,o,d,t[s[M]],h[1],c[M]),S=b(w,_,A,E,x,t[u[M]],l[1],f[M])):M<48?(k=v(r,n,i,o,d,t[s[M]],h[2],c[M]),S=v(w,_,A,E,x,t[u[M]],l[2],f[M])):M<64?(k=b(r,n,i,o,d,t[s[M]],h[3],c[M]),S=y(w,_,A,E,x,t[u[M]],l[3],f[M])):(k=g(r,n,i,o,d,t[s[M]],h[4],c[M]),S=m(w,_,A,E,x,t[u[M]],l[4],f[M])),r=d,d=o,o=p(i,10),i=n,n=k,w=x,x=E,E=p(A,10),A=_,_=S}var I=this._b+i+E|0;this._b=this._c+o+x|0,this._c=this._d+d+w|0,this._d=this._e+r+_|0,this._e=this._a+n+A|0,this._a=I},d.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var t=n.alloc?n.alloc(20):new n(20);return t.writeInt32LE(this._a,0),t.writeInt32LE(this._b,4),t.writeInt32LE(this._c,8),t.writeInt32LE(this._d,12),t.writeInt32LE(this._e,16),t},t.exports=d},b622:function(t,e,r){var n=r("da84"),i=r("5692"),o=r("5135"),a=r("90e3"),s=r("4930"),u=r("fdbf"),c=i("wks"),f=n.Symbol,h=u?f:f&&f.withoutSetter||a;t.exports=function(t){return o(c,t)||(s&&o(f,t)?c[t]=f[t]:c[t]=h("Symbol."+t)),c[t]}},b639:function(t,e,r){"use strict";(function(t){ +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +var n=r("1fb5"),i=r("9152"),o=r("e3db");function a(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&"function"===typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(e){return!1}}function s(){return c.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function u(t,e){if(s()=s())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s().toString(16)+" bytes");return 0|t}function g(t){return+t!=t&&(t=0),c.alloc(+t)}function w(t,e){if(c.isBuffer(t))return t.length;if("undefined"!==typeof ArrayBuffer&&"function"===typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!==typeof t&&(t=""+t);var r=t.length;if(0===r)return 0;for(var n=!1;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return Z(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return Q(t).length;default:if(n)return Z(t).length;e=(""+e).toLowerCase(),n=!0}}function _(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if(r>>>=0,e>>>=0,r<=e)return"";t||(t="utf8");while(1)switch(t){case"hex":return j(this,e,r);case"utf8":case"utf-8":return O(this,e,r);case"ascii":return N(this,e,r);case"latin1":case"binary":return B(this,e,r);case"base64":return U(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return L(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function A(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function E(t,e,r,n,i){if(0===t.length)return-1;if("string"===typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if("string"===typeof e&&(e=c.from(e,n)),c.isBuffer(e))return 0===e.length?-1:x(t,e,r,n,i);if("number"===typeof e)return e&=255,c.TYPED_ARRAY_SUPPORT&&"function"===typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):x(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function x(t,e,r,n,i){var o,a=1,s=t.length,u=e.length;if(void 0!==n&&(n=String(n).toLowerCase(),"ucs2"===n||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;a=2,s/=2,u/=2,r/=2}function c(t,e){return 1===a?t[e]:t.readUInt16BE(e*a)}if(i){var f=-1;for(o=r;os&&(r=s-u),o=r;o>=0;o--){for(var h=!0,l=0;li&&(n=i)):n=i;var o=e.length;if(o%2!==0)throw new TypeError("Invalid hex string");n>o/2&&(n=o/2);for(var a=0;a239?4:c>223?3:c>191?2:1;if(i+h<=r)switch(h){case 1:c<128&&(f=c);break;case 2:o=t[i+1],128===(192&o)&&(u=(31&c)<<6|63&o,u>127&&(f=u));break;case 3:o=t[i+1],a=t[i+2],128===(192&o)&&128===(192&a)&&(u=(15&c)<<12|(63&o)<<6|63&a,u>2047&&(u<55296||u>57343)&&(f=u));break;case 4:o=t[i+1],a=t[i+2],s=t[i+3],128===(192&o)&&128===(192&a)&&128===(192&s)&&(u=(15&c)<<18|(63&o)<<12|(63&a)<<6|63&s,u>65535&&u<1114112&&(f=u))}null===f?(f=65533,h=1):f>65535&&(f-=65536,n.push(f>>>10&1023|55296),f=56320|1023&f),n.push(f),i+=h}return R(n)}e.Buffer=c,e.SlowBuffer=g,e.INSPECT_MAX_BYTES=50,c.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:a(),e.kMaxLength=s(),c.poolSize=8192,c._augment=function(t){return t.__proto__=c.prototype,t},c.from=function(t,e,r){return f(null,t,e,r)},c.TYPED_ARRAY_SUPPORT&&(c.prototype.__proto__=Uint8Array.prototype,c.__proto__=Uint8Array,"undefined"!==typeof Symbol&&Symbol.species&&c[Symbol.species]===c&&Object.defineProperty(c,Symbol.species,{value:null,configurable:!0})),c.alloc=function(t,e,r){return l(null,t,e,r)},c.allocUnsafe=function(t){return d(null,t)},c.allocUnsafeSlow=function(t){return d(null,t)},c.isBuffer=function(t){return!(null==t||!t._isBuffer)},c.compare=function(t,e){if(!c.isBuffer(t)||!c.isBuffer(e))throw new TypeError("Arguments must be Buffers");if(t===e)return 0;for(var r=t.length,n=e.length,i=0,o=Math.min(r,n);i0&&(t=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(t+=" ... ")),""},c.prototype.compare=function(t,e,r,n,i){if(!c.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(e>>>=0,r>>>=0,n>>>=0,i>>>=0,this===t)return 0;for(var o=i-n,a=r-e,s=Math.min(o,a),u=this.slice(n,i),f=t.slice(e,r),h=0;hi)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return M(this,t,e,r);case"utf8":case"utf-8":return k(this,t,e,r);case"ascii":return S(this,t,e,r);case"latin1":case"binary":return I(this,t,e,r);case"base64":return C(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return T(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},c.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var P=4096;function R(t){var e=t.length;if(e<=P)return String.fromCharCode.apply(String,t);var r="",n=0;while(nn)&&(r=n);for(var i="",o=e;or)throw new RangeError("Trying to access beyond buffer length")}function F(t,e,r,n,i,o){if(!c.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError("Index out of range")}function q(t,e,r,n){e<0&&(e=65535+e+1);for(var i=0,o=Math.min(t.length-r,2);i>>8*(n?i:1-i)}function H(t,e,r,n){e<0&&(e=4294967295+e+1);for(var i=0,o=Math.min(t.length-r,4);i>>8*(n?i:3-i)&255}function z(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function K(t,e,r,n,o){return o||z(t,e,r,4,34028234663852886e22,-34028234663852886e22),i.write(t,e,r,n,23,4),r+4}function V(t,e,r,n,o){return o||z(t,e,r,8,17976931348623157e292,-17976931348623157e292),i.write(t,e,r,n,52,8),r+8}c.prototype.slice=function(t,e){var r,n=this.length;if(t=~~t,e=void 0===e?n:~~e,t<0?(t+=n,t<0&&(t=0)):t>n&&(t=n),e<0?(e+=n,e<0&&(e=0)):e>n&&(e=n),e0&&(i*=256))n+=this[t+--e]*i;return n},c.prototype.readUInt8=function(t,e){return e||D(t,1,this.length),this[t]},c.prototype.readUInt16LE=function(t,e){return e||D(t,2,this.length),this[t]|this[t+1]<<8},c.prototype.readUInt16BE=function(t,e){return e||D(t,2,this.length),this[t]<<8|this[t+1]},c.prototype.readUInt32LE=function(t,e){return e||D(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},c.prototype.readUInt32BE=function(t,e){return e||D(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},c.prototype.readIntLE=function(t,e,r){t|=0,e|=0,r||D(t,e,this.length);var n=this[t],i=1,o=0;while(++o=i&&(n-=Math.pow(2,8*e)),n},c.prototype.readIntBE=function(t,e,r){t|=0,e|=0,r||D(t,e,this.length);var n=e,i=1,o=this[t+--n];while(n>0&&(i*=256))o+=this[t+--n]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*e)),o},c.prototype.readInt8=function(t,e){return e||D(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},c.prototype.readInt16LE=function(t,e){e||D(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},c.prototype.readInt16BE=function(t,e){e||D(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},c.prototype.readInt32LE=function(t,e){return e||D(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},c.prototype.readInt32BE=function(t,e){return e||D(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},c.prototype.readFloatLE=function(t,e){return e||D(t,4,this.length),i.read(this,t,!0,23,4)},c.prototype.readFloatBE=function(t,e){return e||D(t,4,this.length),i.read(this,t,!1,23,4)},c.prototype.readDoubleLE=function(t,e){return e||D(t,8,this.length),i.read(this,t,!0,52,8)},c.prototype.readDoubleBE=function(t,e){return e||D(t,8,this.length),i.read(this,t,!1,52,8)},c.prototype.writeUIntLE=function(t,e,r,n){if(t=+t,e|=0,r|=0,!n){var i=Math.pow(2,8*r)-1;F(this,t,e,r,i,0)}var o=1,a=0;this[e]=255&t;while(++a=0&&(a*=256))this[e+o]=t/a&255;return e+r},c.prototype.writeUInt8=function(t,e,r){return t=+t,e|=0,r||F(this,t,e,1,255,0),c.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},c.prototype.writeUInt16LE=function(t,e,r){return t=+t,e|=0,r||F(this,t,e,2,65535,0),c.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):q(this,t,e,!0),e+2},c.prototype.writeUInt16BE=function(t,e,r){return t=+t,e|=0,r||F(this,t,e,2,65535,0),c.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):q(this,t,e,!1),e+2},c.prototype.writeUInt32LE=function(t,e,r){return t=+t,e|=0,r||F(this,t,e,4,4294967295,0),c.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):H(this,t,e,!0),e+4},c.prototype.writeUInt32BE=function(t,e,r){return t=+t,e|=0,r||F(this,t,e,4,4294967295,0),c.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):H(this,t,e,!1),e+4},c.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);F(this,t,e,r,i-1,-i)}var o=0,a=1,s=0;this[e]=255&t;while(++o>0)-s&255;return e+r},c.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);F(this,t,e,r,i-1,-i)}var o=r-1,a=1,s=0;this[e+o]=255&t;while(--o>=0&&(a*=256))t<0&&0===s&&0!==this[e+o+1]&&(s=1),this[e+o]=(t/a>>0)-s&255;return e+r},c.prototype.writeInt8=function(t,e,r){return t=+t,e|=0,r||F(this,t,e,1,127,-128),c.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},c.prototype.writeInt16LE=function(t,e,r){return t=+t,e|=0,r||F(this,t,e,2,32767,-32768),c.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):q(this,t,e,!0),e+2},c.prototype.writeInt16BE=function(t,e,r){return t=+t,e|=0,r||F(this,t,e,2,32767,-32768),c.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):q(this,t,e,!1),e+2},c.prototype.writeInt32LE=function(t,e,r){return t=+t,e|=0,r||F(this,t,e,4,2147483647,-2147483648),c.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):H(this,t,e,!0),e+4},c.prototype.writeInt32BE=function(t,e,r){return t=+t,e|=0,r||F(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),c.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):H(this,t,e,!1),e+4},c.prototype.writeFloatLE=function(t,e,r){return K(this,t,e,!0,r)},c.prototype.writeFloatBE=function(t,e,r){return K(this,t,e,!1,r)},c.prototype.writeDoubleLE=function(t,e,r){return V(this,t,e,!0,r)},c.prototype.writeDoubleBE=function(t,e,r){return V(this,t,e,!1,r)},c.prototype.copy=function(t,e,r,n){if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e=0;--i)t[i+e]=this[i+r];else if(o<1e3||!c.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"===typeof t)for(o=e;o55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(a+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function J(t){for(var e=[],r=0;r>8,i=r%256,o.push(i),o.push(n)}return o}function Q(t){return n.toByteArray($(t))}function tt(t,e,r,n){for(var i=0;i=e.length||i>=t.length)break;e[i+r]=t[i]}return i}function et(t){return t!==t}}).call(this,r("c8ba"))},b671:function(t,e,r){"use strict";function n(t){for(var r in t)e.hasOwnProperty(r)||(e[r]=t[r])}Object.defineProperty(e,"__esModule",{value:!0});var i=r("2330");e.secp256k1=i;var o=r("9a12"),a=r("399f");e.BN=a;var s=r("a3ca");e.rlp=s,Object.assign(e,o),n(r("ca96")),n(r("7001")),n(r("eb21")),n(r("b1ba")),n(r("40c9")),n(r("2fd2"))},b672:function(t,e,r){var n=r("8707").Buffer;function i(t,e){this._block=n.alloc(t),this._finalSize=e,this._blockSize=t,this._len=0}i.prototype.update=function(t,e){"string"===typeof t&&(e=e||"utf8",t=n.from(t,e));for(var r=this._block,i=this._blockSize,o=t.length,a=this._len,s=0;s=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=8*this._len;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var n=(4294967295&r)>>>0,i=(r-n)/4294967296;this._block.writeUInt32BE(i,this._blockSize-8),this._block.writeUInt32BE(n,this._blockSize-4)}this._update(this._block);var o=this._hash();return t?o.toString(t):o},i.prototype._update=function(){throw new Error("_update must be implemented by subclass")},t.exports=i},b692:function(t,e,r){(function(e){var n=r("98e6"),i=r("d485"),o=r("3fb5"),a=r("6fe7"),s=r("980c"),u=r("b4e8");function c(t){i.Writable.call(this);var e=u[t];if(!e)throw new Error("Unknown message digest");this._hashType=e.hash,this._hash=n(e.hash),this._tag=e.id,this._signType=e.sign}function f(t){i.Writable.call(this);var e=u[t];if(!e)throw new Error("Unknown message digest");this._hash=n(e.hash),this._tag=e.id,this._signType=e.sign}function h(t){return new c(t)}function l(t){return new f(t)}Object.keys(u).forEach((function(t){u[t].id=new e(u[t].id,"hex"),u[t.toLowerCase()]=u[t]})),o(c,i.Writable),c.prototype._write=function(t,e,r){this._hash.update(t),r()},c.prototype.update=function(t,r){return"string"===typeof t&&(t=new e(t,r)),this._hash.update(t),this},c.prototype.sign=function(t,e){this.end();var r=this._hash.digest(),n=a(r,t,this._hashType,this._signType,this._tag);return e?n.toString(e):n},o(f,i.Writable),f.prototype._write=function(t,e,r){this._hash.update(t),r()},f.prototype.update=function(t,r){return"string"===typeof t&&(t=new e(t,r)),this._hash.update(t),this},f.prototype.verify=function(t,r,n){"string"===typeof r&&(r=new e(r,n)),this.end();var i=this._hash.digest();return s(r,i,t,this._signType,this._tag)},t.exports={Sign:h,Verify:l,createSign:h,createVerify:l}}).call(this,r("b639").Buffer)},b73f:function(t,e,r){"use strict";var n=r("399f"),i=r("f3a3"),o=i.assert;function a(t,e){if(t instanceof a)return t;this._importDER(t,e)||(o(t.r&&t.s,"Signature without r or s"),this.r=new n(t.r,16),this.s=new n(t.s,16),void 0===t.recoveryParam?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}function s(){this.place=0}function u(t,e){var r=t[e.place++];if(!(128&r))return r;for(var n=15&r,i=0,o=0,a=e.place;o>>3);t.push(128|r);while(--r)t.push(e>>>(r<<3)&255);t.push(e)}}t.exports=a,a.prototype._importDER=function(t,e){t=i.toArray(t,e);var r=new s;if(48!==t[r.place++])return!1;var o=u(t,r);if(o+r.place!==t.length)return!1;if(2!==t[r.place++])return!1;var a=u(t,r),c=t.slice(r.place,a+r.place);if(r.place+=a,2!==t[r.place++])return!1;var f=u(t,r);if(t.length!==f+r.place)return!1;var h=t.slice(r.place,f+r.place);return 0===c[0]&&128&c[1]&&(c=c.slice(1)),0===h[0]&&128&h[1]&&(h=h.slice(1)),this.r=new n(c),this.s=new n(h),this.recoveryParam=null,!0},a.prototype.toDER=function(t){var e=this.r.toArray(),r=this.s.toArray();128&e[0]&&(e=[0].concat(e)),128&r[0]&&(r=[0].concat(r)),e=c(e),r=c(r);while(!r[0]&&!(128&r[1]))r=r.slice(1);var n=[2];f(n,e.length),n=n.concat(e),n.push(2),f(n,r.length);var o=n.concat(r),a=[48];return f(a,o.length),a=a.concat(o),i.encode(a,t)}},b7a1:function(t,e,r){"use strict";var n=r("17fb"),i=r("d100"),o=r("2c0b"),a=r("5562"),s=r("12c4"),u=r("2222");function c(t){var e=this;this.ens=t,this.contract=t.checkNetwork().then((function(t){var r=new i(s,t);return r.setProvider(e.ens.eth.currentProvider),r}))}c.prototype.owner=function(t,e){var r=new a(!0);return this.contract.then((function(i){i.methods.owner(o.hash(t)).call().then((function(t){r.resolve(t),n.isFunction(e)&&e(t)})).catch((function(t){r.reject(t),n.isFunction(e)&&e(t)}))})),r.eventEmitter},c.prototype.resolver=function(t){var e=this;return this.contract.then((function(e){return e.methods.resolver(o.hash(t)).call()})).then((function(t){var r=new i(u,t);return r.setProvider(e.ens.eth.currentProvider),r}))},t.exports=c},b7d1:function(t,e,r){(function(e){function r(t,e){if(n("noDeprecation"))return t;var r=!1;function i(){if(!r){if(n("throwDeprecation"))throw new Error(e);n("traceDeprecation")?console.trace(e):console.warn(e),r=!0}return t.apply(this,arguments)}return i}function n(t){try{if(!e.localStorage)return!1}catch(n){return!1}var r=e.localStorage[t];return null!=r&&"true"===String(r).toLowerCase()}t.exports=r}).call(this,r("c8ba"))},b837:function(t,e,r){var n=r("3fb5"),i=r("4fd1"),o=r("b672"),a=r("8707").Buffer,s=new Array(160);function u(){this.init(),this._w=s,o.call(this,128,112)}n(u,i),u.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},u.prototype._hash=function(){var t=a.allocUnsafe(48);function e(e,r,n){t.writeInt32BE(e,n),t.writeInt32BE(r,n+4)}return e(this._ah,this._al,0),e(this._bh,this._bl,8),e(this._ch,this._cl,16),e(this._dh,this._dl,24),e(this._eh,this._el,32),e(this._fh,this._fl,40),t},t.exports=u},b9a8:function(t,e,r){"use strict";var n=r("399f"),i=r("6aa2"),o=r("f3a3"),a=r("0cbb"),s=r("fdac"),u=o.assert,c=r("bb34"),f=r("b73f");function h(t){if(!(this instanceof h))return new h(t);"string"===typeof t&&(u(a.hasOwnProperty(t),"Unknown curve "+t),t=a[t]),t instanceof a.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),this.hash=t.hash||t.curve.hash}t.exports=h,h.prototype.keyPair=function(t){return new c(this,t)},h.prototype.keyFromPrivate=function(t,e){return c.fromPrivate(this,t,e)},h.prototype.keyFromPublic=function(t,e){return c.fromPublic(this,t,e)},h.prototype.genKeyPair=function(t){t||(t={});var e=new i({hash:this.hash,pers:t.pers,persEnc:t.persEnc||"utf8",entropy:t.entropy||s(this.hash.hmacStrength),entropyEnc:t.entropy&&t.entropyEnc||"utf8",nonce:this.n.toArray()}),r=this.n.byteLength(),o=this.n.sub(new n(2));do{var a=new n(e.generate(r));if(!(a.cmp(o)>0))return a.iaddn(1),this.keyFromPrivate(a)}while(1)},h.prototype._truncateToN=function(t,e){var r=8*t.byteLength()-this.n.bitLength();return r>0&&(t=t.ushrn(r)),!e&&t.cmp(this.n)>=0?t.sub(this.n):t},h.prototype.sign=function(t,e,r,o){"object"===typeof r&&(o=r,r=null),o||(o={}),e=this.keyFromPrivate(e,r),t=this._truncateToN(new n(t,16));for(var a=this.n.byteLength(),s=e.getPrivate().toArray("be",a),u=t.toArray("be",a),c=new i({hash:this.hash,entropy:s,nonce:u,pers:o.pers,persEnc:o.persEnc||"utf8"}),h=this.n.sub(new n(1)),l=0;1;l++){var d=o.k?o.k(l):new n(c.generate(this.n.byteLength()));if(d=this._truncateToN(d,!0),!(d.cmpn(1)<=0||d.cmp(h)>=0)){var p=this.g.mul(d);if(!p.isInfinity()){var m=p.getX(),y=m.umod(this.n);if(0!==y.cmpn(0)){var v=d.invm(this.n).mul(y.mul(e.getPrivate()).iadd(t));if(v=v.umod(this.n),0!==v.cmpn(0)){var b=(p.getY().isOdd()?1:0)|(0!==m.cmp(y)?2:0);return o.canonical&&v.cmp(this.nh)>0&&(v=this.n.sub(v),b^=1),new f({r:y,s:v,recoveryParam:b})}}}}}},h.prototype.verify=function(t,e,r,i){t=this._truncateToN(new n(t,16)),r=this.keyFromPublic(r,i),e=new f(e,"hex");var o=e.r,a=e.s;if(o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;if(a.cmpn(1)<0||a.cmp(this.n)>=0)return!1;var s=a.invm(this.n),u=s.mul(t).umod(this.n),c=s.mul(o).umod(this.n);if(!this.curve._maxwellTrick){var h=this.g.mulAdd(u,r.getPublic(),c);return!h.isInfinity()&&0===h.getX().umod(this.n).cmp(o)}h=this.g.jmulAdd(u,r.getPublic(),c);return!h.isInfinity()&&h.eqXToP(o)},h.prototype.recoverPubKey=function(t,e,r,i){u((3&r)===r,"The recovery param is more than two bits"),e=new f(e,i);var o=this.n,a=new n(t),s=e.r,c=e.s,h=1&r,l=r>>1;if(s.cmp(this.curve.p.umod(this.curve.n))>=0&&l)throw new Error("Unable to find sencond key candinate");s=l?this.curve.pointFromX(s.add(this.curve.n),h):this.curve.pointFromX(s,h);var d=e.r.invm(o),p=o.sub(a).mul(d).umod(o),m=c.mul(d).umod(o);return this.g.mulAdd(p,s,m)},h.prototype.getKeyRecoveryParam=function(t,e,r,n){if(e=new f(e,n),null!==e.recoveryParam)return e.recoveryParam;for(var i=0;i<4;i++){var o;try{o=this.recoverPubKey(t,e,i)}catch(t){continue}if(o.eq(r))return i}throw new Error("Unable to find valid recovery factor")}},bac2:function(t,e,r){var n={ECB:r("0145"),CBC:r("c119"),CFB:r("3505"),CFB8:r("62c9"),CFB1:r("5239"),OFB:r("5165"),CTR:r("6ade"),GCM:r("6ade")},i=r("e85f");for(var o in i)i[o].module=n[i[o].mode];t.exports=i},bb34:function(t,e,r){"use strict";var n=r("399f"),i=r("f3a3"),o=i.assert;function a(t,e){this.ec=t,this.priv=null,this.pub=null,e.priv&&this._importPrivate(e.priv,e.privEnc),e.pub&&this._importPublic(e.pub,e.pubEnc)}t.exports=a,a.fromPublic=function(t,e,r){return e instanceof a?e:new a(t,{pub:e,pubEnc:r})},a.fromPrivate=function(t,e,r){return e instanceof a?e:new a(t,{priv:e,privEnc:r})},a.prototype.validate=function(){var t=this.getPublic();return t.isInfinity()?{result:!1,reason:"Invalid public key"}:t.validate()?t.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},a.prototype.getPublic=function(t,e){return"string"===typeof t&&(e=t,t=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),e?this.pub.encode(e,t):this.pub},a.prototype.getPrivate=function(t){return"hex"===t?this.priv.toString(16,2):this.priv},a.prototype._importPrivate=function(t,e){this.priv=new n(t,e||16),this.priv=this.priv.umod(this.ec.curve.n)},a.prototype._importPublic=function(t,e){if(t.x||t.y)return"mont"===this.ec.curve.type?o(t.x,"Need x coordinate"):"short"!==this.ec.curve.type&&"edwards"!==this.ec.curve.type||o(t.x&&t.y,"Need both x and y coordinate"),void(this.pub=this.ec.curve.point(t.x,t.y));this.pub=this.ec.curve.decodePoint(t,e)},a.prototype.derive=function(t){return t.mul(this.priv).getX()},a.prototype.sign=function(t,e,r){return this.ec.sign(t,this,e,r)},a.prototype.verify=function(t,e){return this.ec.verify(t,e,this)},a.prototype.inspect=function(){return""}},bb44:function(t,e,r){"use strict";var n=r("c3c0"),i=r("edc9"),o=n.rotl32,a=n.sum32,s=n.sum32_3,u=n.sum32_4,c=i.BlockHash;function f(){if(!(this instanceof f))return new f;c.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}function h(t,e,r,n){return t<=15?e^r^n:t<=31?e&r|~e&n:t<=47?(e|~r)^n:t<=63?e&n|r&~n:e^(r|~n)}function l(t){return t<=15?0:t<=31?1518500249:t<=47?1859775393:t<=63?2400959708:2840853838}function d(t){return t<=15?1352829926:t<=31?1548603684:t<=47?1836072691:t<=63?2053994217:0}n.inherits(f,c),e.ripemd160=f,f.blockSize=512,f.outSize=160,f.hmacStrength=192,f.padLength=64,f.prototype._update=function(t,e){for(var r=this.h[0],n=this.h[1],i=this.h[2],c=this.h[3],f=this.h[4],b=r,g=n,w=i,_=c,A=f,E=0;E<80;E++){var x=a(o(u(r,h(E,n,i,c),t[p[E]+e],l(E)),y[E]),f);r=f,f=c,c=o(i,10),i=n,n=x,x=a(o(u(b,h(79-E,g,w,_),t[m[E]+e],d(E)),v[E]),A),b=A,A=_,_=o(w,10),w=g,g=x}x=s(this.h[1],i,_),this.h[1]=s(this.h[2],c,A),this.h[2]=s(this.h[3],f,b),this.h[3]=s(this.h[4],r,g),this.h[4]=s(this.h[0],n,w),this.h[0]=x},f.prototype._digest=function(t){return"hex"===t?n.toHex32(this.h,"little"):n.split32(this.h,"little")};var p=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],m=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],y=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],v=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]},bbaf:function(t,e,r){var n=r("17fb"),i=r("1131"),o=r("4e33").AbiCoder,a=new o((function(t,e){return!t.match(/^u?int/)||n.isArray(e)||n.isObject(e)&&"BN"===e.constructor.name?e:e.toString()}));function s(){}var u=function(){};u.prototype.encodeFunctionSignature=function(t){return n.isObject(t)&&(t=i._jsonInterfaceMethodToString(t)),i.sha3(t).slice(0,10)},u.prototype.encodeEventSignature=function(t){return n.isObject(t)&&(t=i._jsonInterfaceMethodToString(t)),i.sha3(t)},u.prototype.encodeParameter=function(t,e){return this.encodeParameters([t],[e])},u.prototype.encodeParameters=function(t,e){return a.encode(this.mapTypes(t),e.map((function(t){return i.isBN(t)||i.isBigNumber(t)?t.toString(10):t})))},u.prototype.mapTypes=function(t){var e=this,r=[];return t.forEach((function(t){if(e.isSimplifiedStructFormat(t)){var n=Object.keys(t)[0];r.push(Object.assign(e.mapStructNameAndType(n),{components:e.mapStructToCoderFormat(t[n])}))}else r.push(t)})),r},u.prototype.isSimplifiedStructFormat=function(t){return"object"===typeof t&&"undefined"===typeof t.components&&"undefined"===typeof t.name},u.prototype.mapStructNameAndType=function(t){var e="tuple";return t.indexOf("[]")>-1&&(e="tuple[]",t=t.slice(0,-2)),{type:e,name:t}},u.prototype.mapStructToCoderFormat=function(t){var e=this,r=[];return Object.keys(t).forEach((function(n){"object"!==typeof t[n]?r.push({name:n,type:t[n]}):r.push(Object.assign(e.mapStructNameAndType(n),{components:e.mapStructToCoderFormat(t[n])}))})),r},u.prototype.encodeFunctionCall=function(t,e){return this.encodeFunctionSignature(t)+this.encodeParameters(t.inputs,e).replace("0x","")},u.prototype.decodeParameter=function(t,e){return this.decodeParameters([t],e)[0]},u.prototype.decodeParameters=function(t,e){if(t.length>0&&(!e||"0x"===e||"0X"===e))throw new Error("Returned values aren't valid, did it run Out of Gas? You might also see this error if you are not using the correct ABI for the contract you are retrieving data from, requesting data from a block number that does not exist, or querying a node which is not fully synced.");var r=a.decode(this.mapTypes(t),"0x"+e.replace(/0x/i,"")),i=new s;return i.__length__=0,t.forEach((function(t,e){var o=r[i.__length__];o="0x"===o?null:o,i[e]=o,n.isObject(t)&&t.name&&(i[t.name]=o),i.__length__++})),i},u.prototype.decodeLog=function(t,e,r){var i=this;r=n.isArray(r)?r:[r],e=e||"";var o=[],a=[],u=0;t.forEach((function(t,e){t.indexed?(a[e]=["bool","int","uint","address","fixed","ufixed"].find((function(e){return-1!==t.type.indexOf(e)}))?i.decodeParameter(t.type,r[u]):r[u],u++):o[e]=t}));var c=e,f=c?this.decodeParameters(o,c):[],h=new s;return h.__length__=0,t.forEach((function(t,e){h[e]="string"===t.type?"":null,"undefined"!==typeof f[e]&&(h[e]=f[e]),"undefined"!==typeof a[e]&&(h[e]=a[e]),t.name&&(h[t.name]=h[e]),h.__length__++})),h};var c=new u;t.exports=c},bd9d:function(t,e){function r(t){var e,r=t.length;while(r--){if(e=t.readUInt8(r),255!==e){e++,t.writeUInt8(e,r);break}t.writeUInt8(0,r)}}t.exports=r},be09:function(t,e,r){(function(e){var r;r="undefined"!==typeof window?window:"undefined"!==typeof e?e:"undefined"!==typeof self?self:{},t.exports=r}).call(this,r("c8ba"))},c04e:function(t,e,r){var n=r("861d");t.exports=function(t,e){if(!n(t))return t;var r,i;if(e&&"function"==typeof(r=t.toString)&&!n(i=r.call(t)))return i;if("function"==typeof(r=t.valueOf)&&!n(i=r.call(t)))return i;if(!e&&"function"==typeof(r=t.toString)&&!n(i=r.call(t)))return i;throw TypeError("Can't convert object to primitive value")}},c119:function(t,e,r){var n=r("8c8a");e.encrypt=function(t,e){var r=n(e,t._prev);return t._prev=t._cipher.encryptBlock(r),t._prev},e.decrypt=function(t,e){var r=t._prev;t._prev=e;var i=t._cipher.decryptBlock(e);return n(i,r)}},c24d:function(t){t.exports=JSON.parse('{"modp1":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},"modp2":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},"modp5":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},"modp14":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},"modp15":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},"modp16":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},"modp17":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},"modp18":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}')},c2ae:function(t,e,r){t.exports=r("e372").PassThrough},c3c0:function(t,e,r){"use strict";var n=r("da3e"),i=r("3fb5");function o(t,e){return 55296===(64512&t.charCodeAt(e))&&(!(e<0||e+1>=t.length)&&56320===(64512&t.charCodeAt(e+1)))}function a(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var r=[];if("string"===typeof t)if(e){if("hex"===e)for(t=t.replace(/[^a-z0-9]+/gi,""),t.length%2!==0&&(t="0"+t),i=0;i>6|192,r[n++]=63&a|128):o(t,i)?(a=65536+((1023&a)<<10)+(1023&t.charCodeAt(++i)),r[n++]=a>>18|240,r[n++]=a>>12&63|128,r[n++]=a>>6&63|128,r[n++]=63&a|128):(r[n++]=a>>12|224,r[n++]=a>>6&63|128,r[n++]=63&a|128)}else for(i=0;i>>24|t>>>8&65280|t<<8&16711680|(255&t)<<24;return e>>>0}function c(t,e){for(var r="",n=0;n>>0}return a}function d(t,e){for(var r=new Array(4*t.length),n=0,i=0;n>>24,r[i+1]=o>>>16&255,r[i+2]=o>>>8&255,r[i+3]=255&o):(r[i+3]=o>>>24,r[i+2]=o>>>16&255,r[i+1]=o>>>8&255,r[i]=255&o)}return r}function p(t,e){return t>>>e|t<<32-e}function m(t,e){return t<>>32-e}function y(t,e){return t+e>>>0}function v(t,e,r){return t+e+r>>>0}function b(t,e,r,n){return t+e+r+n>>>0}function g(t,e,r,n,i){return t+e+r+n+i>>>0}function w(t,e,r,n){var i=t[e],o=t[e+1],a=n+o>>>0,s=(a>>0,t[e+1]=a}function _(t,e,r,n){var i=e+n>>>0,o=(i>>0}function A(t,e,r,n){var i=e+n;return i>>>0}function E(t,e,r,n,i,o,a,s){var u=0,c=e;c=c+n>>>0,u+=c>>0,u+=c>>0,u+=c>>0}function x(t,e,r,n,i,o,a,s){var u=e+n+o+s;return u>>>0}function M(t,e,r,n,i,o,a,s,u,c){var f=0,h=e;h=h+n>>>0,f+=h>>0,f+=h>>0,f+=h>>0,f+=h>>0}function k(t,e,r,n,i,o,a,s,u,c){var f=e+n+o+s+c;return f>>>0}function S(t,e,r){var n=e<<32-r|t>>>r;return n>>>0}function I(t,e,r){var n=t<<32-r|e>>>r;return n>>>0}function C(t,e,r){return t>>>r}function T(t,e,r){var n=t<<32-r|e>>>r;return n>>>0}e.inherits=i,e.toArray=a,e.toHex=s,e.htonl=u,e.toHex32=c,e.zero2=f,e.zero8=h,e.join32=l,e.split32=d,e.rotr32=p,e.rotl32=m,e.sum32=y,e.sum32_3=v,e.sum32_4=b,e.sum32_5=g,e.sum64=w,e.sum64_hi=_,e.sum64_lo=A,e.sum64_4_hi=E,e.sum64_4_lo=x,e.sum64_5_hi=M,e.sum64_5_lo=k,e.rotr64_hi=S,e.rotr64_lo=I,e.shr64_hi=C,e.shr64_lo=T},c430:function(t,e){t.exports=!1},c486:function(t,e,r){const n=r("1c46"),{checkAndInit:i,smix:o}=r("8f3b");async function a(t,e,r,a,s,u,c,f){const{XY:h,V:l,B32:d,x:p,_X:m,B:y,tickCallback:v}=i(t,e,r,a,s,u,c);for(var b=0;bt._pos){var o=r.substr(t._pos);if("x-user-defined"===t._charset){for(var a=new n(o.length),s=0;st._pos&&(t.push(new n(new Uint8Array(c.result.slice(t._pos)))),t._pos=c.result.byteLength)},c.onload=function(){t.push(null)},c.readAsArrayBuffer(r);break}t._xhr.readyState===u.DONE&&"ms-stream"!==t._mode&&t.push(null)}}).call(this,r("4362"),r("b639").Buffer,r("c8ba"))},c98c:function(t,e,r){"use strict";const n=r("e073"),i=r("92a9");t.exports=function(t){const e=n(t),r=i(t);return function(t,n){const i="string"===typeof t?t.toLowerCase():t;switch(i){case"keccak224":return new e(1152,448,null,224,n);case"keccak256":return new e(1088,512,null,256,n);case"keccak384":return new e(832,768,null,384,n);case"keccak512":return new e(576,1024,null,512,n);case"sha3-224":return new e(1152,448,6,224,n);case"sha3-256":return new e(1088,512,6,256,n);case"sha3-384":return new e(832,768,6,384,n);case"sha3-512":return new e(576,1024,6,512,n);case"shake128":return new r(1344,256,31,n);case"shake256":return new r(1088,512,31,n);default:throw new Error("Invald algorithm: "+t)}}}},ca84:function(t,e,r){var n=r("5135"),i=r("fc6a"),o=r("4d64").indexOf,a=r("d012");t.exports=function(t,e){var r,s=i(t),u=0,c=[];for(r in s)!n(a,r)&&n(s,r)&&c.push(r);while(e.length>u)n(s,r=e[u++])&&(~o(c,r)||c.push(r));return c}},ca96:function(t,e,r){"use strict";(function(t){Object.defineProperty(e,"__esModule",{value:!0});var n=r("399f");e.MAX_INTEGER=new n("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",16),e.TWO_POW256=new n("10000000000000000000000000000000000000000000000000000000000000000",16),e.KECCAK256_NULL_S="c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",e.KECCAK256_NULL=t.from(e.KECCAK256_NULL_S,"hex"),e.KECCAK256_RLP_ARRAY_S="1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",e.KECCAK256_RLP_ARRAY=t.from(e.KECCAK256_RLP_ARRAY_S,"hex"),e.KECCAK256_RLP_S="56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",e.KECCAK256_RLP=t.from(e.KECCAK256_RLP_S,"hex")}).call(this,r("b639").Buffer)},cc12:function(t,e,r){var n=r("da84"),i=r("861d"),o=n.document,a=i(o)&&i(o.createElement);t.exports=function(t){return a?o.createElement(t):{}}},cca6:function(t,e,r){var n=r("23e7"),i=r("60da");n({target:"Object",stat:!0,forced:Object.assign!==i},{assign:i})},cd08:function(t,e,r){"use strict";var n=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var i=n(r("399f")),o=r("948b"),a=r("6238"),s=r("3b2b"),u=r("4f1b");function c(t){"string"===typeof t&&t.match(/^0x[0-9A-Fa-f]{40}$/)||u.throwError("invalid address",u.INVALID_ARGUMENT,{arg:"address",value:t}),t=t.toLowerCase();for(var e=t.substring(2).split(""),r=new Uint8Array(40),n=0;n<40;n++)r[n]=e[n].charCodeAt(0);r=o.arrayify(a.keccak256(r));for(var i=0;i<40;i+=2)r[i>>1]>>4>=8&&(e[i]=e[i].toUpperCase()),(15&r[i>>1])>=8&&(e[i+1]=e[i+1].toUpperCase());return"0x"+e.join("")}var f=9007199254740991;function h(t){return Math.log10?Math.log10(t):Math.log(t)/Math.LN10}for(var l={},d=0;d<10;d++)l[String(d)]=String(d);for(d=0;d<26;d++)l[String.fromCharCode(65+d)]=String(10+d);var p=Math.floor(h(f));function m(t){t=t.toUpperCase(),t=t.substring(4)+t.substring(0,2)+"00";var e="";t.split("").forEach((function(t){e+=l[t]}));while(e.length>=p){var r=e.substring(0,p);e=parseInt(r,10)%97+e.substring(r.length)}var n=String(98-parseInt(e,10)%97);while(n.length<2)n="0"+n;return n}function y(t){var e=null;if("string"!==typeof t&&u.throwError("invalid address",u.INVALID_ARGUMENT,{arg:"address",value:t}),t.match(/^(0x)?[0-9a-fA-F]{40}$/))"0x"!==t.substring(0,2)&&(t="0x"+t),e=c(t),t.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&e!==t&&u.throwError("bad address checksum",u.INVALID_ARGUMENT,{arg:"address",value:t});else if(t.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){t.substring(2,4)!==m(t)&&u.throwError("bad icap checksum",u.INVALID_ARGUMENT,{arg:"address",value:t}),e=new i.default.BN(t.substring(4),36).toString(16);while(e.length<40)e="0"+e;e=c("0x"+e)}else u.throwError("invalid address",u.INVALID_ARGUMENT,{arg:"address",value:t});return e}function v(t){var e=new i.default.BN(y(t).substring(2),16).toString(36).toUpperCase();while(e.length<30)e="0"+e;return"XE"+m("XE00"+e)+e}function b(t){if(!t.from)throw new Error("missing from address");var e=t.nonce;return y("0x"+a.keccak256(s.encode([y(t.from),o.stripZeros(o.hexlify(e))])).substring(26))}e.getAddress=y,e.getIcapAddress=v,e.getContractAddress=b},cd10:function(t,e,r){var n=r("8707").Buffer;function i(t){if(t.length<8)return!1;if(t.length>72)return!1;if(48!==t[0])return!1;if(t[1]!==t.length-2)return!1;if(2!==t[2])return!1;var e=t[3];if(0===e)return!1;if(5+e>=t.length)return!1;if(2!==t[4+e])return!1;var r=t[5+e];return 0!==r&&(6+e+r===t.length&&(!(128&t[4])&&(!(e>1&&0===t[4]&&!(128&t[5]))&&(!(128&t[e+6])&&!(r>1&&0===t[e+6]&&!(128&t[e+7]))))))}function o(t){if(t.length<8)throw new Error("DER sequence length is too short");if(t.length>72)throw new Error("DER sequence length is too long");if(48!==t[0])throw new Error("Expected DER sequence");if(t[1]!==t.length-2)throw new Error("DER sequence length is invalid");if(2!==t[2])throw new Error("Expected DER integer");var e=t[3];if(0===e)throw new Error("R length is zero");if(5+e>=t.length)throw new Error("R length is too long");if(2!==t[4+e])throw new Error("Expected DER integer (2)");var r=t[5+e];if(0===r)throw new Error("S length is zero");if(6+e+r!==t.length)throw new Error("S length is invalid");if(128&t[4])throw new Error("R value is negative");if(e>1&&0===t[4]&&!(128&t[5]))throw new Error("R value excessively padded");if(128&t[e+6])throw new Error("S value is negative");if(r>1&&0===t[e+6]&&!(128&t[e+7]))throw new Error("S value excessively padded");return{r:t.slice(4,4+e),s:t.slice(6+e)}}function a(t,e){var r=t.length,i=e.length;if(0===r)throw new Error("R length is zero");if(0===i)throw new Error("S length is zero");if(r>33)throw new Error("R length is too long");if(i>33)throw new Error("S length is too long");if(128&t[0])throw new Error("R value is negative");if(128&e[0])throw new Error("S value is negative");if(r>1&&0===t[0]&&!(128&t[1]))throw new Error("R value excessively padded");if(i>1&&0===e[0]&&!(128&e[1]))throw new Error("S value excessively padded");var o=n.allocUnsafe(6+r+i);return o[0]=48,o[1]=o.length-2,o[2]=2,o[3]=t.length,t.copy(o,4),o[4+r]=2,o[5+r]=e.length,e.copy(o,6+r),o}t.exports={check:i,decode:o,encode:a}},cd91:function(t){t.exports=JSON.parse('{"1.3.132.0.10":"secp256k1","1.3.132.0.33":"p224","1.2.840.10045.3.1.1":"p192","1.2.840.10045.3.1.7":"p256","1.3.132.0.34":"p384","1.3.132.0.35":"p521"}')},cdf9:function(t,e,r){var n=r("825a"),i=r("861d"),o=r("f069");t.exports=function(t,e){if(n(t),i(e)&&e.constructor===t)return e;var r=o.f(t),a=r.resolve;return a(e),r.promise}},ce4e:function(t,e,r){var n=r("da84"),i=r("9112");t.exports=function(t,e){try{i(n,t,e)}catch(r){n[t]=e}return e}},cfbd:function(t,e,r){var n=r("3fb5"),i=r("7f7a"),o=i.base,a=i.bignum,s=i.constants.der;function u(t){this.enc="der",this.name=t.name,this.entity=t,this.tree=new c,this.tree._init(t.body)}function c(t){o.Node.call(this,"der",t)}function f(t,e){var r=t.readUInt8(e);if(t.isError(r))return r;var n=s.tagClass[r>>6],i=0===(32&r);if(31===(31&r)){var o=r;r=0;while(128===(128&o)){if(o=t.readUInt8(e),t.isError(o))return o;r<<=7,r|=127&o}}else r&=31;var a=s.tag[r];return{cls:n,primitive:i,tag:r,tagStr:a}}function h(t,e,r){var n=t.readUInt8(r);if(t.isError(n))return n;if(!e&&128===n)return null;if(0===(128&n))return n;var i=127&n;if(i>4)return t.error("length octect is too long");n=0;for(var o=0;ot.indexed?r++:null),r>0&&t.topics.length!==r+1&&(e={anonymous:!0,inputs:[]})}var n=e.anonymous?t.topics:t.topics.slice(1);return r.returnValues=h.decodeLog(e.inputs,t.data,n),delete r.returnValues.__length__,r.event=e.name,r.signature=e.anonymous||!t.topics[0]?null:t.topics[0],r.raw={data:r.data,topics:r.topics},delete r.data,delete r.topics,r},l.prototype._encodeMethodABI=function(){var t=this._method.signature,e=this.arguments||[],r=!1,i=this._parent.options.jsonInterface.filter((function(e){return"constructor"===t&&e.type===t||(e.signature===t||e.signature===t.replace("0x","")||e.name===t)&&"function"===e.type})).map((function(t){var i=n.isArray(t.inputs)?t.inputs.length:0;if(i!==e.length)throw new Error("The number of arguments is not matching the methods required number. You need to pass "+i+" arguments.");return"function"===t.type&&(r=t.signature),n.isArray(t.inputs)?t.inputs:[]})).map((function(t){return h.encodeParameters(t,e).replace("0x","")}))[0]||"";if("constructor"===t){if(!this._deployData)throw new Error("The contract has no contract data option set. This is necessary to append the constructor parameters.");return this._deployData+i}var o=r?r+i:i;if(o)return o;throw new Error("Couldn't find a matching contract method named \""+this._method.name+'".')},l.prototype._decodeMethodReturn=function(t,e){if(!e)return null;e=e.length>=2?e.slice(2):e;var r=h.decodeParameters(t,e);return 1===r.__length__?r[0]:(delete r.__length__,r)},l.prototype.deploy=function(t,e){if(t=t||{},t.arguments=t.arguments||[],t=this._getOrSetDefaultOptions(t),!t.data)return a._fireError(new Error('No "data" specified in neither the given options, nor the default options.'),null,null,e);var r=n.find(this.options.jsonInterface,(function(t){return"constructor"===t.type}))||{};return r.signature="constructor",this._createTxObject.apply({method:r,parent:this,deployData:t.data,_ethAccounts:this.constructor._ethAccounts},t.arguments)},l.prototype._generateEventOptions=function(){var t=Array.prototype.slice.call(arguments),e=this._getCallback(t),r=n.isObject(t[t.length-1])?t.pop():{},i=n.isString(t[0])?t[0]:"allevents",o="allevents"===i.toLowerCase()?{name:"ALLEVENTS",jsonInterface:this.options.jsonInterface}:this.options.jsonInterface.find((function(t){return"event"===t.type&&(t.name===i||t.signature==="0x"+i.replace("0x",""))}));if(!o)throw new Error('Event "'+i+"\" doesn't exist in this contract.");if(!a.isAddress(this.options.address))throw new Error("This contract object doesn't have address set yet, please set an address first.");return{params:this._encodeEventABI(o,r),event:o,callback:e}},l.prototype.clone=function(){return new this.constructor(this.options.jsonInterface,this.options.address,this.options)},l.prototype.once=function(t,e,r){var i=Array.prototype.slice.call(arguments);if(r=this._getCallback(i),!r)throw new Error("Once requires a callback as the second parameter.");e&&delete e.fromBlock,this._on(t,e,(function(t,e,i){i.unsubscribe(),n.isFunction(r)&&r(t,e,i)}))},l.prototype._on=function(){var t=this._generateEventOptions.apply(this,arguments);this._checkListener("newListener",t.event.name,t.callback),this._checkListener("removeListener",t.event.name,t.callback);var e=new s({subscription:{params:1,inputFormatter:[u.inputLogFormatter],outputFormatter:this._decodeEventABI.bind(t.event),subscriptionHandler:function(t){t.removed?this.emit("changed",t):this.emit("data",t),n.isFunction(this.callback)&&this.callback(null,t,this)}},type:"eth",requestManager:this._requestManager});return e.subscribe("logs",t.params,t.callback||function(){}),e},l.prototype.getPastEvents=function(){var t=this._generateEventOptions.apply(this,arguments),e=new o({name:"getPastLogs",call:"eth_getLogs",params:1,inputFormatter:[u.inputLogFormatter],outputFormatter:this._decodeEventABI.bind(t.event)});e.setRequestManager(this._requestManager);var r=e.buildCall();return e=null,r(t.params,t.callback)},l.prototype._createTxObject=function(){var t=Array.prototype.slice.call(arguments),e={};if("function"===this.method.type&&(e.call=this.parent._executeMethod.bind(e,"call"),e.call.request=this.parent._executeMethod.bind(e,"call",!0)),e.send=this.parent._executeMethod.bind(e,"send"),e.send.request=this.parent._executeMethod.bind(e,"send",!0),e.encodeABI=this.parent._encodeMethodABI.bind(e),e.estimateGas=this.parent._executeMethod.bind(e,"estimate"),t&&this.method.inputs&&t.length!==this.method.inputs.length){if(this.nextMethod)return this.nextMethod.apply(null,t);throw c.InvalidNumberOfParams(t.length,this.method.inputs.length,this.method.name)}return e.arguments=t||[],e._method=this.method,e._parent=this.parent,e._ethAccounts=this.parent.constructor._ethAccounts||this._ethAccounts,this.deployData&&(e._deployData=this.deployData),e},l.prototype._processExecuteArguments=function(t,e){var r={};if(r.type=t.shift(),r.callback=this._parent._getCallback(t),"call"===r.type&&!0!==t[t.length-1]&&(n.isString(t[t.length-1])||isFinite(t[t.length-1]))&&(r.defaultBlock=t.pop()),r.options=n.isObject(t[t.length-1])?t.pop():{},r.generateRequest=!0===t[t.length-1]&&t.pop(),r.options=this._parent._getOrSetDefaultOptions(r.options),r.options.data=this.encodeABI(),!this._deployData&&!a.isAddress(this._parent.options.address))throw new Error("This contract object doesn't have address set yet, please set an address first.");return this._deployData||(r.options.to=this._parent.options.address),r.options.data?r:a._fireError(new Error("Couldn't find a matching contract method, or the number of parameters is wrong."),e.eventEmitter,e.reject,r.callback)},l.prototype._executeMethod=function(){var t=this,e=this._parent._processExecuteArguments.call(this,Array.prototype.slice.call(arguments),r),r=f("send"!==e.type),i=t.constructor._ethAccounts||t._ethAccounts;if(e.generateRequest){var s={params:[u.inputCallFormatter.call(this._parent,e.options)],callback:e.callback};return"call"===e.type?(s.params.push(u.inputDefaultBlockNumberFormatter.call(this._parent,e.defaultBlock)),s.method="eth_call",s.format=this._parent._decodeMethodReturn.bind(null,this._method.outputs)):s.method="eth_sendTransaction",s}switch(e.type){case"estimate":var c=new o({name:"estimateGas",call:"eth_estimateGas",params:1,inputFormatter:[u.inputCallFormatter],outputFormatter:a.hexToNumber,requestManager:t._parent._requestManager,accounts:i,defaultAccount:t._parent.defaultAccount,defaultBlock:t._parent.defaultBlock}).createFunction();return c(e.options,e.callback);case"call":var l=new o({name:"call",call:"eth_call",params:2,inputFormatter:[u.inputCallFormatter,u.inputDefaultBlockNumberFormatter],outputFormatter:function(e){return t._parent._decodeMethodReturn(t._method.outputs,e)},requestManager:t._parent._requestManager,accounts:i,defaultAccount:t._parent.defaultAccount,defaultBlock:t._parent.defaultBlock,handleRevert:t._parent.handleRevert,abiCoder:h}).createFunction();return l(e.options,e.defaultBlock,e.callback);case"send":if(!a.isAddress(e.options.from))return a._fireError(new Error('No "from" address specified in neither the given options, nor the default options.'),r.eventEmitter,r.reject,e.callback);if(n.isBoolean(this._method.payable)&&!this._method.payable&&e.options.value&&e.options.value>0)return a._fireError(new Error("Can not send value to non-payable contract method or constructor"),r.eventEmitter,r.reject,e.callback);var d={receiptFormatter:function(e){if(n.isArray(e.logs)){var r=n.map(e.logs,(function(e){return t._parent._decodeEventABI.call({name:"ALLEVENTS",jsonInterface:t._parent.options.jsonInterface},e)}));e.events={};var i=0;r.forEach((function(t){t.event?e.events[t.event]?Array.isArray(e.events[t.event])?e.events[t.event].push(t):e.events[t.event]=[e.events[t.event],t]:e.events[t.event]=t:(e.events[i]=t,i++)})),delete e.logs}return e},contractDeployFormatter:function(e){var r=t._parent.clone();return r.options.address=e.contractAddress,r}},p=new o({name:"sendTransaction",call:"eth_sendTransaction",params:1,inputFormatter:[u.inputTransactionFormatter],requestManager:t._parent._requestManager,accounts:t.constructor._ethAccounts||t._ethAccounts,defaultAccount:t._parent.defaultAccount,defaultBlock:t._parent.defaultBlock,transactionBlockTimeout:t._parent.transactionBlockTimeout,transactionConfirmationBlocks:t._parent.transactionConfirmationBlocks,transactionPollingTimeout:t._parent.transactionPollingTimeout,defaultCommon:t._parent.defaultCommon,defaultChain:t._parent.defaultChain,defaultHardfork:t._parent.defaultHardfork,handleRevert:t._parent.handleRevert,extraFormatters:d,abiCoder:h}).createFunction();return p(e.options,e.callback)}},t.exports=l},d17b:function(t,e,r){t.exports=r("e372").Transform},d1c8:function(t,e,r){var n=r("3fb5");function i(t){this._reporterState={obj:null,path:[],options:t||{},errors:[]}}function o(t,e){this.path=t,this.rethrow(e)}e.Reporter=i,i.prototype.isError=function(t){return t instanceof o},i.prototype.save=function(){var t=this._reporterState;return{obj:t.obj,pathLen:t.path.length}},i.prototype.restore=function(t){var e=this._reporterState;e.obj=t.obj,e.path=e.path.slice(0,t.pathLen)},i.prototype.enterKey=function(t){return this._reporterState.path.push(t)},i.prototype.exitKey=function(t){var e=this._reporterState;e.path=e.path.slice(0,t-1)},i.prototype.leaveKey=function(t,e,r){var n=this._reporterState;this.exitKey(t),null!==n.obj&&(n.obj[e]=r)},i.prototype.path=function(){return this._reporterState.path.join("/")},i.prototype.enterObject=function(){var t=this._reporterState,e=t.obj;return t.obj={},e},i.prototype.leaveObject=function(t){var e=this._reporterState,r=e.obj;return e.obj=t,r},i.prototype.error=function(t){var e,r=this._reporterState,n=t instanceof o;if(e=n?t:new o(r.path.map((function(t){return"["+JSON.stringify(t)+"]"})).join(""),t.message||t,t.stack),!r.options.partial)throw e;return n||r.errors.push(e),e},i.prototype.wrapResult=function(t){var e=this._reporterState;return e.options.partial?{result:this.isError(t)?null:t,errors:e.errors}:t},n(o,Error),o.prototype.rethrow=function(t){if(this.message=t+" at: "+(this.path||"(shallow)"),Error.captureStackTrace&&Error.captureStackTrace(this,o),!this.stack)try{throw new Error(this.message)}catch(e){this.stack=e.stack}return this}},d1e0:function(t,e,r){"use strict";var n=Object.prototype.hasOwnProperty,i="~";function o(){}function a(t,e,r){this.fn=t,this.context=e,this.once=r||!1}function s(t,e,r,n,o){if("function"!==typeof r)throw new TypeError("The listener must be a function");var s=new a(r,n||t,o),u=i?i+e:e;return t._events[u]?t._events[u].fn?t._events[u]=[t._events[u],s]:t._events[u].push(s):(t._events[u]=s,t._eventsCount++),t}function u(t,e){0===--t._eventsCount?t._events=new o:delete t._events[e]}function c(){this._events=new o,this._eventsCount=0}Object.create&&(o.prototype=Object.create(null),(new o).__proto__||(i=!1)),c.prototype.eventNames=function(){var t,e,r=[];if(0===this._eventsCount)return r;for(e in t=this._events)n.call(t,e)&&r.push(i?e.slice(1):e);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(t)):r},c.prototype.listeners=function(t){var e=i?i+t:t,r=this._events[e];if(!r)return[];if(r.fn)return[r.fn];for(var n=0,o=r.length,a=new Array(o);ns?e=t(e):e.length=e&&n<=r?n-e+10:t})).join("")},s=function(t){var e,r=t;while(r.length>2)e=r.slice(0,9),r=parseInt(e,10)%97+r.slice(e.length);return parseInt(r,10)%97},u=function(t){this._iban=t};u.toAddress=function(t){if(t=new u(t),!t.isDirect())throw new Error("IBAN is indirect and can't be converted");return t.toAddress()},u.toIban=function(t){return u.fromAddress(t).toString()},u.fromAddress=function(t){if(!n.isAddress(t))throw new Error("Provided address is not a valid address: "+t);t=t.replace("0x","").replace("0X","");var e=new i(t,16),r=e.toString(36),a=o(r,15);return u.fromBban(a.toUpperCase())},u.fromBban=function(t){var e="XE",r=s(a(e+"00"+t)),n=("0"+(98-r)).slice(-2);return new u(e+n+t)},u.createIndirect=function(t){return u.fromBban("ETH"+t.institution+t.identifier)},u.isValid=function(t){var e=new u(t);return e.isValid()},u.prototype.isValid=function(){return/^XE[0-9]{2}(ETH[0-9A-Z]{13}|[0-9A-Z]{30,31})$/.test(this._iban)&&1===s(a(this._iban))},u.prototype.isDirect=function(){return 34===this._iban.length||35===this._iban.length},u.prototype.isIndirect=function(){return 20===this._iban.length},u.prototype.checksum=function(){return this._iban.substr(2,2)},u.prototype.institution=function(){return this.isIndirect()?this._iban.substr(7,4):""},u.prototype.client=function(){return this.isIndirect()?this._iban.substr(11):""},u.prototype.toAddress=function(){if(this.isDirect()){var t=this._iban.substr(4),e=new i(t,36);return n.toChecksumAddress(e.toString(16,20))}return""},u.prototype.toString=function(){return this._iban},t.exports=u},da84:function(t,e,r){(function(e){var r=function(t){return t&&t.Math==Math&&t};t.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof e&&e)||Function("return this")()}).call(this,r("c8ba"))},dbaf:function(t,e,r){var n,i;(function(o,a){n=[r("1985"),r("abeb")],i=function(t,e){return a(t,e)}.apply(e,n),void 0===i||(t.exports=i)})(0,(function(t,e){function r(r,n,i){for(var o=[],a=t.ucs2.decode(r),s=0;s>23,l=f>>21&3,d=f>>5&65535,p=31&f,m=e.mapStr.substr(d,p);if(0===l||n&&1&h)throw new Error("Illegal char "+c);1===l?o.push(m):2===l?o.push(i?m:c):3===l&&o.push(c)}var y=o.join("").normalize("NFC");return y}function n(e,n,o){void 0===o&&(o=!1);var a=r(e,o,n),s=a.split(".");return s=s.map((function(e){return e.startsWith("xn--")?(e=t.decode(e.substring(4)),i(e,o,!1)):i(e,o,n),e})),s.join(".")}function i(t,n,i){if("-"===t[2]&&"-"===t[3])throw new Error("Failed to validate "+t);if(t.startsWith("-")||t.endsWith("-"))throw new Error("Failed to validate "+t);if(t.includes("."))throw new Error("Failed to validate "+t);if(r(t,n,i)!==t)throw new Error("Failed to validate "+t);var o=t.codePointAt(0);if(e.mapChar(o)&2<<23)throw new Error("Label contains illegal character: "+o)}function o(e,r){void 0===r&&(r={});var i,o=!("transitional"in r)||r.transitional,a="useStd3ASCII"in r&&r.useStd3ASCII,s="verifyDnsLength"in r&&r.verifyDnsLength,u=n(e,o,a).split("."),c=u.map(t.toASCII),f=c.join(".");if(s){if(f.length<1||f.length>253)throw new Error("DNS name has wrong length: "+f);for(i=0;i63)throw new Error("DNS label has wrong length: "+h)}}return f}function a(t,e){void 0===e&&(e={});var r="useStd3ASCII"in e&&e.useStd3ASCII;return n(t,!1,r)}return{toUnicode:a,toAscii:o}}))},dc14:function(t,e,r){"use strict";(function(e,n){var i=r("966d");function o(t){var e=this;this.next=null,this.entry=null,this.finish=function(){B(e,t)}}t.exports=g;var a,s=!e.browser&&["v0.10","v0.9."].indexOf(e.version.slice(0,5))>-1?setImmediate:i.nextTick;g.WritableState=b;var u=Object.create(r("3a7c"));u.inherits=r("3fb5");var c={deprecate:r("b7d1")},f=r("429b"),h=r("8707").Buffer,l=n.Uint8Array||function(){};function d(t){return h.from(t)}function p(t){return h.isBuffer(t)||t instanceof l}var m,y=r("4681");function v(){}function b(t,e){a=a||r("b19a"),t=t||{};var n=e instanceof a;this.objectMode=!!t.objectMode,n&&(this.objectMode=this.objectMode||!!t.writableObjectMode);var i=t.highWaterMark,s=t.writableHighWaterMark,u=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:n&&(s||0===s)?s:u,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var c=!1===t.decodeStrings;this.decodeStrings=!c,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){S(e,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new o(this)}function g(t){if(a=a||r("b19a"),!m.call(g,this)&&!(this instanceof a))return new g(t);this._writableState=new b(t,this),this.writable=!0,t&&("function"===typeof t.write&&(this._write=t.write),"function"===typeof t.writev&&(this._writev=t.writev),"function"===typeof t.destroy&&(this._destroy=t.destroy),"function"===typeof t.final&&(this._final=t.final)),f.call(this)}function w(t,e){var r=new Error("write after end");t.emit("error",r),i.nextTick(e,r)}function _(t,e,r,n){var o=!0,a=!1;return null===r?a=new TypeError("May not write null values to stream"):"string"===typeof r||void 0===r||e.objectMode||(a=new TypeError("Invalid non-string/buffer chunk")),a&&(t.emit("error",a),i.nextTick(n,a),o=!1),o}function A(t,e,r){return t.objectMode||!1===t.decodeStrings||"string"!==typeof e||(e=h.from(e,r)),e}function E(t,e,r,n,i,o){if(!r){var a=A(e,n,i);n!==a&&(r=!0,i="buffer",n=a)}var s=e.objectMode?1:n.length;e.length+=s;var u=e.length-1))throw new TypeError("Unknown encoding: "+t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(g.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),g.prototype._write=function(t,e,r){r(new Error("_write() is not implemented"))},g.prototype._writev=null,g.prototype.end=function(t,e,r){var n=this._writableState;"function"===typeof t?(r=t,t=null,e=null):"function"===typeof e&&(r=e,e=null),null!==t&&void 0!==t&&this.write(t,e),n.corked&&(n.corked=1,this.uncork()),n.ending||n.finished||N(this,n,r)},Object.defineProperty(g.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),g.prototype.destroy=y.destroy,g.prototype._undestroy=y.undestroy,g.prototype._destroy=function(t,e){this.end(),e(t)}}).call(this,r("4362"),r("c8ba"))},dc60:function(t,e,r){"use strict";var n=this&&this.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])},t(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(e,"__esModule",{value:!0});var i=r("b671"),o=r("b639"),a=r("661f"),s=function(t){function e(e,r){void 0===e&&(e={}),void 0===r&&(r={});var n=t.call(this,e,r)||this;Object.defineProperty(n,"from",{enumerable:!0,configurable:!0,get:function(){return n.getSenderAddress()},set:function(t){t&&(n._from=i.toBuffer(t))}});var o=e;return o.from&&(n.from=i.toBuffer(o.from)),n}return n(e,t),e.prototype.hash=function(e){if(void 0===e&&(e=!0),e&&this._from&&""!==this._from.toString("hex")){var r=o.Buffer.concat([this._from,this._from.slice(0,12)]);this.sign(r)}return t.prototype.hash.call(this,e)},e}(a.default);e.default=s},df75:function(t,e,r){var n=r("ca84"),i=r("7839");t.exports=Object.keys||function(t){return n(t,i)}},df7c:function(t,e,r){(function(t){function r(t,e){for(var r=0,n=t.length-1;n>=0;n--){var i=t[n];"."===i?t.splice(n,1):".."===i?(t.splice(n,1),r++):r&&(t.splice(n,1),r--)}if(e)for(;r--;r)t.unshift("..");return t}function n(t){"string"!==typeof t&&(t+="");var e,r=0,n=-1,i=!0;for(e=t.length-1;e>=0;--e)if(47===t.charCodeAt(e)){if(!i){r=e+1;break}}else-1===n&&(i=!1,n=e+1);return-1===n?"":t.slice(r,n)}function i(t,e){if(t.filter)return t.filter(e);for(var r=[],n=0;n=-1&&!n;o--){var a=o>=0?arguments[o]:t.cwd();if("string"!==typeof a)throw new TypeError("Arguments to path.resolve must be strings");a&&(e=a+"/"+e,n="/"===a.charAt(0))}return e=r(i(e.split("/"),(function(t){return!!t})),!n).join("/"),(n?"/":"")+e||"."},e.normalize=function(t){var n=e.isAbsolute(t),a="/"===o(t,-1);return t=r(i(t.split("/"),(function(t){return!!t})),!n).join("/"),t||n||(t="."),t&&a&&(t+="/"),(n?"/":"")+t},e.isAbsolute=function(t){return"/"===t.charAt(0)},e.join=function(){var t=Array.prototype.slice.call(arguments,0);return e.normalize(i(t,(function(t,e){if("string"!==typeof t)throw new TypeError("Arguments to path.join must be strings");return t})).join("/"))},e.relative=function(t,r){function n(t){for(var e=0;e=0;r--)if(""!==t[r])break;return e>r?[]:t.slice(e,r-e+1)}t=e.resolve(t).substr(1),r=e.resolve(r).substr(1);for(var i=n(t.split("/")),o=n(r.split("/")),a=Math.min(i.length,o.length),s=a,u=0;u=1;--o)if(e=t.charCodeAt(o),47===e){if(!i){n=o;break}}else i=!1;return-1===n?r?"/":".":r&&1===n?"/":t.slice(0,n)},e.basename=function(t,e){var r=n(t);return e&&r.substr(-1*e.length)===e&&(r=r.substr(0,r.length-e.length)),r},e.extname=function(t){"string"!==typeof t&&(t+="");for(var e=-1,r=0,n=-1,i=!0,o=0,a=t.length-1;a>=0;--a){var s=t.charCodeAt(a);if(47!==s)-1===n&&(i=!1,n=a+1),46===s?-1===e?e=a:1!==o&&(o=1):-1!==e&&(o=-1);else if(!i){r=a+1;break}}return-1===e||-1===n||0===o||1===o&&e===n-1&&e===r+1?"":t.slice(e,n)};var o="b"==="ab".substr(-1)?function(t,e,r){return t.substr(e,r)}:function(t,e,r){return e<0&&(e=t.length+e),t.substr(e,r)}}).call(this,r("4362"))},e073:function(t,e,r){"use strict";const n=r("97cc").Buffer,i=r("d485").Transform,o=r("3fb5");t.exports=function(t){function e(e,r,n,o,a){i.call(this,a),this._rate=e,this._capacity=r,this._delimitedSuffix=n,this._hashBitLength=o,this._options=a,this._state=new t,this._state.initialize(e,r),this._finalized=!1}return o(e,i),e.prototype._transform=function(t,e,r){let n=null;try{this.update(t,e)}catch(i){n=i}r(n)},e.prototype._flush=function(t){let e=null;try{this.push(this.digest())}catch(r){e=r}t(e)},e.prototype.update=function(t,e){if(!n.isBuffer(t)&&"string"!==typeof t)throw new TypeError("Data must be a string or a buffer");if(this._finalized)throw new Error("Digest already called");return n.isBuffer(t)||(t=n.from(t,e)),this._state.absorb(t),this},e.prototype.digest=function(t){if(this._finalized)throw new Error("Digest already called");this._finalized=!0,this._delimitedSuffix&&this._state.absorbLastFewBits(this._delimitedSuffix);let e=this._state.squeeze(this._hashBitLength/8);return void 0!==t&&(e=e.toString(t)),this._resetState(),e},e.prototype._resetState=function(){return this._state.initialize(this._rate,this._capacity),this},e.prototype._clone=function(){const t=new e(this._rate,this._capacity,this._delimitedSuffix,this._hashBitLength,this._options);return this._state.copy(t._state),t._finalized=this._finalized,t},e}},e07b:function(t,e,r){var n=r("5a76"),i=r("b5ca"),o=r("69f2"),a=r("7d2a"),s=r("9f9d"),u=r("8707").Buffer,c=u.alloc(128),f={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,rmd160:20,ripemd160:20};function h(t,e,r){var n=l(t),i="sha512"===t||"sha384"===t?128:64;e.length>i?e=n(e):e.length=e.length?(t.target=void 0,{value:void 0,done:!0}):"keys"==r?{value:n,done:!1}:"values"==r?{value:e[n],done:!1}:{value:[n,e[n]],done:!1}}),"values"),o.Arguments=o.Array,i("keys"),i("values"),i("entries")},e2aa:function(t,e){var r=function(t){return function(){return new Promise((function(e,r){var n,i=function(r){var n={},i=r.target.files.length,o=0;[].map.call(r.target.files,(function(r){var a=new FileReader;a.onload=function(a){var s=new Uint8Array(a.target.result);if("directory"===t){var u=r.webkitRelativePath;n[u.slice(u.indexOf("/")+1)]={type:"text/plain",data:s},++o===i&&e(n)}else if("file"===t){var c=r.webkitRelativePath;e({type:mimetype.lookup(c),data:s})}else e(s)},a.readAsArrayBuffer(r)}))};"directory"===t?(n=document.createElement("input"),n.addEventListener("change",i),n.type="file",n.webkitdirectory=!0,n.mozdirectory=!0,n.msdirectory=!0,n.odirectory=!0,n.directory=!0):(n=document.createElement("input"),n.addEventListener("change",i),n.type="file");var o=document.createEvent("MouseEvents");o.initEvent("click",!0,!1),n.dispatchEvent(o)}))}};t.exports={data:r("data"),file:r("file"),directory:r("directory")}},e2cc:function(t,e,r){var n=r("6eeb");t.exports=function(t,e,r){for(var i in e)n(t,i,e[i],r);return t}},e372:function(t,e,r){e=t.exports=r("ad71"),e.Stream=e,e.Readable=e,e.Writable=r("dc14"),e.Duplex=r("b19a"),e.Transform=r("27bf"),e.PassThrough=r("780f")},e3db:function(t,e){var r={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==r.call(t)}},e57b:function(t,e,r){const n=r("1c46"),{checkAndInit:i,smixSync:o}=r("8f3b");function a(t,e,r,a,s,u,c){const{XY:f,V:h,B32:l,x:d,_X:p,B:m,tickCallback:y}=i(t,e,r,a,s,u,c);for(var v=0;v=51&&/native code/.test(D))return!1;var e=D.resolve(1),r=function(t){t((function(){}),(function(){}))},n=e.constructor={};return n[R]=r,!(e.then((function(){}))instanceof r)})),rt=et||!A((function(t){D.all(t)["catch"]((function(){}))})),nt=function(t){var e;return!(!y(t)||"function"!=typeof(e=t.then))&&e},it=function(t,e,r){if(!e.notified){e.notified=!0;var n=e.reactions;M((function(){var i=e.value,o=e.state==J,a=0;while(n.length>a){var s,u,c,f=n[a++],h=o?f.ok:f.fail,l=f.resolve,d=f.reject,p=f.domain;try{h?(o||(e.rejection===tt&&ut(t,e),e.rejection=Q),!0===h?s=i:(p&&p.enter(),s=h(i),p&&(p.exit(),c=!0)),s===f.promise?d(F("Promise-chain cycle")):(u=nt(s))?u.call(s,l,d):l(s)):d(i)}catch(m){p&&!c&&p.exit(),d(m)}}e.reactions=[],e.notified=!1,r&&!e.rejection&&at(t,e)}))}},ot=function(t,e,r){var n,i;$?(n=q.createEvent("Event"),n.promise=e,n.reason=r,n.initEvent(t,!1,!0),c.dispatchEvent(n)):n={promise:e,reason:r},(i=c["on"+t])?i(n):t===Y&&S("Unhandled promise rejection",r)},at=function(t,e){x.call(c,(function(){var r,n=e.value,i=st(e);if(i&&(r=C((function(){G?H.emit("unhandledRejection",n,t):ot(Y,t,n)})),e.rejection=G||st(e)?tt:Q,r.error))throw r.value}))},st=function(t){return t.rejection!==Q&&!t.parent},ut=function(t,e){x.call(c,(function(){G?H.emit("rejectionHandled",t):ot(W,t,e.value)}))},ct=function(t,e,r,n){return function(i){t(e,r,i,n)}},ft=function(t,e,r,n){e.done||(e.done=!0,n&&(e=n),e.value=r,e.state=X,it(t,e,!0))},ht=function(t,e,r,n){if(!e.done){e.done=!0,n&&(e=n);try{if(t===r)throw F("Promise can't be resolved itself");var i=nt(r);i?M((function(){var n={done:!1};try{i.call(r,ct(ht,t,n,e),ct(ft,t,n,e))}catch(o){ft(t,n,o,e)}})):(e.value=r,e.state=J,it(t,e,!1))}catch(o){ft(t,{done:!1},o,e)}}};et&&(D=function(t){b(this,D,N),v(t),n.call(this);var e=B(this);try{t(ct(ht,this,e),ct(ft,this,e))}catch(r){ft(this,e,r)}},n=function(t){j(this,{type:N,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:Z,value:void 0})},n.prototype=d(D.prototype,{then:function(t,e){var r=L(this),n=K(E(this,D));return n.ok="function"!=typeof t||t,n.fail="function"==typeof e&&e,n.domain=G?H.domain:void 0,r.parent=!0,r.reactions.push(n),r.state!=Z&&it(this,r,!1),n.promise},catch:function(t){return this.then(void 0,t)}}),i=function(){var t=new n,e=B(t);this.promise=t,this.resolve=ct(ht,t,e),this.reject=ct(ft,t,e)},I.f=K=function(t){return t===D||t===o?new i(t):V(t)},u||"function"!=typeof h||(a=h.prototype.then,l(h.prototype,"then",(function(t,e){var r=this;return new D((function(t,e){a.call(r,t,e)})).then(t,e)}),{unsafe:!0}),"function"==typeof z&&s({global:!0,enumerable:!0,forced:!0},{fetch:function(t){return k(D,z.apply(c,arguments))}}))),s({global:!0,wrap:!0,forced:et},{Promise:D}),p(D,N,!1,!0),m(N),o=f(N),s({target:N,stat:!0,forced:et},{reject:function(t){var e=K(this);return e.reject.call(void 0,t),e.promise}}),s({target:N,stat:!0,forced:u||et},{resolve:function(t){return k(u&&this===o?D:this,t)}}),s({target:N,stat:!0,forced:rt},{all:function(t){var e=this,r=K(e),n=r.resolve,i=r.reject,o=C((function(){var r=v(e.resolve),o=[],a=0,s=1;_(t,(function(t){var u=a++,c=!1;o.push(void 0),s++,r.call(e,t).then((function(t){c||(c=!0,o[u]=t,--s||n(o))}),i)})),--s||n(o)}));return o.error&&i(o.value),r.promise},race:function(t){var e=this,r=K(e),n=r.reject,i=C((function(){var i=v(e.resolve);_(t,(function(t){i.call(e,t).then(r.resolve,n)}))}));return i.error&&n(i.value),r.promise}})},e85f:function(t){t.exports=JSON.parse('{"aes-128-ecb":{"cipher":"AES","key":128,"iv":0,"mode":"ECB","type":"block"},"aes-192-ecb":{"cipher":"AES","key":192,"iv":0,"mode":"ECB","type":"block"},"aes-256-ecb":{"cipher":"AES","key":256,"iv":0,"mode":"ECB","type":"block"},"aes-128-cbc":{"cipher":"AES","key":128,"iv":16,"mode":"CBC","type":"block"},"aes-192-cbc":{"cipher":"AES","key":192,"iv":16,"mode":"CBC","type":"block"},"aes-256-cbc":{"cipher":"AES","key":256,"iv":16,"mode":"CBC","type":"block"},"aes128":{"cipher":"AES","key":128,"iv":16,"mode":"CBC","type":"block"},"aes192":{"cipher":"AES","key":192,"iv":16,"mode":"CBC","type":"block"},"aes256":{"cipher":"AES","key":256,"iv":16,"mode":"CBC","type":"block"},"aes-128-cfb":{"cipher":"AES","key":128,"iv":16,"mode":"CFB","type":"stream"},"aes-192-cfb":{"cipher":"AES","key":192,"iv":16,"mode":"CFB","type":"stream"},"aes-256-cfb":{"cipher":"AES","key":256,"iv":16,"mode":"CFB","type":"stream"},"aes-128-cfb8":{"cipher":"AES","key":128,"iv":16,"mode":"CFB8","type":"stream"},"aes-192-cfb8":{"cipher":"AES","key":192,"iv":16,"mode":"CFB8","type":"stream"},"aes-256-cfb8":{"cipher":"AES","key":256,"iv":16,"mode":"CFB8","type":"stream"},"aes-128-cfb1":{"cipher":"AES","key":128,"iv":16,"mode":"CFB1","type":"stream"},"aes-192-cfb1":{"cipher":"AES","key":192,"iv":16,"mode":"CFB1","type":"stream"},"aes-256-cfb1":{"cipher":"AES","key":256,"iv":16,"mode":"CFB1","type":"stream"},"aes-128-ofb":{"cipher":"AES","key":128,"iv":16,"mode":"OFB","type":"stream"},"aes-192-ofb":{"cipher":"AES","key":192,"iv":16,"mode":"OFB","type":"stream"},"aes-256-ofb":{"cipher":"AES","key":256,"iv":16,"mode":"OFB","type":"stream"},"aes-128-ctr":{"cipher":"AES","key":128,"iv":16,"mode":"CTR","type":"stream"},"aes-192-ctr":{"cipher":"AES","key":192,"iv":16,"mode":"CTR","type":"stream"},"aes-256-ctr":{"cipher":"AES","key":256,"iv":16,"mode":"CTR","type":"stream"},"aes-128-gcm":{"cipher":"AES","key":128,"iv":12,"mode":"GCM","type":"auth"},"aes-192-gcm":{"cipher":"AES","key":192,"iv":12,"mode":"GCM","type":"auth"},"aes-256-gcm":{"cipher":"AES","key":256,"iv":12,"mode":"GCM","type":"auth"}}')},e870:function(t,e,r){(function(e){var n=r("17fb"),i=r("399f"),o=r("a6b6"),a=r("f1dd"),s=r("7d96"),u=r("1455"),c=function(t){return i.isBN(t)},f=function(t){return t&&t.constructor&&"BigNumber"===t.constructor.name},h=function(t){try{return o.apply(null,arguments)}catch(e){throw new Error(e+' Given value: "'+t+'"')}},l=function(t){return"0x"+h(t).toTwos(256).toString(16,64)},d=function(t){return!!/^(0x)?[0-9a-f]{40}$/i.test(t)&&(!(!/^(0x|0X)?[0-9a-f]{40}$/.test(t)&&!/^(0x|0X)?[0-9A-F]{40}$/.test(t))||p(t))},p=function(t){t=t.replace(/^0x/i,"");for(var e=R(t.toLowerCase()).replace(/^0x/i,""),r=0;r<40;r++)if(parseInt(e[r],16)>7&&t[r].toUpperCase()!==t[r]||parseInt(e[r],16)<=7&&t[r].toLowerCase()!==t[r])return!1;return!0},m=function(t,e,r){var n=/^0x/i.test(t)||"number"===typeof t;t=t.toString(16).replace(/^0x/i,"");var i=e-t.length+1>=0?e-t.length+1:0;return(n?"0x":"")+new Array(i).join(r||"0")+t},y=function(t,e,r){var n=/^0x/i.test(t)||"number"===typeof t;t=t.toString(16).replace(/^0x/i,"");var i=e-t.length+1>=0?e-t.length+1:0;return(n?"0x":"")+t+new Array(i).join(r||"0")},v=function(t){t=a.encode(t);var e="";t=t.replace(/^(?:\u0000)*/,""),t=t.split("").reverse().join(""),t=t.replace(/^(?:\u0000)*/,""),t=t.split("").reverse().join("");for(var r=0;r>>4).toString(16)),e.push((15&t[r]).toString(16));return"0x"+e.join("")},E=function(t){if(t=t.toString(16),!M(t))throw new Error('Given value "'+t+'" is not a valid hex string.');t=t.replace(/^0x/i,"");for(var e=[],r=0;r=49&&a<=54?a-49+10:a>=17&&a<=22?a-17+10:15&a}return n}function u(t,e,r,n){for(var i=0,o=Math.min(t.length,r),a=e;a=49?s-49+10:s>=17?s-17+10:s}return i}o.isBN=function(t){return t instanceof o||null!==t&&"object"===typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"===typeof t)return this._initNumber(t,e,r);if("object"===typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),n(e===(0|e)&&e>=2&&e<=36),t=t.toString().replace(/\s+/g,"");var i=0;"-"===t[0]&&i++,16===e?this._parseHex(t,i):this._parseBase(t,e,i),"-"===t[0]&&(this.negative=1),this.strip(),"le"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initNumber=function(t,e,r){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(n(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),"le"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initArray=function(t,e,r){if(n("number"===typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var i=0;i=0;i-=3)a=t[i]|t[i-1]<<8|t[i-2]<<16,this.words[o]|=a<>>26-s&67108863,s+=24,s>=26&&(s-=26,o++);else if("le"===r)for(i=0,o=0;i>>26-s&67108863,s+=24,s>=26&&(s-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var r=0;r=e;r-=6)i=s(t,r,r+6),this.words[n]|=i<>>26-o&4194303,o+=24,o>=26&&(o-=26,n++);r+6!==e&&(i=s(t,e,r+6),this.words[n]|=i<>>26-o&4194303),this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var n=0,i=1;i<=67108863;i*=e)n++;n--,i=i/e|0;for(var o=t.length-r,a=o%n,s=Math.min(o,o-a)+r,c=0,f=r;f1&&0===this.words[this.length-1])this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var c=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],f=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],h=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function l(t){for(var e=new Array(t.bitLength()),r=0;r>>i}return e}function d(t,e,r){r.negative=e.negative^t.negative;var n=t.length+e.length|0;r.length=n,n=n-1|0;var i=0|t.words[0],o=0|e.words[0],a=i*o,s=67108863&a,u=a/67108864|0;r.words[0]=s;for(var c=1;c>>26,h=67108863&u,l=Math.min(c,e.length-1),d=Math.max(0,c-t.length+1);d<=l;d++){var p=c-d|0;i=0|t.words[p],o=0|e.words[d],a=i*o+h,f+=a/67108864|0,h=67108863&a}r.words[c]=0|h,u=0|f}return 0!==u?r.words[c]=0|u:r.length--,r.strip()}o.prototype.toString=function(t,e){var r;if(t=t||10,e=0|e||1,16===t||"hex"===t){r="";for(var i=0,o=0,a=0;a>>24-i&16777215,r=0!==o||a!==this.length-1?c[6-u.length]+u+r:u+r,i+=2,i>=26&&(i-=26,a--)}0!==o&&(r=o.toString(16)+r);while(r.length%e!==0)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var l=f[t],d=h[t];r="";var p=this.clone();p.negative=0;while(!p.isZero()){var m=p.modn(d).toString(t);p=p.idivn(d),r=p.isZero()?m+r:c[l-m.length]+m+r}this.isZero()&&(r="0"+r);while(r.length%e!==0)r="0"+r;return 0!==this.negative&&(r="-"+r),r}n(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&n(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return n("undefined"!==typeof a),this.toArrayLike(a,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var i=this.byteLength(),o=r||Math.max(1,i);n(i<=o,"byte array longer than desired length"),n(o>0,"Requested array length <= 0"),this.strip();var a,s,u="le"===e,c=new t(o),f=this.clone();if(u){for(s=0;!f.isZero();s++)a=f.andln(255),f.iushrn(8),c[s]=a;for(;s=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0===(8191&e)&&(r+=13,e>>>=13),0===(127&e)&&(r+=7,e>>>=7),0===(15&e)&&(r+=4,e>>>=4),0===(3&e)&&(r+=2,e>>>=2),0===(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var n=0;nt.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){n("number"===typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var i=0;i0&&(this.words[i]=~this.words[i]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){n("number"===typeof t&&t>=0);var r=t/26|0,i=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,n=t):(r=t,n=this);for(var i=0,o=0;o>>26;for(;0!==i&&o>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,n,i=this.cmp(t);if(0===i)return this.negative=0,this.length=1,this.words[0]=0,this;i>0?(r=this,n=t):(r=t,n=this);for(var o=0,a=0;a>26,this.words[a]=67108863&e;for(;0!==o&&a>26,this.words[a]=67108863&e;if(0===o&&a>>13,d=0|a[1],p=8191&d,m=d>>>13,y=0|a[2],v=8191&y,b=y>>>13,g=0|a[3],w=8191&g,_=g>>>13,A=0|a[4],E=8191&A,x=A>>>13,M=0|a[5],k=8191&M,S=M>>>13,I=0|a[6],C=8191&I,T=I>>>13,U=0|a[7],O=8191&U,P=U>>>13,R=0|a[8],N=8191&R,B=R>>>13,j=0|a[9],L=8191&j,D=j>>>13,F=0|s[0],q=8191&F,H=F>>>13,z=0|s[1],K=8191&z,V=z>>>13,G=0|s[2],$=8191&G,Y=G>>>13,W=0|s[3],Z=8191&W,J=W>>>13,X=0|s[4],Q=8191&X,tt=X>>>13,et=0|s[5],rt=8191&et,nt=et>>>13,it=0|s[6],ot=8191&it,at=it>>>13,st=0|s[7],ut=8191&st,ct=st>>>13,ft=0|s[8],ht=8191&ft,lt=ft>>>13,dt=0|s[9],pt=8191&dt,mt=dt>>>13;r.negative=t.negative^e.negative,r.length=19,n=Math.imul(h,q),i=Math.imul(h,H),i=i+Math.imul(l,q)|0,o=Math.imul(l,H);var yt=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(yt>>>26)|0,yt&=67108863,n=Math.imul(p,q),i=Math.imul(p,H),i=i+Math.imul(m,q)|0,o=Math.imul(m,H),n=n+Math.imul(h,K)|0,i=i+Math.imul(h,V)|0,i=i+Math.imul(l,K)|0,o=o+Math.imul(l,V)|0;var vt=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(vt>>>26)|0,vt&=67108863,n=Math.imul(v,q),i=Math.imul(v,H),i=i+Math.imul(b,q)|0,o=Math.imul(b,H),n=n+Math.imul(p,K)|0,i=i+Math.imul(p,V)|0,i=i+Math.imul(m,K)|0,o=o+Math.imul(m,V)|0,n=n+Math.imul(h,$)|0,i=i+Math.imul(h,Y)|0,i=i+Math.imul(l,$)|0,o=o+Math.imul(l,Y)|0;var bt=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(bt>>>26)|0,bt&=67108863,n=Math.imul(w,q),i=Math.imul(w,H),i=i+Math.imul(_,q)|0,o=Math.imul(_,H),n=n+Math.imul(v,K)|0,i=i+Math.imul(v,V)|0,i=i+Math.imul(b,K)|0,o=o+Math.imul(b,V)|0,n=n+Math.imul(p,$)|0,i=i+Math.imul(p,Y)|0,i=i+Math.imul(m,$)|0,o=o+Math.imul(m,Y)|0,n=n+Math.imul(h,Z)|0,i=i+Math.imul(h,J)|0,i=i+Math.imul(l,Z)|0,o=o+Math.imul(l,J)|0;var gt=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(gt>>>26)|0,gt&=67108863,n=Math.imul(E,q),i=Math.imul(E,H),i=i+Math.imul(x,q)|0,o=Math.imul(x,H),n=n+Math.imul(w,K)|0,i=i+Math.imul(w,V)|0,i=i+Math.imul(_,K)|0,o=o+Math.imul(_,V)|0,n=n+Math.imul(v,$)|0,i=i+Math.imul(v,Y)|0,i=i+Math.imul(b,$)|0,o=o+Math.imul(b,Y)|0,n=n+Math.imul(p,Z)|0,i=i+Math.imul(p,J)|0,i=i+Math.imul(m,Z)|0,o=o+Math.imul(m,J)|0,n=n+Math.imul(h,Q)|0,i=i+Math.imul(h,tt)|0,i=i+Math.imul(l,Q)|0,o=o+Math.imul(l,tt)|0;var wt=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(wt>>>26)|0,wt&=67108863,n=Math.imul(k,q),i=Math.imul(k,H),i=i+Math.imul(S,q)|0,o=Math.imul(S,H),n=n+Math.imul(E,K)|0,i=i+Math.imul(E,V)|0,i=i+Math.imul(x,K)|0,o=o+Math.imul(x,V)|0,n=n+Math.imul(w,$)|0,i=i+Math.imul(w,Y)|0,i=i+Math.imul(_,$)|0,o=o+Math.imul(_,Y)|0,n=n+Math.imul(v,Z)|0,i=i+Math.imul(v,J)|0,i=i+Math.imul(b,Z)|0,o=o+Math.imul(b,J)|0,n=n+Math.imul(p,Q)|0,i=i+Math.imul(p,tt)|0,i=i+Math.imul(m,Q)|0,o=o+Math.imul(m,tt)|0,n=n+Math.imul(h,rt)|0,i=i+Math.imul(h,nt)|0,i=i+Math.imul(l,rt)|0,o=o+Math.imul(l,nt)|0;var _t=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(_t>>>26)|0,_t&=67108863,n=Math.imul(C,q),i=Math.imul(C,H),i=i+Math.imul(T,q)|0,o=Math.imul(T,H),n=n+Math.imul(k,K)|0,i=i+Math.imul(k,V)|0,i=i+Math.imul(S,K)|0,o=o+Math.imul(S,V)|0,n=n+Math.imul(E,$)|0,i=i+Math.imul(E,Y)|0,i=i+Math.imul(x,$)|0,o=o+Math.imul(x,Y)|0,n=n+Math.imul(w,Z)|0,i=i+Math.imul(w,J)|0,i=i+Math.imul(_,Z)|0,o=o+Math.imul(_,J)|0,n=n+Math.imul(v,Q)|0,i=i+Math.imul(v,tt)|0,i=i+Math.imul(b,Q)|0,o=o+Math.imul(b,tt)|0,n=n+Math.imul(p,rt)|0,i=i+Math.imul(p,nt)|0,i=i+Math.imul(m,rt)|0,o=o+Math.imul(m,nt)|0,n=n+Math.imul(h,ot)|0,i=i+Math.imul(h,at)|0,i=i+Math.imul(l,ot)|0,o=o+Math.imul(l,at)|0;var At=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(At>>>26)|0,At&=67108863,n=Math.imul(O,q),i=Math.imul(O,H),i=i+Math.imul(P,q)|0,o=Math.imul(P,H),n=n+Math.imul(C,K)|0,i=i+Math.imul(C,V)|0,i=i+Math.imul(T,K)|0,o=o+Math.imul(T,V)|0,n=n+Math.imul(k,$)|0,i=i+Math.imul(k,Y)|0,i=i+Math.imul(S,$)|0,o=o+Math.imul(S,Y)|0,n=n+Math.imul(E,Z)|0,i=i+Math.imul(E,J)|0,i=i+Math.imul(x,Z)|0,o=o+Math.imul(x,J)|0,n=n+Math.imul(w,Q)|0,i=i+Math.imul(w,tt)|0,i=i+Math.imul(_,Q)|0,o=o+Math.imul(_,tt)|0,n=n+Math.imul(v,rt)|0,i=i+Math.imul(v,nt)|0,i=i+Math.imul(b,rt)|0,o=o+Math.imul(b,nt)|0,n=n+Math.imul(p,ot)|0,i=i+Math.imul(p,at)|0,i=i+Math.imul(m,ot)|0,o=o+Math.imul(m,at)|0,n=n+Math.imul(h,ut)|0,i=i+Math.imul(h,ct)|0,i=i+Math.imul(l,ut)|0,o=o+Math.imul(l,ct)|0;var Et=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(Et>>>26)|0,Et&=67108863,n=Math.imul(N,q),i=Math.imul(N,H),i=i+Math.imul(B,q)|0,o=Math.imul(B,H),n=n+Math.imul(O,K)|0,i=i+Math.imul(O,V)|0,i=i+Math.imul(P,K)|0,o=o+Math.imul(P,V)|0,n=n+Math.imul(C,$)|0,i=i+Math.imul(C,Y)|0,i=i+Math.imul(T,$)|0,o=o+Math.imul(T,Y)|0,n=n+Math.imul(k,Z)|0,i=i+Math.imul(k,J)|0,i=i+Math.imul(S,Z)|0,o=o+Math.imul(S,J)|0,n=n+Math.imul(E,Q)|0,i=i+Math.imul(E,tt)|0,i=i+Math.imul(x,Q)|0,o=o+Math.imul(x,tt)|0,n=n+Math.imul(w,rt)|0,i=i+Math.imul(w,nt)|0,i=i+Math.imul(_,rt)|0,o=o+Math.imul(_,nt)|0,n=n+Math.imul(v,ot)|0,i=i+Math.imul(v,at)|0,i=i+Math.imul(b,ot)|0,o=o+Math.imul(b,at)|0,n=n+Math.imul(p,ut)|0,i=i+Math.imul(p,ct)|0,i=i+Math.imul(m,ut)|0,o=o+Math.imul(m,ct)|0,n=n+Math.imul(h,ht)|0,i=i+Math.imul(h,lt)|0,i=i+Math.imul(l,ht)|0,o=o+Math.imul(l,lt)|0;var xt=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(xt>>>26)|0,xt&=67108863,n=Math.imul(L,q),i=Math.imul(L,H),i=i+Math.imul(D,q)|0,o=Math.imul(D,H),n=n+Math.imul(N,K)|0,i=i+Math.imul(N,V)|0,i=i+Math.imul(B,K)|0,o=o+Math.imul(B,V)|0,n=n+Math.imul(O,$)|0,i=i+Math.imul(O,Y)|0,i=i+Math.imul(P,$)|0,o=o+Math.imul(P,Y)|0,n=n+Math.imul(C,Z)|0,i=i+Math.imul(C,J)|0,i=i+Math.imul(T,Z)|0,o=o+Math.imul(T,J)|0,n=n+Math.imul(k,Q)|0,i=i+Math.imul(k,tt)|0,i=i+Math.imul(S,Q)|0,o=o+Math.imul(S,tt)|0,n=n+Math.imul(E,rt)|0,i=i+Math.imul(E,nt)|0,i=i+Math.imul(x,rt)|0,o=o+Math.imul(x,nt)|0,n=n+Math.imul(w,ot)|0,i=i+Math.imul(w,at)|0,i=i+Math.imul(_,ot)|0,o=o+Math.imul(_,at)|0,n=n+Math.imul(v,ut)|0,i=i+Math.imul(v,ct)|0,i=i+Math.imul(b,ut)|0,o=o+Math.imul(b,ct)|0,n=n+Math.imul(p,ht)|0,i=i+Math.imul(p,lt)|0,i=i+Math.imul(m,ht)|0,o=o+Math.imul(m,lt)|0,n=n+Math.imul(h,pt)|0,i=i+Math.imul(h,mt)|0,i=i+Math.imul(l,pt)|0,o=o+Math.imul(l,mt)|0;var Mt=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,n=Math.imul(L,K),i=Math.imul(L,V),i=i+Math.imul(D,K)|0,o=Math.imul(D,V),n=n+Math.imul(N,$)|0,i=i+Math.imul(N,Y)|0,i=i+Math.imul(B,$)|0,o=o+Math.imul(B,Y)|0,n=n+Math.imul(O,Z)|0,i=i+Math.imul(O,J)|0,i=i+Math.imul(P,Z)|0,o=o+Math.imul(P,J)|0,n=n+Math.imul(C,Q)|0,i=i+Math.imul(C,tt)|0,i=i+Math.imul(T,Q)|0,o=o+Math.imul(T,tt)|0,n=n+Math.imul(k,rt)|0,i=i+Math.imul(k,nt)|0,i=i+Math.imul(S,rt)|0,o=o+Math.imul(S,nt)|0,n=n+Math.imul(E,ot)|0,i=i+Math.imul(E,at)|0,i=i+Math.imul(x,ot)|0,o=o+Math.imul(x,at)|0,n=n+Math.imul(w,ut)|0,i=i+Math.imul(w,ct)|0,i=i+Math.imul(_,ut)|0,o=o+Math.imul(_,ct)|0,n=n+Math.imul(v,ht)|0,i=i+Math.imul(v,lt)|0,i=i+Math.imul(b,ht)|0,o=o+Math.imul(b,lt)|0,n=n+Math.imul(p,pt)|0,i=i+Math.imul(p,mt)|0,i=i+Math.imul(m,pt)|0,o=o+Math.imul(m,mt)|0;var kt=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(kt>>>26)|0,kt&=67108863,n=Math.imul(L,$),i=Math.imul(L,Y),i=i+Math.imul(D,$)|0,o=Math.imul(D,Y),n=n+Math.imul(N,Z)|0,i=i+Math.imul(N,J)|0,i=i+Math.imul(B,Z)|0,o=o+Math.imul(B,J)|0,n=n+Math.imul(O,Q)|0,i=i+Math.imul(O,tt)|0,i=i+Math.imul(P,Q)|0,o=o+Math.imul(P,tt)|0,n=n+Math.imul(C,rt)|0,i=i+Math.imul(C,nt)|0,i=i+Math.imul(T,rt)|0,o=o+Math.imul(T,nt)|0,n=n+Math.imul(k,ot)|0,i=i+Math.imul(k,at)|0,i=i+Math.imul(S,ot)|0,o=o+Math.imul(S,at)|0,n=n+Math.imul(E,ut)|0,i=i+Math.imul(E,ct)|0,i=i+Math.imul(x,ut)|0,o=o+Math.imul(x,ct)|0,n=n+Math.imul(w,ht)|0,i=i+Math.imul(w,lt)|0,i=i+Math.imul(_,ht)|0,o=o+Math.imul(_,lt)|0,n=n+Math.imul(v,pt)|0,i=i+Math.imul(v,mt)|0,i=i+Math.imul(b,pt)|0,o=o+Math.imul(b,mt)|0;var St=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(St>>>26)|0,St&=67108863,n=Math.imul(L,Z),i=Math.imul(L,J),i=i+Math.imul(D,Z)|0,o=Math.imul(D,J),n=n+Math.imul(N,Q)|0,i=i+Math.imul(N,tt)|0,i=i+Math.imul(B,Q)|0,o=o+Math.imul(B,tt)|0,n=n+Math.imul(O,rt)|0,i=i+Math.imul(O,nt)|0,i=i+Math.imul(P,rt)|0,o=o+Math.imul(P,nt)|0,n=n+Math.imul(C,ot)|0,i=i+Math.imul(C,at)|0,i=i+Math.imul(T,ot)|0,o=o+Math.imul(T,at)|0,n=n+Math.imul(k,ut)|0,i=i+Math.imul(k,ct)|0,i=i+Math.imul(S,ut)|0,o=o+Math.imul(S,ct)|0,n=n+Math.imul(E,ht)|0,i=i+Math.imul(E,lt)|0,i=i+Math.imul(x,ht)|0,o=o+Math.imul(x,lt)|0,n=n+Math.imul(w,pt)|0,i=i+Math.imul(w,mt)|0,i=i+Math.imul(_,pt)|0,o=o+Math.imul(_,mt)|0;var It=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(It>>>26)|0,It&=67108863,n=Math.imul(L,Q),i=Math.imul(L,tt),i=i+Math.imul(D,Q)|0,o=Math.imul(D,tt),n=n+Math.imul(N,rt)|0,i=i+Math.imul(N,nt)|0,i=i+Math.imul(B,rt)|0,o=o+Math.imul(B,nt)|0,n=n+Math.imul(O,ot)|0,i=i+Math.imul(O,at)|0,i=i+Math.imul(P,ot)|0,o=o+Math.imul(P,at)|0,n=n+Math.imul(C,ut)|0,i=i+Math.imul(C,ct)|0,i=i+Math.imul(T,ut)|0,o=o+Math.imul(T,ct)|0,n=n+Math.imul(k,ht)|0,i=i+Math.imul(k,lt)|0,i=i+Math.imul(S,ht)|0,o=o+Math.imul(S,lt)|0,n=n+Math.imul(E,pt)|0,i=i+Math.imul(E,mt)|0,i=i+Math.imul(x,pt)|0,o=o+Math.imul(x,mt)|0;var Ct=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,n=Math.imul(L,rt),i=Math.imul(L,nt),i=i+Math.imul(D,rt)|0,o=Math.imul(D,nt),n=n+Math.imul(N,ot)|0,i=i+Math.imul(N,at)|0,i=i+Math.imul(B,ot)|0,o=o+Math.imul(B,at)|0,n=n+Math.imul(O,ut)|0,i=i+Math.imul(O,ct)|0,i=i+Math.imul(P,ut)|0,o=o+Math.imul(P,ct)|0,n=n+Math.imul(C,ht)|0,i=i+Math.imul(C,lt)|0,i=i+Math.imul(T,ht)|0,o=o+Math.imul(T,lt)|0,n=n+Math.imul(k,pt)|0,i=i+Math.imul(k,mt)|0,i=i+Math.imul(S,pt)|0,o=o+Math.imul(S,mt)|0;var Tt=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,n=Math.imul(L,ot),i=Math.imul(L,at),i=i+Math.imul(D,ot)|0,o=Math.imul(D,at),n=n+Math.imul(N,ut)|0,i=i+Math.imul(N,ct)|0,i=i+Math.imul(B,ut)|0,o=o+Math.imul(B,ct)|0,n=n+Math.imul(O,ht)|0,i=i+Math.imul(O,lt)|0,i=i+Math.imul(P,ht)|0,o=o+Math.imul(P,lt)|0,n=n+Math.imul(C,pt)|0,i=i+Math.imul(C,mt)|0,i=i+Math.imul(T,pt)|0,o=o+Math.imul(T,mt)|0;var Ut=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,n=Math.imul(L,ut),i=Math.imul(L,ct),i=i+Math.imul(D,ut)|0,o=Math.imul(D,ct),n=n+Math.imul(N,ht)|0,i=i+Math.imul(N,lt)|0,i=i+Math.imul(B,ht)|0,o=o+Math.imul(B,lt)|0,n=n+Math.imul(O,pt)|0,i=i+Math.imul(O,mt)|0,i=i+Math.imul(P,pt)|0,o=o+Math.imul(P,mt)|0;var Ot=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,n=Math.imul(L,ht),i=Math.imul(L,lt),i=i+Math.imul(D,ht)|0,o=Math.imul(D,lt),n=n+Math.imul(N,pt)|0,i=i+Math.imul(N,mt)|0,i=i+Math.imul(B,pt)|0,o=o+Math.imul(B,mt)|0;var Pt=(c+n|0)+((8191&i)<<13)|0;c=(o+(i>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,n=Math.imul(L,pt),i=Math.imul(L,mt),i=i+Math.imul(D,pt)|0,o=Math.imul(D,mt);var Rt=(c+n|0)+((8191&i)<<13)|0;return c=(o+(i>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,u[0]=yt,u[1]=vt,u[2]=bt,u[3]=gt,u[4]=wt,u[5]=_t,u[6]=At,u[7]=Et,u[8]=xt,u[9]=Mt,u[10]=kt,u[11]=St,u[12]=It,u[13]=Ct,u[14]=Tt,u[15]=Ut,u[16]=Ot,u[17]=Pt,u[18]=Rt,0!==c&&(u[19]=c,r.length++),r};function m(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var n=0,i=0,o=0;o>>26)|0,i+=a>>>26,a&=67108863}r.words[o]=s,n=a,a=i}return 0!==n?r.words[o]=n:r.length--,r.strip()}function y(t,e,r){var n=new v;return n.mulp(t,e,r)}function v(t,e){this.x=t,this.y=e}Math.imul||(p=d),o.prototype.mulTo=function(t,e){var r,n=this.length+t.length;return r=10===this.length&&10===t.length?p(this,t,e):n<63?d(this,t,e):n<1024?m(this,t,e):y(this,t,e),r},v.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,n=0;n>=1;return n},v.prototype.permute=function(t,e,r,n,i,o){for(var a=0;a>>=1)i++;return 1<>>=13,r[2*a+1]=8191&o,o>>>=13;for(a=2*e;a>=26,e+=i/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=l(t);if(0===e.length)return new o(1);for(var r=this,n=0;n=0);var e,r=t%26,i=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var a=0;for(e=0;e>>26-r}a&&(this.words[e]=a,this.length++)}if(0!==i){for(e=this.length-1;e>=0;e--)this.words[e+i]=this.words[e];for(e=0;e=0),i=e?(e-e%26)/26:0;var o=t%26,a=Math.min((t-o)/26,this.length),s=67108863^67108863>>>o<a)for(this.length-=a,c=0;c=0&&(0!==f||c>=i);c--){var h=0|this.words[c];this.words[c]=f<<26-o|h>>>o,f=h&s}return u&&0!==f&&(u.words[u.length++]=f),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return n(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){n("number"===typeof t&&t>=0);var e=t%26,r=(t-e)/26,i=1<=0);var e=t%26,r=(t-e)/26;if(n(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var i=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(n("number"===typeof t),n(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(u/67108864|0),this.words[i+r]=67108863&o}for(;i>26,this.words[i+r]=67108863&o;if(0===s)return this.strip();for(n(-1===s),s=0,i=0;i>26,this.words[i]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=this.length-t.length,n=this.clone(),i=t,a=0|i.words[i.length-1],s=this._countBits(a);r=26-s,0!==r&&(i=i.ushln(r),n.iushln(r),a=0|i.words[i.length-1]);var u,c=n.length-i.length;if("mod"!==e){u=new o(null),u.length=c+1,u.words=new Array(u.length);for(var f=0;f=0;l--){var d=67108864*(0|n.words[i.length+l])+(0|n.words[i.length+l-1]);d=Math.min(d/a|0,67108863),n._ishlnsubmul(i,d,l);while(0!==n.negative)d--,n.negative=0,n._ishlnsubmul(i,1,l),n.isZero()||(n.negative^=1);u&&(u.words[l]=d)}return u&&u.strip(),n.strip(),"div"!==e&&0!==r&&n.iushrn(r),{div:u||null,mod:n}},o.prototype.divmod=function(t,e,r){return n(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(s=this.neg().divmod(t,e),"mod"!==e&&(i=s.div.neg()),"div"!==e&&(a=s.mod.neg(),r&&0!==a.negative&&a.iadd(t)),{div:i,mod:a}):0===this.negative&&0!==t.negative?(s=this.divmod(t.neg(),e),"mod"!==e&&(i=s.div.neg()),{div:i,mod:s.mod}):0!==(this.negative&t.negative)?(s=this.neg().divmod(t.neg(),e),"div"!==e&&(a=s.mod.neg(),r&&0!==a.negative&&a.isub(t)),{div:s.div,mod:a}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var i,a,s},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,n=t.ushrn(1),i=t.andln(1),o=r.cmp(n);return o<0||1===i&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){n(t<=67108863);for(var e=(1<<26)%t,r=0,i=this.length-1;i>=0;i--)r=(e*r+(0|this.words[i]))%t;return r},o.prototype.idivn=function(t){n(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var i=(0|this.words[r])+67108864*e;this.words[r]=i/t|0,e=i%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();var i=new o(1),a=new o(0),s=new o(0),u=new o(1),c=0;while(e.isEven()&&r.isEven())e.iushrn(1),r.iushrn(1),++c;var f=r.clone(),h=e.clone();while(!e.isZero()){for(var l=0,d=1;0===(e.words[0]&d)&&l<26;++l,d<<=1);if(l>0){e.iushrn(l);while(l-- >0)(i.isOdd()||a.isOdd())&&(i.iadd(f),a.isub(h)),i.iushrn(1),a.iushrn(1)}for(var p=0,m=1;0===(r.words[0]&m)&&p<26;++p,m<<=1);if(p>0){r.iushrn(p);while(p-- >0)(s.isOdd()||u.isOdd())&&(s.iadd(f),u.isub(h)),s.iushrn(1),u.iushrn(1)}e.cmp(r)>=0?(e.isub(r),i.isub(s),a.isub(u)):(r.isub(e),s.isub(i),u.isub(a))}return{a:s,b:u,gcd:r.iushln(c)}},o.prototype._invmp=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();var i,a=new o(1),s=new o(0),u=r.clone();while(e.cmpn(1)>0&&r.cmpn(1)>0){for(var c=0,f=1;0===(e.words[0]&f)&&c<26;++c,f<<=1);if(c>0){e.iushrn(c);while(c-- >0)a.isOdd()&&a.iadd(u),a.iushrn(1)}for(var h=0,l=1;0===(r.words[0]&l)&&h<26;++h,l<<=1);if(h>0){r.iushrn(h);while(h-- >0)s.isOdd()&&s.iadd(u),s.iushrn(1)}e.cmp(r)>=0?(e.isub(r),a.isub(s)):(r.isub(e),s.isub(a))}return i=0===e.cmpn(1)?a:s,i.cmpn(0)<0&&i.iadd(t),i},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var n=0;e.isEven()&&r.isEven();n++)e.iushrn(1),r.iushrn(1);do{while(e.isEven())e.iushrn(1);while(r.isEven())r.iushrn(1);var i=e.cmp(r);if(i<0){var o=e;e=r,r=o}else if(0===i||0===r.cmpn(1))break;e.isub(r)}while(1);return r.iushln(n)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0===(1&this.words[0])},o.prototype.isOdd=function(){return 1===(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){n("number"===typeof t);var e=t%26,r=(t-e)/26,i=1<>>26,s&=67108863,this.words[a]=s}return 0!==o&&(this.words[a]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)e=1;else{r&&(t=-t),n(t<=67108863,"Number is too big");var i=0|this.words[0];e=i===t?0:it.length)return 1;if(this.length=0;r--){var n=0|this.words[r],i=0|t.words[r];if(n!==i){ni&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new x(t)},o.prototype.toRed=function(t){return n(!this.red,"Already a number in reduction context"),n(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return n(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return n(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return n(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return n(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return n(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return n(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return n(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return n(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return n(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return n(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return n(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return n(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return n(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var b={k256:null,p224:null,p192:null,p25519:null};function g(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function w(){g.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function _(){g.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function A(){g.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function E(){g.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function x(t){if("string"===typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else n(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function M(t){x.call(this,t),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}g.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},g.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),r=this.imulK(r),r=r.iadd(this.tmp),e=r.bitLength()}while(e>this.n);var n=e0?r.isub(this.p):r.strip(),r},g.prototype.split=function(t,e){t.iushrn(this.n,0,e)},g.prototype.imulK=function(t){return t.imul(this.k)},i(w,g),w.prototype.split=function(t,e){for(var r=4194303,n=Math.min(t.length,9),i=0;i>>22,o=a}o>>>=22,t.words[i-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},w.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=i,e=n}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(b[t])return b[t];var e;if("k256"===t)e=new w;else if("p224"===t)e=new _;else if("p192"===t)e=new A;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new E}return b[t]=e,e},x.prototype._verify1=function(t){n(0===t.negative,"red works only with positives"),n(t.red,"red works only with red numbers")},x.prototype._verify2=function(t,e){n(0===(t.negative|e.negative),"red works only with positives"),n(t.red&&t.red===e.red,"red works only with red numbers")},x.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},x.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},x.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},x.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},x.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},x.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},x.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},x.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},x.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},x.prototype.isqr=function(t){return this.imul(t,t.clone())},x.prototype.sqr=function(t){return this.mul(t,t)},x.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(n(e%2===1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}var i=this.m.subn(1),a=0;while(!i.isZero()&&0===i.andln(1))a++,i.iushrn(1);n(!i.isZero());var s=new o(1).toRed(this),u=s.redNeg(),c=this.m.subn(1).iushrn(1),f=this.m.bitLength();f=new o(2*f*f).toRed(this);while(0!==this.pow(f,c).cmp(u))f.redIAdd(u);var h=this.pow(f,i),l=this.pow(t,i.addn(1).iushrn(1)),d=this.pow(t,i),p=a;while(0!==d.cmp(s)){for(var m=d,y=0;0!==m.cmp(s);y++)m=m.redSqr();n(y=0;i--){for(var f=e.words[i],h=c-1;h>=0;h--){var l=f>>h&1;a!==n[0]&&(a=this.sqr(a)),0!==l||0!==s?(s<<=1,s|=l,u++,(u===r||0===i&&0===h)&&(a=this.mul(a,n[s]),u=0,s=0)):u=0}c=26}return a},x.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},x.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new M(t)},i(M,x),M.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},M.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},M.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},M.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),a=i;return i.cmp(this.m)>=0?a=i.isub(this.m):i.cmpn(0)<0&&(a=i.iadd(this.m)),a._forceRed(this)},M.prototype.invm=function(t){var e=this.imod(t._invmp(this.m).mul(this.r2));return e._forceRed(this)}})(t,this)}).call(this,r("62e4")(t))},e95a:function(t,e,r){var n=r("b622"),i=r("3f8c"),o=n("iterator"),a=Array.prototype;t.exports=function(t){return void 0!==t&&(i.Array===t||a[o]===t)}},ea53:function(t,e,r){"use strict";var n=r("399f"),i=r("f3a3"),o=i.getNAF,a=i.getJSF,s=i.assert;function u(t,e){this.type=t,this.p=new n(e.p,16),this.red=e.prime?n.red(e.prime):n.mont(this.p),this.zero=new n(0).toRed(this.red),this.one=new n(1).toRed(this.red),this.two=new n(2).toRed(this.red),this.n=e.n&&new n(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function c(t,e){this.curve=t,this.type=e,this.precomputed=null}t.exports=u,u.prototype.point=function(){throw new Error("Not implemented")},u.prototype.validate=function(){throw new Error("Not implemented")},u.prototype._fixedNafMul=function(t,e){s(t.precomputed);var r=t._getDoubles(),n=o(e,1,this._bitLength),i=(1<=u;e--)c=(c<<1)+n[e];a.push(c)}for(var f=this.jpoint(null,null,null),h=this.jpoint(null,null,null),l=i;l>0;l--){for(u=0;u=0;c--){for(e=0;c>=0&&0===a[c];c--)e++;if(c>=0&&e++,u=u.dblp(e),c<0)break;var f=a[c];s(0!==f),u="affine"===t.type?f>0?u.mixedAdd(i[f-1>>1]):u.mixedAdd(i[-f-1>>1].neg()):f>0?u.add(i[f-1>>1]):u.add(i[-f-1>>1].neg())}return"affine"===t.type?u.toP():u},u.prototype._wnafMulAdd=function(t,e,r,n,i){for(var s=this._wnafT1,u=this._wnafT2,c=this._wnafT3,f=0,h=0;h=1;h-=2){var p=h-1,m=h;if(1===s[p]&&1===s[m]){var y=[e[p],null,null,e[m]];0===e[p].y.cmp(e[m].y)?(y[1]=e[p].add(e[m]),y[2]=e[p].toJ().mixedAdd(e[m].neg())):0===e[p].y.cmp(e[m].y.redNeg())?(y[1]=e[p].toJ().mixedAdd(e[m]),y[2]=e[p].add(e[m].neg())):(y[1]=e[p].toJ().mixedAdd(e[m]),y[2]=e[p].toJ().mixedAdd(e[m].neg()));var v=[-3,-1,-5,-7,0,7,5,1,3],b=a(r[p],r[m]);f=Math.max(b[0].length,f),c[p]=new Array(f),c[m]=new Array(f);for(var g=0;g=0;h--){var x=0;while(h>=0){var M=!0;for(g=0;g=0&&x++,A=A.dblp(x),h<0)break;for(g=0;g0?l=u[g][k-1>>1]:k<0&&(l=u[g][-k-1>>1].neg()),A="affine"===l.type?A.mixedAdd(l):A.add(l))}}for(h=0;h=Math.ceil((t.bitLength()+1)/e.step)},c.prototype._getDoubles=function(t,e){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],n=this,i=0;i{const e=t=>t.length%2===0?t:"0"+t,r=t=>e(t.toString(16)),n=(t,e)=>t<56?r(e+t):r(e+r(t).length/2+55)+r(t),i=t=>{if("string"===typeof t){const e=t.slice(2),r=2!=e.length||e>="80"?n(e.length/2,128):"";return r+e}{const e=t.map(i).join(""),r=n(e.length/2,192);return r+e}};return"0x"+i(t)},n=t=>{let e=2;const r=()=>{if(e>=t.length)throw"";const r=t.slice(e,e+2);return r<"80"?(e+=2,"0x"+r):r<"c0"?i():o()},n=()=>{const r=parseInt(t.slice(e,e+=2),16)%64;return r<56?r:parseInt(t.slice(e,e+=2*(r-55)),16)},i=()=>{const r=n();return"0x"+t.slice(e,e+=2*r)},o=()=>{const t=2*n()+e;let i=[];while(e=this._delta8){t=this.pending;var r=t.length%this._delta8;this.pending=t.slice(t.length-r,t.length),0===this.pending.length&&(this.pending=null),t=n.join32(t,0,t.length-r,this.endian);for(var i=0;i>>24&255,n[i++]=t>>>16&255,n[i++]=t>>>8&255,n[i++]=255&t}else for(n[i++]=255&t,n[i++]=t>>>8&255,n[i++]=t>>>16&255,n[i++]=t>>>24&255,n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=0,o=8;o0&&(p=setTimeout((function(){if(!h){h=!0,d.abort("timeout");var t=new Error("XMLHttpRequest timeout");t.code="ETIMEDOUT",a(t)}}),t.timeout)),d.setRequestHeader)for(c in b)b.hasOwnProperty(c)&&d.setRequestHeader(c,b[c]);else if(t.headers&&!u(t.headers))throw new Error("Headers cannot be set on an XDomainRequest object");return"responseType"in t&&(d.responseType=t.responseType),"beforeSend"in t&&"function"===typeof t.beforeSend&&t.beforeSend(d),d.send(v||null),d}function l(t){try{if("document"===t.responseType)return t.responseXML;var e=t.responseXML&&"parsererror"===t.responseXML.documentElement.nodeName;if(""===t.responseType&&!e)return t.responseXML}catch(r){}return null}function d(){}t.exports=f,t.exports.default=f,f.XMLHttpRequest=n.XMLHttpRequest||d,f.XDomainRequest="withCredentials"in new f.XMLHttpRequest?f.XMLHttpRequest:n.XDomainRequest,s(["get","put","post","patch","head","delete"],(function(t){f["delete"===t?"del":t]=function(e,r,n){return r=c(e,r,n),r.method=t.toUpperCase(),h(r)}}))},ef3a:function(t,e,r){var n=r("7f7a"),i=r("3fb5"),o=e;function a(t,e){this.name=t,this.body=e,this.decoders={},this.encoders={}}o.define=function(t,e){return new a(t,e)},a.prototype._createNamed=function(t){var e;try{e=r("0706").runInThisContext("(function "+this.name+"(entity) {\n this._initNamed(entity);\n})")}catch(n){e=function(t){this._initNamed(t)}}return i(e,t),e.prototype._initNamed=function(e){t.call(this,e)},new e(this)},a.prototype._getDecoder=function(t){return t=t||"der",this.decoders.hasOwnProperty(t)||(this.decoders[t]=this._createNamed(n.decoders[t])),this.decoders[t]},a.prototype.decode=function(t,e,r){return this._getDecoder(e).decode(t,r)},a.prototype._getEncoder=function(t){return t=t||"der",this.encoders.hasOwnProperty(t)||(this.encoders[t]=this._createNamed(n.encoders[t])),this.encoders[t]},a.prototype.encode=function(t,e,r){return this._getEncoder(e).encode(t,r)}},ef84:function(t,e,r){"use strict";var n,i=null;try{n=Function("return this")()}catch(o){n=window}"undefined"!==typeof n.ethereumProvider?i=n.ethereumProvider:"undefined"!==typeof n.web3&&n.web3.currentProvider&&(n.web3.currentProvider.sendAsync&&(n.web3.currentProvider.send=n.web3.currentProvider.sendAsync,delete n.web3.currentProvider.sendAsync),!n.web3.currentProvider.on&&n.web3.currentProvider.connection&&"ipcProviderWrapper"===n.web3.currentProvider.connection.constructor.name&&(n.web3.currentProvider.on=function(t,e){if("function"!==typeof e)throw new Error("The second parameter callback must be a function.");switch(t){case"data":this.connection.on("data",(function(t){var r="";t=t.toString();try{r=JSON.parse(t)}catch(o){return e(new Error("Couldn't parse response data"+t))}r.id||-1===r.method.indexOf("_subscription")||e(null,r)}));break;default:this.connection.on(t,e);break}}),i=n.web3.currentProvider),t.exports=i},f069:function(t,e,r){"use strict";var n=r("1c0b"),i=function(t){var e,r;this.promise=new t((function(t,n){if(void 0!==e||void 0!==r)throw TypeError("Bad Promise constructor");e=t,r=n})),this.resolve=n(e),this.reject=n(r)};t.exports.f=function(t){return new i(t)}},f1dd:function(t,e,r){(function(t){var e,r,n,i=String.fromCharCode;function o(t){var e,r,n=[],i=0,o=t.length;while(i=55296&&e<=56319&&i65535&&(e-=65536,o+=i(e>>>10&1023|55296),e=56320|1023&e),o+=i(e);return o}function s(t){if(t>=55296&&t<=57343)throw Error("Lone surrogate U+"+t.toString(16).toUpperCase()+" is not a scalar value")}function u(t,e){return i(t>>e&63|128)}function c(t){if(0==(4294967168&t))return i(t);var e="";return 0==(4294965248&t)?e=i(t>>6&31|192):0==(4294901760&t)?(s(t),e=i(t>>12&15|224),e+=u(t,6)):0==(4292870144&t)&&(e=i(t>>18&7|240),e+=u(t,12),e+=u(t,6)),e+=i(63&t|128),e}function f(t){var e,r=o(t),n=r.length,i=-1,a="";while(++i=r)throw Error("Invalid byte index");var t=255&e[n];if(n++,128==(192&t))return 63&t;throw Error("Invalid continuation byte")}function l(){var t,i,o,a,u;if(n>r)throw Error("Invalid byte index");if(n==r)return!1;if(t=255&e[n],n++,0==(128&t))return t;if(192==(224&t)){if(i=h(),u=(31&t)<<6|i,u>=128)return u;throw Error("Invalid continuation byte")}if(224==(240&t)){if(i=h(),o=h(),u=(15&t)<<12|i<<6|o,u>=2048)return s(u),u;throw Error("Invalid continuation byte")}if(240==(248&t)&&(i=h(),o=h(),a=h(),u=(7&t)<<18|i<<12|o<<6|a,u>=65536&&u<=1114111))return u;throw Error("Invalid UTF-8 detected")}function d(t){e=o(t),r=e.length,n=0;var i,s=[];while(!1!==(i=l()))s.push(i);return a(s)}t.version="3.0.0",t.encode=f,t.decode=d})(e)},f1ee:function(t,e,r){"use strict";var n=r("176c"),i=r("3c21");t.exports={packageInit:function(t,e){if(e=Array.prototype.slice.call(e),!t)throw new Error('You need to instantiate using the "new" keyword.');Object.defineProperty(t,"currentProvider",{get:function(){return t._provider},set:function(e){return t.setProvider(e)},enumerable:!0,configurable:!0}),e[0]&&e[0]._requestManager?t._requestManager=new n.Manager(e[0].currentProvider):(t._requestManager=new n.Manager,t._requestManager.setProvider(e[0],e[1])),t.givenProvider=n.Manager.givenProvider,t.providers=n.Manager.providers,t._provider=t._requestManager.provider,t.setProvider||(t.setProvider=function(e,r){return t._requestManager.setProvider(e,r),t._provider=t._requestManager.provider,!0}),t.BatchRequest=n.BatchManager.bind(null,t._requestManager),t.extend=i(t)},addProviders:function(t){t.givenProvider=n.Manager.givenProvider,t.providers=n.Manager.providers}}},f21d:function(t){t.exports=JSON.parse('{"name":"mainnet","chainId":1,"networkId":1,"comment":"The Ethereum main chain","url":"https://ethstats.net/","genesis":{"hash":"0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3","timestamp":null,"gasLimit":5000,"difficulty":17179869184,"nonce":"0x0000000000000042","extraData":"0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa","stateRoot":"0xd7f8974fb5ac78d9ac099b9ad5018bedc2ce0a72dad1827a1709da30580f0544"},"hardforks":[{"name":"chainstart","block":0,"consensus":"pow","finality":null},{"name":"homestead","block":1150000,"consensus":"pow","finality":null},{"name":"dao","block":1920000,"consensus":"pow","finality":null},{"name":"tangerineWhistle","block":2463000,"consensus":"pow","finality":null},{"name":"spuriousDragon","block":2675000,"consensus":"pow","finality":null},{"name":"byzantium","block":4370000,"consensus":"pow","finality":null},{"name":"constantinople","block":7280000,"consensus":"pow","finality":null},{"name":"petersburg","block":7280000,"consensus":"pow","finality":null},{"name":"istanbul","block":9069000,"consensus":"pow","finality":null},{"name":"muirGlacier","block":9200000,"consensus":"pow","finality":null}],"bootstrapNodes":[{"ip":"13.93.211.84","port":30303,"id":"3f1d12044546b76342d59d4a05532c14b85aa669704bfe1f864fe079415aa2c02d743e03218e57a33fb94523adb54032871a6c51b2cc5514cb7c7e35b3ed0a99","location":"US-WEST","comment":"Go Bootnode"},{"ip":"191.235.84.50","port":30303,"id":"78de8a0916848093c73790ead81d1928bec737d565119932b98c6b100d944b7a95e94f847f689fc723399d2e31129d182f7ef3863f2b4c820abbf3ab2722344d","location":"BR","comment":"Go Bootnode"},{"ip":"13.75.154.138","port":30303,"id":"158f8aab45f6d19c6cbf4a089c2670541a8da11978a2f90dbf6a502a4a3bab80d288afdbeb7ec0ef6d92de563767f3b1ea9e8e334ca711e9f8e2df5a0385e8e6","location":"AU","comment":"Go Bootnode"},{"ip":"52.74.57.123","port":30303,"id":"1118980bf48b0a3640bdba04e0fe78b1add18e1cd99bf22d53daac1fd9972ad650df52176e7c7d89d1114cfef2bc23a2959aa54998a46afcf7d91809f0855082","location":"SG","comment":"Go Bootnode"}]}')},f234:function(t,e,r){"use strict";var n="%[a-f0-9]{2}",i=new RegExp(n,"gi"),o=new RegExp("("+n+")+","gi");function a(t,e){try{return decodeURIComponent(t.join(""))}catch(i){}if(1===t.length)return t;e=e||1;var r=t.slice(0,e),n=t.slice(e);return Array.prototype.concat.call([],a(r),a(n))}function s(t){try{return decodeURIComponent(t)}catch(n){for(var e=t.match(i),r=1;r(i>>1)-1?(i>>1)-u:u,o.isubn(s)):s=0,n[a]=s,o.iushrn(1)}return n}function u(t,e){var r=[[],[]];t=t.clone(),e=e.clone();var n=0,i=0;while(t.cmpn(-n)>0||e.cmpn(-i)>0){var o,a,s=t.andln(3)+n&3,u=e.andln(3)+i&3;if(3===s&&(s=-1),3===u&&(u=-1),0===(1&s))o=0;else{var c=t.andln(7)+n&7;o=3!==c&&5!==c||2!==u?s:-s}if(r[0].push(o),0===(1&u))a=0;else{c=e.andln(7)+i&7;a=3!==c&&5!==c||2!==s?u:-u}r[1].push(a),2*n===o+1&&(n=1-n),2*i===a+1&&(i=1-i),t.iushrn(1),e.iushrn(1)}return r}function c(t,e,r){var n="_"+e;t.prototype[e]=function(){return void 0!==this[n]?this[n]:this[n]=r.call(this)}}function f(t){return"string"===typeof t?n.toArray(t,"hex"):t}function h(t){return new i(t,"hex","le")}n.assert=o,n.toArray=a.toArray,n.zero2=a.zero2,n.toHex=a.toHex,n.encode=a.encode,n.getNAF=s,n.getJSF=u,n.cachedProperty=c,n.parseBytes=f,n.intFromLE=h},f460:function(t,e,r){var n=r("98e6"),i=r("8707").Buffer;function o(t){var e=i.allocUnsafe(4);return e.writeUInt32BE(t,0),e}t.exports=function(t,e){var r,a=i.alloc(0),s=0;while(a.length>>32-e}function c(t,e,r,n,i,o,a){return u(t+(e&r|~e&n)+i+o|0,a)+e|0}function f(t,e,r,n,i,o,a){return u(t+(e&n|r&~n)+i+o|0,a)+e|0}function h(t,e,r,n,i,o,a){return u(t+(e^r^n)+i+o|0,a)+e|0}function l(t,e,r,n,i,o,a){return u(t+(r^(e|~n))+i+o|0,a)+e|0}n(s,i),s.prototype._update=function(){for(var t=a,e=0;e<16;++e)t[e]=this._block.readInt32LE(4*e);var r=this._a,n=this._b,i=this._c,o=this._d;r=c(r,n,i,o,t[0],3614090360,7),o=c(o,r,n,i,t[1],3905402710,12),i=c(i,o,r,n,t[2],606105819,17),n=c(n,i,o,r,t[3],3250441966,22),r=c(r,n,i,o,t[4],4118548399,7),o=c(o,r,n,i,t[5],1200080426,12),i=c(i,o,r,n,t[6],2821735955,17),n=c(n,i,o,r,t[7],4249261313,22),r=c(r,n,i,o,t[8],1770035416,7),o=c(o,r,n,i,t[9],2336552879,12),i=c(i,o,r,n,t[10],4294925233,17),n=c(n,i,o,r,t[11],2304563134,22),r=c(r,n,i,o,t[12],1804603682,7),o=c(o,r,n,i,t[13],4254626195,12),i=c(i,o,r,n,t[14],2792965006,17),n=c(n,i,o,r,t[15],1236535329,22),r=f(r,n,i,o,t[1],4129170786,5),o=f(o,r,n,i,t[6],3225465664,9),i=f(i,o,r,n,t[11],643717713,14),n=f(n,i,o,r,t[0],3921069994,20),r=f(r,n,i,o,t[5],3593408605,5),o=f(o,r,n,i,t[10],38016083,9),i=f(i,o,r,n,t[15],3634488961,14),n=f(n,i,o,r,t[4],3889429448,20),r=f(r,n,i,o,t[9],568446438,5),o=f(o,r,n,i,t[14],3275163606,9),i=f(i,o,r,n,t[3],4107603335,14),n=f(n,i,o,r,t[8],1163531501,20),r=f(r,n,i,o,t[13],2850285829,5),o=f(o,r,n,i,t[2],4243563512,9),i=f(i,o,r,n,t[7],1735328473,14),n=f(n,i,o,r,t[12],2368359562,20),r=h(r,n,i,o,t[5],4294588738,4),o=h(o,r,n,i,t[8],2272392833,11),i=h(i,o,r,n,t[11],1839030562,16),n=h(n,i,o,r,t[14],4259657740,23),r=h(r,n,i,o,t[1],2763975236,4),o=h(o,r,n,i,t[4],1272893353,11),i=h(i,o,r,n,t[7],4139469664,16),n=h(n,i,o,r,t[10],3200236656,23),r=h(r,n,i,o,t[13],681279174,4),o=h(o,r,n,i,t[0],3936430074,11),i=h(i,o,r,n,t[3],3572445317,16),n=h(n,i,o,r,t[6],76029189,23),r=h(r,n,i,o,t[9],3654602809,4),o=h(o,r,n,i,t[12],3873151461,11),i=h(i,o,r,n,t[15],530742520,16),n=h(n,i,o,r,t[2],3299628645,23),r=l(r,n,i,o,t[0],4096336452,6),o=l(o,r,n,i,t[7],1126891415,10),i=l(i,o,r,n,t[14],2878612391,15),n=l(n,i,o,r,t[5],4237533241,21),r=l(r,n,i,o,t[12],1700485571,6),o=l(o,r,n,i,t[3],2399980690,10),i=l(i,o,r,n,t[10],4293915773,15),n=l(n,i,o,r,t[1],2240044497,21),r=l(r,n,i,o,t[8],1873313359,6),o=l(o,r,n,i,t[15],4264355552,10),i=l(i,o,r,n,t[6],2734768916,15),n=l(n,i,o,r,t[13],1309151649,21),r=l(r,n,i,o,t[4],4149444226,6),o=l(o,r,n,i,t[11],3174756917,10),i=l(i,o,r,n,t[2],718787259,15),n=l(n,i,o,r,t[9],3951481745,21),this._a=this._a+r|0,this._b=this._b+n|0,this._c=this._c+i|0,this._d=this._d+o|0},s.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var t=o.allocUnsafe(16);return t.writeInt32LE(this._a,0),t.writeInt32LE(this._b,4),t.writeInt32LE(this._c,8),t.writeInt32LE(this._d,12),t},t.exports=s},f5df:function(t,e,r){var n=r("00ee"),i=r("c6b6"),o=r("b622"),a=o("toStringTag"),s="Arguments"==i(function(){return arguments}()),u=function(t,e){try{return t[e]}catch(r){}};t.exports=n?i:function(t){var e,r,n;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(r=u(e=Object(t),a))?r:s?i(e):"Object"==(n=i(e))&&"function"==typeof e.callee?"Arguments":n}},f5e1:function(t,e,r){var n=r("33a0"),i=r("9850");function o(t,e,r){var o=e&&r||0;"string"==typeof t&&(e="binary"===t?new Array(16):null,t=null),t=t||{};var a=t.random||(t.rng||n)();if(a[6]=15&a[6]|64,a[8]=63&a[8]|128,e)for(var s=0;s<16;++s)e[o+s]=a[s];return e||i(a)}t.exports=o},f654:function(t,e,r){"use strict";(function(e){var n=r("320c"); +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */function i(t,e){if(t===e)return 0;for(var r=t.length,n=e.length,i=0,o=Math.min(r,n);i=0;c--)if(f[c]!==h[c])return!1;for(c=f.length-1;c>=0;c--)if(s=f[c],!w(t[s],e[s],r,n))return!1;return!0}function E(t,e,r){w(t,e,!0)&&b(t,e,r,"notDeepStrictEqual",E)}function x(t,e){if(!t||!e)return!1;if("[object RegExp]"==Object.prototype.toString.call(e))return e.test(t);try{if(t instanceof e)return!0}catch(r){}return!Error.isPrototypeOf(e)&&!0===e.call({},t)}function M(t){var e;try{t()}catch(r){e=r}return e}function k(t,e,r,n){var i;if("function"!==typeof e)throw new TypeError('"block" argument must be a function');"string"===typeof r&&(n=r,r=null),i=M(e),n=(r&&r.name?" ("+r.name+").":".")+(n?" "+n:"."),t&&!i&&b(i,r,"Missing expected exception"+n);var o="string"===typeof n,s=!t&&a.isError(i),u=!t&&i&&!r;if((s&&o&&x(i,r)||u)&&b(i,r,"Got unwanted exception"+n),t&&i&&r&&!x(i,r)||!t&&i)throw i}function S(t,e){t||b(t,!0,e,"==",S)}l.AssertionError=function(t){this.name="AssertionError",this.actual=t.actual,this.expected=t.expected,this.operator=t.operator,t.message?(this.message=t.message,this.generatedMessage=!1):(this.message=v(this),this.generatedMessage=!0);var e=t.stackStartFunction||b;if(Error.captureStackTrace)Error.captureStackTrace(this,e);else{var r=new Error;if(r.stack){var n=r.stack,i=p(e),o=n.indexOf("\n"+i);if(o>=0){var a=n.indexOf("\n",o+1);n=n.substring(a+1)}this.stack=n}}},a.inherits(l.AssertionError,Error),l.fail=b,l.ok=g,l.equal=function(t,e,r){t!=e&&b(t,e,r,"==",l.equal)},l.notEqual=function(t,e,r){t==e&&b(t,e,r,"!=",l.notEqual)},l.deepEqual=function(t,e,r){w(t,e,!1)||b(t,e,r,"deepEqual",l.deepEqual)},l.deepStrictEqual=function(t,e,r){w(t,e,!0)||b(t,e,r,"deepStrictEqual",l.deepStrictEqual)},l.notDeepEqual=function(t,e,r){w(t,e,!1)&&b(t,e,r,"notDeepEqual",l.notDeepEqual)},l.notDeepStrictEqual=E,l.strictEqual=function(t,e,r){t!==e&&b(t,e,r,"===",l.strictEqual)},l.notStrictEqual=function(t,e,r){t===e&&b(t,e,r,"!==",l.notStrictEqual)},l.throws=function(t,e,r){k(!0,t,e,r)},l.doesNotThrow=function(t,e,r){k(!1,t,e,r)},l.ifError=function(t){if(t)throw t},l.strict=n(S,l,{equal:l.strictEqual,deepEqual:l.deepStrictEqual,notEqual:l.notStrictEqual,notDeepEqual:l.notDeepStrictEqual}),l.strict.strict=l.strict;var I=Object.keys||function(t){var e=[];for(var r in t)s.call(t,r)&&e.push(r);return e}}).call(this,r("c8ba"))},f772:function(t,e,r){var n=r("5692"),i=r("90e3"),o=n("keys");t.exports=function(t){return o[t]||(o[t]=i(t))}},f8c1:function(t){t.exports=JSON.parse('{"COMPRESSED_TYPE_INVALID":"compressed should be a boolean","EC_PRIVATE_KEY_TYPE_INVALID":"private key should be a Buffer","EC_PRIVATE_KEY_LENGTH_INVALID":"private key length is invalid","EC_PRIVATE_KEY_RANGE_INVALID":"private key range is invalid","EC_PRIVATE_KEY_TWEAK_ADD_FAIL":"tweak out of range or resulting private key is invalid","EC_PRIVATE_KEY_TWEAK_MUL_FAIL":"tweak out of range","EC_PRIVATE_KEY_EXPORT_DER_FAIL":"couldn\'t export to DER format","EC_PRIVATE_KEY_IMPORT_DER_FAIL":"couldn\'t import from DER format","EC_PUBLIC_KEYS_TYPE_INVALID":"public keys should be an Array","EC_PUBLIC_KEYS_LENGTH_INVALID":"public keys Array should have at least 1 element","EC_PUBLIC_KEY_TYPE_INVALID":"public key should be a Buffer","EC_PUBLIC_KEY_LENGTH_INVALID":"public key length is invalid","EC_PUBLIC_KEY_PARSE_FAIL":"the public key could not be parsed or is invalid","EC_PUBLIC_KEY_CREATE_FAIL":"private was invalid, try again","EC_PUBLIC_KEY_TWEAK_ADD_FAIL":"tweak out of range or resulting public key is invalid","EC_PUBLIC_KEY_TWEAK_MUL_FAIL":"tweak out of range","EC_PUBLIC_KEY_COMBINE_FAIL":"the sum of the public keys is not valid","ECDH_FAIL":"scalar was invalid (zero or overflow)","ECDSA_SIGNATURE_TYPE_INVALID":"signature should be a Buffer","ECDSA_SIGNATURE_LENGTH_INVALID":"signature length is invalid","ECDSA_SIGNATURE_PARSE_FAIL":"couldn\'t parse signature","ECDSA_SIGNATURE_PARSE_DER_FAIL":"couldn\'t parse DER signature","ECDSA_SIGNATURE_SERIALIZE_DER_FAIL":"couldn\'t serialize signature to DER format","ECDSA_SIGN_FAIL":"nonce generation function failed or private key is invalid","ECDSA_RECOVER_FAIL":"couldn\'t recover public key from signature","MSG32_TYPE_INVALID":"message should be a Buffer","MSG32_LENGTH_INVALID":"message length is invalid","OPTIONS_TYPE_INVALID":"options should be an Object","OPTIONS_DATA_TYPE_INVALID":"options.data should be a Buffer","OPTIONS_DATA_LENGTH_INVALID":"options.data length is invalid","OPTIONS_NONCEFN_TYPE_INVALID":"options.noncefn should be a Function","RECOVERY_ID_TYPE_INVALID":"recovery should be a Number","RECOVERY_ID_VALUE_INVALID":"recovery should have value between -1 and 4","TWEAK_TYPE_INVALID":"tweak should be a Buffer","TWEAK_LENGTH_INVALID":"tweak length is invalid"}')},f908:function(t,e,r){"use strict";var n=r("5562"),i=r("2c0b"),o=r("17fb");function a(t){this.registry=t}a.prototype.method=function(t,e,r,n){return{call:this.call.bind({ensName:t,methodName:e,methodArguments:r,callback:n,parent:this}),send:this.send.bind({ensName:t,methodName:e,methodArguments:r,callback:n,parent:this})}},a.prototype.call=function(t){var e=this,r=new n,i=this.parent.prepareArguments(this.ensName,this.methodArguments);return this.parent.registry.resolver(this.ensName).then((function(n){e.parent.handleCall(r,n.methods[e.methodName],i,t)})).catch((function(t){r.reject(t)})),r.eventEmitter},a.prototype.send=function(t,e){var r=this,i=new n,o=this.parent.prepareArguments(this.ensName,this.methodArguments);return this.parent.registry.resolver(this.ensName).then((function(n){r.parent.handleSend(i,n.methods[r.methodName],o,t,e)})).catch((function(t){i.reject(t)})),i.eventEmitter},a.prototype.handleCall=function(t,e,r,n){return e.apply(this,r).call().then((function(e){t.resolve(e),o.isFunction(n)&&n(e)})).catch((function(e){t.reject(e),o.isFunction(n)&&n(e)})),t},a.prototype.handleSend=function(t,e,r,n,i){return e.apply(this,r).send(n).on("transactionHash",(function(e){t.eventEmitter.emit("transactionHash",e)})).on("confirmation",(function(e,r){t.eventEmitter.emit("confirmation",e,r)})).on("receipt",(function(e){t.eventEmitter.emit("receipt",e),t.resolve(e),o.isFunction(i)&&i(e)})).on("error",(function(e){t.eventEmitter.emit("error",e),t.reject(e),o.isFunction(i)&&i(e)})),t},a.prototype.prepareArguments=function(t,e){var r=i.hash(t);return e.length>0?(e.unshift(r),e):[r]},t.exports=a},f9a0:function(t,e){function r(t,e,r){var n=e.toLowerCase();t[e]||t[n]||(t[e]=r)}t.exports=r},f9e1:function(t,e,r){"use strict";var n=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(e,"__esModule",{value:!0});var i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e}(Error);e.SecurityError=i;var o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e}(Error);e.InvalidStateError=o;var a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e}(Error);e.NetworkError=a;var s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return n(e,t),e}(Error);e.SyntaxError=s},faa1:function(t,e,r){"use strict";var n,i="object"===typeof Reflect?Reflect:null,o=i&&"function"===typeof i.apply?i.apply:function(t,e,r){return Function.prototype.apply.call(t,e,r)};function a(t){console&&console.warn&&console.warn(t)}n=i&&"function"===typeof i.ownKeys?i.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var s=Number.isNaN||function(t){return t!==t};function u(){u.init.call(this)}t.exports=u,u.EventEmitter=u,u.prototype._events=void 0,u.prototype._eventsCount=0,u.prototype._maxListeners=void 0;var c=10;function f(t){if("function"!==typeof t)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}function h(t){return void 0===t._maxListeners?u.defaultMaxListeners:t._maxListeners}function l(t,e,r,n){var i,o,s;if(f(r),o=t._events,void 0===o?(o=t._events=Object.create(null),t._eventsCount=0):(void 0!==o.newListener&&(t.emit("newListener",e,r.listener?r.listener:r),o=t._events),s=o[e]),void 0===s)s=o[e]=r,++t._eventsCount;else if("function"===typeof s?s=o[e]=n?[r,s]:[s,r]:n?s.unshift(r):s.push(r),i=h(t),i>0&&s.length>i&&!s.warned){s.warned=!0;var u=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");u.name="MaxListenersExceededWarning",u.emitter=t,u.type=e,u.count=s.length,a(u)}return t}function d(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function p(t,e,r){var n={fired:!1,wrapFn:void 0,target:t,type:e,listener:r},i=d.bind(n);return i.listener=r,n.wrapFn=i,i}function m(t,e,r){var n=t._events;if(void 0===n)return[];var i=n[e];return void 0===i?[]:"function"===typeof i?r?[i.listener||i]:[i]:r?g(i):v(i,i.length)}function y(t){var e=this._events;if(void 0!==e){var r=e[t];if("function"===typeof r)return 1;if(void 0!==r)return r.length}return 0}function v(t,e){for(var r=new Array(e),n=0;n0&&(a=e[0]),a instanceof Error)throw a;var s=new Error("Unhandled error."+(a?" ("+a.message+")":""));throw s.context=a,s}var u=i[t];if(void 0===u)return!1;if("function"===typeof u)o(u,this,e);else{var c=u.length,f=v(u,c);for(r=0;r=0;o--)if(r[o]===e||r[o].listener===e){a=r[o].listener,i=o;break}if(i<0)return this;0===i?r.shift():b(r,i),1===r.length&&(n[t]=r[0]),void 0!==n.removeListener&&this.emit("removeListener",t,a||e)}return this},u.prototype.off=u.prototype.removeListener,u.prototype.removeAllListeners=function(t){var e,r,n;if(r=this._events,void 0===r)return this;if(void 0===r.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==r[t]&&(0===--this._eventsCount?this._events=Object.create(null):delete r[t]),this;if(0===arguments.length){var i,o=Object.keys(r);for(n=0;n=0;n--)this.removeListener(t,e[n]);return this},u.prototype.listeners=function(t){return m(this,t,!0)},u.prototype.rawListeners=function(t){return m(this,t,!1)},u.listenerCount=function(t,e){return"function"===typeof t.listenerCount?t.listenerCount(e):y.call(t,e)},u.prototype.listenerCount=y,u.prototype.eventNames=function(){return this._eventsCount>0?n(this._events):[]}},fb6d:function(t){t.exports=JSON.parse('{"name":"chainstart","comment":"Start of the Ethereum main chain","eip":{"url":"","status":""},"status":"","gasConfig":{"minGasLimit":{"v":5000,"d":"Minimum the gas limit may ever be"},"gasLimitBoundDivisor":{"v":1024,"d":"The bound divisor of the gas limit, used in update calculations"}},"gasPrices":{"base":{"v":2,"d":"Gas base cost, used e.g. for ChainID opcode (Istanbul)"},"tierStep":{"v":[0,2,3,5,8,10,20],"d":"Once per operation, for a selection of them"},"exp":{"v":10,"d":"Once per EXP instuction"},"expByte":{"v":10,"d":"Times ceil(log256(exponent)) for the EXP instruction"},"sha3":{"v":30,"d":"Once per SHA3 operation"},"sha3Word":{"v":6,"d":"Once per word of the SHA3 operation\'s data"},"sload":{"v":50,"d":"Once per SLOAD operation"},"sstoreSet":{"v":20000,"d":"Once per SSTORE operation if the zeroness changes from zero"},"sstoreReset":{"v":5000,"d":"Once per SSTORE operation if the zeroness does not change from zero"},"sstoreRefund":{"v":15000,"d":"Once per SSTORE operation if the zeroness changes to zero"},"jumpdest":{"v":1,"d":"Refunded gas, once per SSTORE operation if the zeroness changes to zero"},"log":{"v":375,"d":"Per LOG* operation"},"logData":{"v":8,"d":"Per byte in a LOG* operation\'s data"},"logTopic":{"v":375,"d":"Multiplied by the * of the LOG*, per LOG transaction. e.g. LOG0 incurs 0 * c_txLogTopicGas, LOG4 incurs 4 * c_txLogTopicGas"},"create":{"v":32000,"d":"Once per CREATE operation & contract-creation transaction"},"call":{"v":40,"d":"Once per CALL operation & message call transaction"},"callStipend":{"v":2300,"d":"Free gas given at beginning of call"},"callValueTransfer":{"v":9000,"d":"Paid for CALL when the value transfor is non-zero"},"callNewAccount":{"v":25000,"d":"Paid for CALL when the destination address didn\'t exist prior"},"selfdestructRefund":{"v":24000,"d":"Refunded following a selfdestruct operation"},"memory":{"v":3,"d":"Times the address of the (highest referenced byte in memory + 1). NOTE: referencing happens on read, write and in instructions such as RETURN and CALL"},"quadCoeffDiv":{"v":512,"d":"Divisor for the quadratic particle of the memory cost equation"},"createData":{"v":200,"d":""},"tx":{"v":21000,"d":"Per transaction. NOTE: Not payable on data of calls between transactions"},"txCreation":{"v":32000,"d":"The cost of creating a contract via tx"},"txDataZero":{"v":4,"d":"Per byte of data attached to a transaction that equals zero. NOTE: Not payable on data of calls between transactions"},"txDataNonZero":{"v":68,"d":"Per byte of data attached to a transaction that is not equal to zero. NOTE: Not payable on data of calls between transactions"},"copy":{"v":3,"d":"Multiplied by the number of 32-byte words that are copied (round up) for any *COPY operation and added"},"ecRecover":{"v":3000,"d":""},"sha256":{"v":60,"d":""},"sha256Word":{"v":12,"d":""},"ripemd160":{"v":600,"d":""},"ripemd160Word":{"v":120,"d":""},"identity":{"v":15,"d":""},"identityWord":{"v":3,"d":""}},"vm":{"stackLimit":{"v":1024,"d":"Maximum size of VM stack allowed"},"callCreateDepth":{"v":1024,"d":"Maximum depth of call/create stack"},"maxExtraDataSize":{"v":32,"d":"Maximum size extra data may be after Genesis"}},"pow":{"minimumDifficulty":{"v":131072,"d":"The minimum that the difficulty may ever be"},"difficultyBoundDivisor":{"v":2048,"d":"The bound divisor of the difficulty, used in the update calculations"},"durationLimit":{"v":13,"d":"The decision boundary on the blocktime duration used to determine whether difficulty should go up or not"},"epochDuration":{"v":30000,"d":"Duration between proof-of-work epochs"},"timebombPeriod":{"v":100000,"d":"Exponential difficulty timebomb period"},"minerReward":{"v":"5000000000000000000","d":"the amount a miner get rewarded for mining a block"}},"casper":{},"sharding":{}}')},fc6a:function(t,e,r){var n=r("44ad"),i=r("1d80");t.exports=function(t){return n(i(t))}},fda6:function(t,e,r){var n=r("8947"),i=r("4228"),o=r("e85f");function a(){return Object.keys(o)}e.createCipher=e.Cipher=n.createCipher,e.createCipheriv=e.Cipheriv=n.createCipheriv,e.createDecipher=e.Decipher=i.createDecipher,e.createDecipheriv=e.Decipheriv=i.createDecipheriv,e.listCiphers=e.getCiphers=a},fdac:function(t,e,r){var n;function i(t){this.rand=t}if(t.exports=function(t){return n||(n=new i(null)),n.generate(t)},t.exports.Rand=i,i.prototype.generate=function(t){return this._rand(t)},i.prototype._rand=function(t){if(this.rand.getBytes)return this.rand.getBytes(t);for(var e=new Uint8Array(t),r=0;r 0; count--) {\n inputOff += this._buffer(data, inputOff);\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Buffer rest of the input\n inputOff += this._buffer(data, inputOff);\n\n return out;\n};\n\nCipher.prototype.final = function final(buffer) {\n var first;\n if (buffer)\n first = this.update(buffer);\n\n var last;\n if (this.type === 'encrypt')\n last = this._finalEncrypt();\n else\n last = this._finalDecrypt();\n\n if (first)\n return first.concat(last);\n else\n return last;\n};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n if (off === 0)\n return false;\n\n while (off < buffer.length)\n buffer[off++] = 0;\n\n return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n if (!this._pad(this.buffer, this.bufferOff))\n return [];\n\n var out = new Array(this.blockSize);\n this._update(this.buffer, 0, out, 0);\n return out;\n};\n\nCipher.prototype._unpad = function _unpad(buffer) {\n return buffer;\n};\n\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n var out = new Array(this.blockSize);\n this._flushBuffer(out, 0);\n\n return this._unpad(out);\n};\n","var constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n var res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n var value = map[key];\n res[value] = key;\n });\n\n return res;\n};\n\nconstants.der = require('./der');\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.chains = {\n names: {\n '1': 'mainnet',\n '3': 'ropsten',\n '4': 'rinkeby',\n '42': 'kovan',\n '6284': 'goerli',\n },\n mainnet: require('./mainnet.json'),\n ropsten: require('./ropsten.json'),\n rinkeby: require('./rinkeby.json'),\n kovan: require('./kovan.json'),\n goerli: require('./goerli.json'),\n};\n//# sourceMappingURL=index.js.map","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var indexOf = function (xs, item) {\n if (xs.indexOf) return xs.indexOf(item);\n else for (var i = 0; i < xs.length; i++) {\n if (xs[i] === item) return i;\n }\n return -1;\n};\nvar Object_keys = function (obj) {\n if (Object.keys) return Object.keys(obj)\n else {\n var res = [];\n for (var key in obj) res.push(key)\n return res;\n }\n};\n\nvar forEach = function (xs, fn) {\n if (xs.forEach) return xs.forEach(fn)\n else for (var i = 0; i < xs.length; i++) {\n fn(xs[i], i, xs);\n }\n};\n\nvar defineProp = (function() {\n try {\n Object.defineProperty({}, '_', {});\n return function(obj, name, value) {\n Object.defineProperty(obj, name, {\n writable: true,\n enumerable: false,\n configurable: true,\n value: value\n })\n };\n } catch(e) {\n return function(obj, name, value) {\n obj[name] = value;\n };\n }\n}());\n\nvar globals = ['Array', 'Boolean', 'Date', 'Error', 'EvalError', 'Function',\n'Infinity', 'JSON', 'Math', 'NaN', 'Number', 'Object', 'RangeError',\n'ReferenceError', 'RegExp', 'String', 'SyntaxError', 'TypeError', 'URIError',\n'decodeURI', 'decodeURIComponent', 'encodeURI', 'encodeURIComponent', 'escape',\n'eval', 'isFinite', 'isNaN', 'parseFloat', 'parseInt', 'undefined', 'unescape'];\n\nfunction Context() {}\nContext.prototype = {};\n\nvar Script = exports.Script = function NodeScript (code) {\n if (!(this instanceof Script)) return new Script(code);\n this.code = code;\n};\n\nScript.prototype.runInContext = function (context) {\n if (!(context instanceof Context)) {\n throw new TypeError(\"needs a 'context' argument.\");\n }\n \n var iframe = document.createElement('iframe');\n if (!iframe.style) iframe.style = {};\n iframe.style.display = 'none';\n \n document.body.appendChild(iframe);\n \n var win = iframe.contentWindow;\n var wEval = win.eval, wExecScript = win.execScript;\n\n if (!wEval && wExecScript) {\n // win.eval() magically appears when this is called in IE:\n wExecScript.call(win, 'null');\n wEval = win.eval;\n }\n \n forEach(Object_keys(context), function (key) {\n win[key] = context[key];\n });\n forEach(globals, function (key) {\n if (context[key]) {\n win[key] = context[key];\n }\n });\n \n var winKeys = Object_keys(win);\n\n var res = wEval.call(win, this.code);\n \n forEach(Object_keys(win), function (key) {\n // Avoid copying circular objects like `top` and `window` by only\n // updating existing context properties or new properties in the `win`\n // that was only introduced after the eval.\n if (key in context || indexOf(winKeys, key) === -1) {\n context[key] = win[key];\n }\n });\n\n forEach(globals, function (key) {\n if (!(key in context)) {\n defineProp(context, key, win[key]);\n }\n });\n \n document.body.removeChild(iframe);\n \n return res;\n};\n\nScript.prototype.runInThisContext = function () {\n return eval(this.code); // maybe...\n};\n\nScript.prototype.runInNewContext = function (context) {\n var ctx = Script.createContext(context);\n var res = this.runInContext(ctx);\n\n if (context) {\n forEach(Object_keys(ctx), function (key) {\n context[key] = ctx[key];\n });\n }\n\n return res;\n};\n\nforEach(Object_keys(Script.prototype), function (name) {\n exports[name] = Script[name] = function (code) {\n var s = Script(code);\n return s[name].apply(s, [].slice.call(arguments, 1));\n };\n});\n\nexports.isContext = function (context) {\n return context instanceof Context;\n};\n\nexports.createScript = function (code) {\n return exports.Script(code);\n};\n\nexports.createContext = Script.createContext = function (context) {\n var copy = new Context();\n if(typeof context === 'object') {\n forEach(Object_keys(context), function (key) {\n copy[key] = context[key];\n });\n }\n return copy;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n","module.exports = require('./lib/_stream_duplex.js');\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._mode = mode\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n","exports['des-ecb'] = {\n key: 8,\n iv: 0\n}\nexports['des-cbc'] = exports.des = {\n key: 8,\n iv: 8\n}\nexports['des-ede3-cbc'] = exports.des3 = {\n key: 24,\n iv: 8\n}\nexports['des-ede3'] = {\n key: 24,\n iv: 0\n}\nexports['des-ede-cbc'] = {\n key: 16,\n iv: 8\n}\nexports['des-ede'] = {\n key: 16,\n iv: 0\n}\n","const Bytes = require(\"./bytes\");\nconst Nat = require(\"./nat\");\nconst elliptic = require(\"elliptic\");\nconst rlp = require(\"./rlp\");\nconst secp256k1 = new elliptic.ec(\"secp256k1\"); // eslint-disable-line\nconst { keccak256, keccak256s } = require(\"./hash\");\n\nconst create = entropy => {\n const innerHex = keccak256(Bytes.concat(Bytes.random(32), entropy || Bytes.random(32)));\n const middleHex = Bytes.concat(Bytes.concat(Bytes.random(32), innerHex), Bytes.random(32));\n const outerHex = keccak256(middleHex);\n return fromPrivate(outerHex);\n};\n\nconst toChecksum = address => {\n const addressHash = keccak256s(address.slice(2));\n let checksumAddress = \"0x\";\n for (let i = 0; i < 40; i++) checksumAddress += parseInt(addressHash[i + 2], 16) > 7 ? address[i + 2].toUpperCase() : address[i + 2];\n return checksumAddress;\n};\n\nconst fromPrivate = privateKey => {\n const buffer = new Buffer(privateKey.slice(2), \"hex\");\n const ecKey = secp256k1.keyFromPrivate(buffer);\n const publicKey = \"0x\" + ecKey.getPublic(false, 'hex').slice(2);\n const publicHash = keccak256(publicKey);\n const address = toChecksum(\"0x\" + publicHash.slice(-40));\n return {\n address: address,\n privateKey: privateKey\n };\n};\n\nconst encodeSignature = ([v, r, s]) => Bytes.flatten([r, s, v]);\n\nconst decodeSignature = hex => [Bytes.slice(64, Bytes.length(hex), hex), Bytes.slice(0, 32, hex), Bytes.slice(32, 64, hex)];\n\nconst makeSigner = addToV => (hash, privateKey) => {\n const signature = secp256k1.keyFromPrivate(new Buffer(privateKey.slice(2), \"hex\")).sign(new Buffer(hash.slice(2), \"hex\"), { canonical: true });\n return encodeSignature([Nat.fromString(Bytes.fromNumber(addToV + signature.recoveryParam)), Bytes.pad(32, Bytes.fromNat(\"0x\" + signature.r.toString(16))), Bytes.pad(32, Bytes.fromNat(\"0x\" + signature.s.toString(16)))]);\n};\n\nconst sign = makeSigner(27); // v=27|28 instead of 0|1...\n\nconst recover = (hash, signature) => {\n const vals = decodeSignature(signature);\n const vrs = { v: Bytes.toNumber(vals[0]), r: vals[1].slice(2), s: vals[2].slice(2) };\n const ecPublicKey = secp256k1.recoverPubKey(new Buffer(hash.slice(2), \"hex\"), vrs, vrs.v < 2 ? vrs.v : 1 - vrs.v % 2); // because odd vals mean v=0... sadly that means v=0 means v=1... I hate that\n const publicKey = \"0x\" + ecPublicKey.encode(\"hex\", false).slice(2);\n const publicHash = keccak256(publicKey);\n const address = toChecksum(\"0x\" + publicHash.slice(-40));\n return address;\n};\n\nmodule.exports = {\n create,\n toChecksum,\n fromPrivate,\n sign,\n makeSigner,\n recover,\n encodeSignature,\n decodeSignature\n};","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve\n });\n return curve;\n }\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811'\n ]\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34'\n ]\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5'\n ]\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'\n ]\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650'\n ]\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9'\n ]\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658'\n ]\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3'\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15'\n }\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre\n ]\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar proto = {};\n\nfunction CBCState(iv) {\n assert.equal(iv.length, 8, 'Invalid IV length');\n\n this.iv = new Array(8);\n for (var i = 0; i < this.iv.length; i++)\n this.iv[i] = iv[i];\n}\n\nfunction instantiate(Base) {\n function CBC(options) {\n Base.call(this, options);\n this._cbcInit();\n }\n inherits(CBC, Base);\n\n var keys = Object.keys(proto);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n CBC.prototype[key] = proto[key];\n }\n\n CBC.create = function create(options) {\n return new CBC(options);\n };\n\n return CBC;\n}\n\nexports.instantiate = instantiate;\n\nproto._cbcInit = function _cbcInit() {\n var state = new CBCState(this.options.iv);\n this._cbcState = state;\n};\n\nproto._update = function _update(inp, inOff, out, outOff) {\n var state = this._cbcState;\n var superProto = this.constructor.super_.prototype;\n\n var iv = state.iv;\n if (this.type === 'encrypt') {\n for (var i = 0; i < this.blockSize; i++)\n iv[i] ^= inp[inOff + i];\n\n superProto._update.call(this, iv, 0, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = out[outOff + i];\n } else {\n superProto._update.call(this, inp, inOff, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n out[outOff + i] ^= iv[i];\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = inp[inOff + i];\n }\n};\n","module.exports = getResponse\nfunction getResponse (opt, resp) {\n if (!resp) return null\n return {\n statusCode: resp.statusCode,\n headers: resp.headers,\n method: opt.method,\n url: opt.url,\n // the XHR object in browser, http response in Node\n rawRequest: resp.rawRequest ? resp.rawRequest : resp\n }\n}\n","var parseKeys = require('parse-asn1')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar crt = require('browserify-rsa')\nvar createHash = require('create-hash')\nvar withPublic = require('./withPublic')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function privateDecrypt (privateKey, enc, reverse) {\n var padding\n if (privateKey.padding) {\n padding = privateKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n\n var key = parseKeys(privateKey)\n var k = key.modulus.byteLength()\n if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) {\n throw new Error('decryption error')\n }\n var msg\n if (reverse) {\n msg = withPublic(new BN(enc), key)\n } else {\n msg = crt(enc, key)\n }\n var zBuffer = Buffer.alloc(k - msg.length)\n msg = Buffer.concat([zBuffer, msg], k)\n if (padding === 4) {\n return oaep(key, msg)\n } else if (padding === 1) {\n return pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n return msg\n } else {\n throw new Error('unknown padding')\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n if (msg[0] !== 0) {\n throw new Error('decryption error')\n }\n var maskedSeed = msg.slice(1, hLen + 1)\n var maskedDb = msg.slice(hLen + 1)\n var seed = xor(maskedSeed, mgf(maskedDb, hLen))\n var db = xor(maskedDb, mgf(seed, k - hLen - 1))\n if (compare(iHash, db.slice(0, hLen))) {\n throw new Error('decryption error')\n }\n var i = hLen\n while (db[i] === 0) {\n i++\n }\n if (db[i++] !== 1) {\n throw new Error('decryption error')\n }\n return db.slice(i)\n}\n\nfunction pkcs1 (key, msg, reverse) {\n var p1 = msg.slice(0, 2)\n var i = 2\n var status = 0\n while (msg[i++] !== 0) {\n if (i >= msg.length) {\n status++\n break\n }\n }\n var ps = msg.slice(2, i - 1)\n\n if ((p1.toString('hex') !== '0002' && !reverse) || (p1.toString('hex') !== '0001' && reverse)) {\n status++\n }\n if (ps.length < 8) {\n status++\n }\n if (status) {\n throw new Error('decryption error')\n }\n return msg.slice(i)\n}\nfunction compare (a, b) {\n a = Buffer.from(a)\n b = Buffer.from(b)\n var dif = 0\n var len = a.length\n if (a.length !== b.length) {\n dif++\n len = Math.min(a.length, b.length)\n }\n var i = -1\n while (++i < len) {\n dif += (a[i] ^ b[i])\n }\n return dif\n}\n","/**\r\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\r\n *\r\n * @version 0.5.7\r\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\r\n * @copyright Chen, Yi-Cyuan 2015-2016\r\n * @license MIT\r\n */\r\n/*jslint bitwise: true */\r\n(function () {\r\n 'use strict';\r\n\r\n var root = typeof window === 'object' ? window : {};\r\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\r\n if (NODE_JS) {\r\n root = global;\r\n }\r\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\r\n var HEX_CHARS = '0123456789abcdef'.split('');\r\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\r\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\r\n var PADDING = [6, 1536, 393216, 100663296];\r\n var SHIFT = [0, 8, 16, 24];\r\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\r\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\r\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\r\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\r\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\r\n var BITS = [224, 256, 384, 512];\r\n var SHAKE_BITS = [128, 256];\r\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array'];\r\n\r\n var createOutputMethod = function (bits, padding, outputType) {\r\n return function (message) {\r\n return new Keccak(bits, padding, bits).update(message)[outputType]();\r\n };\r\n };\r\n\r\n var createShakeOutputMethod = function (bits, padding, outputType) {\r\n return function (message, outputBits) {\r\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\r\n };\r\n };\r\n\r\n var createMethod = function (bits, padding) {\r\n var method = createOutputMethod(bits, padding, 'hex');\r\n method.create = function () {\r\n return new Keccak(bits, padding, bits);\r\n };\r\n method.update = function (message) {\r\n return method.create().update(message);\r\n };\r\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\r\n var type = OUTPUT_TYPES[i];\r\n method[type] = createOutputMethod(bits, padding, type);\r\n }\r\n return method;\r\n };\r\n\r\n var createShakeMethod = function (bits, padding) {\r\n var method = createShakeOutputMethod(bits, padding, 'hex');\r\n method.create = function (outputBits) {\r\n return new Keccak(bits, padding, outputBits);\r\n };\r\n method.update = function (message, outputBits) {\r\n return method.create(outputBits).update(message);\r\n };\r\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\r\n var type = OUTPUT_TYPES[i];\r\n method[type] = createShakeOutputMethod(bits, padding, type);\r\n }\r\n return method;\r\n };\r\n\r\n var algorithms = [\r\n {name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod},\r\n {name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod},\r\n {name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod}\r\n ];\r\n\r\n var methods = {}, methodNames = [];\r\n\r\n for (var i = 0; i < algorithms.length; ++i) {\r\n var algorithm = algorithms[i];\r\n var bits = algorithm.bits;\r\n for (var j = 0; j < bits.length; ++j) {\r\n var methodName = algorithm.name +'_' + bits[j];\r\n methodNames.push(methodName);\r\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\r\n }\r\n }\r\n\r\n function Keccak(bits, padding, outputBits) {\r\n this.blocks = [];\r\n this.s = [];\r\n this.padding = padding;\r\n this.outputBits = outputBits;\r\n this.reset = true;\r\n this.block = 0;\r\n this.start = 0;\r\n this.blockCount = (1600 - (bits << 1)) >> 5;\r\n this.byteCount = this.blockCount << 2;\r\n this.outputBlocks = outputBits >> 5;\r\n this.extraBytes = (outputBits & 31) >> 3;\r\n\r\n for (var i = 0; i < 50; ++i) {\r\n this.s[i] = 0;\r\n }\r\n }\r\n\r\n Keccak.prototype.update = function (message) {\r\n var notString = typeof message !== 'string';\r\n if (notString && message.constructor === ArrayBuffer) {\r\n message = new Uint8Array(message);\r\n }\r\n var length = message.length, blocks = this.blocks, byteCount = this.byteCount,\r\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\r\n\r\n while (index < length) {\r\n if (this.reset) {\r\n this.reset = false;\r\n blocks[0] = this.block;\r\n for (i = 1; i < blockCount + 1; ++i) {\r\n blocks[i] = 0;\r\n }\r\n }\r\n if (notString) {\r\n for (i = this.start; index < length && i < byteCount; ++index) {\r\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\r\n }\r\n } else {\r\n for (i = this.start; index < length && i < byteCount; ++index) {\r\n code = message.charCodeAt(index);\r\n if (code < 0x80) {\r\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\r\n } else if (code < 0x800) {\r\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n } else if (code < 0xd800 || code >= 0xe000) {\r\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n } else {\r\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\r\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n }\r\n }\r\n }\r\n this.lastByteIndex = i;\r\n if (i >= byteCount) {\r\n this.start = i - byteCount;\r\n this.block = blocks[blockCount];\r\n for (i = 0; i < blockCount; ++i) {\r\n s[i] ^= blocks[i];\r\n }\r\n f(s);\r\n this.reset = true;\r\n } else {\r\n this.start = i;\r\n }\r\n }\r\n return this;\r\n };\r\n\r\n Keccak.prototype.finalize = function () {\r\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\r\n blocks[i >> 2] |= this.padding[i & 3];\r\n if (this.lastByteIndex === this.byteCount) {\r\n blocks[0] = blocks[blockCount];\r\n for (i = 1; i < blockCount + 1; ++i) {\r\n blocks[i] = 0;\r\n }\r\n }\r\n blocks[blockCount - 1] |= 0x80000000;\r\n for (i = 0; i < blockCount; ++i) {\r\n s[i] ^= blocks[i];\r\n }\r\n f(s);\r\n };\r\n\r\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\r\n this.finalize();\r\n\r\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\r\n extraBytes = this.extraBytes, i = 0, j = 0;\r\n var hex = '', block;\r\n while (j < outputBlocks) {\r\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\r\n block = s[i];\r\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\r\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\r\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\r\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\r\n }\r\n if (j % blockCount === 0) {\r\n f(s);\r\n i = 0;\r\n }\r\n }\r\n if (extraBytes) {\r\n block = s[i];\r\n if (extraBytes > 0) {\r\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\r\n }\r\n if (extraBytes > 1) {\r\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\r\n }\r\n if (extraBytes > 2) {\r\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\r\n }\r\n }\r\n return hex;\r\n };\r\n\r\n Keccak.prototype.arrayBuffer = function () {\r\n this.finalize();\r\n\r\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\r\n extraBytes = this.extraBytes, i = 0, j = 0;\r\n var bytes = this.outputBits >> 3;\r\n var buffer;\r\n if (extraBytes) {\r\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\r\n } else {\r\n buffer = new ArrayBuffer(bytes);\r\n }\r\n var array = new Uint32Array(buffer);\r\n while (j < outputBlocks) {\r\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\r\n array[j] = s[i];\r\n }\r\n if (j % blockCount === 0) {\r\n f(s);\r\n }\r\n }\r\n if (extraBytes) {\r\n array[i] = s[i];\r\n buffer = buffer.slice(0, bytes);\r\n }\r\n return buffer;\r\n };\r\n\r\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\r\n\r\n Keccak.prototype.digest = Keccak.prototype.array = function () {\r\n this.finalize();\r\n\r\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\r\n extraBytes = this.extraBytes, i = 0, j = 0;\r\n var array = [], offset, block;\r\n while (j < outputBlocks) {\r\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\r\n offset = j << 2;\r\n block = s[i];\r\n array[offset] = block & 0xFF;\r\n array[offset + 1] = (block >> 8) & 0xFF;\r\n array[offset + 2] = (block >> 16) & 0xFF;\r\n array[offset + 3] = (block >> 24) & 0xFF;\r\n }\r\n if (j % blockCount === 0) {\r\n f(s);\r\n }\r\n }\r\n if (extraBytes) {\r\n offset = j << 2;\r\n block = s[i];\r\n if (extraBytes > 0) {\r\n array[offset] = block & 0xFF;\r\n }\r\n if (extraBytes > 1) {\r\n array[offset + 1] = (block >> 8) & 0xFF;\r\n }\r\n if (extraBytes > 2) {\r\n array[offset + 2] = (block >> 16) & 0xFF;\r\n }\r\n }\r\n return array;\r\n };\r\n\r\n var f = function (s) {\r\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\r\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\r\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\r\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\r\n for (n = 0; n < 48; n += 2) {\r\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\r\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\r\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\r\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\r\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\r\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\r\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\r\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\r\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\r\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\r\n\r\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\r\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\r\n s[0] ^= h;\r\n s[1] ^= l;\r\n s[10] ^= h;\r\n s[11] ^= l;\r\n s[20] ^= h;\r\n s[21] ^= l;\r\n s[30] ^= h;\r\n s[31] ^= l;\r\n s[40] ^= h;\r\n s[41] ^= l;\r\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\r\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\r\n s[2] ^= h;\r\n s[3] ^= l;\r\n s[12] ^= h;\r\n s[13] ^= l;\r\n s[22] ^= h;\r\n s[23] ^= l;\r\n s[32] ^= h;\r\n s[33] ^= l;\r\n s[42] ^= h;\r\n s[43] ^= l;\r\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\r\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\r\n s[4] ^= h;\r\n s[5] ^= l;\r\n s[14] ^= h;\r\n s[15] ^= l;\r\n s[24] ^= h;\r\n s[25] ^= l;\r\n s[34] ^= h;\r\n s[35] ^= l;\r\n s[44] ^= h;\r\n s[45] ^= l;\r\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\r\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\r\n s[6] ^= h;\r\n s[7] ^= l;\r\n s[16] ^= h;\r\n s[17] ^= l;\r\n s[26] ^= h;\r\n s[27] ^= l;\r\n s[36] ^= h;\r\n s[37] ^= l;\r\n s[46] ^= h;\r\n s[47] ^= l;\r\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\r\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\r\n s[8] ^= h;\r\n s[9] ^= l;\r\n s[18] ^= h;\r\n s[19] ^= l;\r\n s[28] ^= h;\r\n s[29] ^= l;\r\n s[38] ^= h;\r\n s[39] ^= l;\r\n s[48] ^= h;\r\n s[49] ^= l;\r\n\r\n b0 = s[0];\r\n b1 = s[1];\r\n b32 = (s[11] << 4) | (s[10] >>> 28);\r\n b33 = (s[10] << 4) | (s[11] >>> 28);\r\n b14 = (s[20] << 3) | (s[21] >>> 29);\r\n b15 = (s[21] << 3) | (s[20] >>> 29);\r\n b46 = (s[31] << 9) | (s[30] >>> 23);\r\n b47 = (s[30] << 9) | (s[31] >>> 23);\r\n b28 = (s[40] << 18) | (s[41] >>> 14);\r\n b29 = (s[41] << 18) | (s[40] >>> 14);\r\n b20 = (s[2] << 1) | (s[3] >>> 31);\r\n b21 = (s[3] << 1) | (s[2] >>> 31);\r\n b2 = (s[13] << 12) | (s[12] >>> 20);\r\n b3 = (s[12] << 12) | (s[13] >>> 20);\r\n b34 = (s[22] << 10) | (s[23] >>> 22);\r\n b35 = (s[23] << 10) | (s[22] >>> 22);\r\n b16 = (s[33] << 13) | (s[32] >>> 19);\r\n b17 = (s[32] << 13) | (s[33] >>> 19);\r\n b48 = (s[42] << 2) | (s[43] >>> 30);\r\n b49 = (s[43] << 2) | (s[42] >>> 30);\r\n b40 = (s[5] << 30) | (s[4] >>> 2);\r\n b41 = (s[4] << 30) | (s[5] >>> 2);\r\n b22 = (s[14] << 6) | (s[15] >>> 26);\r\n b23 = (s[15] << 6) | (s[14] >>> 26);\r\n b4 = (s[25] << 11) | (s[24] >>> 21);\r\n b5 = (s[24] << 11) | (s[25] >>> 21);\r\n b36 = (s[34] << 15) | (s[35] >>> 17);\r\n b37 = (s[35] << 15) | (s[34] >>> 17);\r\n b18 = (s[45] << 29) | (s[44] >>> 3);\r\n b19 = (s[44] << 29) | (s[45] >>> 3);\r\n b10 = (s[6] << 28) | (s[7] >>> 4);\r\n b11 = (s[7] << 28) | (s[6] >>> 4);\r\n b42 = (s[17] << 23) | (s[16] >>> 9);\r\n b43 = (s[16] << 23) | (s[17] >>> 9);\r\n b24 = (s[26] << 25) | (s[27] >>> 7);\r\n b25 = (s[27] << 25) | (s[26] >>> 7);\r\n b6 = (s[36] << 21) | (s[37] >>> 11);\r\n b7 = (s[37] << 21) | (s[36] >>> 11);\r\n b38 = (s[47] << 24) | (s[46] >>> 8);\r\n b39 = (s[46] << 24) | (s[47] >>> 8);\r\n b30 = (s[8] << 27) | (s[9] >>> 5);\r\n b31 = (s[9] << 27) | (s[8] >>> 5);\r\n b12 = (s[18] << 20) | (s[19] >>> 12);\r\n b13 = (s[19] << 20) | (s[18] >>> 12);\r\n b44 = (s[29] << 7) | (s[28] >>> 25);\r\n b45 = (s[28] << 7) | (s[29] >>> 25);\r\n b26 = (s[38] << 8) | (s[39] >>> 24);\r\n b27 = (s[39] << 8) | (s[38] >>> 24);\r\n b8 = (s[48] << 14) | (s[49] >>> 18);\r\n b9 = (s[49] << 14) | (s[48] >>> 18);\r\n\r\n s[0] = b0 ^ (~b2 & b4);\r\n s[1] = b1 ^ (~b3 & b5);\r\n s[10] = b10 ^ (~b12 & b14);\r\n s[11] = b11 ^ (~b13 & b15);\r\n s[20] = b20 ^ (~b22 & b24);\r\n s[21] = b21 ^ (~b23 & b25);\r\n s[30] = b30 ^ (~b32 & b34);\r\n s[31] = b31 ^ (~b33 & b35);\r\n s[40] = b40 ^ (~b42 & b44);\r\n s[41] = b41 ^ (~b43 & b45);\r\n s[2] = b2 ^ (~b4 & b6);\r\n s[3] = b3 ^ (~b5 & b7);\r\n s[12] = b12 ^ (~b14 & b16);\r\n s[13] = b13 ^ (~b15 & b17);\r\n s[22] = b22 ^ (~b24 & b26);\r\n s[23] = b23 ^ (~b25 & b27);\r\n s[32] = b32 ^ (~b34 & b36);\r\n s[33] = b33 ^ (~b35 & b37);\r\n s[42] = b42 ^ (~b44 & b46);\r\n s[43] = b43 ^ (~b45 & b47);\r\n s[4] = b4 ^ (~b6 & b8);\r\n s[5] = b5 ^ (~b7 & b9);\r\n s[14] = b14 ^ (~b16 & b18);\r\n s[15] = b15 ^ (~b17 & b19);\r\n s[24] = b24 ^ (~b26 & b28);\r\n s[25] = b25 ^ (~b27 & b29);\r\n s[34] = b34 ^ (~b36 & b38);\r\n s[35] = b35 ^ (~b37 & b39);\r\n s[44] = b44 ^ (~b46 & b48);\r\n s[45] = b45 ^ (~b47 & b49);\r\n s[6] = b6 ^ (~b8 & b0);\r\n s[7] = b7 ^ (~b9 & b1);\r\n s[16] = b16 ^ (~b18 & b10);\r\n s[17] = b17 ^ (~b19 & b11);\r\n s[26] = b26 ^ (~b28 & b20);\r\n s[27] = b27 ^ (~b29 & b21);\r\n s[36] = b36 ^ (~b38 & b30);\r\n s[37] = b37 ^ (~b39 & b31);\r\n s[46] = b46 ^ (~b48 & b40);\r\n s[47] = b47 ^ (~b49 & b41);\r\n s[8] = b8 ^ (~b0 & b2);\r\n s[9] = b9 ^ (~b1 & b3);\r\n s[18] = b18 ^ (~b10 & b12);\r\n s[19] = b19 ^ (~b11 & b13);\r\n s[28] = b28 ^ (~b20 & b22);\r\n s[29] = b29 ^ (~b21 & b23);\r\n s[38] = b38 ^ (~b30 & b32);\r\n s[39] = b39 ^ (~b31 & b33);\r\n s[48] = b48 ^ (~b40 & b42);\r\n s[49] = b49 ^ (~b41 & b43);\r\n\r\n s[0] ^= RC[n];\r\n s[1] ^= RC[n + 1];\r\n }\r\n };\r\n\r\n if (COMMON_JS) {\r\n module.exports = methods;\r\n } else {\r\n for (var i = 0; i < methodNames.length; ++i) {\r\n root[methodNames[i]] = methods[methodNames[i]];\r\n }\r\n }\r\n})();\r\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n */\n/**\n * @file utils.js\n * @author Marek Kotewicz \n * @author Fabian Vogelsteller \n * @date 2017\n */\n\n\nvar _ = require('underscore');\nvar ethjsUnit = require('ethjs-unit');\nvar utils = require('./utils.js');\nvar soliditySha3 = require('./soliditySha3.js');\nvar randombytes = require('randombytes');\n\n\n\n/**\n * Fires an error in an event emitter and callback and returns the eventemitter\n *\n * @method _fireError\n * @param {Object} error a string, a error, or an object with {message, data}\n * @param {Object} emitter\n * @param {Function} reject\n * @param {Function} callback\n * @param {any} optionalData\n * @return {Object} the emitter\n */\nvar _fireError = function (error, emitter, reject, callback, optionalData) {\n /*jshint maxcomplexity: 10 */\n\n // add data if given\n if(_.isObject(error) && !(error instanceof Error) && error.data) {\n if(_.isObject(error.data) || _.isArray(error.data)) {\n error.data = JSON.stringify(error.data, null, 2);\n }\n\n error = error.message +\"\\n\"+ error.data;\n }\n\n if(_.isString(error)) {\n error = new Error(error);\n }\n\n if (_.isFunction(callback)) {\n callback(error, optionalData);\n }\n if (_.isFunction(reject)) {\n // suppress uncatched error if an error listener is present\n // OR suppress uncatched error if an callback listener is present\n if (\n emitter &&\n (_.isFunction(emitter.listeners) &&\n emitter.listeners('error').length) || _.isFunction(callback)\n ) {\n emitter.catch(function(){});\n }\n // reject later, to be able to return emitter\n setTimeout(function () {\n reject(error);\n }, 1);\n }\n\n if(emitter && _.isFunction(emitter.emit)) {\n // emit later, to be able to return emitter\n setTimeout(function () {\n emitter.emit('error', error, optionalData);\n emitter.removeAllListeners();\n }, 1);\n }\n\n return emitter;\n};\n\n/**\n * Should be used to create full function/event name from json abi\n *\n * @method _jsonInterfaceMethodToString\n * @param {Object} json\n * @return {String} full function/event name\n */\nvar _jsonInterfaceMethodToString = function (json) {\n if (_.isObject(json) && json.name && json.name.indexOf('(') !== -1) {\n return json.name;\n }\n\n return json.name + '(' + _flattenTypes(false, json.inputs).join(',') + ')';\n};\n\n\n/**\n * Should be used to flatten json abi inputs/outputs into an array of type-representing-strings\n *\n * @method _flattenTypes\n * @param {bool} includeTuple\n * @param {Object} puts\n * @return {Array} parameters as strings\n */\nvar _flattenTypes = function(includeTuple, puts)\n{\n // console.log(\"entered _flattenTypes. inputs/outputs: \" + puts)\n var types = [];\n\n puts.forEach(function(param) {\n if (typeof param.components === 'object') {\n if (param.type.substring(0, 5) !== 'tuple') {\n throw new Error('components found but type is not tuple; report on GitHub');\n }\n var suffix = '';\n var arrayBracket = param.type.indexOf('[');\n if (arrayBracket >= 0) { suffix = param.type.substring(arrayBracket); }\n var result = _flattenTypes(includeTuple, param.components);\n // console.log(\"result should have things: \" + result)\n if(_.isArray(result) && includeTuple) {\n // console.log(\"include tuple word, and its an array. joining...: \" + result.types)\n types.push('tuple(' + result.join(',') + ')' + suffix);\n }\n else if(!includeTuple) {\n // console.log(\"don't include tuple, but its an array. joining...: \" + result)\n types.push('(' + result.join(',') + ')' + suffix);\n }\n else {\n // console.log(\"its a single type within a tuple: \" + result.types)\n types.push('(' + result + ')');\n }\n } else {\n // console.log(\"its a type and not directly in a tuple: \" + param.type)\n types.push(param.type);\n }\n });\n\n return types;\n};\n\n\n/**\n * Returns a random hex string by the given bytes size\n *\n * @param {Number} size\n * @returns {string}\n */\nvar randomHex = function(size) {\n return '0x' + randombytes(size).toString('hex');\n};\n\n/**\n * Should be called to get ascii from it's hex representation\n *\n * @method hexToAscii\n * @param {String} hex\n * @returns {String} ascii string representation of hex value\n */\nvar hexToAscii = function(hex) {\n if (!utils.isHexStrict(hex))\n throw new Error('The parameter must be a valid HEX string.');\n\n var str = \"\";\n var i = 0, l = hex.length;\n if (hex.substring(0, 2) === '0x') {\n i = 2;\n }\n for (; i < l; i+=2) {\n var code = parseInt(hex.substr(i, 2), 16);\n str += String.fromCharCode(code);\n }\n\n return str;\n};\n\n/**\n * Should be called to get hex representation (prefixed by 0x) of ascii string\n *\n * @method asciiToHex\n * @param {String} str\n * @returns {String} hex representation of input string\n */\nvar asciiToHex = function(str) {\n if(!str)\n return \"0x00\";\n var hex = \"\";\n for(var i = 0; i < str.length; i++) {\n var code = str.charCodeAt(i);\n var n = code.toString(16);\n hex += n.length < 2 ? '0' + n : n;\n }\n\n return \"0x\" + hex;\n};\n\n\n\n/**\n * Returns value of unit in Wei\n *\n * @method getUnitValue\n * @param {String} unit the unit to convert to, default ether\n * @returns {BN} value of the unit (in Wei)\n * @throws error if the unit is not correct:w\n */\nvar getUnitValue = function (unit) {\n unit = unit ? unit.toLowerCase() : 'ether';\n if (!ethjsUnit.unitMap[unit]) {\n throw new Error('This unit \"'+ unit +'\" doesn\\'t exist, please use the one of the following units' + JSON.stringify(ethjsUnit.unitMap, null, 2));\n }\n return unit;\n};\n\n/**\n * Takes a number of wei and converts it to any other ether unit.\n *\n * Possible units are:\n * SI Short SI Full Effigy Other\n * - kwei femtoether babbage\n * - mwei picoether lovelace\n * - gwei nanoether shannon nano\n * - -- microether szabo micro\n * - -- milliether finney milli\n * - ether -- --\n * - kether -- grand\n * - mether\n * - gether\n * - tether\n *\n * @method fromWei\n * @param {Number|String} number can be a number, number string or a HEX of a decimal\n * @param {String} unit the unit to convert to, default ether\n * @return {String|Object} When given a BN object it returns one as well, otherwise a number\n */\nvar fromWei = function(number, unit) {\n unit = getUnitValue(unit);\n\n if(!utils.isBN(number) && !_.isString(number)) {\n throw new Error('Please pass numbers as strings or BN objects to avoid precision errors.');\n }\n\n return utils.isBN(number) ? ethjsUnit.fromWei(number, unit) : ethjsUnit.fromWei(number, unit).toString(10);\n};\n\n/**\n * Takes a number of a unit and converts it to wei.\n *\n * Possible units are:\n * SI Short SI Full Effigy Other\n * - kwei femtoether babbage\n * - mwei picoether lovelace\n * - gwei nanoether shannon nano\n * - -- microether szabo micro\n * - -- microether szabo micro\n * - -- milliether finney milli\n * - ether -- --\n * - kether -- grand\n * - mether\n * - gether\n * - tether\n *\n * @method toWei\n * @param {Number|String|BN} number can be a number, number string or a HEX of a decimal\n * @param {String} unit the unit to convert from, default ether\n * @return {String|Object} When given a BN object it returns one as well, otherwise a number\n */\nvar toWei = function(number, unit) {\n unit = getUnitValue(unit);\n\n if(!utils.isBN(number) && !_.isString(number)) {\n throw new Error('Please pass numbers as strings or BN objects to avoid precision errors.');\n }\n\n return utils.isBN(number) ? ethjsUnit.toWei(number, unit) : ethjsUnit.toWei(number, unit).toString(10);\n};\n\n\n\n\n/**\n * Converts to a checksum address\n *\n * @method toChecksumAddress\n * @param {String} address the given HEX address\n * @return {String}\n */\nvar toChecksumAddress = function (address) {\n if (typeof address === 'undefined') return '';\n\n if(!/^(0x)?[0-9a-f]{40}$/i.test(address))\n throw new Error('Given address \"'+ address +'\" is not a valid Ethereum address.');\n\n\n\n address = address.toLowerCase().replace(/^0x/i,'');\n var addressHash = utils.sha3(address).replace(/^0x/i,'');\n var checksumAddress = '0x';\n\n for (var i = 0; i < address.length; i++ ) {\n // If ith character is 9 to f then make it uppercase\n if (parseInt(addressHash[i], 16) > 7) {\n checksumAddress += address[i].toUpperCase();\n } else {\n checksumAddress += address[i];\n }\n }\n return checksumAddress;\n};\n\nmodule.exports = {\n _fireError: _fireError,\n _jsonInterfaceMethodToString: _jsonInterfaceMethodToString,\n _flattenTypes: _flattenTypes,\n // extractDisplayName: extractDisplayName,\n // extractTypeName: extractTypeName,\n randomHex: randomHex,\n _: _,\n BN: utils.BN,\n isBN: utils.isBN,\n isBigNumber: utils.isBigNumber,\n isHex: utils.isHex,\n isHexStrict: utils.isHexStrict,\n sha3: utils.sha3,\n sha3Raw: utils.sha3Raw,\n keccak256: utils.sha3,\n soliditySha3: soliditySha3.soliditySha3,\n soliditySha3Raw: soliditySha3.soliditySha3Raw,\n isAddress: utils.isAddress,\n checkAddressChecksum: utils.checkAddressChecksum,\n toChecksumAddress: toChecksumAddress,\n toHex: utils.toHex,\n toBN: utils.toBN,\n\n bytesToHex: utils.bytesToHex,\n hexToBytes: utils.hexToBytes,\n\n hexToNumberString: utils.hexToNumberString,\n\n hexToNumber: utils.hexToNumber,\n toDecimal: utils.hexToNumber, // alias\n\n numberToHex: utils.numberToHex,\n fromDecimal: utils.numberToHex, // alias\n\n hexToUtf8: utils.hexToUtf8,\n hexToString: utils.hexToUtf8,\n toUtf8: utils.hexToUtf8,\n\n utf8ToHex: utils.utf8ToHex,\n stringToHex: utils.utf8ToHex,\n fromUtf8: utils.utf8ToHex,\n\n hexToAscii: hexToAscii,\n toAscii: hexToAscii,\n asciiToHex: asciiToHex,\n fromAscii: asciiToHex,\n\n unitMap: ethjsUnit.unitMap,\n toWei: toWei,\n fromWei: fromWei,\n\n padLeft: utils.leftPad,\n leftPad: utils.leftPad,\n padRight: utils.rightPad,\n rightPad: utils.rightPad,\n toTwosComplement: utils.toTwosComplement,\n\n    isBloom: utils.isBloom,\n    isUserEthereumAddressInBloom: utils.isUserEthereumAddressInBloom,\n    isContractAddressInBloom: utils.isContractAddressInBloom,\n    isTopic: utils.isTopic,\n    isTopicInBloom: utils.isTopicInBloom,\n    isInBloom: utils.isInBloom\n};\n","module.exports = require('./browser/algorithms.json')\n","'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","\"use strict\";\n\nvar REGISTRY = [\n {\n \"constant\": true,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"resolver\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": true,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"owner\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"label\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setSubnodeOwner\",\n \"outputs\": [],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"ttl\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"setTTL\",\n \"outputs\": [],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": true,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"ttl\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint64\"\n }\n ],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"resolver\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setResolver\",\n \"outputs\": [],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setOwner\",\n \"outputs\": [],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Transfer\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"name\": \"label\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"NewOwner\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"name\": \"resolver\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"NewResolver\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"name\": \"ttl\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"NewTTL\",\n \"type\": \"event\"\n }\n];\n\nmodule.exports = REGISTRY;\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst utils_1 = require(\"./utils\");\r\n/**\r\n * Returns true if the bloom is a valid bloom\r\n * @param bloom The bloom\r\n */\r\nfunction isBloom(bloom) {\r\n if (typeof bloom !== 'string') {\r\n return false;\r\n }\r\n if (!/^(0x)?[0-9a-f]{512}$/i.test(bloom)) {\r\n return false;\r\n }\r\n if (/^(0x)?[0-9a-f]{512}$/.test(bloom) ||\r\n /^(0x)?[0-9A-F]{512}$/.test(bloom)) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexports.isBloom = isBloom;\r\n/**\r\n * Returns true if the value is part of the given bloom\r\n * note: false positives are possible.\r\n * @param bloom encoded bloom\r\n * @param value The value\r\n */\r\nfunction isInBloom(bloom, value) {\r\n if (typeof value === 'object' && value.constructor === Uint8Array) {\r\n value = utils_1.bytesToHex(value);\r\n }\r\n const hash = utils_1.keccak256(value).replace('0x', '');\r\n for (let i = 0; i < 12; i += 4) {\r\n // calculate bit position in bloom filter that must be active\r\n const bitpos = ((parseInt(hash.substr(i, 2), 16) << 8) +\r\n parseInt(hash.substr(i + 2, 2), 16)) &\r\n 2047;\r\n // test if bitpos in bloom is active\r\n const code = codePointToInt(bloom.charCodeAt(bloom.length - 1 - Math.floor(bitpos / 4)));\r\n const offset = 1 << bitpos % 4;\r\n if ((code & offset) !== offset) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nexports.isInBloom = isInBloom;\r\n/**\r\n * Code points to int\r\n * @param codePoint The code point\r\n */\r\nfunction codePointToInt(codePoint) {\r\n if (codePoint >= 48 && codePoint <= 57) {\r\n /* ['0'..'9'] -> [0..9] */\r\n return codePoint - 48;\r\n }\r\n if (codePoint >= 65 && codePoint <= 70) {\r\n /* ['A'..'F'] -> [10..15] */\r\n return codePoint - 55;\r\n }\r\n if (codePoint >= 97 && codePoint <= 102) {\r\n /* ['a'..'f'] -> [10..15] */\r\n return codePoint - 87;\r\n }\r\n throw new Error('invalid bloom');\r\n}\r\n/**\r\n * Returns true if the ethereum users address is part of the given bloom.\r\n * note: false positives are possible.\r\n * @param bloom encoded bloom\r\n * @param address the address to test\r\n */\r\nfunction isUserEthereumAddressInBloom(bloom, ethereumAddress) {\r\n if (!isBloom(bloom)) {\r\n throw new Error('Invalid bloom given');\r\n }\r\n if (!isAddress(ethereumAddress)) {\r\n throw new Error(`Invalid ethereum address given: \"${ethereumAddress}\"`);\r\n }\r\n // you have to pad the ethereum address to 32 bytes\r\n // else the bloom filter does not work\r\n // this is only if your matching the USERS\r\n // ethereum address. Contract address do not need this\r\n // hence why we have 2 methods\r\n // (0x is not in the 2nd parameter of padleft so 64 chars is fine)\r\n const address = utils_1.padLeft(ethereumAddress, 64);\r\n return isInBloom(bloom, address);\r\n}\r\nexports.isUserEthereumAddressInBloom = isUserEthereumAddressInBloom;\r\n/**\r\n * Returns true if the contract address is part of the given bloom.\r\n * note: false positives are possible.\r\n * @param bloom encoded bloom\r\n * @param contractAddress the contract address to test\r\n */\r\nfunction isContractAddressInBloom(bloom, contractAddress) {\r\n if (!isBloom(bloom)) {\r\n throw new Error('Invalid bloom given');\r\n }\r\n if (!isAddress(contractAddress)) {\r\n throw new Error(`Invalid contract address given: \"${contractAddress}\"`);\r\n }\r\n return isInBloom(bloom, contractAddress);\r\n}\r\nexports.isContractAddressInBloom = isContractAddressInBloom;\r\n/**\r\n * Returns true if the topic is part of the given bloom.\r\n * note: false positives are possible.\r\n * @param bloom encoded bloom\r\n * @param topic the topic encoded hex\r\n */\r\nfunction isTopicInBloom(bloom, topic) {\r\n if (!isBloom(bloom)) {\r\n throw new Error('Invalid bloom given');\r\n }\r\n if (!isTopic(topic)) {\r\n throw new Error('Invalid topic');\r\n }\r\n return isInBloom(bloom, topic);\r\n}\r\nexports.isTopicInBloom = isTopicInBloom;\r\n/**\r\n * Checks if its a valid topic\r\n * @param topic encoded hex topic\r\n */\r\nfunction isTopic(topic) {\r\n if (typeof topic !== 'string') {\r\n return false;\r\n }\r\n if (!/^(0x)?[0-9a-f]{64}$/i.test(topic)) {\r\n return false;\r\n }\r\n else if (/^(0x)?[0-9a-f]{64}$/.test(topic) ||\r\n /^(0x)?[0-9A-F]{64}$/.test(topic)) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexports.isTopic = isTopic;\r\n/**\r\n * Is valid address\r\n * @param address The address\r\n */\r\nfunction isAddress(address) {\r\n if (typeof address !== 'string') {\r\n return false;\r\n }\r\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\r\n return true;\r\n }\r\n if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexports.isAddress = isAddress;\r\n","'use strict';\n\nexports.utils = require('./des/utils');\nexports.Cipher = require('./des/cipher');\nexports.DES = require('./des/des');\nexports.CBC = require('./des/cbc');\nexports.EDE = require('./des/ede');\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file formatters.js\n * @author Fabian Vogelsteller \n * @author Marek Kotewicz \n * @date 2017\n */\n\n\"use strict\";\n\nvar _ = require('underscore');\nvar utils = require('web3-utils');\nvar Iban = require('web3-eth-iban');\n\n\n/**\n * Will format the given storage key array values to hex strings.\n *\n * @method inputStorageKeysFormatter\n *\n * @param {Array} keys\n *\n * @returns {Array}\n */\nvar inputStorageKeysFormatter = function (keys) {\n return keys.map(utils.numberToHex);\n};\n\n/**\n * Will format the given proof response from the node.\n *\n * @method outputProofFormatter\n *\n * @param {object} proof\n *\n * @returns {object}\n */\nvar outputProofFormatter = function (proof) {\n proof.address = utils.toChecksumAddress(proof.address);\n proof.nonce = utils.hexToNumberString(proof.nonce);\n proof.balance = utils.hexToNumberString(proof.balance);\n\n return proof;\n};\n\n/**\n * Should the format output to a big number\n *\n * @method outputBigNumberFormatter\n *\n * @param {String|Number|BigNumber|BN} number\n *\n * @returns {BN} object\n */\nvar outputBigNumberFormatter = function (number) {\n return utils.toBN(number).toString(10);\n};\n\n/**\n * Returns true if the given blockNumber is 'latest', 'pending', or 'earliest.\n *\n * @method isPredefinedBlockNumber\n *\n * @param {String} blockNumber\n *\n * @returns {Boolean}\n */\nvar isPredefinedBlockNumber = function (blockNumber) {\n return blockNumber === 'latest' || blockNumber === 'pending' || blockNumber === 'earliest';\n};\n\n/**\n * Returns the given block number as hex string or does return the defaultBlock property of the current module\n *\n * @method inputDefaultBlockNumberFormatter\n *\n * @param {String|Number|BN|BigNumber} blockNumber\n *\n * @returns {String}\n */\nvar inputDefaultBlockNumberFormatter = function (blockNumber) {\n if (this && (blockNumber === undefined || blockNumber === null)) {\n return inputBlockNumberFormatter(this.defaultBlock);\n }\n\n return inputBlockNumberFormatter(blockNumber);\n};\n\n/**\n * Returns the given block number as hex string or the predefined block number 'latest', 'pending', 'earliest', 'genesis'\n *\n * @param {String|Number|BN|BigNumber} blockNumber\n *\n * @returns {String}\n */\nvar inputBlockNumberFormatter = function (blockNumber) {\n if (blockNumber === undefined) {\n return undefined;\n }\n\n if (isPredefinedBlockNumber(blockNumber)) {\n return blockNumber;\n }\n\n if (blockNumber === 'genesis') {\n return '0x0';\n }\n\n return (utils.isHexStrict(blockNumber)) ? ((_.isString(blockNumber)) ? blockNumber.toLowerCase() : blockNumber) : utils.numberToHex(blockNumber);\n};\n\n/**\n * Formats the input of a transaction and converts all values to HEX\n *\n * @method _txInputFormatter\n * @param {Object} transaction options\n * @returns object\n */\nvar _txInputFormatter = function (options) {\n\n if (options.to) { // it might be contract creation\n options.to = inputAddressFormatter(options.to);\n }\n\n if (options.data && options.input) {\n throw new Error('You can\\'t have \"data\" and \"input\" as properties of transactions at the same time, please use either \"data\" or \"input\" instead.');\n }\n\n if (!options.data && options.input) {\n options.data = options.input;\n delete options.input;\n }\n\n if (options.data && !utils.isHex(options.data)) {\n throw new Error('The data field must be HEX encoded data.');\n }\n\n // allow both\n if (options.gas || options.gasLimit) {\n options.gas = options.gas || options.gasLimit;\n }\n\n ['gasPrice', 'gas', 'value', 'nonce'].filter(function (key) {\n return options[key] !== undefined;\n }).forEach(function (key) {\n options[key] = utils.numberToHex(options[key]);\n });\n\n return options;\n};\n\n/**\n * Formats the input of a transaction and converts all values to HEX\n *\n * @method inputCallFormatter\n * @param {Object} transaction options\n * @returns object\n */\nvar inputCallFormatter = function (options) {\n\n options = _txInputFormatter(options);\n\n var from = options.from || (this ? this.defaultAccount : null);\n\n if (from) {\n options.from = inputAddressFormatter(from);\n }\n\n\n return options;\n};\n\n/**\n * Formats the input of a transaction and converts all values to HEX\n *\n * @method inputTransactionFormatter\n * @param {Object} options\n * @returns object\n */\nvar inputTransactionFormatter = function (options) {\n\n options = _txInputFormatter(options);\n\n // check from, only if not number, or object\n if (!_.isNumber(options.from) && !_.isObject(options.from)) {\n options.from = options.from || (this ? this.defaultAccount : null);\n\n if (!options.from && !_.isNumber(options.from)) {\n throw new Error('The send transactions \"from\" field must be defined!');\n }\n\n options.from = inputAddressFormatter(options.from);\n }\n\n return options;\n};\n\n/**\n * Hex encodes the data passed to eth_sign and personal_sign\n *\n * @method inputSignFormatter\n * @param {String} data\n * @returns {String}\n */\nvar inputSignFormatter = function (data) {\n return (utils.isHexStrict(data)) ? data : utils.utf8ToHex(data);\n};\n\n/**\n * Formats the output of a transaction to its proper values\n *\n * @method outputTransactionFormatter\n * @param {Object} tx\n * @returns {Object}\n */\nvar outputTransactionFormatter = function (tx) {\n if (tx.blockNumber !== null)\n tx.blockNumber = utils.hexToNumber(tx.blockNumber);\n if (tx.transactionIndex !== null)\n tx.transactionIndex = utils.hexToNumber(tx.transactionIndex);\n tx.nonce = utils.hexToNumber(tx.nonce);\n tx.gas = utils.hexToNumber(tx.gas);\n tx.gasPrice = outputBigNumberFormatter(tx.gasPrice);\n tx.value = outputBigNumberFormatter(tx.value);\n\n if (tx.to && utils.isAddress(tx.to)) { // tx.to could be `0x0` or `null` while contract creation\n tx.to = utils.toChecksumAddress(tx.to);\n } else {\n tx.to = null; // set to `null` if invalid address\n }\n\n if (tx.from) {\n tx.from = utils.toChecksumAddress(tx.from);\n }\n\n return tx;\n};\n\n/**\n * Formats the output of a transaction receipt to its proper values\n *\n * @method outputTransactionReceiptFormatter\n * @param {Object} receipt\n * @returns {Object}\n */\nvar outputTransactionReceiptFormatter = function (receipt) {\n if (typeof receipt !== 'object') {\n throw new Error('Received receipt is invalid: ' + receipt);\n }\n\n if (receipt.blockNumber !== null)\n receipt.blockNumber = utils.hexToNumber(receipt.blockNumber);\n if (receipt.transactionIndex !== null)\n receipt.transactionIndex = utils.hexToNumber(receipt.transactionIndex);\n receipt.cumulativeGasUsed = utils.hexToNumber(receipt.cumulativeGasUsed);\n receipt.gasUsed = utils.hexToNumber(receipt.gasUsed);\n\n if (_.isArray(receipt.logs)) {\n receipt.logs = receipt.logs.map(outputLogFormatter);\n }\n\n if (receipt.contractAddress) {\n receipt.contractAddress = utils.toChecksumAddress(receipt.contractAddress);\n }\n\n if (typeof receipt.status !== 'undefined' && receipt.status !== null) {\n receipt.status = Boolean(parseInt(receipt.status));\n }\n\n return receipt;\n};\n\n/**\n * Formats the output of a block to its proper values\n *\n * @method outputBlockFormatter\n * @param {Object} block\n * @returns {Object}\n */\nvar outputBlockFormatter = function (block) {\n\n // transform to number\n block.gasLimit = utils.hexToNumber(block.gasLimit);\n block.gasUsed = utils.hexToNumber(block.gasUsed);\n block.size = utils.hexToNumber(block.size);\n block.timestamp = utils.hexToNumber(block.timestamp);\n if (block.number !== null)\n block.number = utils.hexToNumber(block.number);\n\n if (block.difficulty)\n block.difficulty = outputBigNumberFormatter(block.difficulty);\n if (block.totalDifficulty)\n block.totalDifficulty = outputBigNumberFormatter(block.totalDifficulty);\n\n if (_.isArray(block.transactions)) {\n block.transactions.forEach(function (item) {\n if (!_.isString(item))\n return outputTransactionFormatter(item);\n });\n }\n\n if (block.miner)\n block.miner = utils.toChecksumAddress(block.miner);\n\n return block;\n};\n\n/**\n * Formats the input of a log\n *\n * @method inputLogFormatter\n * @param {Object} log object\n * @returns {Object} log\n */\nvar inputLogFormatter = function (options) {\n var toTopic = function (value) {\n\n if (value === null || typeof value === 'undefined')\n return null;\n\n value = String(value);\n\n if (value.indexOf('0x') === 0)\n return value;\n else\n return utils.fromUtf8(value);\n };\n\n if (options.fromBlock || options.fromBlock === 0)\n options.fromBlock = inputBlockNumberFormatter(options.fromBlock);\n\n if (options.toBlock || options.toBlock === 0)\n options.toBlock = inputBlockNumberFormatter(options.toBlock);\n\n\n // make sure topics, get converted to hex\n options.topics = options.topics || [];\n options.topics = options.topics.map(function (topic) {\n return (_.isArray(topic)) ? topic.map(toTopic) : toTopic(topic);\n });\n\n toTopic = null;\n\n if (options.address) {\n options.address = (_.isArray(options.address)) ? options.address.map(function (addr) {\n return inputAddressFormatter(addr);\n }) : inputAddressFormatter(options.address);\n }\n\n return options;\n};\n\n/**\n * Formats the output of a log\n *\n * @method outputLogFormatter\n * @param {Object} log object\n * @returns {Object} log\n */\nvar outputLogFormatter = function (log) {\n\n // generate a custom log id\n if (typeof log.blockHash === 'string' &&\n typeof log.transactionHash === 'string' &&\n typeof log.logIndex === 'string') {\n var shaId = utils.sha3(log.blockHash.replace('0x', '') + log.transactionHash.replace('0x', '') + log.logIndex.replace('0x', ''));\n log.id = 'log_' + shaId.replace('0x', '').substr(0, 8);\n } else if (!log.id) {\n log.id = null;\n }\n\n if (log.blockNumber !== null)\n log.blockNumber = utils.hexToNumber(log.blockNumber);\n if (log.transactionIndex !== null)\n log.transactionIndex = utils.hexToNumber(log.transactionIndex);\n if (log.logIndex !== null)\n log.logIndex = utils.hexToNumber(log.logIndex);\n\n if (log.address) {\n log.address = utils.toChecksumAddress(log.address);\n }\n\n return log;\n};\n\n/**\n * Formats the input of a whisper post and converts all values to HEX\n *\n * @method inputPostFormatter\n * @param {Object} transaction object\n * @returns {Object}\n */\nvar inputPostFormatter = function (post) {\n\n // post.payload = utils.toHex(post.payload);\n\n if (post.ttl)\n post.ttl = utils.numberToHex(post.ttl);\n if (post.workToProve)\n post.workToProve = utils.numberToHex(post.workToProve);\n if (post.priority)\n post.priority = utils.numberToHex(post.priority);\n\n // fallback\n if (!_.isArray(post.topics)) {\n post.topics = post.topics ? [post.topics] : [];\n }\n\n // format the following options\n post.topics = post.topics.map(function (topic) {\n // convert only if not hex\n return (topic.indexOf('0x') === 0) ? topic : utils.fromUtf8(topic);\n });\n\n return post;\n};\n\n/**\n * Formats the output of a received post message\n *\n * @method outputPostFormatter\n * @param {Object}\n * @returns {Object}\n */\nvar outputPostFormatter = function (post) {\n\n post.expiry = utils.hexToNumber(post.expiry);\n post.sent = utils.hexToNumber(post.sent);\n post.ttl = utils.hexToNumber(post.ttl);\n post.workProved = utils.hexToNumber(post.workProved);\n // post.payloadRaw = post.payload;\n // post.payload = utils.hexToAscii(post.payload);\n\n // if (utils.isJson(post.payload)) {\n // post.payload = JSON.parse(post.payload);\n // }\n\n // format the following options\n if (!post.topics) {\n post.topics = [];\n }\n post.topics = post.topics.map(function (topic) {\n return utils.toUtf8(topic);\n });\n\n return post;\n};\n\nvar inputAddressFormatter = function (address) {\n var iban = new Iban(address);\n if (iban.isValid() && iban.isDirect()) {\n return iban.toAddress().toLowerCase();\n } else if (utils.isAddress(address)) {\n return '0x' + address.toLowerCase().replace('0x', '');\n }\n throw new Error('Provided address \"' + address + '\" is invalid, the capitalization checksum test failed, or its an indrect IBAN address which can\\'t be converted.');\n};\n\n\nvar outputSyncingFormatter = function (result) {\n\n result.startingBlock = utils.hexToNumber(result.startingBlock);\n result.currentBlock = utils.hexToNumber(result.currentBlock);\n result.highestBlock = utils.hexToNumber(result.highestBlock);\n if (result.knownStates) {\n result.knownStates = utils.hexToNumber(result.knownStates);\n result.pulledStates = utils.hexToNumber(result.pulledStates);\n }\n\n return result;\n};\n\nmodule.exports = {\n inputDefaultBlockNumberFormatter: inputDefaultBlockNumberFormatter,\n inputBlockNumberFormatter: inputBlockNumberFormatter,\n inputCallFormatter: inputCallFormatter,\n inputTransactionFormatter: inputTransactionFormatter,\n inputAddressFormatter: inputAddressFormatter,\n inputPostFormatter: inputPostFormatter,\n inputLogFormatter: inputLogFormatter,\n inputSignFormatter: inputSignFormatter,\n inputStorageKeysFormatter: inputStorageKeysFormatter,\n outputProofFormatter: outputProofFormatter,\n outputBigNumberFormatter: outputBigNumberFormatter,\n outputTransactionFormatter: outputTransactionFormatter,\n outputTransactionReceiptFormatter: outputTransactionReceiptFormatter,\n outputBlockFormatter: outputBlockFormatter,\n outputLogFormatter: outputLogFormatter,\n outputPostFormatter: outputPostFormatter,\n outputSyncingFormatter: outputSyncingFormatter\n};\n\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n*/\n/**\n * @file index.js\n * @author Fabian Vogelsteller \n * @date 2017\n */\n\n\"use strict\";\n\n\nvar _ = require('underscore');\nvar errors = require('web3-core-helpers').errors;\nvar Jsonrpc = require('./jsonrpc.js');\nvar BatchManager = require('./batch.js');\nvar givenProvider = require('./givenProvider.js');\n\n\n\n /**\n * It's responsible for passing messages to providers\n * It's also responsible for polling the ethereum node for incoming messages\n * Default poll timeout is 1 second\n * Singleton\n */\nvar RequestManager = function RequestManager(provider) {\n this.provider = null;\n this.providers = RequestManager.providers;\n\n this.setProvider(provider);\n this.subscriptions = {};\n};\n\n\n\nRequestManager.givenProvider = givenProvider;\n\nRequestManager.providers = {\n WebsocketProvider: require('web3-providers-ws'),\n HttpProvider: require('web3-providers-http'),\n IpcProvider: require('web3-providers-ipc')\n};\n\n\n\n/**\n * Should be used to set provider of request manager\n *\n * @method setProvider\n * @param {Object} p\n */\nRequestManager.prototype.setProvider = function (p, net) {\n var _this = this;\n\n // autodetect provider\n if(p && typeof p === 'string' && this.providers) {\n\n // HTTP\n if(/^http(s)?:\\/\\//i.test(p)) {\n p = new this.providers.HttpProvider(p);\n\n // WS\n } else if(/^ws(s)?:\\/\\//i.test(p)) {\n p = new this.providers.WebsocketProvider(p);\n\n // IPC\n } else if(p && typeof net === 'object' && typeof net.connect === 'function') {\n p = new this.providers.IpcProvider(p, net);\n\n } else if(p) {\n throw new Error('Can\\'t autodetect provider for \"'+ p +'\"');\n }\n }\n\n // reset the old one before changing, if still connected\n if(this.provider && this.provider.connected)\n this.clearSubscriptions();\n\n\n this.provider = p || null;\n\n // listen to incoming notifications\n if(this.provider && this.provider.on) {\n this.provider.on('data', function requestManagerNotification(result, deprecatedResult){\n result = result || deprecatedResult; // this is for possible old providers, which may had the error first handler\n\n // check for result.method, to prevent old providers errors to pass as result\n if(result.method && _this.subscriptions[result.params.subscription] && _this.subscriptions[result.params.subscription].callback) {\n _this.subscriptions[result.params.subscription].callback(null, result.params.result);\n }\n });\n // TODO add error, end, timeout, connect??\n // this.provider.on('error', function requestManagerNotification(result){\n // Object.keys(_this.subscriptions).forEach(function(id){\n // if(_this.subscriptions[id].callback)\n // _this.subscriptions[id].callback(err);\n // });\n // }\n }\n};\n\n\n/**\n * Should be used to asynchronously send request\n *\n * @method sendAsync\n * @param {Object} data\n * @param {Function} callback\n */\nRequestManager.prototype.send = function (data, callback) {\n callback = callback || function(){};\n\n if (!this.provider) {\n return callback(errors.InvalidProvider());\n }\n\n var payload = Jsonrpc.toPayload(data.method, data.params);\n this.provider[this.provider.sendAsync ? 'sendAsync' : 'send'](payload, function (err, result) {\n if(result && result.id && payload.id !== result.id) return callback(new Error('Wrong response id \"'+ result.id +'\" (expected: \"'+ payload.id +'\") in '+ JSON.stringify(payload)));\n\n if (err) {\n return callback(err);\n }\n\n if (result && result.error) {\n return callback(errors.ErrorResponse(result));\n }\n\n if (!Jsonrpc.isValidResponse(result)) {\n return callback(errors.InvalidResponse(result));\n }\n\n callback(null, result.result);\n });\n};\n\n/**\n * Should be called to asynchronously send batch request\n *\n * @method sendBatch\n * @param {Array} batch data\n * @param {Function} callback\n */\nRequestManager.prototype.sendBatch = function (data, callback) {\n if (!this.provider) {\n return callback(errors.InvalidProvider());\n }\n\n var payload = Jsonrpc.toBatchPayload(data);\n this.provider[this.provider.sendAsync ? 'sendAsync' : 'send'](payload, function (err, results) {\n if (err) {\n return callback(err);\n }\n\n if (!_.isArray(results)) {\n return callback(errors.InvalidResponse(results));\n }\n\n callback(null, results);\n });\n};\n\n\n/**\n * Waits for notifications\n *\n * @method addSubscription\n * @param {String} id the subscription id\n * @param {String} name the subscription name\n * @param {String} type the subscription namespace (eth, personal, etc)\n * @param {Function} callback the callback to call for incoming notifications\n */\nRequestManager.prototype.addSubscription = function (id, name, type, callback) {\n if(this.provider.on) {\n this.subscriptions[id] = {\n callback: callback,\n type: type,\n name: name\n };\n\n } else {\n throw new Error('The provider doesn\\'t support subscriptions: '+ this.provider.constructor.name);\n }\n};\n\n/**\n * Waits for notifications\n *\n * @method removeSubscription\n * @param {String} id the subscription id\n * @param {Function} callback fired once the subscription is removed\n */\nRequestManager.prototype.removeSubscription = function (id, callback) {\n var _this = this;\n\n if(this.subscriptions[id]) {\n\n this.send({\n method: this.subscriptions[id].type + '_unsubscribe',\n params: [id]\n }, callback);\n\n // remove subscription\n delete _this.subscriptions[id];\n }\n};\n\n/**\n * Should be called to reset the subscriptions\n *\n * @method reset\n */\nRequestManager.prototype.clearSubscriptions = function (keepIsSyncing) {\n var _this = this;\n\n\n if (this.subscriptions) {\n // uninstall all subscriptions\n Object.keys(this.subscriptions).forEach(function(id){\n if(!keepIsSyncing || _this.subscriptions[id].name !== 'syncing')\n _this.removeSubscription(id);\n });\n }\n\n\n // reset notification callbacks etc.\n if(this.provider.reset)\n this.provider.reset();\n};\n\nmodule.exports = {\n Manager: RequestManager,\n BatchManager: BatchManager\n};\n","// Underscore.js 1.9.1\n// http://underscorejs.org\n// (c) 2009-2018 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n// Underscore may be freely distributed under the MIT license.\n\n(function() {\n\n // Baseline setup\n // --------------\n\n // Establish the root object, `window` (`self`) in the browser, `global`\n // on the server, or `this` in some virtual machines. We use `self`\n // instead of `window` for `WebWorker` support.\n var root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global ||\n this ||\n {};\n\n // Save the previous value of the `_` variable.\n var previousUnderscore = root._;\n\n // Save bytes in the minified (but not gzipped) version:\n var ArrayProto = Array.prototype, ObjProto = Object.prototype;\n var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n // Create quick reference variables for speed access to core prototypes.\n var push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n // All **ECMAScript 5** native function implementations that we hope to use\n // are declared here.\n var nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create;\n\n // Naked function reference for surrogate-prototype-swapping.\n var Ctor = function(){};\n\n // Create a safe reference to the Underscore object for use below.\n var _ = function(obj) {\n if (obj instanceof _) return obj;\n if (!(this instanceof _)) return new _(obj);\n this._wrapped = obj;\n };\n\n // Export the Underscore object for **Node.js**, with\n // backwards-compatibility for their old module API. If we're in\n // the browser, add `_` as a global object.\n // (`nodeType` is checked to ensure that `module`\n // and `exports` are not HTML elements.)\n if (typeof exports != 'undefined' && !exports.nodeType) {\n if (typeof module != 'undefined' && !module.nodeType && module.exports) {\n exports = module.exports = _;\n }\n exports._ = _;\n } else {\n root._ = _;\n }\n\n // Current version.\n _.VERSION = '1.9.1';\n\n // Internal function that returns an efficient (for current engines) version\n // of the passed-in callback, to be repeatedly applied in other Underscore\n // functions.\n var optimizeCb = function(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n };\n\n var builtinIteratee;\n\n // An internal function to generate callbacks that can be applied to each\n // element in a collection, returning the desired result — either `identity`,\n // an arbitrary callback, a property matcher, or a property accessor.\n var cb = function(value, context, argCount) {\n if (_.iteratee !== builtinIteratee) return _.iteratee(value, context);\n if (value == null) return _.identity;\n if (_.isFunction(value)) return optimizeCb(value, context, argCount);\n if (_.isObject(value) && !_.isArray(value)) return _.matcher(value);\n return _.property(value);\n };\n\n // External wrapper for our callback generator. Users may customize\n // `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n // This abstraction hides the internal-only argCount argument.\n _.iteratee = builtinIteratee = function(value, context) {\n return cb(value, context, Infinity);\n };\n\n // Some functions take a variable number of arguments, or a few expected\n // arguments at the beginning and then a variable number of values to operate\n // on. This helper accumulates all remaining arguments past the function’s\n // argument length (or an explicit `startIndex`), into an array that becomes\n // the last argument. Similar to ES6’s \"rest parameter\".\n var restArguments = function(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n };\n\n // An internal function for creating a new object that inherits from another.\n var baseCreate = function(prototype) {\n if (!_.isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n };\n\n var shallowProperty = function(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n };\n\n var has = function(obj, path) {\n return obj != null && hasOwnProperty.call(obj, path);\n }\n\n var deepGet = function(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n };\n\n // Helper for collection methods to determine whether a collection\n // should be iterated as an array or as an object.\n // Related: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\n var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n var getLength = shallowProperty('length');\n var isArrayLike = function(collection) {\n var length = getLength(collection);\n return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX;\n };\n\n // Collection Functions\n // --------------------\n\n // The cornerstone, an `each` implementation, aka `forEach`.\n // Handles raw objects in addition to array-likes. Treats all\n // sparse array-likes as if they were dense.\n _.each = _.forEach = function(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var keys = _.keys(obj);\n for (i = 0, length = keys.length; i < length; i++) {\n iteratee(obj[keys[i]], keys[i], obj);\n }\n }\n return obj;\n };\n\n // Return the results of applying the iteratee to each element.\n _.map = _.collect = function(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = keys ? keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n };\n\n // Create a reducing function iterating left or right.\n var createReduce = function(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[keys ? keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = keys ? keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n };\n };\n\n // **Reduce** builds up a single result from a list of values, aka `inject`,\n // or `foldl`.\n _.reduce = _.foldl = _.inject = createReduce(1);\n\n // The right-associative version of reduce, also known as `foldr`.\n _.reduceRight = _.foldr = createReduce(-1);\n\n // Return the first value which passes a truth test. Aliased as `detect`.\n _.find = _.detect = function(obj, predicate, context) {\n var keyFinder = isArrayLike(obj) ? _.findIndex : _.findKey;\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n };\n\n // Return all the elements that pass a truth test.\n // Aliased as `select`.\n _.filter = _.select = function(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n _.each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n };\n\n // Return all the elements for which a truth test fails.\n _.reject = function(obj, predicate, context) {\n return _.filter(obj, _.negate(cb(predicate)), context);\n };\n\n // Determine whether all of the elements match a truth test.\n // Aliased as `all`.\n _.every = _.all = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = keys ? keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n };\n\n // Determine if at least one element in the object matches a truth test.\n // Aliased as `any`.\n _.some = _.any = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = keys ? keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n };\n\n // Determine if the array or object contains a given item (using `===`).\n // Aliased as `includes` and `include`.\n _.contains = _.includes = _.include = function(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = _.values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return _.indexOf(obj, item, fromIndex) >= 0;\n };\n\n // Invoke a method (with arguments) on every item in a collection.\n _.invoke = restArguments(function(obj, path, args) {\n var contextPath, func;\n if (_.isFunction(path)) {\n func = path;\n } else if (_.isArray(path)) {\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return _.map(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = deepGet(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n });\n\n // Convenience version of a common use case of `map`: fetching a property.\n _.pluck = function(obj, key) {\n return _.map(obj, _.property(key));\n };\n\n // Convenience version of a common use case of `filter`: selecting only objects\n // containing specific `key:value` pairs.\n _.where = function(obj, attrs) {\n return _.filter(obj, _.matcher(attrs));\n };\n\n // Convenience version of a common use case of `find`: getting the first object\n // containing specific `key:value` pairs.\n _.findWhere = function(obj, attrs) {\n return _.find(obj, _.matcher(attrs));\n };\n\n // Return the maximum element (or element-based computation).\n _.max = function(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : _.values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n _.each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n };\n\n // Return the minimum element (or element-based computation).\n _.min = function(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : _.values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n _.each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || computed === Infinity && result === Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n };\n\n // Shuffle a collection.\n _.shuffle = function(obj) {\n return _.sample(obj, Infinity);\n };\n\n // Sample **n** random values from a collection using the modern version of the\n // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n // If **n** is not specified, returns a single random element.\n // The internal `guard` argument allows it to work with `map`.\n _.sample = function(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = _.values(obj);\n return obj[_.random(obj.length - 1)];\n }\n var sample = isArrayLike(obj) ? _.clone(obj) : _.values(obj);\n var length = getLength(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = _.random(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n };\n\n // Sort the object's values by a criterion produced by an iteratee.\n _.sortBy = function(obj, iteratee, context) {\n var index = 0;\n iteratee = cb(iteratee, context);\n return _.pluck(_.map(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n };\n\n // An internal function used for aggregate \"group by\" operations.\n var group = function(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = cb(iteratee, context);\n _.each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n };\n\n // Groups the object's values by a criterion. Pass either a string attribute\n // to group by, or a function that returns the criterion.\n _.groupBy = group(function(result, value, key) {\n if (has(result, key)) result[key].push(value); else result[key] = [value];\n });\n\n // Indexes the object's values by a criterion, similar to `groupBy`, but for\n // when you know that your index values will be unique.\n _.indexBy = group(function(result, value, key) {\n result[key] = value;\n });\n\n // Counts instances of an object that group by a certain criterion. Pass\n // either a string attribute to count by, or a function that returns the\n // criterion.\n _.countBy = group(function(result, value, key) {\n if (has(result, key)) result[key]++; else result[key] = 1;\n });\n\n var reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\n // Safely create a real, live array from anything iterable.\n _.toArray = function(obj) {\n if (!obj) return [];\n if (_.isArray(obj)) return slice.call(obj);\n if (_.isString(obj)) {\n // Keep surrogate pair characters together\n return obj.match(reStrSymbol);\n }\n if (isArrayLike(obj)) return _.map(obj, _.identity);\n return _.values(obj);\n };\n\n // Return the number of elements in an object.\n _.size = function(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : _.keys(obj).length;\n };\n\n // Split a collection into two arrays: one whose elements all satisfy the given\n // predicate, and one whose elements all do not satisfy the predicate.\n _.partition = group(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n }, true);\n\n // Array Functions\n // ---------------\n\n // Get the first element of an array. Passing **n** will return the first N\n // values in the array. Aliased as `head` and `take`. The **guard** check\n // allows it to work with `_.map`.\n _.first = _.head = _.take = function(array, n, guard) {\n if (array == null || array.length < 1) return n == null ? void 0 : [];\n if (n == null || guard) return array[0];\n return _.initial(array, array.length - n);\n };\n\n // Returns everything but the last entry of the array. Especially useful on\n // the arguments object. Passing **n** will return all the values in\n // the array, excluding the last N.\n _.initial = function(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n };\n\n // Get the last element of an array. Passing **n** will return the last N\n // values in the array.\n _.last = function(array, n, guard) {\n if (array == null || array.length < 1) return n == null ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return _.rest(array, Math.max(0, array.length - n));\n };\n\n // Returns everything but the first entry of the array. Aliased as `tail` and `drop`.\n // Especially useful on the arguments object. Passing an **n** will return\n // the rest N values in the array.\n _.rest = _.tail = _.drop = function(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n };\n\n // Trim out all falsy values from an array.\n _.compact = function(array) {\n return _.filter(array, Boolean);\n };\n\n // Internal implementation of a recursive `flatten` function.\n var flatten = function(input, shallow, strict, output) {\n output = output || [];\n var idx = output.length;\n for (var i = 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) {\n // Flatten current level of array or arguments object.\n if (shallow) {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n } else {\n flatten(value, shallow, strict, output);\n idx = output.length;\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n };\n\n // Flatten out an array, either recursively (by default), or just one level.\n _.flatten = function(array, shallow) {\n return flatten(array, shallow, false);\n };\n\n // Return a version of the array that does not contain the specified value(s).\n _.without = restArguments(function(array, otherArrays) {\n return _.difference(array, otherArrays);\n });\n\n // Produce a duplicate-free version of the array. If the array has already\n // been sorted, you have the option of using a faster algorithm.\n // The faster algorithm will not work with an iteratee if the iteratee\n // is not a one-to-one function, so providing an iteratee will disable\n // the faster algorithm.\n // Aliased as `unique`.\n _.uniq = _.unique = function(array, isSorted, iteratee, context) {\n if (!_.isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!_.contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!_.contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n };\n\n // Produce an array that contains the union: each distinct element from all of\n // the passed-in arrays.\n _.union = restArguments(function(arrays) {\n return _.uniq(flatten(arrays, true, true));\n });\n\n // Produce an array that contains every item shared between all the\n // passed-in arrays.\n _.intersection = function(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (_.contains(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!_.contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n };\n\n // Take the difference between one array and a number of other arrays.\n // Only the elements present in just the first array will remain.\n _.difference = restArguments(function(array, rest) {\n rest = flatten(rest, true, true);\n return _.filter(array, function(value){\n return !_.contains(rest, value);\n });\n });\n\n // Complement of _.zip. Unzip accepts an array of arrays and groups\n // each array's elements on shared indices.\n _.unzip = function(array) {\n var length = array && _.max(array, getLength).length || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = _.pluck(array, index);\n }\n return result;\n };\n\n // Zip together multiple lists into a single array -- elements that share\n // an index go together.\n _.zip = restArguments(_.unzip);\n\n // Converts lists into objects. Pass either a single array of `[key, value]`\n // pairs, or two parallel arrays of the same length -- one of keys, and one of\n // the corresponding values. Passing by pairs is the reverse of _.pairs.\n _.object = function(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n };\n\n // Generator function to create the findIndex and findLastIndex functions.\n var createPredicateIndexFinder = function(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n };\n\n // Returns the first index on an array-like that passes a predicate test.\n _.findIndex = createPredicateIndexFinder(1);\n _.findLastIndex = createPredicateIndexFinder(-1);\n\n // Use a comparator function to figure out the smallest index at which\n // an object should be inserted so as to maintain order. Uses binary search.\n _.sortedIndex = function(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n };\n\n // Generator function to create the indexOf and lastIndexOf functions.\n var createIndexFinder = function(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), _.isNaN);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n };\n\n // Return the position of the first occurrence of an item in an array,\n // or -1 if the item is not included in the array.\n // If the array is large and already in sort order, pass `true`\n // for **isSorted** to use binary search.\n _.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex);\n _.lastIndexOf = createIndexFinder(-1, _.findLastIndex);\n\n // Generate an integer Array containing an arithmetic progression. A port of\n // the native Python `range()` function. See\n // [the Python documentation](http://docs.python.org/library/functions.html#range).\n _.range = function(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n };\n\n // Chunk a single array into multiple arrays, each containing `count` or fewer\n // items.\n _.chunk = function(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(slice.call(array, i, i += count));\n }\n return result;\n };\n\n // Function (ahem) Functions\n // ------------------\n\n // Determines whether to execute a function as a constructor\n // or a normal function with the provided arguments.\n var executeBound = function(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (_.isObject(result)) return result;\n return self;\n };\n\n // Create a function bound to a given object (assigning `this`, and arguments,\n // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if\n // available.\n _.bind = restArguments(function(func, context, args) {\n if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function');\n var bound = restArguments(function(callArgs) {\n return executeBound(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n });\n\n // Partially apply a function by creating a version that has had some of its\n // arguments pre-filled, without changing its dynamic `this` context. _ acts\n // as a placeholder by default, allowing any combination of arguments to be\n // pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\n _.partial = restArguments(function(func, boundArgs) {\n var placeholder = _.partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n });\n\n _.partial.placeholder = _;\n\n // Bind a number of an object's methods to that object. Remaining arguments\n // are the method names to be bound. Useful for ensuring that all callbacks\n // defined on an object belong to it.\n _.bindAll = restArguments(function(obj, keys) {\n keys = flatten(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = _.bind(obj[key], obj);\n }\n });\n\n // Memoize an expensive function by storing its results.\n _.memoize = function(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!has(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n };\n\n // Delays a function for the given number of milliseconds, and then calls\n // it with the arguments supplied.\n _.delay = restArguments(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n });\n\n // Defers a function, scheduling it to run after the current call stack has\n // cleared.\n _.defer = _.partial(_.delay, _, 1);\n\n // Returns a function, that, when invoked, will only be triggered at most once\n // during a given window of time. Normally, the throttled function will run\n // as much as it can, without ever going more than once per `wait` duration;\n // but if you'd like to disable the execution on the leading edge, pass\n // `{leading: false}`. To disable execution on the trailing edge, ditto.\n _.throttle = function(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : _.now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var now = _.now();\n if (!previous && options.leading === false) previous = now;\n var remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n };\n\n // Returns a function, that, as long as it continues to be invoked, will not\n // be triggered. The function will be called after it stops being called for\n // N milliseconds. If `immediate` is passed, trigger the function on the\n // leading edge, instead of the trailing.\n _.debounce = function(func, wait, immediate) {\n var timeout, result;\n\n var later = function(context, args) {\n timeout = null;\n if (args) result = func.apply(context, args);\n };\n\n var debounced = restArguments(function(args) {\n if (timeout) clearTimeout(timeout);\n if (immediate) {\n var callNow = !timeout;\n timeout = setTimeout(later, wait);\n if (callNow) result = func.apply(this, args);\n } else {\n timeout = _.delay(later, wait, this, args);\n }\n\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = null;\n };\n\n return debounced;\n };\n\n // Returns the first function passed as an argument to the second,\n // allowing you to adjust arguments, run code before and after, and\n // conditionally execute the original function.\n _.wrap = function(func, wrapper) {\n return _.partial(wrapper, func);\n };\n\n // Returns a negated version of the passed-in predicate.\n _.negate = function(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n };\n\n // Returns a function that is the composition of a list of functions, each\n // consuming the return value of the function that follows.\n _.compose = function() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n };\n\n // Returns a function that will only be executed on and after the Nth call.\n _.after = function(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n };\n\n // Returns a function that will only be executed up to (but not including) the Nth call.\n _.before = function(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n };\n\n // Returns a function that will be executed at most one time, no matter how\n // often you call it. Useful for lazy initialization.\n _.once = _.partial(_.before, 2);\n\n _.restArguments = restArguments;\n\n // Object Functions\n // ----------------\n\n // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\n var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\n var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n var collectNonEnumProps = function(obj, keys) {\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = _.isFunction(constructor) && constructor.prototype || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (has(obj, prop) && !_.contains(keys, prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !_.contains(keys, prop)) {\n keys.push(prop);\n }\n }\n };\n\n // Retrieve the names of an object's own properties.\n // Delegates to **ECMAScript 5**'s native `Object.keys`.\n _.keys = function(obj) {\n if (!_.isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (has(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n };\n\n // Retrieve all the property names of an object.\n _.allKeys = function(obj) {\n if (!_.isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n };\n\n // Retrieve the values of an object's properties.\n _.values = function(obj) {\n var keys = _.keys(obj);\n var length = keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[keys[i]];\n }\n return values;\n };\n\n // Returns the results of applying the iteratee to each element of the object.\n // In contrast to _.map it returns an object.\n _.mapObject = function(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var keys = _.keys(obj),\n length = keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n };\n\n // Convert an object into a list of `[key, value]` pairs.\n // The opposite of _.object.\n _.pairs = function(obj) {\n var keys = _.keys(obj);\n var length = keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [keys[i], obj[keys[i]]];\n }\n return pairs;\n };\n\n // Invert the keys and values of an object. The values must be serializable.\n _.invert = function(obj) {\n var result = {};\n var keys = _.keys(obj);\n for (var i = 0, length = keys.length; i < length; i++) {\n result[obj[keys[i]]] = keys[i];\n }\n return result;\n };\n\n // Return a sorted list of the function names available on the object.\n // Aliased as `methods`.\n _.functions = _.methods = function(obj) {\n var names = [];\n for (var key in obj) {\n if (_.isFunction(obj[key])) names.push(key);\n }\n return names.sort();\n };\n\n // An internal function for creating assigner functions.\n var createAssigner = function(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n };\n\n // Extend a given object with all the properties in passed-in object(s).\n _.extend = createAssigner(_.allKeys);\n\n // Assigns a given object with all the own properties in the passed-in object(s).\n // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\n _.extendOwn = _.assign = createAssigner(_.keys);\n\n // Returns the first key on an object that passes a predicate test.\n _.findKey = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var keys = _.keys(obj), key;\n for (var i = 0, length = keys.length; i < length; i++) {\n key = keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n };\n\n // Internal pick helper function to determine if `obj` has key `key`.\n var keyInObj = function(value, key, obj) {\n return key in obj;\n };\n\n // Return a copy of the object only containing the whitelisted properties.\n _.pick = restArguments(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (_.isFunction(iteratee)) {\n if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n keys = _.allKeys(obj);\n } else {\n iteratee = keyInObj;\n keys = flatten(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n });\n\n // Return a copy of the object without the blacklisted properties.\n _.omit = restArguments(function(obj, keys) {\n var iteratee = keys[0], context;\n if (_.isFunction(iteratee)) {\n iteratee = _.negate(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = _.map(flatten(keys, false, false), String);\n iteratee = function(value, key) {\n return !_.contains(keys, key);\n };\n }\n return _.pick(obj, iteratee, context);\n });\n\n // Fill in a given object with default properties.\n _.defaults = createAssigner(_.allKeys, true);\n\n // Creates an object that inherits from the given prototype object.\n // If additional properties are provided then they will be added to the\n // created object.\n _.create = function(prototype, props) {\n var result = baseCreate(prototype);\n if (props) _.extendOwn(result, props);\n return result;\n };\n\n // Create a (shallow-cloned) duplicate of an object.\n _.clone = function(obj) {\n if (!_.isObject(obj)) return obj;\n return _.isArray(obj) ? obj.slice() : _.extend({}, obj);\n };\n\n // Invokes interceptor with the obj, and then returns obj.\n // The primary purpose of this method is to \"tap into\" a method chain, in\n // order to perform operations on intermediate results within the chain.\n _.tap = function(obj, interceptor) {\n interceptor(obj);\n return obj;\n };\n\n // Returns whether an object has a given set of `key:value` pairs.\n _.isMatch = function(object, attrs) {\n var keys = _.keys(attrs), length = keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n };\n\n\n // Internal recursive comparison function for `isEqual`.\n var eq, deepEq;\n eq = function(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n };\n\n // Internal recursive comparison function for `isEqual`.\n deepEq = function(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof _) a = a._wrapped;\n if (b instanceof _) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n switch (className) {\n // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(_.isFunction(aCtor) && aCtor instanceof aCtor &&\n _.isFunction(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var keys = _.keys(a), key;\n length = keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (_.keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = keys[length];\n if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n };\n\n // Perform a deep comparison to check if two objects are equal.\n _.isEqual = function(a, b) {\n return eq(a, b);\n };\n\n // Is a given array, string, or object empty?\n // An \"empty\" object has no enumerable own-properties.\n _.isEmpty = function(obj) {\n if (obj == null) return true;\n if (isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj))) return obj.length === 0;\n return _.keys(obj).length === 0;\n };\n\n // Is a given value a DOM element?\n _.isElement = function(obj) {\n return !!(obj && obj.nodeType === 1);\n };\n\n // Is a given value an array?\n // Delegates to ECMA5's native Array.isArray\n _.isArray = nativeIsArray || function(obj) {\n return toString.call(obj) === '[object Array]';\n };\n\n // Is a given variable an object?\n _.isObject = function(obj) {\n var type = typeof obj;\n return type === 'function' || type === 'object' && !!obj;\n };\n\n // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError, isMap, isWeakMap, isSet, isWeakSet.\n _.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp', 'Error', 'Symbol', 'Map', 'WeakMap', 'Set', 'WeakSet'], function(name) {\n _['is' + name] = function(obj) {\n return toString.call(obj) === '[object ' + name + ']';\n };\n });\n\n // Define a fallback version of the method in browsers (ahem, IE < 9), where\n // there isn't any inspectable \"Arguments\" type.\n if (!_.isArguments(arguments)) {\n _.isArguments = function(obj) {\n return has(obj, 'callee');\n };\n }\n\n // Optimize `isFunction` if appropriate. Work around some typeof bugs in old v8,\n // IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\n var nodelist = root.document && root.document.childNodes;\n if (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n _.isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n }\n\n // Is a given object a finite number?\n _.isFinite = function(obj) {\n return !_.isSymbol(obj) && isFinite(obj) && !isNaN(parseFloat(obj));\n };\n\n // Is the given value `NaN`?\n _.isNaN = function(obj) {\n return _.isNumber(obj) && isNaN(obj);\n };\n\n // Is a given value a boolean?\n _.isBoolean = function(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n };\n\n // Is a given value equal to null?\n _.isNull = function(obj) {\n return obj === null;\n };\n\n // Is a given variable undefined?\n _.isUndefined = function(obj) {\n return obj === void 0;\n };\n\n // Shortcut function for checking if an object has a given property directly\n // on itself (in other words, not on a prototype).\n _.has = function(obj, path) {\n if (!_.isArray(path)) {\n return has(obj, path);\n }\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (obj == null || !hasOwnProperty.call(obj, key)) {\n return false;\n }\n obj = obj[key];\n }\n return !!length;\n };\n\n // Utility Functions\n // -----------------\n\n // Run Underscore.js in *noConflict* mode, returning the `_` variable to its\n // previous owner. Returns a reference to the Underscore object.\n _.noConflict = function() {\n root._ = previousUnderscore;\n return this;\n };\n\n // Keep the identity function around for default iteratees.\n _.identity = function(value) {\n return value;\n };\n\n // Predicate-generating functions. Often useful outside of Underscore.\n _.constant = function(value) {\n return function() {\n return value;\n };\n };\n\n _.noop = function(){};\n\n // Creates a function that, when passed an object, will traverse that object’s\n // properties down the given `path`, specified as an array of keys or indexes.\n _.property = function(path) {\n if (!_.isArray(path)) {\n return shallowProperty(path);\n }\n return function(obj) {\n return deepGet(obj, path);\n };\n };\n\n // Generates a function for a given object that returns a given property.\n _.propertyOf = function(obj) {\n if (obj == null) {\n return function(){};\n }\n return function(path) {\n return !_.isArray(path) ? obj[path] : deepGet(obj, path);\n };\n };\n\n // Returns a predicate for checking whether an object has a given set of\n // `key:value` pairs.\n _.matcher = _.matches = function(attrs) {\n attrs = _.extendOwn({}, attrs);\n return function(obj) {\n return _.isMatch(obj, attrs);\n };\n };\n\n // Run a function **n** times.\n _.times = function(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n };\n\n // Return a random integer between min and max (inclusive).\n _.random = function(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n };\n\n // A (possibly faster) way to get the current timestamp as an integer.\n _.now = Date.now || function() {\n return new Date().getTime();\n };\n\n // List of HTML entities for escaping.\n var escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n };\n var unescapeMap = _.invert(escapeMap);\n\n // Functions for escaping and unescaping strings to/from HTML interpolation.\n var createEscaper = function(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + _.keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n };\n _.escape = createEscaper(escapeMap);\n _.unescape = createEscaper(unescapeMap);\n\n // Traverses the children of `obj` along `path`. If a child is a function, it\n // is invoked with its parent as context. Returns the value of the final\n // child, or `fallback` if any child is undefined.\n _.result = function(obj, path, fallback) {\n if (!_.isArray(path)) path = [path];\n var length = path.length;\n if (!length) {\n return _.isFunction(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = _.isFunction(prop) ? prop.call(obj) : prop;\n }\n return obj;\n };\n\n // Generate a unique integer id (unique within the entire client session).\n // Useful for temporary DOM ids.\n var idCounter = 0;\n _.uniqueId = function(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n };\n\n // By default, Underscore uses ERB-style template delimiters, change the\n // following template settings to use alternative delimiters.\n _.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n };\n\n // When customizing `templateSettings`, if you don't want to define an\n // interpolation, evaluation or escaping regex, we need one that is\n // guaranteed not to match.\n var noMatch = /(.)^/;\n\n // Certain characters need to be escaped so that they can be put into a\n // string literal.\n var escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n var escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\n var escapeChar = function(match) {\n return '\\\\' + escapes[match];\n };\n\n // JavaScript micro-templating, similar to John Resig's implementation.\n // Underscore templating handles arbitrary delimiters, preserves whitespace,\n // and correctly escapes quotes within interpolated code.\n // NB: `oldSettings` only exists for backwards compatibility.\n _.template = function(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = _.defaults({}, settings, _.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n // If a variable is not specified, place data values in local scope.\n if (!settings.variable) source = 'with(obj||{}){\\n' + source + '}\\n';\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(settings.variable || 'obj', '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n var argument = settings.variable || 'obj';\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n };\n\n // Add a \"chain\" function. Start chaining a wrapped Underscore object.\n _.chain = function(obj) {\n var instance = _(obj);\n instance._chain = true;\n return instance;\n };\n\n // OOP\n // ---------------\n // If Underscore is called as a function, it returns a wrapped object that\n // can be used OO-style. This wrapper holds altered versions of all the\n // underscore functions. Wrapped objects may be chained.\n\n // Helper function to continue chaining intermediate results.\n var chainResult = function(instance, obj) {\n return instance._chain ? _(obj).chain() : obj;\n };\n\n // Add your own custom functions to the Underscore object.\n _.mixin = function(obj) {\n _.each(_.functions(obj), function(name) {\n var func = _[name] = obj[name];\n _.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return chainResult(this, func.apply(_, args));\n };\n });\n return _;\n };\n\n // Add all of the Underscore functions to the wrapper object.\n _.mixin(_);\n\n // Add all mutator Array functions to the wrapper.\n _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0];\n return chainResult(this, obj);\n };\n });\n\n // Add all accessor Array functions to the wrapper.\n _.each(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n return chainResult(this, method.apply(this._wrapped, arguments));\n };\n });\n\n // Extracts the result from a wrapped and chained object.\n _.prototype.value = function() {\n return this._wrapped;\n };\n\n // Provide unwrapping proxy for some methods used in engine operations\n // such as arithmetic and JSON stringification.\n _.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n _.prototype.toString = function() {\n return String(this._wrapped);\n };\n\n // AMD registration happens at the end for compatibility with AMD loaders\n // that may not enforce next-turn semantics on modules. Even though general\n // practice for AMD registration is to be anonymous, underscore registers\n // as a named module because, like jQuery, it is a base library that is\n // popular enough to be bundled in a third party lib, but not be part of\n // an AMD load request. Those cases could generate an error when an\n // anonymous define() is called outside of a loader request.\n if (typeof define == 'function' && define.amd) {\n define('underscore', [], function() {\n return _;\n });\n }\n}());\n","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar createHash = require('create-hash')\nvar BN = require('bn.js')\nvar EC = require('elliptic').ec\n\nvar messages = require('../messages.json')\n\nvar ec = new EC('secp256k1')\nvar ecparams = ec.curve\n\nfunction loadCompressedPublicKey (first, xBuffer) {\n var x = new BN(xBuffer)\n\n // overflow\n if (x.cmp(ecparams.p) >= 0) return null\n x = x.toRed(ecparams.red)\n\n // compute corresponding Y\n var y = x.redSqr().redIMul(x).redIAdd(ecparams.b).redSqrt()\n if ((first === 0x03) !== y.isOdd()) y = y.redNeg()\n\n return ec.keyPair({ pub: { x: x, y: y } })\n}\n\nfunction loadUncompressedPublicKey (first, xBuffer, yBuffer) {\n var x = new BN(xBuffer)\n var y = new BN(yBuffer)\n\n // overflow\n if (x.cmp(ecparams.p) >= 0 || y.cmp(ecparams.p) >= 0) return null\n\n x = x.toRed(ecparams.red)\n y = y.toRed(ecparams.red)\n\n // is odd flag\n if ((first === 0x06 || first === 0x07) && y.isOdd() !== (first === 0x07)) return null\n\n // x*x*x + b = y*y\n var x3 = x.redSqr().redIMul(x)\n if (!y.redSqr().redISub(x3.redIAdd(ecparams.b)).isZero()) return null\n\n return ec.keyPair({ pub: { x: x, y: y } })\n}\n\nfunction loadPublicKey (publicKey) {\n var first = publicKey[0]\n switch (first) {\n case 0x02:\n case 0x03:\n if (publicKey.length !== 33) return null\n return loadCompressedPublicKey(first, publicKey.slice(1, 33))\n case 0x04:\n case 0x06:\n case 0x07:\n if (publicKey.length !== 65) return null\n return loadUncompressedPublicKey(first, publicKey.slice(1, 33), publicKey.slice(33, 65))\n default:\n return null\n }\n}\n\nexports.privateKeyVerify = function (privateKey) {\n var bn = new BN(privateKey)\n return bn.cmp(ecparams.n) < 0 && !bn.isZero()\n}\n\nexports.privateKeyExport = function (privateKey, compressed) {\n var d = new BN(privateKey)\n if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.EC_PRIVATE_KEY_EXPORT_DER_FAIL)\n\n return Buffer.from(ec.keyFromPrivate(privateKey).getPublic(compressed, true))\n}\n\nexports.privateKeyNegate = function (privateKey) {\n var bn = new BN(privateKey)\n return bn.isZero() ? Buffer.alloc(32) : ecparams.n.sub(bn).umod(ecparams.n).toArrayLike(Buffer, 'be', 32)\n}\n\nexports.privateKeyModInverse = function (privateKey) {\n var bn = new BN(privateKey)\n if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_RANGE_INVALID)\n\n return bn.invm(ecparams.n).toArrayLike(Buffer, 'be', 32)\n}\n\nexports.privateKeyTweakAdd = function (privateKey, tweak) {\n var bn = new BN(tweak)\n if (bn.cmp(ecparams.n) >= 0) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)\n\n bn.iadd(new BN(privateKey))\n if (bn.cmp(ecparams.n) >= 0) bn.isub(ecparams.n)\n if (bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)\n\n return bn.toArrayLike(Buffer, 'be', 32)\n}\n\nexports.privateKeyTweakMul = function (privateKey, tweak) {\n var bn = new BN(tweak)\n if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_MUL_FAIL)\n\n bn.imul(new BN(privateKey))\n if (bn.cmp(ecparams.n)) bn = bn.umod(ecparams.n)\n\n return bn.toArrayLike(Buffer, 'be', 32)\n}\n\nexports.publicKeyCreate = function (privateKey, compressed) {\n var d = new BN(privateKey)\n if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.EC_PUBLIC_KEY_CREATE_FAIL)\n\n return Buffer.from(ec.keyFromPrivate(privateKey).getPublic(compressed, true))\n}\n\nexports.publicKeyConvert = function (publicKey, compressed) {\n var pair = loadPublicKey(publicKey)\n if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)\n\n return Buffer.from(pair.getPublic(compressed, true))\n}\n\nexports.publicKeyVerify = function (publicKey) {\n return loadPublicKey(publicKey) !== null\n}\n\nexports.publicKeyTweakAdd = function (publicKey, tweak, compressed) {\n var pair = loadPublicKey(publicKey)\n if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)\n\n tweak = new BN(tweak)\n if (tweak.cmp(ecparams.n) >= 0) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_ADD_FAIL)\n\n var point = ecparams.g.mul(tweak).add(pair.pub)\n if (point.isInfinity()) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_ADD_FAIL)\n\n return Buffer.from(point.encode(true, compressed))\n}\n\nexports.publicKeyTweakMul = function (publicKey, tweak, compressed) {\n var pair = loadPublicKey(publicKey)\n if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)\n\n tweak = new BN(tweak)\n if (tweak.cmp(ecparams.n) >= 0 || tweak.isZero()) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_MUL_FAIL)\n\n return Buffer.from(pair.pub.mul(tweak).encode(true, compressed))\n}\n\nexports.publicKeyCombine = function (publicKeys, compressed) {\n var pairs = new Array(publicKeys.length)\n for (var i = 0; i < publicKeys.length; ++i) {\n pairs[i] = loadPublicKey(publicKeys[i])\n if (pairs[i] === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)\n }\n\n var point = pairs[0].pub\n for (var j = 1; j < pairs.length; ++j) point = point.add(pairs[j].pub)\n if (point.isInfinity()) throw new Error(messages.EC_PUBLIC_KEY_COMBINE_FAIL)\n\n return Buffer.from(point.encode(true, compressed))\n}\n\nexports.signatureNormalize = function (signature) {\n var r = new BN(signature.slice(0, 32))\n var s = new BN(signature.slice(32, 64))\n if (r.cmp(ecparams.n) >= 0 || s.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)\n\n var result = Buffer.from(signature)\n if (s.cmp(ec.nh) === 1) ecparams.n.sub(s).toArrayLike(Buffer, 'be', 32).copy(result, 32)\n\n return result\n}\n\nexports.signatureExport = function (signature) {\n var r = signature.slice(0, 32)\n var s = signature.slice(32, 64)\n if (new BN(r).cmp(ecparams.n) >= 0 || new BN(s).cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)\n\n return { r: r, s: s }\n}\n\nexports.signatureImport = function (sigObj) {\n var r = new BN(sigObj.r)\n if (r.cmp(ecparams.n) >= 0) r = new BN(0)\n\n var s = new BN(sigObj.s)\n if (s.cmp(ecparams.n) >= 0) s = new BN(0)\n\n return Buffer.concat([\n r.toArrayLike(Buffer, 'be', 32),\n s.toArrayLike(Buffer, 'be', 32)\n ])\n}\n\nexports.sign = function (message, privateKey, noncefn, data) {\n if (typeof noncefn === 'function') {\n var getNonce = noncefn\n noncefn = function (counter) {\n var nonce = getNonce(message, privateKey, null, data, counter)\n if (!Buffer.isBuffer(nonce) || nonce.length !== 32) throw new Error(messages.ECDSA_SIGN_FAIL)\n\n return new BN(nonce)\n }\n }\n\n var d = new BN(privateKey)\n if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.ECDSA_SIGN_FAIL)\n\n var result = ec.sign(message, privateKey, { canonical: true, k: noncefn, pers: data })\n return {\n signature: Buffer.concat([\n result.r.toArrayLike(Buffer, 'be', 32),\n result.s.toArrayLike(Buffer, 'be', 32)\n ]),\n recovery: result.recoveryParam\n }\n}\n\nexports.verify = function (message, signature, publicKey) {\n var sigObj = { r: signature.slice(0, 32), s: signature.slice(32, 64) }\n\n var sigr = new BN(sigObj.r)\n var sigs = new BN(sigObj.s)\n if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)\n if (sigs.cmp(ec.nh) === 1 || sigr.isZero() || sigs.isZero()) return false\n\n var pair = loadPublicKey(publicKey)\n if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)\n\n return ec.verify(message, sigObj, { x: pair.pub.x, y: pair.pub.y })\n}\n\nexports.recover = function (message, signature, recovery, compressed) {\n var sigObj = { r: signature.slice(0, 32), s: signature.slice(32, 64) }\n\n var sigr = new BN(sigObj.r)\n var sigs = new BN(sigObj.s)\n if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)\n\n try {\n if (sigr.isZero() || sigs.isZero()) throw new Error()\n\n var point = ec.recoverPubKey(message, sigObj, recovery)\n return Buffer.from(point.encode(true, compressed))\n } catch (err) {\n throw new Error(messages.ECDSA_RECOVER_FAIL)\n }\n}\n\nexports.ecdh = function (publicKey, privateKey) {\n var shared = exports.ecdhUnsafe(publicKey, privateKey, true)\n return createHash('sha256').update(shared).digest()\n}\n\nexports.ecdhUnsafe = function (publicKey, privateKey, compressed) {\n var pair = loadPublicKey(publicKey)\n if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)\n\n var scalar = new BN(privateKey)\n if (scalar.cmp(ecparams.n) >= 0 || scalar.isZero()) throw new Error(messages.ECDH_FAIL)\n\n return Buffer.from(pair.pub.mul(scalar).encode(true, compressed))\n}\n","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","'use strict'\nvar inherits = require('inherits')\nvar Legacy = require('./legacy')\nvar Base = require('cipher-base')\nvar Buffer = require('safe-buffer').Buffer\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\n\nvar sha = require('sha.js')\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n this._alg = alg\n this._key = key\n if (key.length > blocksize) {\n var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n key = hash.update(key).digest()\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._hash.digest()\n var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n alg = alg.toLowerCase()\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key)\n }\n if (alg === 'md5') {\n return new Legacy(md5, key)\n }\n return new Hmac(alg, key)\n}\n","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar bip66 = require('bip66')\n\nvar EC_PRIVKEY_EXPORT_DER_COMPRESSED = Buffer.from([\n // begin\n 0x30, 0x81, 0xd3, 0x02, 0x01, 0x01, 0x04, 0x20,\n // private key\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n // middle\n 0xa0, 0x81, 0x85, 0x30, 0x81, 0x82, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,\n 0xcE, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0xff, 0xff, 0xfE, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04,\n 0x21, 0x02, 0x79, 0xbE, 0x66, 0x7E, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xcE, 0x87,\n 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xcE, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,\n 0x17, 0x98, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0xff, 0xff, 0xff, 0xff, 0xfE, 0xba, 0xaE, 0xdc, 0xE6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5E,\n 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x24, 0x03, 0x22, 0x00,\n // public key\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00\n])\n\nvar EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED = Buffer.from([\n // begin\n 0x30, 0x82, 0x01, 0x13, 0x02, 0x01, 0x01, 0x04, 0x20,\n // private key\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n // middle\n 0xa0, 0x81, 0xa5, 0x30, 0x81, 0xa2, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,\n 0xcE, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0xff, 0xff, 0xfE, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04,\n 0x41, 0x04, 0x79, 0xbE, 0x66, 0x7E, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xcE, 0x87,\n 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xcE, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,\n 0x17, 0x98, 0x48, 0x3a, 0xda, 0x77, 0x26, 0xa3, 0xc4, 0x65, 0x5d, 0xa4, 0xfb, 0xfc, 0x0E, 0x11,\n 0x08, 0xa8, 0xfd, 0x17, 0xb4, 0x48, 0xa6, 0x85, 0x54, 0x19, 0x9c, 0x47, 0xd0, 0x8f, 0xfb, 0x10,\n 0xd4, 0xb8, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0xff, 0xff, 0xff, 0xff, 0xfE, 0xba, 0xaE, 0xdc, 0xE6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5E,\n 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x44, 0x03, 0x42, 0x00,\n // public key\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00\n])\n\nexports.privateKeyExport = function (privateKey, publicKey, compressed) {\n var result = Buffer.from(compressed ? EC_PRIVKEY_EXPORT_DER_COMPRESSED : EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED)\n privateKey.copy(result, compressed ? 8 : 9)\n publicKey.copy(result, compressed ? 181 : 214)\n return result\n}\n\nexports.privateKeyImport = function (privateKey) {\n var length = privateKey.length\n\n // sequence header\n var index = 0\n if (length < index + 1 || privateKey[index] !== 0x30) return\n index += 1\n\n // sequence length constructor\n if (length < index + 1 || !(privateKey[index] & 0x80)) return\n\n var lenb = privateKey[index] & 0x7f\n index += 1\n if (lenb < 1 || lenb > 2) return\n if (length < index + lenb) return\n\n // sequence length\n var len = privateKey[index + lenb - 1] | (lenb > 1 ? privateKey[index + lenb - 2] << 8 : 0)\n index += lenb\n if (length < index + len) return\n\n // sequence element 0: version number (=1)\n if (length < index + 3 ||\n privateKey[index] !== 0x02 ||\n privateKey[index + 1] !== 0x01 ||\n privateKey[index + 2] !== 0x01) {\n return\n }\n index += 3\n\n // sequence element 1: octet string, up to 32 bytes\n if (length < index + 2 ||\n privateKey[index] !== 0x04 ||\n privateKey[index + 1] > 0x20 ||\n length < index + 2 + privateKey[index + 1]) {\n return\n }\n\n return privateKey.slice(index + 2, index + 2 + privateKey[index + 1])\n}\n\nexports.signatureExport = function (sigObj) {\n var r = Buffer.concat([Buffer.from([0]), sigObj.r])\n for (var lenR = 33, posR = 0; lenR > 1 && r[posR] === 0x00 && !(r[posR + 1] & 0x80); --lenR, ++posR);\n\n var s = Buffer.concat([Buffer.from([0]), sigObj.s])\n for (var lenS = 33, posS = 0; lenS > 1 && s[posS] === 0x00 && !(s[posS + 1] & 0x80); --lenS, ++posS);\n\n return bip66.encode(r.slice(posR), s.slice(posS))\n}\n\nexports.signatureImport = function (sig) {\n var r = Buffer.alloc(32, 0)\n var s = Buffer.alloc(32, 0)\n\n try {\n var sigObj = bip66.decode(sig)\n if (sigObj.r.length === 33 && sigObj.r[0] === 0x00) sigObj.r = sigObj.r.slice(1)\n if (sigObj.r.length > 32) throw new Error('R length is too long')\n if (sigObj.s.length === 33 && sigObj.s[0] === 0x00) sigObj.s = sigObj.s.slice(1)\n if (sigObj.s.length > 32) throw new Error('S length is too long')\n } catch (err) {\n return\n }\n\n sigObj.r.copy(r, 32 - sigObj.r.length)\n sigObj.s.copy(s, 32 - sigObj.s.length)\n\n return { r: r, s: s }\n}\n\nexports.signatureImportLax = function (sig) {\n var r = Buffer.alloc(32, 0)\n var s = Buffer.alloc(32, 0)\n\n var length = sig.length\n var index = 0\n\n // sequence tag byte\n if (sig[index++] !== 0x30) return\n\n // sequence length byte\n var lenbyte = sig[index++]\n if (lenbyte & 0x80) {\n index += lenbyte - 0x80\n if (index > length) return\n }\n\n // sequence tag byte for r\n if (sig[index++] !== 0x02) return\n\n // length for r\n var rlen = sig[index++]\n if (rlen & 0x80) {\n lenbyte = rlen - 0x80\n if (index + lenbyte > length) return\n for (; lenbyte > 0 && sig[index] === 0x00; index += 1, lenbyte -= 1);\n for (rlen = 0; lenbyte > 0; index += 1, lenbyte -= 1) rlen = (rlen << 8) + sig[index]\n }\n if (rlen > length - index) return\n var rindex = index\n index += rlen\n\n // sequence tag byte for s\n if (sig[index++] !== 0x02) return\n\n // length for s\n var slen = sig[index++]\n if (slen & 0x80) {\n lenbyte = slen - 0x80\n if (index + lenbyte > length) return\n for (; lenbyte > 0 && sig[index] === 0x00; index += 1, lenbyte -= 1);\n for (slen = 0; lenbyte > 0; index += 1, lenbyte -= 1) slen = (slen << 8) + sig[index]\n }\n if (slen > length - index) return\n var sindex = index\n index += slen\n\n // ignore leading zeros in r\n for (; rlen > 0 && sig[rindex] === 0x00; rlen -= 1, rindex += 1);\n // copy r value\n if (rlen > 32) return\n var rvalue = sig.slice(rindex, rindex + rlen)\n rvalue.copy(r, 32 - rvalue.length)\n\n // ignore leading zeros in s\n for (; slen > 0 && sig[sindex] === 0x00; slen -= 1, sindex += 1);\n // copy s value\n if (slen > 32) return\n var svalue = sig.slice(sindex, sindex + slen)\n svalue.copy(s, 32 - svalue.length)\n\n return { r: r, s: s }\n}\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","'use strict'\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes')\nexports.createHash = exports.Hash = require('create-hash')\nexports.createHmac = exports.Hmac = require('create-hmac')\n\nvar algos = require('browserify-sign/algos')\nvar algoKeys = Object.keys(algos)\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys)\nexports.getHashes = function () {\n return hashes\n}\n\nvar p = require('pbkdf2')\nexports.pbkdf2 = p.pbkdf2\nexports.pbkdf2Sync = p.pbkdf2Sync\n\nvar aes = require('browserify-cipher')\n\nexports.Cipher = aes.Cipher\nexports.createCipher = aes.createCipher\nexports.Cipheriv = aes.Cipheriv\nexports.createCipheriv = aes.createCipheriv\nexports.Decipher = aes.Decipher\nexports.createDecipher = aes.createDecipher\nexports.Decipheriv = aes.Decipheriv\nexports.createDecipheriv = aes.createDecipheriv\nexports.getCiphers = aes.getCiphers\nexports.listCiphers = aes.listCiphers\n\nvar dh = require('diffie-hellman')\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup\nexports.getDiffieHellman = dh.getDiffieHellman\nexports.createDiffieHellman = dh.createDiffieHellman\nexports.DiffieHellman = dh.DiffieHellman\n\nvar sign = require('browserify-sign')\n\nexports.createSign = sign.createSign\nexports.Sign = sign.Sign\nexports.createVerify = sign.createVerify\nexports.Verify = sign.Verify\n\nexports.createECDH = require('create-ecdh')\n\nvar publicEncrypt = require('public-encrypt')\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt\nexports.privateEncrypt = publicEncrypt.privateEncrypt\nexports.publicDecrypt = publicEncrypt.publicDecrypt\nexports.privateDecrypt = publicEncrypt.privateDecrypt\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n// ;[\n// 'createCredentials'\n// ].forEach(function (name) {\n// exports[name] = function () {\n// throw new Error([\n// 'sorry, ' + name + ' is not implemented yet',\n// 'we accept pull requests',\n// 'https://github.com/crypto-browserify/crypto-browserify'\n// ].join('\\n'))\n// }\n// })\n\nvar rf = require('randomfill')\n\nexports.randomFill = rf.randomFill\nexports.randomFillSync = rf.randomFillSync\n\nexports.createCredentials = function () {\n throw new Error([\n 'sorry, createCredentials is not implemented yet',\n 'we accept pull requests',\n 'https://github.com/crypto-browserify/crypto-browserify'\n ].join('\\n'))\n}\n\nexports.constants = {\n 'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n 'DH_CHECK_P_NOT_PRIME': 1,\n 'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n 'DH_NOT_SUITABLE_GENERATOR': 8,\n 'NPN_ENABLED': 1,\n 'ALPN_ENABLED': 1,\n 'RSA_PKCS1_PADDING': 1,\n 'RSA_SSLV23_PADDING': 2,\n 'RSA_NO_PADDING': 3,\n 'RSA_PKCS1_OAEP_PADDING': 4,\n 'RSA_X931_PADDING': 5,\n 'RSA_PKCS1_PSS_PADDING': 6,\n 'POINT_CONVERSION_COMPRESSED': 2,\n 'POINT_CONVERSION_UNCOMPRESSED': 4,\n 'POINT_CONVERSION_HYBRID': 6\n}\n","/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(iphone|ipod|ipad).*applewebkit/i.test(userAgent);\n","const generate = (num, fn) => {\n let a = [];\n for (var i = 0; i < num; ++i) a.push(fn(i));\n return a;\n};\n\nconst replicate = (num, val) => generate(num, () => val);\n\nconst concat = (a, b) => a.concat(b);\n\nconst flatten = a => {\n let r = [];\n for (let j = 0, J = a.length; j < J; ++j) for (let i = 0, I = a[j].length; i < I; ++i) r.push(a[j][i]);\n return r;\n};\n\nconst chunksOf = (n, a) => {\n let b = [];\n for (let i = 0, l = a.length; i < l; i += n) b.push(a.slice(i, i + n));\n return b;\n};\n\nmodule.exports = {\n generate,\n replicate,\n concat,\n flatten,\n chunksOf\n};","// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","var CipherBase = require('cipher-base')\nvar des = require('des.js')\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar modes = {\n 'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede3': des.EDE,\n 'des-ede-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede': des.EDE,\n 'des-cbc': des.CBC.instantiate(des.DES),\n 'des-ecb': des.DES\n}\nmodes.des = modes['des-cbc']\nmodes.des3 = modes['des-ede3-cbc']\nmodule.exports = DES\ninherits(DES, CipherBase)\nfunction DES (opts) {\n CipherBase.call(this)\n var modeName = opts.mode.toLowerCase()\n var mode = modes[modeName]\n var type\n if (opts.decrypt) {\n type = 'decrypt'\n } else {\n type = 'encrypt'\n }\n var key = opts.key\n if (!Buffer.isBuffer(key)) {\n key = Buffer.from(key)\n }\n if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n key = Buffer.concat([key, key.slice(0, 8)])\n }\n var iv = opts.iv\n if (!Buffer.isBuffer(iv)) {\n iv = Buffer.from(iv)\n }\n this._des = mode.create({\n key: key,\n iv: iv,\n type: type\n })\n}\nDES.prototype._update = function (data) {\n return Buffer.from(this._des.update(data))\n}\nDES.prototype._final = function () {\n return Buffer.from(this._des.final())\n}\n","// This was ported from https://github.com/emn178/js-sha3, with some minor\n// modifications and pruning. It is licensed under MIT:\n//\n// Copyright 2015-2016 Chen, Yi-Cyuan\n// \n// Permission is hereby granted, free of charge, to any person obtaining\n// a copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to\n// permit persons to whom the Software is furnished to do so, subject to\n// the following conditions:\n// \n// The above copyright notice and this permission notice shall be\n// included in all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nconst HEX_CHARS = '0123456789abcdef'.split('');\nconst KECCAK_PADDING = [1, 256, 65536, 16777216];\nconst SHIFT = [0, 8, 16, 24];\nconst RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649, 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0, 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771, 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648, 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n\nconst Keccak = bits => ({\n blocks: [],\n reset: true,\n block: 0,\n start: 0,\n blockCount: 1600 - (bits << 1) >> 5,\n outputBlocks: bits >> 5,\n s: (s => [].concat(s, s, s, s, s))([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n});\n\nconst update = (state, message) => {\n var length = message.length,\n blocks = state.blocks,\n byteCount = state.blockCount << 2,\n blockCount = state.blockCount,\n outputBlocks = state.outputBlocks,\n s = state.s,\n index = 0,\n i,\n code;\n\n // update\n while (index < length) {\n if (state.reset) {\n state.reset = false;\n blocks[0] = state.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (typeof message !== \"string\") {\n for (i = state.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = state.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | code >> 6) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code & 0x3f) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | code >> 12) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code >> 6 & 0x3f) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code & 0x3f) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + ((code & 0x3ff) << 10 | message.charCodeAt(++index) & 0x3ff);\n blocks[i >> 2] |= (0xf0 | code >> 18) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code >> 12 & 0x3f) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code >> 6 & 0x3f) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code & 0x3f) << SHIFT[i++ & 3];\n }\n }\n }\n state.lastByteIndex = i;\n if (i >= byteCount) {\n state.start = i - byteCount;\n state.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n state.reset = true;\n } else {\n state.start = i;\n }\n }\n\n // finalize\n i = state.lastByteIndex;\n blocks[i >> 2] |= KECCAK_PADDING[i & 3];\n if (state.lastByteIndex === byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n\n // toString\n var hex = '',\n i = 0,\n j = 0,\n block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[block >> 4 & 0x0F] + HEX_CHARS[block & 0x0F] + HEX_CHARS[block >> 12 & 0x0F] + HEX_CHARS[block >> 8 & 0x0F] + HEX_CHARS[block >> 20 & 0x0F] + HEX_CHARS[block >> 16 & 0x0F] + HEX_CHARS[block >> 28 & 0x0F] + HEX_CHARS[block >> 24 & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n return \"0x\" + hex;\n};\n\nconst f = s => {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9, b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33, b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ (c2 << 1 | c3 >>> 31);\n l = c9 ^ (c3 << 1 | c2 >>> 31);\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ (c4 << 1 | c5 >>> 31);\n l = c1 ^ (c5 << 1 | c4 >>> 31);\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ (c6 << 1 | c7 >>> 31);\n l = c3 ^ (c7 << 1 | c6 >>> 31);\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ (c8 << 1 | c9 >>> 31);\n l = c5 ^ (c9 << 1 | c8 >>> 31);\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ (c0 << 1 | c1 >>> 31);\n l = c7 ^ (c1 << 1 | c0 >>> 31);\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = s[11] << 4 | s[10] >>> 28;\n b33 = s[10] << 4 | s[11] >>> 28;\n b14 = s[20] << 3 | s[21] >>> 29;\n b15 = s[21] << 3 | s[20] >>> 29;\n b46 = s[31] << 9 | s[30] >>> 23;\n b47 = s[30] << 9 | s[31] >>> 23;\n b28 = s[40] << 18 | s[41] >>> 14;\n b29 = s[41] << 18 | s[40] >>> 14;\n b20 = s[2] << 1 | s[3] >>> 31;\n b21 = s[3] << 1 | s[2] >>> 31;\n b2 = s[13] << 12 | s[12] >>> 20;\n b3 = s[12] << 12 | s[13] >>> 20;\n b34 = s[22] << 10 | s[23] >>> 22;\n b35 = s[23] << 10 | s[22] >>> 22;\n b16 = s[33] << 13 | s[32] >>> 19;\n b17 = s[32] << 13 | s[33] >>> 19;\n b48 = s[42] << 2 | s[43] >>> 30;\n b49 = s[43] << 2 | s[42] >>> 30;\n b40 = s[5] << 30 | s[4] >>> 2;\n b41 = s[4] << 30 | s[5] >>> 2;\n b22 = s[14] << 6 | s[15] >>> 26;\n b23 = s[15] << 6 | s[14] >>> 26;\n b4 = s[25] << 11 | s[24] >>> 21;\n b5 = s[24] << 11 | s[25] >>> 21;\n b36 = s[34] << 15 | s[35] >>> 17;\n b37 = s[35] << 15 | s[34] >>> 17;\n b18 = s[45] << 29 | s[44] >>> 3;\n b19 = s[44] << 29 | s[45] >>> 3;\n b10 = s[6] << 28 | s[7] >>> 4;\n b11 = s[7] << 28 | s[6] >>> 4;\n b42 = s[17] << 23 | s[16] >>> 9;\n b43 = s[16] << 23 | s[17] >>> 9;\n b24 = s[26] << 25 | s[27] >>> 7;\n b25 = s[27] << 25 | s[26] >>> 7;\n b6 = s[36] << 21 | s[37] >>> 11;\n b7 = s[37] << 21 | s[36] >>> 11;\n b38 = s[47] << 24 | s[46] >>> 8;\n b39 = s[46] << 24 | s[47] >>> 8;\n b30 = s[8] << 27 | s[9] >>> 5;\n b31 = s[9] << 27 | s[8] >>> 5;\n b12 = s[18] << 20 | s[19] >>> 12;\n b13 = s[19] << 20 | s[18] >>> 12;\n b44 = s[29] << 7 | s[28] >>> 25;\n b45 = s[28] << 7 | s[29] >>> 25;\n b26 = s[38] << 8 | s[39] >>> 24;\n b27 = s[39] << 8 | s[38] >>> 24;\n b8 = s[48] << 14 | s[49] >>> 18;\n b9 = s[49] << 14 | s[48] >>> 18;\n\n s[0] = b0 ^ ~b2 & b4;\n s[1] = b1 ^ ~b3 & b5;\n s[10] = b10 ^ ~b12 & b14;\n s[11] = b11 ^ ~b13 & b15;\n s[20] = b20 ^ ~b22 & b24;\n s[21] = b21 ^ ~b23 & b25;\n s[30] = b30 ^ ~b32 & b34;\n s[31] = b31 ^ ~b33 & b35;\n s[40] = b40 ^ ~b42 & b44;\n s[41] = b41 ^ ~b43 & b45;\n s[2] = b2 ^ ~b4 & b6;\n s[3] = b3 ^ ~b5 & b7;\n s[12] = b12 ^ ~b14 & b16;\n s[13] = b13 ^ ~b15 & b17;\n s[22] = b22 ^ ~b24 & b26;\n s[23] = b23 ^ ~b25 & b27;\n s[32] = b32 ^ ~b34 & b36;\n s[33] = b33 ^ ~b35 & b37;\n s[42] = b42 ^ ~b44 & b46;\n s[43] = b43 ^ ~b45 & b47;\n s[4] = b4 ^ ~b6 & b8;\n s[5] = b5 ^ ~b7 & b9;\n s[14] = b14 ^ ~b16 & b18;\n s[15] = b15 ^ ~b17 & b19;\n s[24] = b24 ^ ~b26 & b28;\n s[25] = b25 ^ ~b27 & b29;\n s[34] = b34 ^ ~b36 & b38;\n s[35] = b35 ^ ~b37 & b39;\n s[44] = b44 ^ ~b46 & b48;\n s[45] = b45 ^ ~b47 & b49;\n s[6] = b6 ^ ~b8 & b0;\n s[7] = b7 ^ ~b9 & b1;\n s[16] = b16 ^ ~b18 & b10;\n s[17] = b17 ^ ~b19 & b11;\n s[26] = b26 ^ ~b28 & b20;\n s[27] = b27 ^ ~b29 & b21;\n s[36] = b36 ^ ~b38 & b30;\n s[37] = b37 ^ ~b39 & b31;\n s[46] = b46 ^ ~b48 & b40;\n s[47] = b47 ^ ~b49 & b41;\n s[8] = b8 ^ ~b0 & b2;\n s[9] = b9 ^ ~b1 & b3;\n s[18] = b18 ^ ~b10 & b12;\n s[19] = b19 ^ ~b11 & b13;\n s[28] = b28 ^ ~b20 & b22;\n s[29] = b29 ^ ~b21 & b23;\n s[38] = b38 ^ ~b30 & b32;\n s[39] = b39 ^ ~b31 & b33;\n s[48] = b48 ^ ~b40 & b42;\n s[49] = b49 ^ ~b41 & b43;\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n};\n\nconst keccak = bits => str => {\n var msg;\n if (str.slice(0, 2) === \"0x\") {\n msg = [];\n for (var i = 2, l = str.length; i < l; i += 2) msg.push(parseInt(str.slice(i, i + 2), 16));\n } else {\n msg = str;\n }\n return update(Keccak(bits, bits), msg);\n};\n\nmodule.exports = {\n keccak256: keccak(256),\n keccak512: keccak(512),\n keccak256s: keccak(256),\n keccak512s: keccak(512)\n};","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n */\n/**\n * @file index.js\n * @author Fabian Vogelsteller \n * @date 2017\n */\n\n\"use strict\";\n\nvar _ = require('underscore');\nvar core = require('web3-core');\nvar helpers = require('web3-core-helpers');\nvar Subscriptions = require('web3-core-subscriptions').subscriptions;\nvar Method = require('web3-core-method');\nvar utils = require('web3-utils');\nvar Net = require('web3-net');\n\nvar ENS = require('web3-eth-ens');\nvar Personal = require('web3-eth-personal');\nvar BaseContract = require('web3-eth-contract');\nvar Iban = require('web3-eth-iban');\nvar Accounts = require('web3-eth-accounts');\nvar abi = require('web3-eth-abi');\n\nvar getNetworkType = require('./getNetworkType.js');\nvar formatter = helpers.formatters;\n\n\nvar blockCall = function (args) {\n return (_.isString(args[0]) && args[0].indexOf('0x') === 0) ? \"eth_getBlockByHash\" : \"eth_getBlockByNumber\";\n};\n\nvar transactionFromBlockCall = function (args) {\n return (_.isString(args[0]) && args[0].indexOf('0x') === 0) ? 'eth_getTransactionByBlockHashAndIndex' : 'eth_getTransactionByBlockNumberAndIndex';\n};\n\nvar uncleCall = function (args) {\n return (_.isString(args[0]) && args[0].indexOf('0x') === 0) ? 'eth_getUncleByBlockHashAndIndex' : 'eth_getUncleByBlockNumberAndIndex';\n};\n\nvar getBlockTransactionCountCall = function (args) {\n return (_.isString(args[0]) && args[0].indexOf('0x') === 0) ? 'eth_getBlockTransactionCountByHash' : 'eth_getBlockTransactionCountByNumber';\n};\n\nvar uncleCountCall = function (args) {\n return (_.isString(args[0]) && args[0].indexOf('0x') === 0) ? 'eth_getUncleCountByBlockHash' : 'eth_getUncleCountByBlockNumber';\n};\n\n\nvar Eth = function Eth() {\n var _this = this;\n\n // sets _requestmanager\n core.packageInit(this, arguments);\n\n // overwrite setProvider\n var setProvider = this.setProvider;\n this.setProvider = function () {\n setProvider.apply(_this, arguments);\n _this.net.setProvider.apply(_this, arguments);\n _this.personal.setProvider.apply(_this, arguments);\n _this.accounts.setProvider.apply(_this, arguments);\n _this.Contract.setProvider(_this.currentProvider, _this.accounts);\n };\n\n\n var handleRevert = false;\n var defaultAccount = null;\n var defaultBlock = 'latest';\n var transactionBlockTimeout = 50;\n var transactionConfirmationBlocks = 24;\n var transactionPollingTimeout = 750;\n var defaultChain, defaultHardfork, defaultCommon;\n\n Object.defineProperty(this, 'handleRevert', {\n get: function () {\n return handleRevert;\n },\n set: function (val) {\n handleRevert = val;\n\n // also set on the Contract object\n _this.Contract.handleRevert = handleRevert;\n\n // update handleRevert\n methods.forEach(function(method) {\n method.handleRevert = handleRevert;\n });\n },\n enumerable: true\n });\n Object.defineProperty(this, 'defaultCommon', {\n get: function () {\n return defaultCommon;\n },\n set: function (val) {\n defaultCommon = val;\n\n // also set on the Contract object\n _this.Contract.defaultCommon = defaultCommon;\n\n // update defaultBlock\n methods.forEach(function(method) {\n method.defaultCommon = defaultCommon;\n });\n },\n enumerable: true\n });\n Object.defineProperty(this, 'defaultHardfork', {\n get: function () {\n return defaultHardfork;\n },\n set: function (val) {\n defaultHardfork = val;\n\n // also set on the Contract object\n _this.Contract.defaultHardfork = defaultHardfork;\n\n // update defaultBlock\n methods.forEach(function(method) {\n method.defaultHardfork = defaultHardfork;\n });\n },\n enumerable: true\n });\n Object.defineProperty(this, 'defaultChain', {\n get: function () {\n return defaultChain;\n },\n set: function (val) {\n defaultChain = val;\n\n // also set on the Contract object\n _this.Contract.defaultChain = defaultChain;\n\n // update defaultBlock\n methods.forEach(function(method) {\n method.defaultChain = defaultChain;\n });\n },\n enumerable: true\n });\n Object.defineProperty(this, 'transactionPollingTimeout', {\n get: function () {\n return transactionPollingTimeout;\n },\n set: function (val) {\n transactionPollingTimeout = val;\n\n // also set on the Contract object\n _this.Contract.transactionPollingTimeout = transactionPollingTimeout;\n\n // update defaultBlock\n methods.forEach(function(method) {\n method.transactionPollingTimeout = transactionPollingTimeout;\n });\n },\n enumerable: true\n });\n Object.defineProperty(this, 'transactionConfirmationBlocks', {\n get: function () {\n return transactionConfirmationBlocks;\n },\n set: function (val) {\n transactionConfirmationBlocks = val;\n\n // also set on the Contract object\n _this.Contract.transactionConfirmationBlocks = transactionConfirmationBlocks;\n\n // update defaultBlock\n methods.forEach(function(method) {\n method.transactionConfirmationBlocks = transactionConfirmationBlocks;\n });\n },\n enumerable: true\n });\n Object.defineProperty(this, 'transactionBlockTimeout', {\n get: function () {\n return transactionBlockTimeout;\n },\n set: function (val) {\n transactionBlockTimeout = val;\n\n // also set on the Contract object\n _this.Contract.transactionBlockTimeout = transactionBlockTimeout;\n\n // update defaultBlock\n methods.forEach(function(method) {\n method.transactionBlockTimeout = transactionBlockTimeout;\n });\n },\n enumerable: true\n });\n Object.defineProperty(this, 'defaultAccount', {\n get: function () {\n return defaultAccount;\n },\n set: function (val) {\n if(val) {\n defaultAccount = utils.toChecksumAddress(formatter.inputAddressFormatter(val));\n }\n\n // also set on the Contract object\n _this.Contract.defaultAccount = defaultAccount;\n _this.personal.defaultAccount = defaultAccount;\n\n // update defaultBlock\n methods.forEach(function(method) {\n method.defaultAccount = defaultAccount;\n });\n\n return val;\n },\n enumerable: true\n });\n Object.defineProperty(this, 'defaultBlock', {\n get: function () {\n return defaultBlock;\n },\n set: function (val) {\n defaultBlock = val;\n // also set on the Contract object\n _this.Contract.defaultBlock = defaultBlock;\n _this.personal.defaultBlock = defaultBlock;\n\n // update defaultBlock\n methods.forEach(function(method) {\n method.defaultBlock = defaultBlock;\n });\n\n return val;\n },\n enumerable: true\n });\n\n\n this.clearSubscriptions = _this._requestManager.clearSubscriptions;\n\n // add net\n this.net = new Net(this.currentProvider);\n // add chain detection\n this.net.getNetworkType = getNetworkType.bind(this);\n\n // add accounts\n this.accounts = new Accounts(this.currentProvider);\n\n // add personal\n this.personal = new Personal(this.currentProvider);\n this.personal.defaultAccount = this.defaultAccount;\n\n // create a proxy Contract type for this instance, as a Contract's provider\n // is stored as a class member rather than an instance variable. If we do\n // not create this proxy type, changing the provider in one instance of\n // web3-eth would subsequently change the provider for _all_ contract\n // instances!\n var self = this;\n var Contract = function Contract() {\n BaseContract.apply(this, arguments);\n\n // when Eth.setProvider is called, call packageInit\n // on all contract instances instantiated via this Eth\n // instances. This will update the currentProvider for\n // the contract instances\n var _this = this;\n var setProvider = self.setProvider;\n self.setProvider = function() {\n setProvider.apply(self, arguments);\n core.packageInit(_this, [self.currentProvider]);\n };\n };\n\n Contract.setProvider = function() {\n BaseContract.setProvider.apply(this, arguments);\n };\n\n // make our proxy Contract inherit from web3-eth-contract so that it has all\n // the right functionality and so that instanceof and friends work properly\n Contract.prototype = Object.create(BaseContract.prototype);\n Contract.prototype.constructor = Contract;\n\n // add contract\n this.Contract = Contract;\n this.Contract.defaultAccount = this.defaultAccount;\n this.Contract.defaultBlock = this.defaultBlock;\n this.Contract.transactionBlockTimeout = this.transactionBlockTimeout;\n this.Contract.transactionConfirmationBlocks = this.transactionConfirmationBlocks;\n this.Contract.transactionPollingTimeout = this.transactionPollingTimeout;\n this.Contract.handleRevert = this.handleRevert;\n this.Contract.setProvider(this.currentProvider, this.accounts);\n\n // add IBAN\n this.Iban = Iban;\n\n // add ABI\n this.abi = abi;\n\n // add ENS\n this.ens = new ENS(this);\n\n var methods = [\n new Method({\n name: 'getNodeInfo',\n call: 'web3_clientVersion'\n }),\n new Method({\n name: 'getProtocolVersion',\n call: 'eth_protocolVersion',\n params: 0\n }),\n new Method({\n name: 'getCoinbase',\n call: 'eth_coinbase',\n params: 0\n }),\n new Method({\n name: 'isMining',\n call: 'eth_mining',\n params: 0\n }),\n new Method({\n name: 'getHashrate',\n call: 'eth_hashrate',\n params: 0,\n outputFormatter: utils.hexToNumber\n }),\n new Method({\n name: 'isSyncing',\n call: 'eth_syncing',\n params: 0,\n outputFormatter: formatter.outputSyncingFormatter\n }),\n new Method({\n name: 'getGasPrice',\n call: 'eth_gasPrice',\n params: 0,\n outputFormatter: formatter.outputBigNumberFormatter\n }),\n new Method({\n name: 'getAccounts',\n call: 'eth_accounts',\n params: 0,\n outputFormatter: utils.toChecksumAddress\n }),\n new Method({\n name: 'getBlockNumber',\n call: 'eth_blockNumber',\n params: 0,\n outputFormatter: utils.hexToNumber\n }),\n new Method({\n name: 'getBalance',\n call: 'eth_getBalance',\n params: 2,\n inputFormatter: [formatter.inputAddressFormatter, formatter.inputDefaultBlockNumberFormatter],\n outputFormatter: formatter.outputBigNumberFormatter\n }),\n new Method({\n name: 'getStorageAt',\n call: 'eth_getStorageAt',\n params: 3,\n inputFormatter: [formatter.inputAddressFormatter, utils.numberToHex, formatter.inputDefaultBlockNumberFormatter]\n }),\n new Method({\n name: 'getCode',\n call: 'eth_getCode',\n params: 2,\n inputFormatter: [formatter.inputAddressFormatter, formatter.inputDefaultBlockNumberFormatter]\n }),\n new Method({\n name: 'getBlock',\n call: blockCall,\n params: 2,\n inputFormatter: [formatter.inputBlockNumberFormatter, function (val) { return !!val; }],\n outputFormatter: formatter.outputBlockFormatter\n }),\n new Method({\n name: 'getUncle',\n call: uncleCall,\n params: 2,\n inputFormatter: [formatter.inputBlockNumberFormatter, utils.numberToHex],\n outputFormatter: formatter.outputBlockFormatter,\n\n }),\n new Method({\n name: 'getBlockTransactionCount',\n call: getBlockTransactionCountCall,\n params: 1,\n inputFormatter: [formatter.inputBlockNumberFormatter],\n outputFormatter: utils.hexToNumber\n }),\n new Method({\n name: 'getBlockUncleCount',\n call: uncleCountCall,\n params: 1,\n inputFormatter: [formatter.inputBlockNumberFormatter],\n outputFormatter: utils.hexToNumber\n }),\n new Method({\n name: 'getTransaction',\n call: 'eth_getTransactionByHash',\n params: 1,\n inputFormatter: [null],\n outputFormatter: formatter.outputTransactionFormatter\n }),\n new Method({\n name: 'getTransactionFromBlock',\n call: transactionFromBlockCall,\n params: 2,\n inputFormatter: [formatter.inputBlockNumberFormatter, utils.numberToHex],\n outputFormatter: formatter.outputTransactionFormatter\n }),\n new Method({\n name: 'getTransactionReceipt',\n call: 'eth_getTransactionReceipt',\n params: 1,\n inputFormatter: [null],\n outputFormatter: formatter.outputTransactionReceiptFormatter\n }),\n new Method({\n name: 'getTransactionCount',\n call: 'eth_getTransactionCount',\n params: 2,\n inputFormatter: [formatter.inputAddressFormatter, formatter.inputDefaultBlockNumberFormatter],\n outputFormatter: utils.hexToNumber\n }),\n new Method({\n name: 'sendSignedTransaction',\n call: 'eth_sendRawTransaction',\n params: 1,\n inputFormatter: [null]\n }),\n new Method({\n name: 'signTransaction',\n call: 'eth_signTransaction',\n params: 1,\n inputFormatter: [formatter.inputTransactionFormatter]\n }),\n new Method({\n name: 'sendTransaction',\n call: 'eth_sendTransaction',\n params: 1,\n inputFormatter: [formatter.inputTransactionFormatter],\n abiCoder: abi\n }),\n new Method({\n name: 'sign',\n call: 'eth_sign',\n params: 2,\n inputFormatter: [formatter.inputSignFormatter, formatter.inputAddressFormatter],\n transformPayload: function (payload) {\n payload.params.reverse();\n return payload;\n }\n }),\n new Method({\n name: 'call',\n call: 'eth_call',\n params: 2,\n inputFormatter: [formatter.inputCallFormatter, formatter.inputDefaultBlockNumberFormatter],\n abiCoder: abi\n }),\n new Method({\n name: 'estimateGas',\n call: 'eth_estimateGas',\n params: 1,\n inputFormatter: [formatter.inputCallFormatter],\n outputFormatter: utils.hexToNumber\n }),\n new Method({\n name: 'submitWork',\n call: 'eth_submitWork',\n params: 3\n }),\n new Method({\n name: 'getWork',\n call: 'eth_getWork',\n params: 0\n }),\n new Method({\n name: 'getPastLogs',\n call: 'eth_getLogs',\n params: 1,\n inputFormatter: [formatter.inputLogFormatter],\n outputFormatter: formatter.outputLogFormatter\n }),\n new Method({\n name: 'getChainId',\n call: 'eth_chainId',\n params: 0,\n outputFormatter: utils.hexToNumber\n }),\n new Method({\n name: 'requestAccounts',\n call: 'eth_requestAccounts',\n params: 0,\n outputFormatter: utils.toChecksumAddress\n }),\n new Method({\n name: 'getProof',\n call: 'eth_getProof',\n params: 3,\n inputFormatter: [formatter.inputAddressFormatter, formatter.inputStorageKeysFormatter, formatter.inputDefaultBlockNumberFormatter],\n outputFormatter: formatter.outputProofFormatter\n }),\n new Method({\n name: 'getPendingTransactions',\n call: 'eth_pendingTransactions',\n params: 0,\n outputFormatter: formatter.outputTransactionFormatter\n }),\n\n // subscriptions\n new Subscriptions({\n name: 'subscribe',\n type: 'eth',\n subscriptions: {\n 'newBlockHeaders': {\n // TODO rename on RPC side?\n subscriptionName: 'newHeads', // replace subscription with this name\n params: 0,\n outputFormatter: formatter.outputBlockFormatter\n },\n 'pendingTransactions': {\n subscriptionName: 'newPendingTransactions', // replace subscription with this name\n params: 0\n },\n 'logs': {\n params: 1,\n inputFormatter: [formatter.inputLogFormatter],\n outputFormatter: formatter.outputLogFormatter,\n // DUBLICATE, also in web3-eth-contract\n subscriptionHandler: function (output) {\n if(output.removed) {\n this.emit('changed', output);\n } else {\n this.emit('data', output);\n }\n\n if (_.isFunction(this.callback)) {\n this.callback(null, output, this);\n }\n }\n },\n 'syncing': {\n params: 0,\n outputFormatter: formatter.outputSyncingFormatter,\n subscriptionHandler: function (output) {\n var _this = this;\n\n // fire TRUE at start\n if(this._isSyncing !== true) {\n this._isSyncing = true;\n this.emit('changed', _this._isSyncing);\n\n if (_.isFunction(this.callback)) {\n this.callback(null, _this._isSyncing, this);\n }\n\n setTimeout(function () {\n _this.emit('data', output);\n\n if (_.isFunction(_this.callback)) {\n _this.callback(null, output, _this);\n }\n }, 0);\n\n // fire sync status\n } else {\n this.emit('data', output);\n if (_.isFunction(_this.callback)) {\n this.callback(null, output, this);\n }\n\n // wait for some time before fireing the FALSE\n clearTimeout(this._isSyncingTimeout);\n this._isSyncingTimeout = setTimeout(function () {\n if(output.currentBlock > output.highestBlock - 200) {\n _this._isSyncing = false;\n _this.emit('changed', _this._isSyncing);\n\n if (_.isFunction(_this.callback)) {\n _this.callback(null, _this._isSyncing, _this);\n }\n }\n }, 500);\n }\n }\n }\n }\n })\n ];\n\n methods.forEach(function(method) {\n method.attachToObject(_this);\n method.setRequestManager(_this._requestManager, _this.accounts); // second param means is eth.accounts (necessary for wallet signing)\n method.defaultBlock = _this.defaultBlock;\n method.defaultAccount = _this.defaultAccount;\n method.transactionBlockTimeout = _this.transactionBlockTimeout;\n method.transactionConfirmationBlocks = _this.transactionConfirmationBlocks;\n method.transactionPollingTimeout = _this.transactionPollingTimeout;\n method.handleRevert = _this.handleRevert;\n });\n\n};\n\ncore.addProviders(Eth);\n\n\nmodule.exports = Eth;\n\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar Cipher = require('./cipher');\nvar DES = require('./des');\n\nfunction EDEState(type, key) {\n assert.equal(key.length, 24, 'Invalid key length');\n\n var k1 = key.slice(0, 8);\n var k2 = key.slice(8, 16);\n var k3 = key.slice(16, 24);\n\n if (type === 'encrypt') {\n this.ciphers = [\n DES.create({ type: 'encrypt', key: k1 }),\n DES.create({ type: 'decrypt', key: k2 }),\n DES.create({ type: 'encrypt', key: k3 })\n ];\n } else {\n this.ciphers = [\n DES.create({ type: 'decrypt', key: k3 }),\n DES.create({ type: 'encrypt', key: k2 }),\n DES.create({ type: 'decrypt', key: k1 })\n ];\n }\n}\n\nfunction EDE(options) {\n Cipher.call(this, options);\n\n var state = new EDEState(this.type, this.options.key);\n this._edeState = state;\n}\ninherits(EDE, Cipher);\n\nmodule.exports = EDE;\n\nEDE.create = function create(options) {\n return new EDE(options);\n};\n\nEDE.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._edeState;\n\n state.ciphers[0]._update(inp, inOff, out, outOff);\n state.ciphers[1]._update(out, outOff, out, outOff);\n state.ciphers[2]._update(out, outOff, out, outOff);\n};\n\nEDE.prototype._pad = DES.prototype._pad;\nEDE.prototype._unpad = DES.prototype._unpad;\n","var checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar sync = require('./sync')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n 'sha': 'SHA-1',\n 'sha-1': 'SHA-1',\n 'sha1': 'SHA-1',\n 'sha256': 'SHA-256',\n 'sha-256': 'SHA-256',\n 'sha384': 'SHA-384',\n 'sha-384': 'SHA-384',\n 'sha-512': 'SHA-512',\n 'sha512': 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false)\n }\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false)\n }\n if (checks[algo] !== undefined) {\n return checks[algo]\n }\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n .then(function () {\n return true\n }).catch(function () {\n return false\n })\n checks[algo] = prom\n return prom\n}\n\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n return subtle.importKey(\n 'raw', password, {name: 'PBKDF2'}, false, ['deriveBits']\n ).then(function (key) {\n return subtle.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: {\n name: algo\n }\n }, key, length << 3)\n }).then(function (res) {\n return Buffer.from(res)\n })\n}\n\nfunction resolvePromise (promise, callback) {\n promise.then(function (out) {\n process.nextTick(function () {\n callback(null, out)\n })\n }, function (e) {\n process.nextTick(function () {\n callback(e)\n })\n })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest\n digest = undefined\n }\n\n digest = digest || 'sha1'\n var algo = toBrowser[digest.toLowerCase()]\n\n if (!algo || typeof global.Promise !== 'function') {\n return process.nextTick(function () {\n var out\n try {\n out = sync(password, salt, iterations, keylen, digest)\n } catch (e) {\n return callback(e)\n }\n callback(null, out)\n })\n }\n\n checkParameters(password, salt, iterations, keylen)\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding)\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding)\n\n resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n return sync(password, salt, iterations, keylen, digest)\n }), callback)\n}\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n */\n/**\n * @file soliditySha3.js\n * @author Fabian Vogelsteller \n * @date 2017\n */\n\nvar _ = require('underscore');\nvar BN = require('bn.js');\nvar utils = require('./utils.js');\n\n\nvar _elementaryName = function (name) {\n /*jshint maxcomplexity:false */\n\n if (name.startsWith('int[')) {\n return 'int256' + name.slice(3);\n } else if (name === 'int') {\n return 'int256';\n } else if (name.startsWith('uint[')) {\n return 'uint256' + name.slice(4);\n } else if (name === 'uint') {\n return 'uint256';\n } else if (name.startsWith('fixed[')) {\n return 'fixed128x128' + name.slice(5);\n } else if (name === 'fixed') {\n return 'fixed128x128';\n } else if (name.startsWith('ufixed[')) {\n return 'ufixed128x128' + name.slice(6);\n } else if (name === 'ufixed') {\n return 'ufixed128x128';\n }\n return name;\n};\n\n// Parse N from type\nvar _parseTypeN = function (type) {\n var typesize = /^\\D+(\\d+).*$/.exec(type);\n return typesize ? parseInt(typesize[1], 10) : null;\n};\n\n// Parse N from type[]\nvar _parseTypeNArray = function (type) {\n var arraySize = /^\\D+\\d*\\[(\\d+)\\]$/.exec(type);\n return arraySize ? parseInt(arraySize[1], 10) : null;\n};\n\nvar _parseNumber = function (arg) {\n var type = typeof arg;\n if (type === 'string') {\n if (utils.isHexStrict(arg)) {\n return new BN(arg.replace(/0x/i,''), 16);\n } else {\n return new BN(arg, 10);\n }\n } else if (type === 'number') {\n return new BN(arg);\n } else if (utils.isBigNumber(arg)) {\n return new BN(arg.toString(10));\n } else if (utils.isBN(arg)) {\n return arg;\n } else {\n throw new Error(arg +' is not a number');\n }\n};\n\nvar _solidityPack = function (type, value, arraySize) {\n /*jshint maxcomplexity:false */\n\n var size, num;\n type = _elementaryName(type);\n\n\n if (type === 'bytes') {\n\n if (value.replace(/^0x/i,'').length % 2 !== 0) {\n throw new Error('Invalid bytes characters '+ value.length);\n }\n\n return value;\n } else if (type === 'string') {\n return utils.utf8ToHex(value);\n } else if (type === 'bool') {\n return value ? '01' : '00';\n } else if (type.startsWith('address')) {\n if(arraySize) {\n size = 64;\n } else {\n size = 40;\n }\n\n if(!utils.isAddress(value)) {\n throw new Error(value +' is not a valid address, or the checksum is invalid.');\n }\n\n return utils.leftPad(value.toLowerCase(), size);\n }\n\n size = _parseTypeN(type);\n\n if (type.startsWith('bytes')) {\n\n if(!size) {\n throw new Error('bytes[] not yet supported in solidity');\n }\n\n // must be 32 byte slices when in an array\n if(arraySize) {\n size = 32;\n }\n\n if (size < 1 || size > 32 || size < value.replace(/^0x/i,'').length / 2 ) {\n throw new Error('Invalid bytes' + size +' for '+ value);\n }\n\n return utils.rightPad(value, size * 2);\n } else if (type.startsWith('uint')) {\n\n if ((size % 8) || (size < 8) || (size > 256)) {\n throw new Error('Invalid uint'+size+' size');\n }\n\n num = _parseNumber(value);\n if (num.bitLength() > size) {\n throw new Error('Supplied uint exceeds width: ' + size + ' vs ' + num.bitLength());\n }\n\n if(num.lt(new BN(0))) {\n throw new Error('Supplied uint '+ num.toString() +' is negative');\n }\n\n return size ? utils.leftPad(num.toString('hex'), size/8 * 2) : num;\n } else if (type.startsWith('int')) {\n\n if ((size % 8) || (size < 8) || (size > 256)) {\n throw new Error('Invalid int'+size+' size');\n }\n\n num = _parseNumber(value);\n if (num.bitLength() > size) {\n throw new Error('Supplied int exceeds width: ' + size + ' vs ' + num.bitLength());\n }\n\n if(num.lt(new BN(0))) {\n return num.toTwos(size).toString('hex');\n } else {\n return size ? utils.leftPad(num.toString('hex'), size/8 * 2) : num;\n }\n\n } else {\n // FIXME: support all other types\n throw new Error('Unsupported or invalid type: ' + type);\n }\n};\n\n\nvar _processSoliditySha3Args = function (arg) {\n /*jshint maxcomplexity:false */\n\n if(_.isArray(arg)) {\n throw new Error('Autodetection of array types is not supported.');\n }\n\n var type, value = '';\n var hexArg, arraySize;\n\n // if type is given\n if (_.isObject(arg) && (arg.hasOwnProperty('v') || arg.hasOwnProperty('t') || arg.hasOwnProperty('value') || arg.hasOwnProperty('type'))) {\n type = arg.hasOwnProperty('t') ? arg.t : arg.type;\n value = arg.hasOwnProperty('v') ? arg.v : arg.value;\n\n // otherwise try to guess the type\n } else {\n\n type = utils.toHex(arg, true);\n value = utils.toHex(arg);\n\n if (!type.startsWith('int') && !type.startsWith('uint')) {\n type = 'bytes';\n }\n }\n\n if ((type.startsWith('int') || type.startsWith('uint')) && typeof value === 'string' && !/^(-)?0x/i.test(value)) {\n value = new BN(value);\n }\n\n // get the array size\n if(_.isArray(value)) {\n arraySize = _parseTypeNArray(type);\n if(arraySize && value.length !== arraySize) {\n throw new Error(type +' is not matching the given array '+ JSON.stringify(value));\n } else {\n arraySize = value.length;\n }\n }\n\n\n if (_.isArray(value)) {\n hexArg = value.map(function (val) {\n return _solidityPack(type, val, arraySize).toString('hex').replace('0x','');\n });\n return hexArg.join('');\n } else {\n hexArg = _solidityPack(type, value, arraySize);\n return hexArg.toString('hex').replace('0x','');\n }\n\n};\n\n/**\n * Hashes solidity values to a sha3 hash using keccak 256\n *\n * @method soliditySha3\n * @return {Object} the sha3\n */\nvar soliditySha3 = function () {\n /*jshint maxcomplexity:false */\n\n var args = Array.prototype.slice.call(arguments);\n\n var hexArgs = _.map(args, _processSoliditySha3Args);\n\n // console.log(args, hexArgs);\n // console.log('0x'+ hexArgs.join(''));\n\n return utils.sha3('0x'+ hexArgs.join(''));\n};\n\n/**\n * Hashes solidity values to a sha3 hash using keccak 256 but does return the hash of value `null` instead of `null`\n *\n * @method soliditySha3Raw\n * @return {Object} the sha3\n */\nvar soliditySha3Raw = function () {\n return utils.sha3Raw('0x'+ _.map(Array.prototype.slice.call(arguments), _processSoliditySha3Args).join(''));\n};\n\n\nmodule.exports = {\n soliditySha3: soliditySha3,\n soliditySha3Raw: soliditySha3Raw\n};\n","var decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","\"use strict\";\n\nvar RESOLVER = [\n {\n \"constant\": true,\n \"inputs\": [\n {\n \"name\": \"interfaceID\",\n \"type\": \"bytes4\"\n }\n ],\n \"name\": \"supportsInterface\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": true,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"contentTypes\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ABI\",\n \"outputs\": [\n {\n \"name\": \"contentType\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"hash\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"setMultihash\",\n \"outputs\": [],\n \"payable\": false,\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"constant\": true,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"multihash\",\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"payable\": false,\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"x\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"y\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"setPubkey\",\n \"outputs\": [],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": true,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"content\",\n \"outputs\": [\n {\n \"name\": \"ret\",\n \"type\": \"bytes32\"\n }\n ],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": true,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"addr\",\n \"outputs\": [\n {\n \"name\": \"ret\",\n \"type\": \"address\"\n }\n ],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"contentType\",\n \"type\": \"uint256\"\n },\n {\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"setABI\",\n \"outputs\": [],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": true,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"name\",\n \"outputs\": [\n {\n \"name\": \"ret\",\n \"type\": \"string\"\n }\n ],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"setName\",\n \"outputs\": [],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"hash\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"setContent\",\n \"outputs\": [],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": true,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"pubkey\",\n \"outputs\": [\n {\n \"name\": \"x\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"y\",\n \"type\": \"bytes32\"\n }\n ],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"constant\": false,\n \"inputs\": [\n {\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"name\": \"addr\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setAddr\",\n \"outputs\": [],\n \"payable\": false,\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"name\": \"ensAddr\",\n \"type\": \"address\"\n }\n ],\n \"payable\": false,\n \"type\": \"constructor\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"name\": \"a\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddrChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"name\": \"hash\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"ContentChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"name\": \"name\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"NameChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"name\": \"contentType\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ABIChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"name\": \"node\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"name\": \"x\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"name\": \"y\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"PubkeyChanged\",\n \"type\": \"event\"\n }\n];\n\nmodule.exports = RESOLVER;\n","/*\n This file is part of web3.js.\n\n web3.js is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n web3.js is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with web3.js. If not, see .\n */\n/**\n * @file accounts.js\n * @author Fabian Vogelsteller \n * @date 2017\n */\n\n'use strict';\n\nvar _ = require('underscore');\nvar core = require('web3-core');\nvar Method = require('web3-core-method');\nvar Promise = require('any-promise');\nvar Account = require('eth-lib/lib/account');\nvar Hash = require('eth-lib/lib/hash');\nvar RLP = require('eth-lib/lib/rlp');// jshint ignore:line\nvar Bytes = require('eth-lib/lib/bytes');// jshint ignore:line\nvar cryp = (typeof global === 'undefined') ? require('crypto-browserify') : require('crypto');\nvar scrypt = require('@web3-js/scrypt-shim');\nvar uuid = require('uuid');\nvar utils = require('web3-utils');\nvar helpers = require('web3-core-helpers');\nvar Transaction = require('ethereumjs-tx').Transaction;\nvar Common = require('ethereumjs-common').default;\n\n\nvar isNot = function(value) {\n return (_.isUndefined(value) || _.isNull(value));\n};\n\nvar Accounts = function Accounts() {\n var _this = this;\n\n // sets _requestmanager\n core.packageInit(this, arguments);\n\n // remove unecessary core functions\n delete this.BatchRequest;\n delete this.extend;\n\n var _ethereumCall = [\n new Method({\n name: 'getNetworkId',\n call: 'net_version',\n params: 0,\n outputFormatter: parseInt\n }),\n new Method({\n name: 'getChainId',\n call: 'eth_chainId',\n params: 0,\n outputFormatter: utils.hexToNumber\n }),\n new Method({\n name: 'getGasPrice',\n call: 'eth_gasPrice',\n params: 0\n }),\n new Method({\n name: 'getTransactionCount',\n call: 'eth_getTransactionCount',\n params: 2,\n inputFormatter: [function(address) {\n if (utils.isAddress(address)) {\n return address;\n } else {\n throw new Error('Address ' + address + ' is not a valid address to get the \"transactionCount\".');\n }\n }, function() {\n return 'latest';\n }]\n })\n ];\n // attach methods to this._ethereumCall\n this._ethereumCall = {};\n _.each(_ethereumCall, function(method) {\n method.attachToObject(_this._ethereumCall);\n method.setRequestManager(_this._requestManager);\n });\n\n\n this.wallet = new Wallet(this);\n};\n\nAccounts.prototype._addAccountFunctions = function(account) {\n var _this = this;\n\n // add sign functions\n account.signTransaction = function signTransaction(tx, callback) {\n return _this.signTransaction(tx, account.privateKey, callback);\n };\n account.sign = function sign(data) {\n return _this.sign(data, account.privateKey);\n };\n\n account.encrypt = function encrypt(password, options) {\n return _this.encrypt(account.privateKey, password, options);\n };\n\n\n return account;\n};\n\nAccounts.prototype.create = function create(entropy) {\n return this._addAccountFunctions(Account.create(entropy || utils.randomHex(32)));\n};\n\nAccounts.prototype.privateKeyToAccount = function privateKeyToAccount(privateKey) {\n return this._addAccountFunctions(Account.fromPrivate(privateKey));\n};\n\nAccounts.prototype.signTransaction = function signTransaction(tx, privateKey, callback) {\n var _this = this,\n error = false,\n transactionOptions = {},\n hasTxSigningOptions = !!(tx && ((tx.chain && tx.hardfork) || tx.common));\n\n callback = callback || function() {\n };\n\n if (!tx) {\n error = new Error('No transaction object given!');\n\n callback(error);\n return Promise.reject(error);\n }\n\n function signed(tx) {\n if (tx.common && (tx.chain && tx.hardfork)) {\n error = new Error(\n 'Please provide the ethereumjs-common object or the chain and hardfork property but not all together.'\n );\n }\n\n if ((tx.chain && !tx.hardfork) || (tx.hardfork && !tx.chain)) {\n error = new Error(\n 'When specifying chain and hardfork, both values must be defined. ' +\n 'Received \"chain\": ' + tx.chain + ', \"hardfork\": ' + tx.hardfork\n );\n }\n\n if (!tx.gas && !tx.gasLimit) {\n error = new Error('\"gas\" is missing');\n }\n\n if (tx.nonce < 0 ||\n tx.gas < 0 ||\n tx.gasPrice < 0 ||\n tx.chainId < 0) {\n error = new Error('Gas, gasPrice, nonce or chainId is lower than 0');\n }\n\n if (error) {\n callback(error);\n return Promise.reject(error);\n }\n\n try {\n var transaction = helpers.formatters.inputCallFormatter(_.clone(tx));\n transaction.to = transaction.to || '0x';\n transaction.data = transaction.data || '0x';\n transaction.value = transaction.value || '0x';\n transaction.chainId = utils.numberToHex(transaction.chainId);\n\n // Because tx has no ethereumjs-tx signing options we use fetched vals.\n if (!hasTxSigningOptions) {\n transactionOptions.common = Common.forCustomChain(\n 'mainnet',\n {\n name: 'custom-network',\n networkId: transaction.networkId,\n chainId: transaction.chainId\n },\n 'petersburg'\n );\n\n delete transaction.networkId;\n } else {\n if (transaction.common) {\n transactionOptions.common = Common.forCustomChain(\n transaction.common.baseChain || 'mainnet',\n {\n name: transaction.common.customChain.name || 'custom-network',\n networkId: transaction.common.customChain.networkId,\n chainId: transaction.common.customChain.chainId\n },\n transaction.common.hardfork || 'petersburg'\n );\n\n delete transaction.common;\n }\n\n if (transaction.chain) {\n transactionOptions.chain = transaction.chain;\n delete transaction.chain;\n }\n\n if (transaction.hardfork) {\n transactionOptions.hardfork = transaction.hardfork;\n delete transaction.hardfork;\n }\n }\n\n if (privateKey.startsWith('0x')) {\n privateKey = privateKey.substring(2);\n }\n\n var ethTx = new Transaction(transaction, transactionOptions);\n\n ethTx.sign(Buffer.from(privateKey, 'hex'));\n\n var validationResult = ethTx.validate(true);\n\n if (validationResult !== '') {\n throw new Error('Signer Error: ' + validationResult);\n }\n\n var rlpEncoded = ethTx.serialize().toString('hex');\n var rawTransaction = '0x' + rlpEncoded;\n var transactionHash = utils.keccak256(rawTransaction);\n\n var result = {\n messageHash: '0x' + Buffer.from(ethTx.hash(false)).toString('hex'),\n v: '0x' + Buffer.from(ethTx.v).toString('hex'),\n r: '0x' + Buffer.from(ethTx.r).toString('hex'),\n s: '0x' + Buffer.from(ethTx.s).toString('hex'),\n rawTransaction: rawTransaction,\n transactionHash: transactionHash\n };\n\n callback(null, result);\n return result;\n\n } catch (e) {\n callback(e);\n return Promise.reject(e);\n }\n }\n\n\n // Resolve immediately if nonce, chainId, price and signing options are provided\n if (tx.nonce !== undefined && tx.chainId !== undefined && tx.gasPrice !== undefined && hasTxSigningOptions) {\n return Promise.resolve(signed(tx));\n }\n\n // Otherwise, get the missing info from the Ethereum Node\n return Promise.all([\n isNot(tx.chainId) ? _this._ethereumCall.getChainId() : tx.chainId,\n isNot(tx.gasPrice) ? _this._ethereumCall.getGasPrice() : tx.gasPrice,\n isNot(tx.nonce) ? _this._ethereumCall.getTransactionCount(_this.privateKeyToAccount(privateKey).address) : tx.nonce,\n isNot(hasTxSigningOptions) ? _this._ethereumCall.getNetworkId() : 1\n ]).then(function(args) {\n if (isNot(args[0]) || isNot(args[1]) || isNot(args[2]) || isNot(args[3])) {\n throw new Error('One of the values \"chainId\", \"networkId\", \"gasPrice\", or \"nonce\" couldn\\'t be fetched: ' + JSON.stringify(args));\n }\n return signed(_.extend(tx, {chainId: args[0], gasPrice: args[1], nonce: args[2], networkId: args[3]}));\n });\n};\n\n/* jshint ignore:start */\nAccounts.prototype.recoverTransaction = function recoverTransaction(rawTx) {\n var values = RLP.decode(rawTx);\n var signature = Account.encodeSignature(values.slice(6, 9));\n var recovery = Bytes.toNumber(values[6]);\n var extraData = recovery < 35 ? [] : [Bytes.fromNumber((recovery - 35) >> 1), '0x', '0x'];\n var signingData = values.slice(0, 6).concat(extraData);\n var signingDataHex = RLP.encode(signingData);\n return Account.recover(Hash.keccak256(signingDataHex), signature);\n};\n/* jshint ignore:end */\n\nAccounts.prototype.hashMessage = function hashMessage(data) {\n var message = utils.isHexStrict(data) ? utils.hexToBytes(data) : data;\n var messageBuffer = Buffer.from(message);\n var preamble = '\\x19Ethereum Signed Message:\\n' + message.length;\n var preambleBuffer = Buffer.from(preamble);\n var ethMessage = Buffer.concat([preambleBuffer, messageBuffer]);\n return Hash.keccak256s(ethMessage);\n};\n\nAccounts.prototype.sign = function sign(data, privateKey) {\n var hash = this.hashMessage(data);\n var signature = Account.sign(hash, privateKey);\n var vrs = Account.decodeSignature(signature);\n return {\n message: data,\n messageHash: hash,\n v: vrs[0],\n r: vrs[1],\n s: vrs[2],\n signature: signature\n };\n};\n\nAccounts.prototype.recover = function recover(message, signature, preFixed) {\n var args = [].slice.apply(arguments);\n\n\n if (_.isObject(message)) {\n return this.recover(message.messageHash, Account.encodeSignature([message.v, message.r, message.s]), true);\n }\n\n if (!preFixed) {\n message = this.hashMessage(message);\n }\n\n if (args.length >= 4) {\n preFixed = args.slice(-1)[0];\n preFixed = _.isBoolean(preFixed) ? !!preFixed : false;\n\n return this.recover(message, Account.encodeSignature(args.slice(1, 4)), preFixed); // v, r, s\n }\n return Account.recover(message, signature);\n};\n\n// Taken from https://github.com/ethereumjs/ethereumjs-wallet\nAccounts.prototype.decrypt = function(v3Keystore, password, nonStrict) {\n /* jshint maxcomplexity: 10 */\n\n if (!_.isString(password)) {\n throw new Error('No password given.');\n }\n\n var json = (_.isObject(v3Keystore)) ? v3Keystore : JSON.parse(nonStrict ? v3Keystore.toLowerCase() : v3Keystore);\n\n if (json.version !== 3) {\n throw new Error('Not a valid V3 wallet');\n }\n\n var derivedKey;\n var kdfparams;\n if (json.crypto.kdf === 'scrypt') {\n kdfparams = json.crypto.kdfparams;\n\n // FIXME: support progress reporting callback\n derivedKey = scrypt(Buffer.from(password), Buffer.from(kdfparams.salt, 'hex'), kdfparams.n, kdfparams.r, kdfparams.p, kdfparams.dklen);\n } else if (json.crypto.kdf === 'pbkdf2') {\n kdfparams = json.crypto.kdfparams;\n\n if (kdfparams.prf !== 'hmac-sha256') {\n throw new Error('Unsupported parameters to PBKDF2');\n }\n\n derivedKey = cryp.pbkdf2Sync(Buffer.from(password), Buffer.from(kdfparams.salt, 'hex'), kdfparams.c, kdfparams.dklen, 'sha256');\n } else {\n throw new Error('Unsupported key derivation scheme');\n }\n\n var ciphertext = Buffer.from(json.crypto.ciphertext, 'hex');\n\n var mac = utils.sha3(Buffer.concat([derivedKey.slice(16, 32), ciphertext])).replace('0x', '');\n if (mac !== json.crypto.mac) {\n throw new Error('Key derivation failed - possibly wrong password');\n }\n\n var decipher = cryp.createDecipheriv(json.crypto.cipher, derivedKey.slice(0, 16), Buffer.from(json.crypto.cipherparams.iv, 'hex'));\n var seed = '0x' + Buffer.concat([decipher.update(ciphertext), decipher.final()]).toString('hex');\n\n return this.privateKeyToAccount(seed);\n};\n\nAccounts.prototype.encrypt = function(privateKey, password, options) {\n /* jshint maxcomplexity: 20 */\n var account = this.privateKeyToAccount(privateKey);\n\n options = options || {};\n var salt = options.salt || cryp.randomBytes(32);\n var iv = options.iv || cryp.randomBytes(16);\n\n var derivedKey;\n var kdf = options.kdf || 'scrypt';\n var kdfparams = {\n dklen: options.dklen || 32,\n salt: salt.toString('hex')\n };\n\n if (kdf === 'pbkdf2') {\n kdfparams.c = options.c || 262144;\n kdfparams.prf = 'hmac-sha256';\n derivedKey = cryp.pbkdf2Sync(Buffer.from(password), Buffer.from(kdfparams.salt, 'hex'), kdfparams.c, kdfparams.dklen, 'sha256');\n } else if (kdf === 'scrypt') {\n // FIXME: support progress reporting callback\n kdfparams.n = options.n || 8192; // 2048 4096 8192 16384\n kdfparams.r = options.r || 8;\n kdfparams.p = options.p || 1;\n derivedKey = scrypt(Buffer.from(password), Buffer.from(kdfparams.salt, 'hex'), kdfparams.n, kdfparams.r, kdfparams.p, kdfparams.dklen);\n } else {\n throw new Error('Unsupported kdf');\n }\n\n var cipher = cryp.createCipheriv(options.cipher || 'aes-128-ctr', derivedKey.slice(0, 16), iv);\n if (!cipher) {\n throw new Error('Unsupported cipher');\n }\n\n var ciphertext = Buffer.concat([cipher.update(Buffer.from(account.privateKey.replace('0x', ''), 'hex')), cipher.final()]);\n\n var mac = utils.sha3(Buffer.concat([derivedKey.slice(16, 32), Buffer.from(ciphertext, 'hex')])).replace('0x', '');\n\n return {\n version: 3,\n id: uuid.v4({random: options.uuid || cryp.randomBytes(16)}),\n address: account.address.toLowerCase().replace('0x', ''),\n crypto: {\n ciphertext: ciphertext.toString('hex'),\n cipherparams: {\n iv: iv.toString('hex')\n },\n cipher: options.cipher || 'aes-128-ctr',\n kdf: kdf,\n kdfparams: kdfparams,\n mac: mac.toString('hex')\n }\n };\n};\n\n\n// Note: this is trying to follow closely the specs on\n// http://web3js.readthedocs.io/en/1.0/web3-eth-accounts.html\n\nfunction Wallet(accounts) {\n this._accounts = accounts;\n this.length = 0;\n this.defaultKeyName = 'web3js_wallet';\n}\n\nWallet.prototype._findSafeIndex = function(pointer) {\n pointer = pointer || 0;\n if (_.has(this, pointer)) {\n return this._findSafeIndex(pointer + 1);\n } else {\n return pointer;\n }\n};\n\nWallet.prototype._currentIndexes = function() {\n var keys = Object.keys(this);\n var indexes = keys\n .map(function(key) {\n return parseInt(key);\n })\n .filter(function(n) {\n return (n < 9e20);\n });\n\n return indexes;\n};\n\nWallet.prototype.create = function(numberOfAccounts, entropy) {\n for (var i = 0; i < numberOfAccounts; ++i) {\n this.add(this._accounts.create(entropy).privateKey);\n }\n return this;\n};\n\nWallet.prototype.add = function(account) {\n\n if (_.isString(account)) {\n account = this._accounts.privateKeyToAccount(account);\n }\n if (!this[account.address]) {\n account = this._accounts.privateKeyToAccount(account.privateKey);\n account.index = this._findSafeIndex();\n\n this[account.index] = account;\n this[account.address] = account;\n this[account.address.toLowerCase()] = account;\n\n this.length++;\n\n return account;\n } else {\n return this[account.address];\n }\n};\n\nWallet.prototype.remove = function(addressOrIndex) {\n var account = this[addressOrIndex];\n\n if (account && account.address) {\n // address\n this[account.address].privateKey = null;\n delete this[account.address];\n // address lowercase\n this[account.address.toLowerCase()].privateKey = null;\n delete this[account.address.toLowerCase()];\n // index\n this[account.index].privateKey = null;\n delete this[account.index];\n\n this.length--;\n\n return true;\n } else {\n return false;\n }\n};\n\nWallet.prototype.clear = function() {\n var _this = this;\n var indexes = this._currentIndexes();\n\n indexes.forEach(function(index) {\n _this.remove(index);\n });\n\n return this;\n};\n\nWallet.prototype.encrypt = function(password, options) {\n var _this = this;\n var indexes = this._currentIndexes();\n\n var accounts = indexes.map(function(index) {\n return _this[index].encrypt(password, options);\n });\n\n return accounts;\n};\n\n\nWallet.prototype.decrypt = function(encryptedWallet, password) {\n var _this = this;\n\n encryptedWallet.forEach(function(keystore) {\n var account = _this._accounts.decrypt(keystore, password);\n\n if (account) {\n _this.add(account);\n } else {\n throw new Error('Couldn\\'t decrypt accounts. Password wrong?');\n }\n });\n\n return this;\n};\n\nWallet.prototype.save = function(password, keyName) {\n localStorage.setItem(keyName || this.defaultKeyName, JSON.stringify(this.encrypt(password)));\n\n return true;\n};\n\nWallet.prototype.load = function(password, keyName) {\n var keystore = localStorage.getItem(keyName || this.defaultKeyName);\n\n if (keystore) {\n try {\n keystore = JSON.parse(keystore);\n } catch (e) {\n\n }\n }\n\n return this.decrypt(keystore || [], password);\n};\n\nif (!storageAvailable('localStorage')) {\n delete Wallet.prototype.save;\n delete Wallet.prototype.load;\n}\n\n/**\n * Checks whether a storage type is available or not\n * For more info on how this works, please refer to MDN documentation\n * https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API#Feature-detecting_localStorage\n *\n * @method storageAvailable\n * @param {String} type the type of storage ('localStorage', 'sessionStorage')\n * @returns {Boolean} a boolean indicating whether the specified storage is available or not\n */\nfunction storageAvailable(type) {\n var storage;\n try {\n storage = window[type];\n var x = '__storage_test__';\n storage.setItem(x, x);\n storage.removeItem(x);\n return true;\n } catch (e) {\n return e && (\n // everything except Firefox\n e.code === 22 ||\n // Firefox\n e.code === 1014 ||\n // test name field too, because code might not be present\n // everything except Firefox\n e.name === 'QuotaExceededError' ||\n // Firefox\n e.name === 'NS_ERROR_DOM_QUOTA_REACHED') &&\n // acknowledge QuotaExceededError only if there's something already stored\n (storage && storage.length !== 0);\n }\n}\n\n\nmodule.exports = Accounts;\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) {\n var boundFunction = bind(fn, that, AS_ENTRIES ? 2 : 1);\n var iterator, iterFn, index, length, result, next, step;\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = AS_ENTRIES\n ? boundFunction(anObject(step = iterable[index])[0], step[1])\n : boundFunction(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = iterFn.call(iterable);\n }\n\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n result = callWithSafeIterationClosing(iterator, boundFunction, step.value, AS_ENTRIES);\n if (typeof result == 'object' && result && result instanceof Result) return result;\n } return new Result(false);\n};\n\niterate.stop = function (result) {\n return new Result(true, result);\n};\n","'use strict'\nmodule.exports = require('./lib')(require('./lib/elliptic'))\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","'use strict'\nconst Buffer = require('safe-buffer').Buffer\nconst keccakState = require('./keccak-state-unroll')\n\nfunction Keccak () {\n // much faster than `new Array(50)`\n this.state = [\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0\n ]\n\n this.blockSize = null\n this.count = 0\n this.squeezing = false\n}\n\nKeccak.prototype.initialize = function (rate, capacity) {\n for (let i = 0; i < 50; ++i) this.state[i] = 0\n this.blockSize = rate / 8\n this.count = 0\n this.squeezing = false\n}\n\nKeccak.prototype.absorb = function (data) {\n for (let i = 0; i < data.length; ++i) {\n this.state[~~(this.count / 4)] ^= data[i] << (8 * (this.count % 4))\n this.count += 1\n if (this.count === this.blockSize) {\n keccakState.p1600(this.state)\n this.count = 0\n }\n }\n}\n\nKeccak.prototype.absorbLastFewBits = function (bits) {\n this.state[~~(this.count / 4)] ^= bits << (8 * (this.count % 4))\n if ((bits & 0x80) !== 0 && this.count === (this.blockSize - 1)) keccakState.p1600(this.state)\n this.state[~~((this.blockSize - 1) / 4)] ^= 0x80 << (8 * ((this.blockSize - 1) % 4))\n keccakState.p1600(this.state)\n this.count = 0\n this.squeezing = true\n}\n\nKeccak.prototype.squeeze = function (length) {\n if (!this.squeezing) this.absorbLastFewBits(0x01)\n\n const output = Buffer.alloc(length)\n for (var i = 0; i < length; ++i) {\n output[i] = (this.state[~~(this.count / 4)] >>> (8 * (this.count % 4))) & 0xff\n this.count += 1\n if (this.count === this.blockSize) {\n keccakState.p1600(this.state)\n this.count = 0\n }\n }\n\n return output\n}\n\nKeccak.prototype.copy = function (dest) {\n for (let i = 0; i < 50; ++i) dest.state[i] = this.state[i]\n dest.blockSize = this.blockSize\n dest.count = this.count\n dest.squeezing = this.squeezing\n}\n\nmodule.exports = Keccak\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","var http = require('http')\nvar url = require('url')\n\nvar https = module.exports\n\nfor (var key in http) {\n if (http.hasOwnProperty(key)) https[key] = http[key]\n}\n\nhttps.request = function (params, cb) {\n params = validateParams(params)\n return http.request.call(this, params, cb)\n}\n\nhttps.get = function (params, cb) {\n params = validateParams(params)\n return http.get.call(this, params, cb)\n}\n\nfunction validateParams (params) {\n if (typeof params === 'string') {\n params = url.parse(params)\n }\n if (!params.protocol) {\n params.protocol = 'https:'\n }\n if (params.protocol !== 'https:') {\n throw new Error('Protocol \"' + params.protocol + '\" not supported. Expected \"https:\"')\n }\n return params\n}\n","var request = require('xhr-request')\n\nmodule.exports = function (url, options) {\n return new Promise(function (resolve, reject) {\n request(url, options, function (err, data) {\n if (err) reject(err);\n else resolve(data);\n });\n });\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n\n cb(er);\n\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n","'use strict';\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar bytes_1 = require(\"./bytes\");\nvar UnicodeNormalizationForm;\n(function (UnicodeNormalizationForm) {\n UnicodeNormalizationForm[\"current\"] = \"\";\n UnicodeNormalizationForm[\"NFC\"] = \"NFC\";\n UnicodeNormalizationForm[\"NFD\"] = \"NFD\";\n UnicodeNormalizationForm[\"NFKC\"] = \"NFKC\";\n UnicodeNormalizationForm[\"NFKD\"] = \"NFKD\";\n})(UnicodeNormalizationForm = exports.UnicodeNormalizationForm || (exports.UnicodeNormalizationForm = {}));\n;\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nfunction toUtf8Bytes(str, form) {\n if (form === void 0) { form = UnicodeNormalizationForm.current; }\n if (form != UnicodeNormalizationForm.current) {\n str = str.normalize(form);\n }\n var result = [];\n var offset = 0;\n for (var i = 0; i < str.length; i++) {\n var c = str.charCodeAt(i);\n if (c < 128) {\n result[offset++] = c;\n }\n else if (c < 2048) {\n result[offset++] = (c >> 6) | 192;\n result[offset++] = (c & 63) | 128;\n }\n else if (((c & 0xFC00) == 0xD800) && (i + 1) < str.length && ((str.charCodeAt(i + 1) & 0xFC00) == 0xDC00)) {\n // Surrogate Pair\n c = 0x10000 + ((c & 0x03FF) << 10) + (str.charCodeAt(++i) & 0x03FF);\n result[offset++] = (c >> 18) | 240;\n result[offset++] = ((c >> 12) & 63) | 128;\n result[offset++] = ((c >> 6) & 63) | 128;\n result[offset++] = (c & 63) | 128;\n }\n else {\n result[offset++] = (c >> 12) | 224;\n result[offset++] = ((c >> 6) & 63) | 128;\n result[offset++] = (c & 63) | 128;\n }\n }\n return bytes_1.arrayify(result);\n}\nexports.toUtf8Bytes = toUtf8Bytes;\n;\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction toUtf8String(bytes) {\n bytes = bytes_1.arrayify(bytes);\n var result = '';\n var i = 0;\n // Invalid bytes are ignored\n while (i < bytes.length) {\n var c = bytes[i++];\n if (c >> 7 == 0) {\n // 0xxx xxxx\n result += String.fromCharCode(c);\n continue;\n }\n // Invalid starting byte\n if (c >> 6 == 0x02) {\n continue;\n }\n // Multibyte; how many bytes left for thus character?\n var extraLength = null;\n if (c >> 5 == 0x06) {\n extraLength = 1;\n }\n else if (c >> 4 == 0x0e) {\n extraLength = 2;\n }\n else if (c >> 3 == 0x1e) {\n extraLength = 3;\n }\n else if (c >> 2 == 0x3e) {\n extraLength = 4;\n }\n else if (c >> 1 == 0x7e) {\n extraLength = 5;\n }\n else {\n continue;\n }\n // Do we have enough bytes in our data?\n if (i + extraLength > bytes.length) {\n // If there is an invalid unprocessed byte, try to continue\n for (; i < bytes.length; i++) {\n if (bytes[i] >> 6 != 0x02) {\n break;\n }\n }\n if (i != bytes.length)\n continue;\n // All leftover bytes are valid.\n return result;\n }\n // Remove the UTF-8 prefix from the char (res)\n var res = c & ((1 << (8 - extraLength - 1)) - 1);\n var count;\n for (count = 0; count < extraLength; count++) {\n var nextChar = bytes[i++];\n // Is the char valid multibyte part?\n if (nextChar >> 6 != 0x02) {\n break;\n }\n ;\n res = (res << 6) | (nextChar & 0x3f);\n }\n if (count != extraLength) {\n i--;\n continue;\n }\n if (res <= 0xffff) {\n result += String.fromCharCode(res);\n continue;\n }\n res -= 0x10000;\n result += String.fromCharCode(((res >> 10) & 0x3ff) + 0xd800, (res & 0x3ff) + 0xdc00);\n }\n return result;\n}\nexports.toUtf8String = toUtf8String;\n","var v1 = require('./v1');\nvar v4 = require('./v4');\n\nvar uuid = v4;\nuuid.v1 = v1;\nuuid.v4 = v4;\n\nmodule.exports = uuid;\n","var asn1 = require('./asn1')\nvar aesid = require('./aesid.json')\nvar fixProc = require('./fixProc')\nvar ciphers = require('browserify-aes')\nvar compat = require('pbkdf2')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = parseKeys\n\nfunction parseKeys (buffer) {\n var password\n if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n password = buffer.passphrase\n buffer = buffer.key\n }\n if (typeof buffer === 'string') {\n buffer = Buffer.from(buffer)\n }\n\n var stripped = fixProc(buffer, password)\n\n var type = stripped.tag\n var data = stripped.data\n var subtype, ndata\n switch (type) {\n case 'CERTIFICATE':\n ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo\n // falls through\n case 'PUBLIC KEY':\n if (!ndata) {\n ndata = asn1.PublicKey.decode(data, 'der')\n }\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der')\n case '1.2.840.10045.2.1':\n ndata.subjectPrivateKey = ndata.subjectPublicKey\n return {\n type: 'ec',\n data: ndata\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der')\n return {\n type: 'dsa',\n data: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n throw new Error('unknown key type ' + type)\n case 'ENCRYPTED PRIVATE KEY':\n data = asn1.EncryptedPrivateKey.decode(data, 'der')\n data = decrypt(data, password)\n // falls through\n case 'PRIVATE KEY':\n ndata = asn1.PrivateKey.decode(data, 'der')\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der')\n case '1.2.840.10045.2.1':\n return {\n curve: ndata.algorithm.curve,\n privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der')\n return {\n type: 'dsa',\n params: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n throw new Error('unknown key type ' + type)\n case 'RSA PUBLIC KEY':\n return asn1.RSAPublicKey.decode(data, 'der')\n case 'RSA PRIVATE KEY':\n return asn1.RSAPrivateKey.decode(data, 'der')\n case 'DSA PRIVATE KEY':\n return {\n type: 'dsa',\n params: asn1.DSAPrivateKey.decode(data, 'der')\n }\n case 'EC PRIVATE KEY':\n data = asn1.ECPrivateKey.decode(data, 'der')\n return {\n curve: data.parameters.value,\n privateKey: data.privateKey\n }\n default: throw new Error('unknown key type ' + type)\n }\n}\nparseKeys.signature = asn1.signature\nfunction decrypt (data, password) {\n var salt = data.algorithm.decrypt.kde.kdeparams.salt\n var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10)\n var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]\n var iv = data.algorithm.decrypt.cipher.iv\n var cipherText = data.subjectPrivateKey\n var keylen = parseInt(algo.split('-')[1], 10) / 8\n var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1')\n var cipher = ciphers.createDecipheriv(algo, key, iv)\n var out = []\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n return Buffer.concat(out)\n}\n","/*!\n * Vue.js v2.6.11\n * (c) 2014-2019 Evan You\n * Released under the MIT License.\n */\n/* */\n\nvar emptyObject = Object.freeze({});\n\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\nfunction isPromise (val) {\n return (\n isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function'\n )\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array.\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime()\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch'\n];\n\n/* */\n\n\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/* */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp((\"[^\" + (unicodeRegExp.source) + \".$_\\\\d]\"));\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\n\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /*@__PURE__*/(function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return ''\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm;\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (target) {\n targetStack.push(target);\n Dep.target = target;\n}\n\nfunction popTarget () {\n targetStack.pop();\n Dep.target = targetStack[targetStack.length - 1];\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(),\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n if (hasProto) {\n protoAugment(value, arrayMethods);\n } else {\n copyAugment(value, arrayMethods, arrayKeys);\n }\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive$$1(obj, keys[i]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n shouldObserve &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive$$1 (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) && arguments.length === 2) {\n val = obj[key];\n }\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n // #7981: for accessor properties without setter\n if (getter && !setter) { return }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive$$1(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n\n var keys = hasSymbol\n ? Reflect.ownKeys(from)\n : Object.keys(from);\n\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n // in case the object is already observed...\n if (key === '__ob__') { continue }\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (\n toVal !== fromVal &&\n isPlainObject(toVal) &&\n isPlainObject(fromVal)\n ) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n )\n }\n } else {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm, vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm, vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn(parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n var res = childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n return res\n ? dedupeHooks(res)\n : res\n}\n\nfunction dedupeHooks (hooks) {\n var res = [];\n for (var i = 0; i < hooks.length; i++) {\n if (res.indexOf(hooks[i]) === -1) {\n res.push(hooks[i]);\n }\n }\n return res\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n}\n\nfunction validateComponentName (name) {\n if (!new RegExp((\"^[a-zA-Z][\\\\-\\\\.0-9_\" + (unicodeRegExp.source) + \"]*$\")).test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'should conform to valid custom element name in html5 specification.'\n );\n }\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + name\n );\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n if (!inject) { return }\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def$$1 = dirs[key];\n if (typeof def$$1 === 'function') {\n dirs[key] = { bind: def$$1, update: def$$1 };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n\n // Apply extends and mixins on the child options,\n // but only if it is a raw options object that isn't\n // the result of another mergeOptions call.\n // Only merged options has the _base property.\n if (!child._base) {\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n }\n\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\n\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // boolean casting\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n // skip validation for weex recycle-list child component props\n !(false)\n ) {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n\n if (!valid) {\n warn(\n getInvalidTypeMessage(name, value, expectedTypes),\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i\n }\n }\n return -1\n}\n\nfunction getInvalidTypeMessage (name, value, expectedTypes) {\n var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', '));\n var expectedType = expectedTypes[0];\n var receivedType = toRawType(value);\n var expectedValue = styleValue(value, expectedType);\n var receivedValue = styleValue(value, receivedType);\n // check if we need to specify expected value\n if (expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n !isBoolean(expectedType, receivedType)) {\n message += \" with value \" + expectedValue;\n }\n message += \", got \" + receivedType + \" \";\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += \"with value \" + receivedValue + \".\";\n }\n return message\n}\n\nfunction styleValue (value, type) {\n if (type === 'String') {\n return (\"\\\"\" + value + \"\\\"\")\n } else if (type === 'Number') {\n return (\"\" + (Number(value)))\n } else {\n return (\"\" + value)\n }\n}\n\nfunction isExplicable (value) {\n var explicitTypes = ['string', 'number', 'boolean'];\n return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; })\n}\n\nfunction isBoolean () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n // See: https://github.com/vuejs/vuex/issues/1505\n pushTarget();\n try {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n } finally {\n popTarget();\n }\n}\n\nfunction invokeWithErrorHandling (\n handler,\n context,\n args,\n vm,\n info\n) {\n var res;\n try {\n res = args ? handler.apply(context, args) : handler.call(context);\n if (res && !res._isVue && isPromise(res) && !res._handled) {\n res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n // issue #9511\n // avoid catch triggering multiple times when nested calls\n res._handled = true;\n }\n } catch (e) {\n handleError(e, vm, info);\n }\n return res\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n // if the user intentionally throws the original error in the handler,\n // do not log it twice\n if (e !== err) {\n logError(e, null, 'config.errorHandler');\n }\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n\nvar isUsingMicroTask = false;\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\nvar timerFunc;\n\n// The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n timerFunc = function () {\n p.then(flushCallbacks);\n // In problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n isUsingMicroTask = true;\n} else if (!isIE && typeof MutationObserver !== 'undefined' && (\n isNative(MutationObserver) ||\n // PhantomJS and iOS 7.x\n MutationObserver.toString() === '[object MutationObserverConstructor]'\n)) {\n // Use MutationObserver where native Promise is not available,\n // e.g. PhantomJS, iOS7, Android 4.4\n // (#6466 MutationObserver is unreliable in IE11)\n var counter = 1;\n var observer = new MutationObserver(flushCallbacks);\n var textNode = document.createTextNode(String(counter));\n observer.observe(textNode, {\n characterData: true\n });\n timerFunc = function () {\n counter = (counter + 1) % 2;\n textNode.data = String(counter);\n };\n isUsingMicroTask = true;\n} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n // Fallback to setImmediate.\n // Technically it leverages the (macro) task queue,\n // but it is still a better choice than setTimeout.\n timerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else {\n // Fallback to setTimeout.\n timerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n timerFunc();\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var warnReservedPrefix = function (target, key) {\n warn(\n \"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" +\n 'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n 'prevent conflicts with Vue internals. ' +\n 'See: https://vuejs.org/v2/api/#data',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) ||\n (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));\n if (!has && !isAllowed) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n _traverse(val, seenObjects);\n seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n // perf.clearMeasures(name)\n };\n }\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns, vm) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n }\n } else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\")\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n createOnceHandler,\n vm\n) {\n var name, def$$1, cur, old, event;\n for (name in on) {\n def$$1 = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook () {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\n/* */\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g.